.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / mod@v0.4.1 / semver / semver_test.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/mod@v0.4.1/semver/semver_test.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/mod@v0.4.1/semver/semver_test.go
new file mode 100644 (file)
index 0000000..77025a4
--- /dev/null
@@ -0,0 +1,183 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package semver
+
+import (
+       "strings"
+       "testing"
+)
+
+var tests = []struct {
+       in  string
+       out string
+}{
+       {"bad", ""},
+       {"v1-alpha.beta.gamma", ""},
+       {"v1-pre", ""},
+       {"v1+meta", ""},
+       {"v1-pre+meta", ""},
+       {"v1.2-pre", ""},
+       {"v1.2+meta", ""},
+       {"v1.2-pre+meta", ""},
+       {"v1.0.0-alpha", "v1.0.0-alpha"},
+       {"v1.0.0-alpha.1", "v1.0.0-alpha.1"},
+       {"v1.0.0-alpha.beta", "v1.0.0-alpha.beta"},
+       {"v1.0.0-beta", "v1.0.0-beta"},
+       {"v1.0.0-beta.2", "v1.0.0-beta.2"},
+       {"v1.0.0-beta.11", "v1.0.0-beta.11"},
+       {"v1.0.0-rc.1", "v1.0.0-rc.1"},
+       {"v1", "v1.0.0"},
+       {"v1.0", "v1.0.0"},
+       {"v1.0.0", "v1.0.0"},
+       {"v1.2", "v1.2.0"},
+       {"v1.2.0", "v1.2.0"},
+       {"v1.2.3-456", "v1.2.3-456"},
+       {"v1.2.3-456.789", "v1.2.3-456.789"},
+       {"v1.2.3-456-789", "v1.2.3-456-789"},
+       {"v1.2.3-456a", "v1.2.3-456a"},
+       {"v1.2.3-pre", "v1.2.3-pre"},
+       {"v1.2.3-pre+meta", "v1.2.3-pre"},
+       {"v1.2.3-pre.1", "v1.2.3-pre.1"},
+       {"v1.2.3-zzz", "v1.2.3-zzz"},
+       {"v1.2.3", "v1.2.3"},
+       {"v1.2.3+meta", "v1.2.3"},
+       {"v1.2.3+meta-pre", "v1.2.3"},
+       {"v1.2.3+meta-pre.sha.256a", "v1.2.3"},
+}
+
+func TestIsValid(t *testing.T) {
+       for _, tt := range tests {
+               ok := IsValid(tt.in)
+               if ok != (tt.out != "") {
+                       t.Errorf("IsValid(%q) = %v, want %v", tt.in, ok, !ok)
+               }
+       }
+}
+
+func TestCanonical(t *testing.T) {
+       for _, tt := range tests {
+               out := Canonical(tt.in)
+               if out != tt.out {
+                       t.Errorf("Canonical(%q) = %q, want %q", tt.in, out, tt.out)
+               }
+       }
+}
+
+func TestMajor(t *testing.T) {
+       for _, tt := range tests {
+               out := Major(tt.in)
+               want := ""
+               if i := strings.Index(tt.out, "."); i >= 0 {
+                       want = tt.out[:i]
+               }
+               if out != want {
+                       t.Errorf("Major(%q) = %q, want %q", tt.in, out, want)
+               }
+       }
+}
+
+func TestMajorMinor(t *testing.T) {
+       for _, tt := range tests {
+               out := MajorMinor(tt.in)
+               var want string
+               if tt.out != "" {
+                       want = tt.in
+                       if i := strings.Index(want, "+"); i >= 0 {
+                               want = want[:i]
+                       }
+                       if i := strings.Index(want, "-"); i >= 0 {
+                               want = want[:i]
+                       }
+                       switch strings.Count(want, ".") {
+                       case 0:
+                               want += ".0"
+                       case 1:
+                               // ok
+                       case 2:
+                               want = want[:strings.LastIndex(want, ".")]
+                       }
+               }
+               if out != want {
+                       t.Errorf("MajorMinor(%q) = %q, want %q", tt.in, out, want)
+               }
+       }
+}
+
+func TestPrerelease(t *testing.T) {
+       for _, tt := range tests {
+               pre := Prerelease(tt.in)
+               var want string
+               if tt.out != "" {
+                       if i := strings.Index(tt.out, "-"); i >= 0 {
+                               want = tt.out[i:]
+                       }
+               }
+               if pre != want {
+                       t.Errorf("Prerelease(%q) = %q, want %q", tt.in, pre, want)
+               }
+       }
+}
+
+func TestBuild(t *testing.T) {
+       for _, tt := range tests {
+               build := Build(tt.in)
+               var want string
+               if tt.out != "" {
+                       if i := strings.Index(tt.in, "+"); i >= 0 {
+                               want = tt.in[i:]
+                       }
+               }
+               if build != want {
+                       t.Errorf("Build(%q) = %q, want %q", tt.in, build, want)
+               }
+       }
+}
+
+func TestCompare(t *testing.T) {
+       for i, ti := range tests {
+               for j, tj := range tests {
+                       cmp := Compare(ti.in, tj.in)
+                       var want int
+                       if ti.out == tj.out {
+                               want = 0
+                       } else if i < j {
+                               want = -1
+                       } else {
+                               want = +1
+                       }
+                       if cmp != want {
+                               t.Errorf("Compare(%q, %q) = %d, want %d", ti.in, tj.in, cmp, want)
+                       }
+               }
+       }
+}
+
+func TestMax(t *testing.T) {
+       for i, ti := range tests {
+               for j, tj := range tests {
+                       max := Max(ti.in, tj.in)
+                       want := Canonical(ti.in)
+                       if i < j {
+                               want = Canonical(tj.in)
+                       }
+                       if max != want {
+                               t.Errorf("Max(%q, %q) = %q, want %q", ti.in, tj.in, max, want)
+                       }
+               }
+       }
+}
+
+var (
+       v1 = "v1.0.0+metadata-dash"
+       v2 = "v1.0.0+metadata-dash1"
+)
+
+func BenchmarkCompare(b *testing.B) {
+       for i := 0; i < b.N; i++ {
+               if Compare(v1, v2) != 0 {
+                       b.Fatalf("bad compare")
+               }
+       }
+}