github.com/ndau/noms@v1.0.5/go/types/equals_test.go (about) 1 // Copyright 2016 Attic Labs, Inc. All rights reserved. 2 // Licensed under the Apache License, version 2.0: 3 // http://www.apache.org/licenses/LICENSE-2.0 4 5 package types 6 7 import ( 8 "bytes" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestValueEquals(t *testing.T) { 15 assert := assert.New(t) 16 vrw := newTestValueStore() 17 18 values := []func() Value{ 19 func() Value { return Bool(false) }, 20 func() Value { return Bool(true) }, 21 func() Value { return Number(0) }, 22 func() Value { return Number(-1) }, 23 func() Value { return Number(1) }, 24 func() Value { return String("") }, 25 func() Value { return String("hi") }, 26 func() Value { return String("bye") }, 27 func() Value { 28 return NewBlob(vrw, &bytes.Buffer{}) 29 }, 30 func() Value { 31 return NewBlob(vrw, bytes.NewBufferString("hi")) 32 }, 33 func() Value { 34 return NewBlob(vrw, bytes.NewBufferString("bye")) 35 }, 36 func() Value { 37 b1 := NewBlob(vrw, bytes.NewBufferString("hi")) 38 b2 := NewBlob(vrw, bytes.NewBufferString("bye")) 39 return newBlob(newBlobMetaSequence(1, []metaTuple{ 40 newMetaTuple(NewRef(b1), orderedKeyFromInt(2), 2), 41 newMetaTuple(NewRef(b2), orderedKeyFromInt(5), 5), 42 }, nil)) 43 }, 44 func() Value { return NewList(vrw) }, 45 func() Value { return NewList(vrw, String("foo")) }, 46 func() Value { return NewList(vrw, String("bar")) }, 47 func() Value { return NewMap(vrw) }, 48 func() Value { return NewMap(vrw, String("a"), String("a")) }, 49 func() Value { return NewSet(vrw) }, 50 func() Value { return NewSet(vrw, String("hi")) }, 51 52 func() Value { return BoolType }, 53 func() Value { return StringType }, 54 func() Value { return MakeStructType("a") }, 55 func() Value { return MakeStructType("b") }, 56 func() Value { return MakeListType(BoolType) }, 57 func() Value { return MakeListType(NumberType) }, 58 func() Value { return MakeSetType(BoolType) }, 59 func() Value { return MakeSetType(NumberType) }, 60 func() Value { return MakeRefType(BoolType) }, 61 func() Value { return MakeRefType(NumberType) }, 62 func() Value { 63 return MakeMapType(BoolType, ValueType) 64 }, 65 func() Value { 66 return MakeMapType(NumberType, ValueType) 67 }, 68 } 69 70 for i, f1 := range values { 71 for j, f2 := range values { 72 if i == j { 73 assert.True(f1().Equals(f2())) 74 } else { 75 assert.False(f1().Equals(f2())) 76 } 77 } 78 v := f1() 79 if v != nil { 80 r := NewRef(v) 81 assert.False(r.Equals(v)) 82 assert.False(v.Equals(r)) 83 } 84 } 85 }