Extiende normalización de cadenas ASCII

This commit is contained in:
Manuel Cillero 2026-01-04 19:14:51 +01:00
parent e9d326cd99
commit cf7aba2b53
3 changed files with 70 additions and 25 deletions

View file

@ -54,6 +54,12 @@ async fn classes_add_same_tokens() {
assert_classes(&c, Some("a b"));
}
#[pagetop::test]
async fn classes_add_rejects_non_ascii_is_noop() {
let c = Classes::new("a b").with_classes(ClassesOp::Add, "c ñ d");
assert_classes(&c, Some("a b"));
}
#[pagetop::test]
async fn classes_prepend_inserts_at_front_preserving_new_order() {
let c = Classes::new("c d").with_classes(ClassesOp::Prepend, "A b");
@ -139,9 +145,9 @@ async fn classes_replace_removes_targets_and_inserts_new_at_min_position() {
}
#[pagetop::test]
async fn classes_replace_when_none_found_appends_at_end() {
async fn classes_replace_when_none_found_does_nothing() {
let c = Classes::new("a b").with_classes(ClassesOp::Replace("x y".into()), "c d");
assert_classes(&c, Some("a b c d"));
assert_classes(&c, Some("a b"));
}
#[pagetop::test]
@ -169,6 +175,12 @@ async fn classes_replace_ignores_target_whitespace_and_repetition() {
assert_classes(&c, Some("a x y c"));
}
#[pagetop::test]
async fn classes_replace_rejects_non_ascii_targets_is_noop() {
let c = Classes::new("a b c").with_classes(ClassesOp::Replace("b ñ".into()), "x");
assert_classes(&c, Some("a b c"));
}
// **< Queries (contains) >*************************************************************************
#[pagetop::test]
@ -192,6 +204,22 @@ async fn classes_contains_all_and_any() {
assert!(!c.contains_any("missing other"));
}
#[pagetop::test]
async fn classes_contains_empty_and_whitespace_is_false() {
let c = Classes::new("a b");
assert!(!c.contains(""));
assert!(!c.contains(" \t"));
assert!(!c.contains_any(""));
assert!(!c.contains_any(" \n "));
}
#[pagetop::test]
async fn classes_contains_non_ascii_is_false() {
let c = Classes::new("a b");
assert!(!c.contains("ñ"));
assert!(!c.contains_any("a ñ"));
}
// **< Properties / regression (combined sequences, ordering) >*************************************
#[pagetop::test]