github.com/ipld/go-ipld-prime@v0.21.0/node/tests/checkers_test.go (about) 1 package tests 2 3 import ( 4 "testing" 5 6 qt "github.com/frankban/quicktest" 7 8 "github.com/ipld/go-ipld-prime/node/basicnode" 9 ) 10 11 func Test_nodeContentEqualsChecker_Check(t *testing.T) { 12 someNode := basicnode.Prototype__String{}.NewBuilder().Build() 13 nb := basicnode.Prototype__String{}.NewBuilder() 14 err := nb.AssignString("fish") 15 qt.Assert(t, err, qt.IsNil) 16 someOtherNode := nb.Build() 17 18 tests := []struct { 19 name string 20 got interface{} 21 want interface{} 22 wantErr string 23 }{ 24 { 25 name: "nilWantIsError", 26 got: "not a node", 27 want: nil, 28 wantErr: "got non-nil value", 29 }, 30 { 31 name: "nonNodeAsWantIsError", 32 got: "not a node", 33 want: someNode, 34 wantErr: "this checker only supports checking datamodel.Node values", 35 }, 36 { 37 name: "nonNodeAsGotIsError", 38 got: someNode, 39 want: "not a node", 40 wantErr: "this checker only supports checking datamodel.Node values", 41 }, 42 { 43 name: "nilWantAndGotAreEqual", 44 got: nil, 45 want: nil, 46 }, 47 { 48 name: "equivalentNodesAreEqual", 49 got: someNode, 50 want: someNode, 51 }, 52 { 53 name: "differentNodesAreNotEqual", 54 got: someNode, 55 want: someOtherNode, 56 wantErr: "values are not equal", 57 }, 58 } 59 for _, tt := range tests { 60 t.Run(tt.name, func(t *testing.T) { 61 err := NodeContentEquals.Check(tt.got, []interface{}{tt.want}, nil) 62 if tt.wantErr == "" { 63 qt.Assert(t, err, qt.IsNil) 64 } else { 65 qt.Assert(t, err, qt.Not(qt.IsNil)) 66 qt.Assert(t, err.Error(), qt.Equals, tt.wantErr) 67 } 68 }) 69 } 70 }