parser: implement container-level parsing of block headers

This commit is contained in:
George Tankersley
2018-09-03 00:00:00 +00:00
commit 69f376515c
3 changed files with 124 additions and 0 deletions

51
parser/block_test.go Normal file
View File

@@ -0,0 +1,51 @@
package parser
import (
"bufio"
"bytes"
"encoding/hex"
"os"
"testing"
)
func TestReadBlockHeader(t *testing.T) {
testBlocks, err := os.Open("testdata/blocks")
if err != nil {
t.Fatal(err)
}
defer testBlocks.Close()
lastBlockTime := uint32(0)
scan := bufio.NewScanner(testBlocks)
for scan.Scan() {
blockDataHex := scan.Text()
decodedBlockData, err := hex.DecodeString(blockDataHex)
if err != nil {
t.Error(err)
continue
}
reader := bytes.NewReader(decodedBlockData)
rawHeader, err := ReadBlockHeader(reader)
if err != nil {
t.Error(err)
break
}
if rawHeader.Version != 4 {
t.Error("Read wrong version in a test block.")
break
}
if rawHeader.Time < lastBlockTime {
t.Error("Block times not increasing.")
break
}
lastBlockTime = rawHeader.Time
if rawHeader.SolutionSize.Size != 1344 {
t.Error("Got wrong Equihash solution size.")
break
}
}
}