@@ -1,8 +1,11 @@ package fibonacci import ( + "bytes" + "fmt" + "io" "testing" ) func TestNumbers(t *testing.T) { n := New(32) @@ -18,13 +21,79 @@ } func TestCoding(t *testing.T) { n := New(32) - for i := uint64(0); i < 1024; i++ { - enc := n.Code(i) - dec := n.Decode(enc) + 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 +}