diff --git a/parse_test.go b/parse_test.go index f819199d56efd9e440a0543d5e5789cc22ce91f1..242d582eead1bae14f72a340a55ab96ab5dab935 100644 --- a/parse_test.go +++ b/parse_test.go @@ -2,35 +2,79 @@ package chunk import ( "bytes" + "fmt" "testing" ) +const ( + testTwoThirdsOfBlockPayloadLimit = 2 * (float32(BlockPayloadLimit) / float32(3)) +) + func TestParseRabin(t *testing.T) { - max := 1000 - r := bytes.NewReader(randBuf(t, max)) - chk1 := "rabin-18-25-32" - chk2 := "rabin-15-23-31" - _, err := parseRabinString(r, chk1) + r := bytes.NewReader(randBuf(t, 1000)) + + _, err := FromString(r, "rabin-18-25-32") if err != nil { t.Errorf(err.Error()) } - _, err = parseRabinString(r, chk2) + + _, err = FromString(r, "rabin-15-23-31") if err != ErrRabinMin { t.Fatalf("Expected an 'ErrRabinMin' error, got: %#v", err) } + + _, err = FromString(r, "rabin-20-20-21") + if err == nil || err.Error() != "incorrect format: rabin-min must be smaller than rabin-avg" { + t.Fatalf("Expected an arg-out-of-order error, got: %#v", err) + } + + _, err = FromString(r, "rabin-19-21-21") + if err == nil || err.Error() != "incorrect format: rabin-avg must be smaller than rabin-max" { + t.Fatalf("Expected an arg-out-of-order error, got: %#v", err) + } + + _, err = FromString(r, fmt.Sprintf("rabin-19-21-%d", BlockPayloadLimit)) + if err != nil { + t.Fatalf("Expected success, got: %#v", err) + } + + _, err = FromString(r, fmt.Sprintf("rabin-19-21-%d", 1+BlockPayloadLimit)) + if err != ErrSizeMax { + t.Fatalf("Expected 'ErrSizeMax', got: %#v", err) + } + + _, err = FromString(r, fmt.Sprintf("rabin-%.0f", testTwoThirdsOfBlockPayloadLimit)) + if err != nil { + t.Fatalf("Expected success, got: %#v", err) + } + + _, err = FromString(r, fmt.Sprintf("rabin-%.0f", 1+testTwoThirdsOfBlockPayloadLimit)) + if err != ErrSizeMax { + t.Fatalf("Expected 'ErrSizeMax', got: %#v", err) + } + } func TestParseSize(t *testing.T) { - max := 1000 - r := bytes.NewReader(randBuf(t, max)) - size1 := "size-0" - size2 := "size-32" - _, err := FromString(r, size1) + r := bytes.NewReader(randBuf(t, 1000)) + + _, err := FromString(r, "size-0") if err != ErrSize { t.Fatalf("Expected an 'ErrSize' error, got: %#v", err) } - _, err = FromString(r, size2) + + _, err = FromString(r, "size-32") + if err != nil { + t.Fatalf("Expected success, got: %#v", err) + } + + _, err = FromString(r, fmt.Sprintf("size-%d", BlockPayloadLimit)) if err != nil { - t.Fatal(err) + t.Fatalf("Expected success, got: %#v", err) + } + + _, err = FromString(r, fmt.Sprintf("size-%d", 1+BlockPayloadLimit)) + if err != ErrSizeMax { + t.Fatalf("Expected 'ErrSizeMax', got: %#v", err) } }