forked from mirror/go-ethereum
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.9 KiB
67 lines
1.9 KiB
package whisper
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
var topicCreationTests = []struct {
|
|
data []byte
|
|
hash [4]byte
|
|
}{
|
|
{hash: [4]byte{0xc5, 0xd2, 0x46, 0x01}, data: nil},
|
|
{hash: [4]byte{0xc5, 0xd2, 0x46, 0x01}, data: []byte{}},
|
|
{hash: [4]byte{0x8f, 0x9a, 0x2b, 0x7d}, data: []byte("test name")},
|
|
}
|
|
|
|
func TestTopicCreation(t *testing.T) {
|
|
// Create the topics individually
|
|
for i, tt := range topicCreationTests {
|
|
topic := NewTopic(tt.data)
|
|
if bytes.Compare(topic[:], tt.hash[:]) != 0 {
|
|
t.Errorf("binary test %d: hash mismatch: have %v, want %v.", i, topic, tt.hash)
|
|
}
|
|
}
|
|
for i, tt := range topicCreationTests {
|
|
topic := NewTopicFromString(string(tt.data))
|
|
if bytes.Compare(topic[:], tt.hash[:]) != 0 {
|
|
t.Errorf("textual test %d: hash mismatch: have %v, want %v.", i, topic, tt.hash)
|
|
}
|
|
}
|
|
// Create the topics in batches
|
|
binaryData := make([][]byte, len(topicCreationTests))
|
|
for i, tt := range topicCreationTests {
|
|
binaryData[i] = tt.data
|
|
}
|
|
textualData := make([]string, len(topicCreationTests))
|
|
for i, tt := range topicCreationTests {
|
|
textualData[i] = string(tt.data)
|
|
}
|
|
|
|
topics := NewTopics(binaryData...)
|
|
for i, tt := range topicCreationTests {
|
|
if bytes.Compare(topics[i][:], tt.hash[:]) != 0 {
|
|
t.Errorf("binary batch test %d: hash mismatch: have %v, want %v.", i, topics[i], tt.hash)
|
|
}
|
|
}
|
|
topics = NewTopicsFromStrings(textualData...)
|
|
for i, tt := range topicCreationTests {
|
|
if bytes.Compare(topics[i][:], tt.hash[:]) != 0 {
|
|
t.Errorf("textual batch test %d: hash mismatch: have %v, want %v.", i, topics[i], tt.hash)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestTopicSetCreation(t *testing.T) {
|
|
topics := make([]Topic, len(topicCreationTests))
|
|
for i, tt := range topicCreationTests {
|
|
topics[i] = NewTopic(tt.data)
|
|
}
|
|
set := newTopicSet(topics)
|
|
for i, tt := range topicCreationTests {
|
|
topic := NewTopic(tt.data)
|
|
if _, ok := set[topic.String()]; !ok {
|
|
t.Errorf("topic %d: not found in set", i)
|
|
}
|
|
}
|
|
}
|
|
|