package ioutils // import "github.com/docker/docker/pkg/ioutils" import ( "bytes" "strings" "testing" ) func TestWriteCloserWrapperClose(t *testing.T) { called := false writer := bytes.NewBuffer([]byte{}) wrapper := NewWriteCloserWrapper(writer, func() error { called = true return nil }) if err := wrapper.Close(); err != nil { t.Fatal(err) } if !called { t.Fatalf("writeCloserWrapper should have call the anonymous function.") } } func TestNopWriteCloser(t *testing.T) { writer := bytes.NewBuffer([]byte{}) wrapper := NopWriteCloser(writer) if err := wrapper.Close(); err != nil { t.Fatal("NopWriteCloser always return nil on Close.") } } func TestNopWriter(t *testing.T) { nw := &NopWriter{} l, err := nw.Write([]byte{'c'}) if err != nil { t.Fatal(err) } if l != 1 { t.Fatalf("Expected 1 got %d", l) } } func TestWriteCounter(t *testing.T) { dummy1 := "This is a dummy string." dummy2 := "This is another dummy string." totalLength := int64(len(dummy1) + len(dummy2)) reader1 := strings.NewReader(dummy1) reader2 := strings.NewReader(dummy2) var buffer bytes.Buffer wc := NewWriteCounter(&buffer) reader1.WriteTo(wc) reader2.WriteTo(wc) if wc.Count != totalLength { t.Errorf("Wrong count: %d vs. %d", wc.Count, totalLength) } if buffer.String() != dummy1+dummy2 { t.Error("Wrong message written") } }