func TestBucketWriteCloserBucketsLinesCorrectly(t *testing.T) {
	bb := gorill.NewNopCloseBuffer()
	bwc := NewBucketWriteCloser(bb, time.Minute)

	lines := []string{
		"first line to be emitted\n",            // 0
		"@33#bunch of stuff\n",                  // 1
		"@44#nothing of too much interest\n",    // 2
		"second line to be emitted\n",           // 3
		"@33#some more stuff for this bucket\n", // 4
		"@44#again, more boring stuff\n",        // 5
	}

	for _, line := range lines {
		n, err := bwc.Write([]byte(line))
		if want := len(line); n != want {
			t.Errorf("Actual: %#v; Expected: %#v", n, want)
		}
		if err != nil {
			t.Errorf("Actual: %#v; Expected: %#v", err, nil)
		}
		if want := ""; bb.String() != want {
			t.Errorf("Actual: %#v; Expected: %#v", bb.String(), want)
		}
	}

	if err := bwc.Close(); err != nil {
		t.Errorf("Actual: %#v; Expected: %#v", err, nil)
	}

	want := lines[0] + lines[3] + lines[1][:len(lines[1])-1] + lines[4][3:] + lines[2][:len(lines[2])-1] + lines[5][3:]
	if bb.String() != want {
		t.Errorf("Actual: %#v; Expected: %#v", bb.String(), want)
	}
}
func TestBucketWriteCloserCloseFlushesData(t *testing.T) {
	bb := gorill.NewNopCloseBuffer()
	bwc := NewBucketWriteCloser(bb, time.Minute)

	line := "example line\n"
	n, err := bwc.Write([]byte(line))
	if want := len(line); n != want {
		t.Errorf("Actual: %#v; Expected: %#v", n, want)
	}
	if err != nil {
		t.Errorf("Actual: %#v; Expected: %#v", err, nil)
	}
	if want := ""; bb.String() != want {
		t.Errorf("Actual: %#v; Expected: %#v", bb.String(), want)
	}

	if err := bwc.Close(); err != nil {
		t.Errorf("Actual: %#v; Expected: %#v", err, nil)
	}
	if want := line; bb.String() != want {
		t.Errorf("Actual: %#v; Expected: %#v", bb.String(), want)
	}
}