///|
test "default limits accept ordinary Range" {
  assert_true(parse_range_with_limits("bytes=0-9", Limits::default()) is Ok(_))
}

///|
test "strict limits reject oversized input" {
  assert_true(
    parse_range_with_limits(
      "bytes=" + "0-0,".repeat(300) + "1-1",
      Limits::strict(),
    )
    is Err(RangeError(_, LimitExceeded, _, _)),
  )
}

///|
test "strict limits reject too many ranges" {
  assert_true(
    parse_range_with_limits(
      "bytes=0-0,1-1,2-2,3-3,4-4,5-5,6-6,7-7,8-8",
      Limits::strict(),
    )
    is Err(_),
  )
}

///|
test "limits reject long unknown unit" {
  assert_true(
    parse_range_with_limits(
      "abcdefghijklmnopqrstuvwxyzabcdefg=raw",
      Limits::strict(),
    )
    is Err(_),
  )
}

///|
test "limits reject long unknown range set" {
  assert_true(
    parse_range_with_limits("items=" + "x".repeat(600), Limits::strict())
    is Err(_),
  )
}

///|
test "strict is smaller than default" {
  assert_true(Limits::strict().max_ranges() < Limits::default().max_ranges())
}

///|
test "permissive is larger than default" {
  assert_true(
    Limits::permissive().max_input_bytes() > Limits::default().max_input_bytes(),
  )
}

///|
test "digit limit remains Int64 safe" {
  assert_int_eq(Limits::default().max_digits_per_number(), 19)
}