arnaucube
arnaucube/slowlorisdbPublic Self-hosted repository
slowlorisdb/core/common_test.go
core/common_test.goRaw
 1package core
 2
 3import (
 4	"encoding/hex"
 5	"encoding/json"
 6	"testing"
 7
 8	"github.com/stretchr/testify/assert"
 9)
10
11func TestHashBytes(t *testing.T) {
12	m := []byte("test")
13	h := HashBytes(m)
14	assert.Equal(t, hex.EncodeToString(h[:]), "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08")
15	assert.True(t, !h.IsZero())
16
17	z := Hash{}
18	assert.True(t, z.IsZero())
19}
20
21type testData struct {
22	Data  []byte
23	Nonce uint64
24}
25
26func (d *testData) Bytes() []byte {
27	b, _ := json.Marshal(d)
28	return b
29}
30
31func (d *testData) GetNonce() uint64 {
32	return d.Nonce
33}
34func (d *testData) IncrementNonce() {
35	d.Nonce++
36}
37
38func TestPoW(t *testing.T) {
39	difficulty := 2
40	data := &testData{
41		Data:  []byte("test"),
42		Nonce: 0,
43	}
44	nonce, err := CalculatePoW(data, difficulty)
45	assert.Nil(t, err)
46	data.Nonce = nonce
47
48	h := HashBytes(data.Bytes())
49
50	assert.Equal(t, hex.EncodeToString(h[:]), "0000020881c02f5171b978e74bb710242e95cc67b36416e382118a7ab2a69321")
51
52	// CheckPoW
53	assert.True(t, CheckPoW(h, difficulty))
54}