...

Source file src/github.com/blang/semver/v4/json_test.go

Documentation: github.com/blang/semver/v4

     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