///|
test "Query::score" {
  inspect(Query::score(Query::new("foo"), item="bar"), content="0")
  inspect(
    Query::score(Query::new("abc"), item="bbb bbb bbb abc bbb"),
    content="7",
  )
  inspect(Query::score(Query::new("abc"), item="zz   zabc   zz"), content="967")
  inspect(Query::score(Query::new("abc"), item="__a__b__c__"), content="1447")
  inspect(
    Query::score(Query::new("ghi abc"), item="abc def ghi jkl"),
    content="969",
  )
  inspect(
    Query::score(Query::new("ghi pqr"), item="abc def ghi jkl"),
    content="0",
  )
}

///|
test "matching_indices" {
  inspect(
    Query::matching_indices(Query::new("abc"), item="a__abb____c_c"),
    content="Some([3, 4, 10])",
  )
  inspect(
    Query::matching_indices(Query::new("no_match"), item="can't match this"),
    content="None",
  )
  inspect(
    Query::matching_indices(Query::new("abc ab"), item="a__abb____c_c"),
    content="Some([3, 4, 10])",
  )
}

///|
test "search" {
  let items = ["___abc___", "aBc", "Abc_defgh", "abc", "foof"]
  inspect(
    Query::search(Query::new("abc"), items~),
    content=(
      $|[\"aBc\", \"abc\", \"Abc_defgh\", \"___abc___\"]
    ),
  )
}

///|
test "split_by_matching_sections" {
  inspect(
    Query::split_by_matching_sections(Query::new("foo"), item="foo bar baz"),
    content=(
      $|Some([(true, \"foo\"), (false, \" bar baz\")])
    ),
  )
  inspect(
    Query::split_by_matching_sections(Query::new("abc"), item="____abc____"),
    content=(
      $|Some([(false, \"____\"), (true, \"abc\"), (false, \"____\")])
    ),
  )
  inspect(
    Query::split_by_matching_sections(Query::new("a ab"), item="a b"),
    content=(
      $|Some([(true, \"a\"), (false, \" \"), (true, \"b\")])
    ),
  )
}