package blockchain import ( "github.com/p9c/p9/pkg/bits" "math/big" "testing" ) // TestBigToCompact ensures BigToCompact converts big integers to the expected compact representation. func TestBigToCompact(t *testing.T) { tests := []struct { in int64 out uint32 }{ {0, 0}, {-1, 25231360}, } for x, test := range tests { n := big.NewInt(test.in) r := bits.BigToCompact(n) if r != test.out { t.Errorf("TestBigToCompact test #%d failed: got %d want %d\n", x, r, test.out, ) return } } } // TestCompactToBig ensures CompactToBig converts numbers using the compact representation to the expected big intergers. func TestCompactToBig(t *testing.T) { tests := []struct { in uint32 out int64 }{ {10000000, 0}, } for x, test := range tests { n := bits.CompactToBig(test.in) want := big.NewInt(test.out) if n.Cmp(want) != 0 { t.Errorf("TestCompactToBig test #%d failed: got %d want %d\n", x, n.Int64(), want.Int64(), ) return } } } // TestCalcWork ensures CalcWork calculates the expected work value from values in compact representation. func TestCalcWork(t *testing.T) { tests := []struct { in uint32 out int64 }{ {10000000, 0}, } for x, test := range tests { bits := test.in r := CalcWork(bits, 0, 2) if r.Int64() != test.out { t.Errorf("TestCalcWork test #%d failed: got %v want %d\n", x, r.Int64(), test.out, ) return } } }