package core import ( "encoding/hex" "encoding/json" "testing" "github.com/stretchr/testify/assert" ) func TestHashBytes(t *testing.T) { m := []byte("test") h := HashBytes(m) assert.Equal(t, hex.EncodeToString(h[:]), "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08") assert.True(t, !h.IsZero()) z := Hash{} assert.True(t, z.IsZero()) } type testData struct { Data []byte Nonce uint64 } func (d *testData) Bytes() []byte { b, _ := json.Marshal(d) return b } func (d *testData) GetNonce() uint64 { return d.Nonce } func (d *testData) IncrementNonce() { d.Nonce++ } func TestPoW(t *testing.T) { difficulty := uint64(2) data := &testData{ Data: []byte("test"), Nonce: 0, } nonce, err := CalculatePoW(data, difficulty) assert.Nil(t, err) data.Nonce = nonce h := HashBytes(data.Bytes()) assert.Equal(t, hex.EncodeToString(h[:]), "0000020881c02f5171b978e74bb710242e95cc67b36416e382118a7ab2a69321") // CheckPoW assert.True(t, CheckPoW(h, difficulty)) }