diff --git a/binary/time.go b/binary/time.go index 0c5a020be..8cc36f86f 100644 --- a/binary/time.go +++ b/binary/time.go @@ -8,10 +8,10 @@ import ( // Time func WriteTime(w io.Writer, t time.Time, n *int64, err *error) { - WriteInt64(w, t.Unix(), n, err) + WriteInt64(w, t.UnixNano(), n, err) } func ReadTime(r io.Reader, n *int64, err *error) time.Time { t := ReadInt64(r, n, err) - return time.Unix(t, 0) + return time.Unix(0, t) } diff --git a/state/state_test.go b/state/state_test.go index 319ccc083..d45d01396 100644 --- a/state/state_test.go +++ b/state/state_test.go @@ -63,20 +63,27 @@ func TestGenesisSaveLoad(t *testing.T) { t.Error("Error appending initial block:", err) } - // Save s0, load s1. + // Save s0 commitTime := time.Now() s0.Save(commitTime) + + // Sanity check s0 //s0.DB.(*MemDB).Print() + if s0.Validators.TotalVotingPower() == 0 { + t.Error("s0 Validators TotalVotingPower should not be 0") + } + if s0.Height != 1 { + t.Error("s0 Height should be 1, got", s0.Height) + } + + // Load s1 s1 := LoadState(s0.DB) // Compare CommitTime - if commitTime.Unix() != s1.CommitTime.Unix() { - t.Error("CommitTime was not the same") + if !s0.CommitTime.Equal(s1.CommitTime) { + t.Error("CommitTime was not the same", s0.CommitTime, s1.CommitTime) } // Compare height & blockHash - if s0.Height != 1 { - t.Error("s0 Height should be 1, got", s0.Height) - } if s0.Height != s1.Height { t.Error("Height mismatch") } @@ -85,14 +92,12 @@ func TestGenesisSaveLoad(t *testing.T) { } // Compare Validators if s0.Validators.Size() != s1.Validators.Size() { - t.Error("Validators Size changed") - } - if s0.Validators.TotalVotingPower() == 0 { - t.Error("s0 Validators TotalVotingPower should not be 0") + t.Error("Validators Size mismatch") } if s0.Validators.TotalVotingPower() != s1.Validators.TotalVotingPower() { - t.Error("Validators TotalVotingPower changed") + t.Error("Validators TotalVotingPower mismatch") + } + if !bytes.Equal(s0.AccountBalances.Tree.Hash(), s1.AccountBalances.Tree.Hash()) { + t.Error("AccountBalance mismatch") } - // TODO Compare accountBalances, height, blockHash - }