new rendering engine
This commit is contained in:
51
crates/client-domain/tests/text_layout_tests.rs
Normal file
51
crates/client-domain/tests/text_layout_tests.rs
Normal file
@@ -0,0 +1,51 @@
|
||||
use client_domain::{FontMetrics, FontSize, wrap_lines};
|
||||
|
||||
fn metrics() -> FontMetrics {
|
||||
FontMetrics {
|
||||
small: (6, 10),
|
||||
large: (10, 20),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn text_that_fits_returns_single_line() {
|
||||
// "hello" = 5 chars × 6px = 30px, available = 100px
|
||||
let lines = wrap_lines("hello", 100, FontSize::Small, &metrics());
|
||||
assert_eq!(lines, vec!["hello"]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn text_wraps_at_word_boundary() {
|
||||
// "hello world" = 11 chars × 6px = 66px, available = 40px
|
||||
// "hello" = 30px fits, "world" = 30px fits on next line
|
||||
let lines = wrap_lines("hello world", 40, FontSize::Small, &metrics());
|
||||
assert_eq!(lines, vec!["hello", "world"]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn long_word_breaks_by_character() {
|
||||
// "abcdefghij" = 10 chars × 6px = 60px, available = 36px (6 chars)
|
||||
let lines = wrap_lines("abcdefghij", 36, FontSize::Small, &metrics());
|
||||
assert_eq!(lines, vec!["abcdef", "ghij"]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn empty_text_returns_empty() {
|
||||
let lines = wrap_lines("", 100, FontSize::Small, &metrics());
|
||||
assert_eq!(lines, Vec::<&str>::new());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn multiple_words_wrap_across_lines() {
|
||||
// available = 42px (7 chars)
|
||||
// "one two three" → "one two" (7 chars = 42px), "three" (5 chars = 30px)
|
||||
let lines = wrap_lines("one two three", 42, FontSize::Small, &metrics());
|
||||
assert_eq!(lines, vec!["one two", "three"]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn uses_large_font_metrics() {
|
||||
// "hi" = 2 chars × 10px = 20px, available = 15px (1 char)
|
||||
let lines = wrap_lines("hi", 15, FontSize::Large, &metrics());
|
||||
assert_eq!(lines, vec!["h", "i"]);
|
||||
}
|
||||
Reference in New Issue
Block a user