Browse Source

[utils/version] add version.go

fatedier 9 years ago
parent
commit
838dc10c6e
2 changed files with 86 additions and 0 deletions
  1. 44 0
      src/frp/utils/version/version.go
  2. 42 0
      src/frp/utils/version/version_test.go

+ 44 - 0
src/frp/utils/version/version.go

@@ -0,0 +1,44 @@
+package version
+
+import (
+	"strconv"
+	"strings"
+)
+
+var version string = "0.2.0"
+
+func Full() string {
+	return version
+}
+
+func Proto(v string) int64 {
+	arr := strings.Split(v, ".")
+	if len(arr) < 2 {
+		return 0
+	}
+	res, _ := strconv.ParseInt(arr[0], 10, 64)
+	return res
+}
+
+func Major(v string) int64 {
+	arr := strings.Split(v, ".")
+	if len(arr) < 2 {
+		return 0
+	}
+	res, _ := strconv.ParseInt(arr[1], 10, 64)
+	return res
+}
+
+func Minor(v string) int64 {
+	arr := strings.Split(v, ".")
+	if len(arr) < 2 {
+		return 0
+	}
+	res, _ := strconv.ParseInt(arr[2], 10, 64)
+	return res
+}
+
+// add every case there if server will not accept client's protocol and return false
+func Compat(client string, server string) bool {
+	return true
+}

+ 42 - 0
src/frp/utils/version/version_test.go

@@ -0,0 +1,42 @@
+package version
+
+import (
+	"fmt"
+	"strconv"
+	"strings"
+	"testing"
+)
+
+func TestFull(t *testing.T) {
+	version := Full()
+	arr := strings.Split(version, ".")
+	if len(arr) != 3 {
+		t.Errorf("Version string error: %s", version)
+	}
+
+	proto, err := strconv.ParseInt(arr[0], 10, 64)
+	if err != nil || proto < 0 {
+		t.Errorf("Version proto error")
+	}
+
+	major, err := strconv.ParseInt(arr[1], 10, 64)
+	if err != nil || major < 0 {
+		t.Errorf("Version major error")
+	}
+
+	minor, err := strconv.ParseInt(arr[2], 10, 64)
+	if err != nil || minor < 0 {
+		t.Errorf("Version minor error")
+	}
+}
+
+func TestVersion(t *testing.T) {
+	proto := Proto(Full())
+	major := Major(Full())
+	minor := Minor(Full())
+	parseVerion := fmt.Sprintf("%d.%d.%d", proto, major, minor)
+	version := Full()
+	if parseVerion != version {
+		t.Errorf("Get version incorrect, version [%s], parseVerion [%s]", version, parseVerion)
+	}
+}