package stario import ( "bytes" "errors" "io" "testing" ) func TestStarPipeRoundTrip(t *testing.T) { reader, writer, err := NewStarPipe(16) if err != nil { t.Fatal(err) } want := []byte("hello world") go func() { _, _ = writer.Write(want) _ = writer.Close() }() got, err := io.ReadAll(reader) if err != nil { t.Fatalf("ReadAll failed: %v", err) } if !bytes.Equal(got, want) { t.Fatalf("unexpected payload: got %q want %q", got, want) } } func TestStarPipeReaderCloseAbortsWriter(t *testing.T) { reader, writer, err := NewStarPipe(4) if err != nil { t.Fatal(err) } if err := reader.Close(); err != nil { t.Fatal(err) } if _, err := writer.Write([]byte("x")); !errors.Is(err, ErrStarBufferClosed) { t.Fatalf("unexpected writer error after reader close: %v", err) } } func TestStarPipeNilEndsReportClosedPipe(t *testing.T) { var reader *StarPipeReader var writer *StarPipeWriter if _, err := reader.Read(make([]byte, 1)); !errors.Is(err, io.ErrClosedPipe) { t.Fatalf("unexpected nil reader error: %v", err) } if _, err := writer.Write([]byte("x")); !errors.Is(err, io.ErrClosedPipe) { t.Fatalf("unexpected nil writer error: %v", err) } }