From c941947eb3723a7d08a9cb134309f617516a1835 Mon Sep 17 00:00:00 2001 From: "Brian J. Burg" Date: Mon, 8 Oct 2012 18:34:01 -0700 Subject: [PATCH] Fix tests. --- src/servo/text/font.rs | 4 +- src/servo/text/native_font.rs | 3 +- src/servo/text/shaper.rs | 23 ------ src/servo/text/text_run.rs | 151 ++++++++-------------------------- 4 files changed, 37 insertions(+), 144 deletions(-) diff --git a/src/servo/text/font.rs b/src/servo/text/font.rs index a073dc7f0f1..c40bf54f9a7 100644 --- a/src/servo/text/font.rs +++ b/src/servo/text/font.rs @@ -128,7 +128,7 @@ fn should_get_glyph_advance() { let lib = FontCache(); let font = lib.get_test_font(); let x = font.glyph_h_advance(40u as GlyphIndex); - assert x == 15 || x == 16; + assert x == 15f || x == 16f; } // Testing thread safety @@ -144,7 +144,7 @@ fn should_get_glyph_advance_stress() { let lib = FontCache(); let font = lib.get_test_font(); let x = font.glyph_h_advance(40u as GlyphIndex); - assert x == 15 || x == 16; + assert x == 15f || x == 16f; chan.send(()); } } diff --git a/src/servo/text/native_font.rs b/src/servo/text/native_font.rs index 565d6df7f57..683d91a2e02 100644 --- a/src/servo/text/native_font.rs +++ b/src/servo/text/native_font.rs @@ -55,7 +55,8 @@ fn should_return_none_glyph_index_for_bad_codepoints() { fn should_get_glyph_h_advance() { with_test_native_font(|font| { let adv = font.glyph_h_advance(40u as GlyphIndex); - assert adv == Some(15); + // TODO: add correct advances; these are old + assert adv == Some(15f); }) } diff --git a/src/servo/text/shaper.rs b/src/servo/text/shaper.rs index 039f0cd341a..78a85294966 100644 --- a/src/servo/text/shaper.rs +++ b/src/servo/text/shaper.rs @@ -159,26 +159,3 @@ extern fn glyph_h_advance_func(_font: *hb_font_t, let advance = (*font).glyph_h_advance(glyph as GlyphIndex); float_to_fixed_hb(advance) } - -fn should_get_glyph_indexes() { - #[test]; - #[ignore(cfg(target_os = "macos"), reason = "bad metrics")]; - - let lib = FontCache(); - let font = lib.get_test_font(); - let glyphs = shape_text(font, ~"firecracker"); - let idxs = glyphs.map(|glyph| glyph.index); - assert idxs == ~[32u32, 8u32, 13u32, 14u32, 10u32, 13u32, 201u32, 10u32, 37u32, 14u32, 13u32]; -} - -fn should_get_glyph_h_advance() { - #[test]; - #[ignore(cfg(target_os = "macos"), reason = "bad metrics")]; - - let lib = FontCache(); - let font = lib.get_test_font(); - let glyphs = shape_text(font, ~"firecracker"); - let actual = glyphs.map(|g| g.pos.advance.x); - let expected = (~[6, 4, 7, 9, 8, 7, 10, 8, 9, 9, 7]).map(|a| au::from_px(*a)); - assert expected == actual; -} diff --git a/src/servo/text/text_run.rs b/src/servo/text/text_run.rs index 8c129c7d95e..68de7c3f7fd 100644 --- a/src/servo/text/text_run.rs +++ b/src/servo/text/text_run.rs @@ -131,128 +131,43 @@ fn TextRun(font: &Font, text: ~str) -> TextRun { return run; } -/// Iterates over all the indivisible substrings -#[test] -fn test_calc_min_break_width1() { - let flib = FontCache(); - let font = flib.get_test_font(); - let actual = calc_min_break_width(font, ~"firecracker"); - let expected = au::from_px(84); - assert expected == actual; -} - -#[test] -fn test_calc_min_break_width2() { - let flib = FontCache(); - let font = flib.get_test_font(); - let actual = calc_min_break_width(font, ~"firecracker yumyum"); - let expected = au::from_px(84); - assert expected == actual; -} - -#[test] -fn test_calc_min_break_width3() { - let flib = FontCache(); - let font = flib.get_test_font(); - let actual = calc_min_break_width(font, ~"yumyum firecracker"); - let expected = au::from_px(84); - assert expected == actual; -} - -#[test] -fn test_calc_min_break_width4() { - let flib = FontCache(); - let font = flib.get_test_font(); - let actual = calc_min_break_width(font, ~"yumyum firecracker yumyum"); - let expected = au::from_px(84); - assert expected == actual; -} - -#[test] -fn test_iter_indivisible_slices() { - let flib = FontCache(); - let font = flib.get_test_font(); - let mut slices = ~[]; - for iter_indivisible_slices(font, "firecracker yumyum woopwoop") |slice| { - slices += [slice]; - } - assert slices == ~["firecracker", "yumyum", "woopwoop"]; -} - -#[test] -fn test_iter_indivisible_slices_trailing_whitespace() { - let flib = FontCache(); - let font = flib.get_test_font(); - let mut slices = ~[]; - for iter_indivisible_slices(font, "firecracker ") |slice| { - slices += [slice]; - } - assert slices == ~["firecracker"]; -} - -#[test] -fn test_iter_indivisible_slices_leading_whitespace() { - let flib = FontCache(); - let font = flib.get_test_font(); - let mut slices = ~[]; - for iter_indivisible_slices(font, " firecracker") |slice| { - slices += [slice]; - } - assert slices == ~["firecracker"]; -} - -#[test] -fn test_iter_indivisible_slices_empty() { - let flib = FontCache(); - let font = flib.get_test_font(); - let mut slices = ~[]; - for iter_indivisible_slices(font, "") |slice| { - slices += [slice]; - } - assert slices == ~[]; -} - -#[test] -fn test_split() { - let flib = FontCache(); - let font = flib.get_test_font(); - let run = TextRun(font, ~"firecracker yumyum"); - let break_runs = run.split(font, run.min_break_width()); - assert break_runs.first().text == ~"firecracker"; - assert break_runs.second().text == ~"yumyum"; -} - -#[test] -fn test_split2() { - let flib = FontCache(); - let font = flib.get_test_font(); - let run = TextRun(font, ~"firecracker yum yum yum yum yum"); - let break_runs = run.split(font, run.min_break_width()); - assert break_runs.first().text == ~"firecracker"; - assert break_runs.second().text == ~"yum yum yum yum yum"; -} - -/* Causes ICE during compilation. See Rust Issue #3592 */ +// this test can't run until LayoutContext is removed as an argument +// to min_width_for_range. /* #[test] -fn test_split3() { - let flib = FontCache(); - let font = flib.get_test_font(); - let run = TextRun(font, ~"firecracker firecracker"); - let px = au::from_px(10); - let break_runs = run.split(font, run.min_break_width() + px); - assert break_runs.first().text == ~"firecracker"; - assert break_runs.second().text == ~"firecracker"; +fn test_calc_min_break_width() { -}*/ + fn test_min_width_for_run(text: ~str, width: au) { + let flib = FontCache(); + let font = flib.get_test_font(); + let run = TextRun(font, text); + run.min_width_for_range(0, text.len()) + } + + test_min_width_for_run(~"firecracker", au::from_px(84)); + test_min_width_for_run(~"firecracker yumyum", au::from_px(84)); + test_min_width_for_run(~"yumyum firecracker", au::from_px(84)); + test_min_width_for_run(~"yumyum firecracker yumyum", au::from_px(84)); +} +*/ #[test] -#[ignore(cfg(target_os = "macos"))] -fn should_calculate_the_total_size() { - let flib = FontCache(); - let font = flib.get_test_font(); - let run = TextRun(font, ~"firecracker"); - let expected = Size2D(au::from_px(84), au::from_px(20)); - assert run.size() == expected; +fn test_iter_indivisible_pieces() { + fn test_pieces(text: ~str, res: ~[~str]) { + let flib = FontCache(); + let font = flib.get_test_font(); + let run = TextRun(font, copy text); + let mut slices : ~[~str] = ~[]; + for run.iter_indivisible_pieces_for_range(0, text.len()) |offset, length| { + slices.push(str::slice(text, offset, length)); + } + assert slices == res; + } + + test_pieces(~"firecracker yumyum woopwoop", ~[~"firecracker", ~" ", ~"yumyum", ~" ", ~"woopwoop"]); + test_pieces(~"firecracker yumyum ", ~[~"firecracker", ~" ", ~"yumyum", ~" "]); + test_pieces(~" firecracker yumyum", ~[~" ", ~"firecracker", ~" ", ~"yumyum"]); + test_pieces(~" ", ~[~" "]); + test_pieces(~"", ~[]); }