package p2p import ( "bytes" "os" "path/filepath" "testing" "github.com/stretchr/testify/assert" cmn "github.com/tendermint/tmlibs/common" ) func TestLoadOrGenNodeKey(t *testing.T) { filePath := filepath.Join(os.TempDir(), cmn.RandStr(12)+"_peer_id.json") target := MakePoWTarget(2) nodeKey, err := LoadOrGenNodeKey(filePath, target) assert.Nil(t, err) nodeKey2, err := LoadOrGenNodeKey(filePath, target) assert.Nil(t, err) assert.Equal(t, nodeKey, nodeKey2) } func repeatBytes(val byte, n int) []byte { return bytes.Repeat([]byte{val}, n) } func TestPoWTarget(t *testing.T) { cases := []struct { difficulty uint8 target []byte }{ {0, bytes.Repeat([]byte{255}, 20)}, {1, append([]byte{128}, repeatBytes(255, 19)...)}, {8, append([]byte{0}, repeatBytes(255, 19)...)}, {9, append([]byte{0, 128}, repeatBytes(255, 18)...)}, {10, append([]byte{0, 64}, repeatBytes(255, 18)...)}, {16, append([]byte{0, 0}, repeatBytes(255, 18)...)}, {17, append([]byte{0, 0, 128}, repeatBytes(255, 17)...)}, } for _, c := range cases { assert.Equal(t, MakePoWTarget(c.difficulty), c.target) } }