...
1 package semver
2
3 import (
4 "encoding/json"
5 "strconv"
6 "testing"
7 )
8
9 func TestJSONMarshal(t *testing.T) {
10 versionString := "3.1.4-alpha.1.5.9+build.2.6.5"
11 v, err := Parse(versionString)
12 if err != nil {
13 t.Fatal(err)
14 }
15
16 versionJSON, err := json.Marshal(v)
17 if err != nil {
18 t.Fatal(err)
19 }
20
21 quotedVersionString := strconv.Quote(versionString)
22
23 if string(versionJSON) != quotedVersionString {
24 t.Fatalf("JSON marshaled semantic version not equal: expected %q, got %q", quotedVersionString, string(versionJSON))
25 }
26 }
27
28 func TestJSONUnmarshal(t *testing.T) {
29 versionString := "3.1.4-alpha.1.5.9+build.2.6.5"
30 quotedVersionString := strconv.Quote(versionString)
31
32 var v Version
33 if err := json.Unmarshal([]byte(quotedVersionString), &v); err != nil {
34 t.Fatal(err)
35 }
36
37 if v.String() != versionString {
38 t.Fatalf("JSON unmarshaled semantic version not equal: expected %q, got %q", versionString, v.String())
39 }
40
41 badVersionString := strconv.Quote("3.1.4.1.5.9.2.6.5-other-digits-of-pi")
42 if err := json.Unmarshal([]byte(badVersionString), &v); err == nil {
43 t.Fatal("expected JSON unmarshal error, got nil")
44 }
45
46 if err := json.Unmarshal([]byte("3.1"), &v); err == nil {
47 t.Fatal("expected JSON unmarshal error, got nil")
48 }
49 }
50
View as plain text