OSDN Git Service

feat: add processIssuing (#152)
[bytom/vapor.git] / vendor / github.com / bytom / errors / writer_test.go
diff --git a/vendor/github.com/bytom/errors/writer_test.go b/vendor/github.com/bytom/errors/writer_test.go
new file mode 100644 (file)
index 0000000..e8f800b
--- /dev/null
@@ -0,0 +1,51 @@
+package errors
+
+import (
+       "io"
+       "testing"
+)
+
+func TestWriter(t *testing.T) {
+       errX := New("x")
+       tw := testWriter{nil, errX, nil}
+       w := NewWriter(&tw)
+       _, err := w.Write([]byte{1})
+       if err != nil {
+               t.Error("unexpected error", err)
+       }
+       if g := w.Written(); g != 1 {
+               t.Errorf("w.Written() = %d want 1", g)
+       }
+       if len(tw) != 2 {
+               t.Errorf("len(tw) = %d want 2", len(tw))
+       }
+       for i := 0; i < 10; i++ {
+               _, err = w.Write([]byte{1})
+               if err != errX {
+                       t.Errorf("err = %v want %v", err, errX)
+               }
+               if g := w.Written(); g != 2 {
+                       t.Errorf("w.Written() = %d want 2", g)
+               }
+               if len(tw) != 1 {
+                       t.Errorf("len(tw) = %d want 1", len(tw))
+               }
+       }
+       if got := w.Err(); got != errX {
+               t.Errorf("w.Err() = %v want %v", got, errX)
+       }
+}
+
+// testWriter returns its errors in order.
+// elements of a testWriter may be nil.
+// if its len is 0, it returns io.EOF.
+type testWriter []error
+
+func (tw *testWriter) Write(p []byte) (int, error) {
+       if len(*tw) == 0 {
+               return len(p), io.EOF
+       }
+       err := (*tw)[0]
+       *tw = (*tw)[1:]
+       return len(p), err
+}