///|
pub extern "C" fn contains_char(str : @string.View, cp : Char) -> Bool = "scalar_contains_char"
///|
fn arr_to_string(arr : FixedArray[UInt16]) -> String = "%identity"
///|
test "contains_char/bmp" {
let arr : Array[UInt16] = Array::make(1000, 0)
for i in 0..<1000 {
arr[i] = 98
assert_eq!(
contains_char(arr_to_string(FixedArray::from_array(arr)), 'b'),
true,
)
arr[i] = 0
assert_eq!(
contains_char(arr_to_string(FixedArray::from_array(arr)), 'b'),
false,
)
}
}
///|
test "contains_char/surrogate" {
let arr : Array[UInt16] = Array::make(1000, 0)
for i in 0..<999 {
arr[i] = 55357
arr[i + 1] = 56832
assert_eq!(
contains_char(arr_to_string(FixedArray::from_array(arr)), '😀'),
true,
)
arr[i] = 0
assert_eq!(
contains_char(arr_to_string(FixedArray::from_array(arr)), '😀'),
false,
)
arr[i + 1] = 0
assert_eq!(
contains_char(arr_to_string(FixedArray::from_array(arr)), '😀'),
false,
)
}
}