OSDN Git Service

chore(vendor): add vendor github.com/google/uuid (#1884)
[bytom/bytom.git] / vendor / github.com / google / uuid / json_test.go
1 // Copyright 2016 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         "encoding/json"
9         "reflect"
10         "testing"
11 )
12
13 var testUUID = Must(Parse("f47ac10b-58cc-0372-8567-0e02b2c3d479"))
14
15 func TestJSON(t *testing.T) {
16         type S struct {
17                 ID1 UUID
18                 ID2 UUID
19         }
20         s1 := S{ID1: testUUID}
21         data, err := json.Marshal(&s1)
22         if err != nil {
23                 t.Fatal(err)
24         }
25         var s2 S
26         if err := json.Unmarshal(data, &s2); err != nil {
27                 t.Fatal(err)
28         }
29         if !reflect.DeepEqual(&s1, &s2) {
30                 t.Errorf("got %#v, want %#v", s2, s1)
31         }
32 }
33
34 func BenchmarkUUID_MarshalJSON(b *testing.B) {
35         x := &struct {
36                 UUID UUID `json:"uuid"`
37         }{}
38         var err error
39         x.UUID, err = Parse("f47ac10b-58cc-0372-8567-0e02b2c3d479")
40         if err != nil {
41                 b.Fatal(err)
42         }
43         for i := 0; i < b.N; i++ {
44                 js, err := json.Marshal(x)
45                 if err != nil {
46                         b.Fatalf("marshal json: %#v (%v)", js, err)
47                 }
48         }
49 }
50
51 func BenchmarkUUID_UnmarshalJSON(b *testing.B) {
52         js := []byte(`{"uuid":"f47ac10b-58cc-0372-8567-0e02b2c3d479"}`)
53         var x *struct {
54                 UUID UUID `json:"uuid"`
55         }
56         for i := 0; i < b.N; i++ {
57                 err := json.Unmarshal(js, &x)
58                 if err != nil {
59                         b.Fatalf("marshal json: %#v (%v)", js, err)
60                 }
61         }
62 }