arnaucube
arnaucube/go-dhtPublic Self-hosted repository
go-dht/kademlia/id_test.go
kademlia/id_test.goRaw
 1package kademlia
 2
 3import (
 4	"encoding/hex"
 5	"encoding/json"
 6	"testing"
 7
 8	"github.com/stretchr/testify/assert"
 9)
10
11func TestNewID(t *testing.T) {
12	// get some IDs
13	// for i := 0; i < 10; i++ {
14	//         id, err := NewID()
15	//         assert.Nil(t, err)
16	//         fmt.Println(id)
17	// }
18
19	idA, err := IDFromString("0fd85ddddf15aeec2d5d8b01b013dbca030a18d7")
20	assert.Nil(t, err)
21	assert.Equal(t, "0fd85ddddf15aeec2d5d8b01b013dbca030a18d7", idA.String())
22}
23
24func TestIDMarshalers(t *testing.T) {
25	id, err := IDFromString("0fd85ddddf15aeec2d5d8b01b013dbca030a18d7")
26	assert.Nil(t, err)
27
28	idStr, err := json.Marshal(id)
29	assert.Nil(t, err)
30	assert.Equal(t, "\"0fd85ddddf15aeec2d5d8b01b013dbca030a18d7\"", string(idStr))
31
32	var idParsed ID
33	err = json.Unmarshal(idStr, &idParsed)
34	assert.Nil(t, err)
35	assert.Equal(t, id, idParsed)
36
37	var idParsed2 ID
38	err = json.Unmarshal([]byte("\"0fd85ddddf15aeec2d5d8b01b013dbca030a18d7\""), &idParsed2)
39	assert.Nil(t, err)
40	assert.Equal(t, id, idParsed2)
41}
42
43func TestIDCmp(t *testing.T) {
44	idA, err := IDFromString("0fd85ddddf15aeec2d5d8b01b013dbca030a18d7")
45	assert.Nil(t, err)
46	idB, err := IDFromString("c48d8b53dbefb609ed4e94d386dd5b22efcb2c5b")
47	assert.Nil(t, err)
48	assert.True(t, !idA.Cmp(idB))
49}
50
51func TestIDDistance(t *testing.T) {
52	idA, err := IDFromString("0fd85ddddf15aeec2d5d8b01b013dbca030a18d7")
53	assert.Nil(t, err)
54	idB, err := IDFromString("c48d8b53dbefb609ed4e94d386dd5b22efcb2c5b")
55	assert.Nil(t, err)
56	assert.Equal(t, "cb55d68e04fa18e5c0131fd236ce80e8ecc1348c", idA.Distance(idB).String())
57}
58
59func TestHashData(t *testing.T) {
60	h := HashData([]byte("test data"))
61	assert.Equal(t, "916f0027a575074ce72a331777c3478d6513f786", hex.EncodeToString(h[:]))
62}