diff --git a/utils/super/version_benchmark_test.go b/utils/super/version_benchmark_test.go new file mode 100644 index 0000000..0968b3a --- /dev/null +++ b/utils/super/version_benchmark_test.go @@ -0,0 +1,18 @@ +package super_test + +import ( + "github.com/kercylan98/minotaur/utils/super" + "testing" +) + +func BenchmarkCompareVersion(b *testing.B) { + for i := 0; i < b.N; i++ { + super.CompareVersion("vfe2faf.d2ad5.dd3", "afe2faf.d2ad5.dd2") + } +} + +func BenchmarkOldVersion(b *testing.B) { + for i := 0; i < b.N; i++ { + super.OldVersion("vfe2faf.d2ad5.dd3", "vda2faf.d2ad5.dd2") + } +} diff --git a/utils/super/version_example_test.go b/utils/super/version_example_test.go new file mode 100644 index 0000000..05f4d64 --- /dev/null +++ b/utils/super/version_example_test.go @@ -0,0 +1,18 @@ +package super_test + +import ( + "fmt" + "github.com/kercylan98/minotaur/utils/super" +) + +func ExampleCompareVersion() { + result := super.CompareVersion("1.2.3", "1.2.2") + fmt.Println(result) + // Output: 1 +} + +func ExampleOldVersion() { + result := super.OldVersion("1.2.3", "1.2.2") + fmt.Println(result) + // Output: true +} diff --git a/utils/super/version_test.go b/utils/super/version_test.go index 326acf1..cc3be0a 100644 --- a/utils/super/version_test.go +++ b/utils/super/version_test.go @@ -5,9 +5,56 @@ import ( "testing" ) -func TestCompareVersion(t *testing.T) { - t.Log(super.CompareVersion("1", "2"), -1) - t.Log(super.CompareVersion("1", "vv2"), -1) - t.Log(super.CompareVersion("1", "vv2.3.1"), -1) - t.Log(super.CompareVersion("11", "vv2.3.1"), 1) +func TestOldVersion(t *testing.T) { + testCases := []struct { + version1 string + version2 string + want bool + }{ + {"1.2.3", "1.2.2", true}, + {"1.2.1", "1.2.2", false}, + {"1.2.3", "1.2.3", false}, + {"v1.2.3", "v1.2.2", true}, + {"v1.2.3", "v1.2.4", false}, + {"v1.2.3", "1.2.3", false}, + {"vxx2faf.d2ad5.dd3", "gga2faf.d2ad5.dd2", true}, + {"awd2faf.d2ad4.dd3", "vsd2faf.d2ad5.dd3", false}, + {"vxd2faf.d2ad5.dd3", "qdq2faf.d2ad5.dd3", false}, + {"1.2.3", "vdafe2faf.d2ad5.dd3", false}, + {"v1.2.3", "vdafe2faf.d2ad5.dd3", false}, + } + + for _, tc := range testCases { + got := super.OldVersion(tc.version1, tc.version2) + if got != tc.want { + t.Errorf("OldVersion(%q, %q) = %v; want %v", tc.version1, tc.version2, got, tc.want) + } + } +} + +func TestCompareVersion(t *testing.T) { + testCases := []struct { + version1 string + version2 string + want int + }{ + {"1.2.3", "1.2.2", 1}, + {"1.2.1", "1.2.2", -1}, + {"1.2.3", "1.2.3", 0}, + {"v1.2.3", "v1.2.2", 1}, + {"v1.2.3", "v1.2.4", -1}, + {"v1.2.3", "1.2.3", 0}, + {"vde2faf.d2ad5.dd3", "e2faf.d2ad5.dd2", 1}, + {"vde2faf.d2ad4.dd3", "vde2faf.d2ad5.dd3", -1}, + {"vfe2faf.d2ad5.dd3", "ve2faf.d2ad5.dd3", 0}, + {"1.2.3", "vdafe2faf.d2ad5.dd3", -1}, + {"v1.2.3", "vdafe2faf.d2ad5.dd3", -1}, + } + + for _, tc := range testCases { + got := super.CompareVersion(tc.version1, tc.version2) + if got != tc.want { + t.Errorf("CompareVersion(%q, %q) = %v; want %v", tc.version1, tc.version2, got, tc.want) + } + } }