OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / github.com / pborman / uuid / marshal_test.go
1 // Copyright 2014 Google Inc.  All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package uuid
6
7 import (
8         "bytes"
9         "encoding/json"
10         "reflect"
11         "testing"
12 )
13
14 var testUUID = Parse("f47ac10b-58cc-0372-8567-0e02b2c3d479")
15 var testArray = testUUID.Array()
16
17 func TestJSON(t *testing.T) {
18         type S struct {
19                 ID1 UUID
20                 ID2 UUID
21         }
22         s1 := S{ID1: testUUID}
23         data, err := json.Marshal(&s1)
24         if err != nil {
25                 t.Fatal(err)
26         }
27         var s2 S
28         if err := json.Unmarshal(data, &s2); err != nil {
29                 t.Fatal(err)
30         }
31         if !reflect.DeepEqual(&s1, &s2) {
32                 t.Errorf("got %#v, want %#v", s2, s1)
33         }
34 }
35
36 func TestJSONArray(t *testing.T) {
37         type S struct {
38                 ID1 Array
39                 ID2 Array
40         }
41         s1 := S{ID1: testArray}
42         data, err := json.Marshal(&s1)
43         if err != nil {
44                 t.Fatal(err)
45         }
46         var s2 S
47         if err := json.Unmarshal(data, &s2); err != nil {
48                 t.Fatal(err)
49         }
50         if !reflect.DeepEqual(&s1, &s2) {
51                 t.Errorf("got %#v, want %#v", s2, s1)
52         }
53 }
54
55 func TestMarshal(t *testing.T) {
56         data, err := testUUID.MarshalBinary()
57         if err != nil {
58                 t.Fatalf("MarhsalBinary returned unexpected error %v", err)
59         }
60         if !bytes.Equal(data, testUUID) {
61                 t.Fatalf("MarhsalBinary returns %x, want %x", data, testUUID)
62         }
63         var u UUID
64         u.UnmarshalBinary(data)
65         if !Equal(data, u) {
66                 t.Fatalf("UnmarhsalBinary returns %v, want %v", u, testUUID)
67         }
68 }
69
70 func TestMarshalArray(t *testing.T) {
71         data, err := testArray.MarshalBinary()
72         if err != nil {
73                 t.Fatalf("MarhsalBinary returned unexpected error %v", err)
74         }
75         if !bytes.Equal(data, testUUID) {
76                 t.Fatalf("MarhsalBinary returns %x, want %x", data, testUUID)
77         }
78         var a Array
79         a.UnmarshalBinary(data)
80         if a != testArray {
81                 t.Fatalf("UnmarhsalBinary returns %v, want %v", a, testArray)
82         }
83 }
84
85 func TestMarshalTextArray(t *testing.T) {
86         data, err := testArray.MarshalText()
87         if err != nil {
88                 t.Fatalf("MarhsalText returned unexpected error %v", err)
89         }
90         var a Array
91         a.UnmarshalText(data)
92         if a != testArray {
93                 t.Fatalf("UnmarhsalText returns %v, want %v", a, testArray)
94         }
95 }
96
97 func BenchmarkUUID_MarshalJSON(b *testing.B) {
98         x := &struct {
99                 UUID UUID `json:"uuid"`
100         }{}
101         x.UUID = Parse("f47ac10b-58cc-0372-8567-0e02b2c3d479")
102         if x.UUID == nil {
103                 b.Fatal("invalid uuid")
104         }
105         for i := 0; i < b.N; i++ {
106                 js, err := json.Marshal(x)
107                 if err != nil {
108                         b.Fatalf("marshal json: %#v (%v)", js, err)
109                 }
110         }
111 }
112
113 func BenchmarkUUID_UnmarshalJSON(b *testing.B) {
114         js := []byte(`{"uuid":"f47ac10b-58cc-0372-8567-0e02b2c3d479"}`)
115         var x *struct {
116                 UUID UUID `json:"uuid"`
117         }
118         for i := 0; i < b.N; i++ {
119                 err := json.Unmarshal(js, &x)
120                 if err != nil {
121                         b.Fatalf("marshal json: %#v (%v)", js, err)
122                 }
123         }
124 }