summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/pborman/uuid/marshal_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pborman/uuid/marshal_test.go')
-rw-r--r--vendor/github.com/pborman/uuid/marshal_test.go124
1 files changed, 124 insertions, 0 deletions
diff --git a/vendor/github.com/pborman/uuid/marshal_test.go b/vendor/github.com/pborman/uuid/marshal_test.go
new file mode 100644
index 000000000..4e85b6bab
--- /dev/null
+++ b/vendor/github.com/pborman/uuid/marshal_test.go
@@ -0,0 +1,124 @@
+// Copyright 2014 Google Inc. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package uuid
+
+import (
+ "bytes"
+ "encoding/json"
+ "reflect"
+ "testing"
+)
+
+var testUUID = Parse("f47ac10b-58cc-0372-8567-0e02b2c3d479")
+var testArray = testUUID.Array()
+
+func TestJSON(t *testing.T) {
+ type S struct {
+ ID1 UUID
+ ID2 UUID
+ }
+ s1 := S{ID1: testUUID}
+ data, err := json.Marshal(&s1)
+ if err != nil {
+ t.Fatal(err)
+ }
+ var s2 S
+ if err := json.Unmarshal(data, &s2); err != nil {
+ t.Fatal(err)
+ }
+ if !reflect.DeepEqual(&s1, &s2) {
+ t.Errorf("got %#v, want %#v", s2, s1)
+ }
+}
+
+func TestJSONArray(t *testing.T) {
+ type S struct {
+ ID1 Array
+ ID2 Array
+ }
+ s1 := S{ID1: testArray}
+ data, err := json.Marshal(&s1)
+ if err != nil {
+ t.Fatal(err)
+ }
+ var s2 S
+ if err := json.Unmarshal(data, &s2); err != nil {
+ t.Fatal(err)
+ }
+ if !reflect.DeepEqual(&s1, &s2) {
+ t.Errorf("got %#v, want %#v", s2, s1)
+ }
+}
+
+func TestMarshal(t *testing.T) {
+ data, err := testUUID.MarshalBinary()
+ if err != nil {
+ t.Fatalf("MarhsalBinary returned unexpected error %v", err)
+ }
+ if !bytes.Equal(data, testUUID) {
+ t.Fatalf("MarhsalBinary returns %x, want %x", data, testUUID)
+ }
+ var u UUID
+ u.UnmarshalBinary(data)
+ if !Equal(data, u) {
+ t.Fatalf("UnmarhsalBinary returns %v, want %v", u, testUUID)
+ }
+}
+
+func TestMarshalArray(t *testing.T) {
+ data, err := testArray.MarshalBinary()
+ if err != nil {
+ t.Fatalf("MarhsalBinary returned unexpected error %v", err)
+ }
+ if !bytes.Equal(data, testUUID) {
+ t.Fatalf("MarhsalBinary returns %x, want %x", data, testUUID)
+ }
+ var a Array
+ a.UnmarshalBinary(data)
+ if a != testArray {
+ t.Fatalf("UnmarhsalBinary returns %v, want %v", a, testArray)
+ }
+}
+
+func TestMarshalTextArray(t *testing.T) {
+ data, err := testArray.MarshalText()
+ if err != nil {
+ t.Fatalf("MarhsalText returned unexpected error %v", err)
+ }
+ var a Array
+ a.UnmarshalText(data)
+ if a != testArray {
+ t.Fatalf("UnmarhsalText returns %v, want %v", a, testArray)
+ }
+}
+
+func BenchmarkUUID_MarshalJSON(b *testing.B) {
+ x := &struct {
+ UUID UUID `json:"uuid"`
+ }{}
+ x.UUID = Parse("f47ac10b-58cc-0372-8567-0e02b2c3d479")
+ if x.UUID == nil {
+ b.Fatal("invalid uuid")
+ }
+ for i := 0; i < b.N; i++ {
+ js, err := json.Marshal(x)
+ if err != nil {
+ b.Fatalf("marshal json: %#v (%v)", js, err)
+ }
+ }
+}
+
+func BenchmarkUUID_UnmarshalJSON(b *testing.B) {
+ js := []byte(`{"uuid":"f47ac10b-58cc-0372-8567-0e02b2c3d479"}`)
+ var x *struct {
+ UUID UUID `json:"uuid"`
+ }
+ for i := 0; i < b.N; i++ {
+ err := json.Unmarshal(js, &x)
+ if err != nil {
+ b.Fatalf("marshal json: %#v (%v)", js, err)
+ }
+ }
+}