68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |