json_test.go 1.1 KB

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