writers_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package ioutils
  2. import (
  3. "bytes"
  4. "strings"
  5. "testing"
  6. )
  7. func TestWriteCloserWrapperClose(t *testing.T) {
  8. called := false
  9. writer := bytes.NewBuffer([]byte{})
  10. wrapper := NewWriteCloserWrapper(writer, func() error {
  11. called = true
  12. return nil
  13. })
  14. if err := wrapper.Close(); err != nil {
  15. t.Fatal(err)
  16. }
  17. if !called {
  18. t.Fatalf("writeCloserWrapper should have call the anonymous function.")
  19. }
  20. }
  21. func TestNopWriteCloser(t *testing.T) {
  22. writer := bytes.NewBuffer([]byte{})
  23. wrapper := NopWriteCloser(writer)
  24. if err := wrapper.Close(); err != nil {
  25. t.Fatal("NopWriteCloser always return nil on Close.")
  26. }
  27. }
  28. func TestNopWriter(t *testing.T) {
  29. nw := &NopWriter{}
  30. l, err := nw.Write([]byte{'c'})
  31. if err != nil {
  32. t.Fatal(err)
  33. }
  34. if l != 1 {
  35. t.Fatalf("Expected 1 got %d", l)
  36. }
  37. }
  38. func TestWriteCounter(t *testing.T) {
  39. dummy1 := "This is a dummy string."
  40. dummy2 := "This is another dummy string."
  41. totalLength := int64(len(dummy1) + len(dummy2))
  42. reader1 := strings.NewReader(dummy1)
  43. reader2 := strings.NewReader(dummy2)
  44. var buffer bytes.Buffer
  45. wc := NewWriteCounter(&buffer)
  46. reader1.WriteTo(wc)
  47. reader2.WriteTo(wc)
  48. if wc.Count != totalLength {
  49. t.Errorf("Wrong count: %d vs. %d", wc.Count, totalLength)
  50. }
  51. if buffer.String() != dummy1+dummy2 {
  52. t.Error("Wrong message written")
  53. }
  54. }