github.com/Psiphon-Inc/goarista@v0.0.0-20160825065156-d002785f4c67/key/composite_test.go (about)

     1  // Copyright (C) 2016  Arista Networks, Inc.
     2  // Use of this source code is governed by the Apache License 2.0
     3  // that can be found in the COPYING file.
     4  
     5  package key_test
     6  
     7  import (
     8  	"testing"
     9  
    10  	. "github.com/aristanetworks/goarista/key"
    11  	"github.com/aristanetworks/goarista/test"
    12  )
    13  
    14  type unhashable struct {
    15  	f func()
    16  	u uintptr
    17  }
    18  
    19  func TestBadComposite(t *testing.T) {
    20  	test.ShouldPanicWith(t, "use of unhashable type in a map", func() {
    21  		m := map[interface{}]struct{}{
    22  			unhashable{func() {}, 0x42}: struct{}{},
    23  		}
    24  		// Use Key here to make sure init() is called.
    25  		if _, ok := m[New("foo")]; ok {
    26  			t.Fatal("WTF")
    27  		}
    28  	})
    29  	test.ShouldPanicWith(t, "use of uncomparable type on the lhs of ==", func() {
    30  		var a interface{}
    31  		var b interface{}
    32  		a = unhashable{func() {}, 0x42}
    33  		b = unhashable{func() {}, 0x42}
    34  		// Use Key here to make sure init() is called.
    35  		if a == b {
    36  			t.Fatal("WTF")
    37  		}
    38  	})
    39  }