///|
test "900 deterministic Range parse serialize resolve and coalesce cases" {
  let mut state = 0x2468ACE
  for case = 0; case < 900; case = case + 1 {
    state = state * 1_103_515_245 + 12_345
    let length = 1L + ((state >> 8) & 4095).to_int64()
    let first = ((state >> 3) & 2047).to_int64() % length
    let span = 1L + ((state >> 13) & 255).to_int64()
    let requested_last = first + span
    let text = if case % 3 == 0 {
      "bytes=\{first}-\{requested_last},-\{1L + first % 17L}"
    } else if case % 3 == 1 {
      "BYTES=\{first}-"
    } else {
      "bytes=\{first}-\{requested_last}"
    }
    let request = unwrap_request(text)
    let canonical = serialize_range(request)
    assert_str_eq(serialize_range(unwrap_request(canonical)), canonical)
    let resolved = resolve_byte_ranges(request, length).unwrap()
    for range in resolved.ranges() {
      assert_true(range.first() >= 0L)
      assert_true(range.last() >= range.first())
      assert_true(range.last() < length)
    }
    let merged = coalesce_ranges(resolved.ranges())
    for i = 1; i < merged.length(); i = i + 1 {
      assert_true(merged[i - 1].last() < merged[i].first())
    }
  }
}