gecko/ids/id_test.go

82 lines
1.8 KiB
Go

// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package ids
import (
"bytes"
"testing"
)
func TestID(t *testing.T) {
hash := [32]byte{24}
id := NewID(hash)
if key := id.Key(); !bytes.Equal(hash[:], key[:]) {
t.Fatalf("ID.Key returned wrong bytes")
}
prefixed := id.Prefix(0)
if key := id.Key(); !bytes.Equal(hash[:], key[:]) {
t.Fatalf("ID.Prefix mutated the ID")
}
if nextPrefix := id.Prefix(0); !prefixed.Equals(nextPrefix) {
t.Fatalf("ID.Prefix not consistant")
}
if b := id.Bytes(); !bytes.Equal(hash[:], b) {
t.Fatalf("ID.Bytes returned wrong bytes")
}
if str := id.String(); str != "Ba3mm8Ra8JYYebeZ9p7zw1ayorDbeD1euwxhgzSLsncKqGoNt" {
t.Fatalf("ID.String returned wrong string: %s", str)
}
}
func TestIDBit(t *testing.T) {
id0 := NewID([32]byte{1 << 0})
id1 := NewID([32]byte{1 << 1})
id2 := NewID([32]byte{1 << 2})
id3 := NewID([32]byte{1 << 3})
id4 := NewID([32]byte{1 << 4})
id5 := NewID([32]byte{1 << 5})
id6 := NewID([32]byte{1 << 6})
id7 := NewID([32]byte{1 << 7})
id8 := NewID([32]byte{0, 1 << 0})
if id0.Bit(0) != 1 {
t.Fatalf("Wrong bit")
} else if id1.Bit(1) != 1 {
t.Fatalf("Wrong bit")
} else if id2.Bit(2) != 1 {
t.Fatalf("Wrong bit")
} else if id3.Bit(3) != 1 {
t.Fatalf("Wrong bit")
} else if id4.Bit(4) != 1 {
t.Fatalf("Wrong bit")
} else if id5.Bit(5) != 1 {
t.Fatalf("Wrong bit")
} else if id6.Bit(6) != 1 {
t.Fatalf("Wrong bit")
} else if id7.Bit(7) != 1 {
t.Fatalf("Wrong bit")
} else if id8.Bit(8) != 1 {
t.Fatalf("Wrong bit")
}
}
func TestFromString(t *testing.T) {
key := [32]byte{'a', 'v', 'a', ' ', 'l', 'a', 'b', 's'}
id := NewID(key)
idStr := id.String()
id2, err := FromString(idStr)
if err != nil {
t.Fatal(err)
}
if id.Key() != id2.Key() {
t.Fatal("Expected FromString to be inverse of String but it wasn't")
}
}