arnaucube
arnaucube/go-dhtPublic Self-hosted repository
go-dht/kademlia/id_test.go
kademlia/id_test.goRaw
 1package kademlia
 2
 3import (
 4	"encoding/json"
 5	"fmt"
 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	fmt.Println("idStr", string(idStr))
32
33	var idParsed ID
34	err = json.Unmarshal(idStr, &idParsed)
35	assert.Nil(t, err)
36	assert.Equal(t, id, idParsed)
37
38	var idParsed2 ID
39	err = json.Unmarshal([]byte("\"0fd85ddddf15aeec2d5d8b01b013dbca030a18d7\""), &idParsed2)
40	assert.Nil(t, err)
41	assert.Equal(t, id, idParsed2)
42}
43
44func TestIDCmp(t *testing.T) {
45	idA, err := IDFromString("0fd85ddddf15aeec2d5d8b01b013dbca030a18d7")
46	assert.Nil(t, err)
47	idB, err := IDFromString("c48d8b53dbefb609ed4e94d386dd5b22efcb2c5b")
48	assert.Nil(t, err)
49	assert.True(t, !idA.Cmp(idB))
50}
51
52func TestIDDistance(t *testing.T) {
53	idA, err := IDFromString("0fd85ddddf15aeec2d5d8b01b013dbca030a18d7")
54	assert.Nil(t, err)
55	idB, err := IDFromString("c48d8b53dbefb609ed4e94d386dd5b22efcb2c5b")
56	assert.Nil(t, err)
57	assert.Equal(t, "cb55d68e04fa18e5c0131fd236ce80e8ecc1348c", idA.Distance(idB).String())
58}