package fibonacci import ( "bytes" "fmt" "io" "testing" ) func TestNumbers(t *testing.T) { n := New(32) expected := []uint64{1, 1, 2, 3, 5, 8, 13, 21} for i, v := range expected { if f := n[i]; f != v { t.Error("Unexpected value for", i, f, "expected", v) } } } func TestCoding(t *testing.T) { n := New(32) for i := uint64(0); i < 4096; i++ { enc, _ := n.Code(i) //fmt.Printf("%d - %b, %d\n", i, enc, len) dec, _ := n.Decode(enc) if i != dec { t.Errorf("Unexpected value for %d - enc is %b, dec is %d\n", i, enc, dec) } } } func TestWriter0(t *testing.T) { var buf bytes.Buffer var w io.Writer = Writer(&buf) w.Write([]byte{0}) w.Write(nil) for _, v := range buf.Bytes() { fmt.Printf("%s-", b2s(v)) } fmt.Println() } func TestWriter1(t *testing.T) { var buf bytes.Buffer var w io.Writer = Writer(&buf) w.Write([]byte{0, 1}) w.Write(nil) for _, v := range buf.Bytes() { fmt.Printf("%s-", b2s(v)) } fmt.Println() } func TestWriter2(t *testing.T) { var buf bytes.Buffer var w io.Writer = Writer(&buf) w.Write([]byte{0, 1, 2}) w.Write(nil) for _, v := range buf.Bytes() { fmt.Printf("%s-", b2s(v)) } fmt.Println() } func TestWriter3(t *testing.T) { var buf bytes.Buffer var w io.Writer = Writer(&buf) var input []byte = make([]byte, 256) for i := 0; i < 256; i++ { input[i] = byte(i) } w.Write(input) w.Write(nil) for _, v := range buf.Bytes() { fmt.Printf("%s-", b2s(v)) } fmt.Println() } func b2s(b byte) (result string) { for i := 0; i < 8; i++ { if b&1 > 0 { result += "1" } else { result += "0" } b >>= 1 } return }