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  }