aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--oae2_test.go76
1 files changed, 70 insertions, 6 deletions
diff --git a/oae2_test.go b/oae2_test.go
index 90cf84d..96b83af 100644
--- a/oae2_test.go
+++ b/oae2_test.go
@@ -17,14 +17,14 @@ func TestRoundTrip(t *testing.T) {
buf := new(bytes.Buffer)
w := NewWriter(buf, []byte(key), blockSize)
if _, err := io.WriteString(w, msg); err != nil {
- t.Fatalf("NewWriter.Write failed: %s", err)
+ t.Fatalf("Writer.Write failed: %s", err)
}
if err := w.Close(); err != nil {
- t.Fatalf("NewWriter.Close failed: %s", err)
+ t.Fatalf("Writer.Close failed: %s", err)
}
got, err := io.ReadAll(NewReader(buf, []byte(key), blockSize))
if err != nil {
- t.Fatalf("NewReader.Read failed: %s", err)
+ t.Fatalf("Reader.Read failed: %s", err)
}
if string(got) != msg {
t.Errorf("Message failed to round-trip, got %q, want %q", got, msg)
@@ -41,16 +41,80 @@ func TestReadFromWriteTo(t *testing.T) {
buf := new(bytes.Buffer)
w := NewWriter(buf, []byte(key), blockSize)
if _, err := io.Copy(w, struct{ io.Reader }{strings.NewReader(msg)}); err != nil {
- t.Fatalf("NewWriter.WriteTo failed: %s", err)
+ t.Fatalf("Writer.WriteTo failed: %s", err)
}
if err := w.Close(); err != nil {
- t.Fatalf("NewWriter.Close failed: %s", err)
+ t.Fatalf("Writer.Close failed: %s", err)
}
got := new(strings.Builder)
if _, err := io.Copy(got, NewReader(buf, []byte(key), blockSize)); err != nil {
- t.Fatalf("NewReader.Read failed: %s", err)
+ t.Fatalf("Reader.Read failed: %s", err)
}
if got.String() != msg {
t.Errorf("Message failed to round-trip, got %q, want %q", got, msg)
}
}
+
+func FuzzRoundTrip(f *testing.F) {
+ f.Add(1, []byte("Hello World!"))
+ f.Fuzz(func(t *testing.T, segmentSize int, msg []byte) {
+ const password = "asdf"
+
+ if segmentSize <= 0 {
+ return
+ }
+ buf := new(bytes.Buffer)
+ w := NewWriter(buf, []byte(password), segmentSize)
+ n, err := w.Write(msg)
+ if err != nil {
+ t.Fatalf("Writer.Write(%q) failed: %s", msg, err)
+ }
+ if n != len(msg) {
+ t.Errorf("Writer.Write(%q) = %d, want %d", msg, n, len(msg))
+ }
+ if err := w.Close(); err != nil {
+ t.Fatalf("Writer.Close failed: %s", err)
+ }
+ got, err := io.ReadAll(NewReader(buf, []byte(password), segmentSize))
+ if err != nil {
+ t.Fatalf("Reader.Read failed: %s", err)
+ }
+ if !bytes.Equal(got, msg) {
+ t.Errorf("Message failed to round-trip, got %q, want %q", got, msg)
+ }
+ })
+}
+
+func FuzzReadFromWriteTo(f *testing.F) {
+ f.Add(1, "Hello World!")
+ f.Fuzz(func(t *testing.T, segmentSize int, msg string) {
+ const password = "asdf"
+
+ if segmentSize <= 0 {
+ return
+ }
+ buf := new(bytes.Buffer)
+ w := NewWriter(buf, []byte(password), segmentSize)
+ n, err := w.ReadFrom(strings.NewReader(msg))
+ if err != nil {
+ t.Fatalf("Writer.ReadFrom(%q) failed: %s", msg, err)
+ }
+ if n != int64(len(msg)) {
+ t.Errorf("Writer.Write(%q) = %d, want %d", msg, n, len(msg))
+ }
+ if err := w.Close(); err != nil {
+ t.Fatalf("Writer.Close failed: %s", err)
+ }
+ got := new(strings.Builder)
+ n, err = NewReader(buf, []byte(password), segmentSize).WriteTo(got)
+ if err != nil {
+ t.Fatalf("Reader.WriteTo failed: %s", err)
+ }
+ if n != int64(len(msg)) {
+ t.Errorf("Reader.WriteTo returned %d bytes, want %d", n, len(msg))
+ }
+ if got.String() != msg {
+ t.Errorf("Message failed to round-trip, got %q, want %q", got, msg)
+ }
+ })
+}