...

Source file src/github.com/pborman/uuid/marshal_test.go

Documentation: github.com/pborman/uuid

     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  }
   125  

View as plain text