///|
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)])
    ),
  )
}