ipld-eth-server/vendor/github.com/aristanetworks/goarista/path/wildcard_test.go

80 lines
1.7 KiB
Go
Raw Normal View History

// Copyright (c) 2018 Arista Networks, Inc.
// Use of this source code is governed by the Apache License 2.0
// that can be found in the COPYING file.
package path
import (
"encoding/json"
"testing"
"github.com/aristanetworks/goarista/key"
"github.com/aristanetworks/goarista/value"
)
type pseudoWildcard struct{}
func (w pseudoWildcard) Key() interface{} {
return struct{}{}
}
func (w pseudoWildcard) String() string {
return "*"
}
func (w pseudoWildcard) Equal(other interface{}) bool {
o, ok := other.(pseudoWildcard)
return ok && w == o
}
func TestWildcardUniqueness(t *testing.T) {
if Wildcard.Equal(pseudoWildcard{}) {
t.Fatal("Wildcard is not unique")
}
if Wildcard.Equal(struct{}{}) {
t.Fatal("Wildcard is not unique")
}
if Wildcard.Equal(key.New("*")) {
t.Fatal("Wildcard is not unique")
}
}
func TestWildcardTypeIsNotAKey(t *testing.T) {
var intf interface{} = WildcardType{}
_, ok := intf.(key.Key)
if ok {
t.Error("WildcardType should not implement key.Key")
}
}
func TestWildcardTypeEqual(t *testing.T) {
k1 := key.New(WildcardType{})
k2 := key.New(WildcardType{})
if !k1.Equal(k2) {
t.Error("They should be equal")
}
if !Wildcard.Equal(k1) {
t.Error("They should be equal")
}
}
func TestWildcardTypeAsValue(t *testing.T) {
var k value.Value = WildcardType{}
w := WildcardType{}
if k.ToBuiltin() != w {
t.Error("WildcardType.ToBuiltin is not correct")
}
}
func TestWildcardMarshalJSON(t *testing.T) {
b, err := json.Marshal(Wildcard)
if err != nil {
t.Fatal(err)
}
expected := `{"_wildcard":{}}`
if string(b) != expected {
t.Errorf("Invalid Wildcard json representation.\nExpected: %s\nReceived: %s",
expected, string(b))
}
}