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}