mirror of
https://github.com/emilk/egui.git
synced 2026-06-26 22:53:14 -04:00
Use similar-asserts for better test output
This commit is contained in:
52
Cargo.lock
52
Cargo.lock
@@ -642,6 +642,17 @@ dependencies = [
|
||||
"piper",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bstr"
|
||||
version = "1.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
"regex-automata",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.16.0"
|
||||
@@ -896,6 +907,18 @@ dependencies = [
|
||||
"env_logger",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "console"
|
||||
version = "0.15.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8"
|
||||
dependencies = [
|
||||
"encode_unicode",
|
||||
"libc",
|
||||
"once_cell",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.9.4"
|
||||
@@ -1421,6 +1444,12 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "encode_unicode"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
|
||||
|
||||
[[package]]
|
||||
name = "endi"
|
||||
version = "1.1.0"
|
||||
@@ -1521,6 +1550,7 @@ dependencies = [
|
||||
"profiling",
|
||||
"rayon",
|
||||
"serde",
|
||||
"similar-asserts",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2390,7 +2420,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"windows-targets 0.48.5",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3670,6 +3700,26 @@ version = "0.3.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
|
||||
|
||||
[[package]]
|
||||
name = "similar"
|
||||
version = "2.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa"
|
||||
dependencies = [
|
||||
"bstr",
|
||||
"unicode-segmentation",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "similar-asserts"
|
||||
version = "1.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b5b441962c817e33508847a22bd82f03a30cff43642dc2fae8b050566121eb9a"
|
||||
dependencies = [
|
||||
"console",
|
||||
"similar",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "simplecss"
|
||||
version = "0.2.1"
|
||||
|
||||
@@ -96,6 +96,7 @@ puffin_http = "0.16"
|
||||
raw-window-handle = "0.6.0"
|
||||
ron = "0.8"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
similar-asserts = "1.4.2"
|
||||
thiserror = "1.0.37"
|
||||
type-map = "0.5.0"
|
||||
wasm-bindgen = "0.2"
|
||||
|
||||
@@ -101,6 +101,7 @@ backtrace = { workspace = true, optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
criterion.workspace = true
|
||||
similar-asserts.workspace = true
|
||||
|
||||
|
||||
[[bench]]
|
||||
|
||||
@@ -980,3 +980,88 @@ impl FontImplCache {
|
||||
.clone()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "default_fonts")]
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use core::f32;
|
||||
|
||||
use super::*;
|
||||
use crate::{text::TextFormat, Stroke};
|
||||
use ecolor::Color32;
|
||||
|
||||
fn jobs() -> Vec<LayoutJob> {
|
||||
// TODO: add more tests here with newlines etc
|
||||
vec![
|
||||
LayoutJob::simple(
|
||||
"Simplest test.".to_owned(),
|
||||
FontId::new(14.0, FontFamily::Monospace),
|
||||
Color32::WHITE,
|
||||
f32::INFINITY,
|
||||
),
|
||||
LayoutJob::simple(
|
||||
"The is some text that may be long.\nDet kanske också finns lite ÅÄÖ här."
|
||||
.to_owned(),
|
||||
FontId::new(14.0, FontFamily::Proportional),
|
||||
Color32::WHITE,
|
||||
50.0,
|
||||
),
|
||||
{
|
||||
let mut job = LayoutJob {
|
||||
first_row_min_height: 20.0,
|
||||
justify: true,
|
||||
..Default::default()
|
||||
};
|
||||
job.append(
|
||||
"The first paragraph has some leading space.\n",
|
||||
16.0,
|
||||
TextFormat {
|
||||
font_id: FontId::new(14.0, FontFamily::Proportional),
|
||||
..Default::default()
|
||||
},
|
||||
);
|
||||
job.append(
|
||||
"The second paragraph has underline and strikthrough, and has some non-ASCII characters: ÅÄÖ.",
|
||||
0.0,
|
||||
TextFormat {
|
||||
font_id: FontId::new(15.0, FontFamily::Monospace),
|
||||
underline: Stroke::new(1.0, Color32::RED),
|
||||
strikethrough: Stroke::new(1.0, Color32::GREEN),
|
||||
..Default::default()
|
||||
},
|
||||
);
|
||||
job.append(
|
||||
"The last paragraph is kind of boring, bust has italics.",
|
||||
0.0,
|
||||
TextFormat {
|
||||
font_id: FontId::new(10.0, FontFamily::Proportional),
|
||||
italics: true,
|
||||
..Default::default()
|
||||
},
|
||||
);
|
||||
|
||||
job
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_split_paragraphs() {
|
||||
for pixels_per_point in [1.0, 2.0_f32.sqrt(), 2.0] {
|
||||
let max_texture_side = 4096;
|
||||
let mut fonts = FontsImpl::new(
|
||||
pixels_per_point,
|
||||
max_texture_side,
|
||||
FontDefinitions::default(),
|
||||
);
|
||||
|
||||
for job in jobs() {
|
||||
let as_whole = GalleyCache::default().layout(&mut fonts, job.clone(), false);
|
||||
|
||||
let split = GalleyCache::default().layout(&mut fonts, job.clone(), true);
|
||||
|
||||
similar_asserts::assert_eq!(split, as_whole, "Input text: '{}'", job.text);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user