package kademlia
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestNewID(t *testing.T) {
|
|
// get some IDs
|
|
// for i := 0; i < 10; i++ {
|
|
// id, err := NewID()
|
|
// assert.Nil(t, err)
|
|
// fmt.Println(id)
|
|
// }
|
|
|
|
idA, err := IDFromString("0fd85ddddf15aeec2d5d8b01b013dbca030a18d7")
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, "0fd85ddddf15aeec2d5d8b01b013dbca030a18d7", idA.String())
|
|
}
|
|
|
|
func TestIDMarshalers(t *testing.T) {
|
|
id, err := IDFromString("0fd85ddddf15aeec2d5d8b01b013dbca030a18d7")
|
|
assert.Nil(t, err)
|
|
|
|
idStr, err := json.Marshal(id)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, "\"0fd85ddddf15aeec2d5d8b01b013dbca030a18d7\"", string(idStr))
|
|
|
|
var idParsed ID
|
|
err = json.Unmarshal(idStr, &idParsed)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, id, idParsed)
|
|
|
|
var idParsed2 ID
|
|
err = json.Unmarshal([]byte("\"0fd85ddddf15aeec2d5d8b01b013dbca030a18d7\""), &idParsed2)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, id, idParsed2)
|
|
}
|
|
|
|
func TestIDCmp(t *testing.T) {
|
|
idA, err := IDFromString("0fd85ddddf15aeec2d5d8b01b013dbca030a18d7")
|
|
assert.Nil(t, err)
|
|
idB, err := IDFromString("c48d8b53dbefb609ed4e94d386dd5b22efcb2c5b")
|
|
assert.Nil(t, err)
|
|
assert.True(t, !idA.Cmp(idB))
|
|
}
|
|
|
|
func TestIDDistance(t *testing.T) {
|
|
idA, err := IDFromString("0fd85ddddf15aeec2d5d8b01b013dbca030a18d7")
|
|
assert.Nil(t, err)
|
|
idB, err := IDFromString("c48d8b53dbefb609ed4e94d386dd5b22efcb2c5b")
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, "cb55d68e04fa18e5c0131fd236ce80e8ecc1348c", idA.Distance(idB).String())
|
|
}
|
|
|
|
func TestHashData(t *testing.T) {
|
|
h := HashData([]byte("test data"))
|
|
assert.Equal(t, "916f0027a575074ce72a331777c3478d6513f786", hex.EncodeToString(h[:]))
|
|
}
|