///|
test "cli: option lookup finds an existing value" {
let args = ["parse", "--range", "bytes=0-9"]
match option_value(args, "--range") {
Some(value) => assert_eq(value, "bytes=0-9")
None => fail("expected option value")
}
assert_eq(
normalize_args(["range-tool", "parse", "--range", "bytes=0-9"])[0],
"parse",
)
assert_eq(
normalize_args(["node", "range-tool.js", "resolve", "--length", "10"])[0],
"resolve",
)
}
///|
test "cli: required reports a missing option" {
match required(["parse"], "--range") {
Err(error) => assert_eq(error, "missing option --range")
Ok(_) => fail("expected missing option")
}
}
///|
test "cli: Int64 parser accepts representation lengths" {
match parse_i64("9223372036854775807") {
Ok(value) => assert_eq(value, @int64.MAX_VALUE)
Err(_) => fail("expected Int64")
}
}
///|
test "cli: Int64 parser rejects malformed values" {
match parse_i64("1KiB") {
Err(error) => assert_eq(error, "invalid Int64: 1KiB")
Ok(_) => fail("expected malformed Int64")
}
}
///|
test "cli: if-range kind name distinguishes validators" {
assert_eq(if_range_kind_name(@range.EntityTag("\"x\"")), "EntityTag")
assert_eq(if_range_kind_name(@range.HttpDate(0L)), "HttpDate")
}
///|
test "cli: has_flag detects a present flag" {
assert_true(has_flag(["audit", "--details"], "--details"))
assert_false(has_flag(["audit"], "--details"))
assert_false(has_flag(["--detail"], "--details"))
}
///|
test "cli: audit details renders every finding with kind and context" {
let request = @range.parse_range("bytes=0-0,1-1,2-2,3-3").unwrap()
let report = @range.audit_range_request(
request,
raw_input="bytes=0-0,1-1,2-2,3-3",
representation_length=100L,
)
let json = findings_json(report.findings())
assert_eq(
json, "[{\"kind\":\"ManySmallRanges\",\"context\":\"request contains at least four ranges of 16 bytes or fewer\"},{\"kind\":\"AdjacentRanges\",\"context\":\"resolved ranges are adjacent and may be coalesced\"}]",
)
}
///|
test "cli: if-range normalization survives argument prefixes" {
assert_eq(
normalize_args(["range-tool", "if-range", "--value", "\"x\""])[0],
"if-range",
)
}