From 56b3ee16c587863ff45e5564df83cb23905aca90 Mon Sep 17 00:00:00 2001 From: Jaro Date: Sat, 25 Mar 2023 21:11:25 +0100 Subject: [PATCH] Test removing spaces around lines. --- .golden/manySpacesParagraph/golden | 31 +++++++++++++++++++ .../ParagraphLayout/Internal/BreakSpec.hs | 10 ++++++ .../Text/ParagraphLayout/ParagraphData.hs | 4 +++ test/Data/Text/ParagraphLayoutSpec.hs | 5 +++ 4 files changed, 50 insertions(+) create mode 100644 .golden/manySpacesParagraph/golden diff --git a/.golden/manySpacesParagraph/golden b/.golden/manySpacesParagraph/golden new file mode 100644 index 0000000..732d143 --- /dev/null +++ b/.golden/manySpacesParagraph/golden @@ -0,0 +1,31 @@ +ParagraphLayout {paragraphRect = Rect {x_origin = 0, y_origin = 0, x_size = 3132, y_size = -4484}, spanLayouts = [ + SpanLayout [Fragment {fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 3132, y_size = -1121}, fragmentPen = (0,-932), fragmentGlyphs = + [(GlyphInfo {codepoint = 68, cluster = 3, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 4, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 5, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 6, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 7, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 8, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0})] + }, Fragment {fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 3132, y_size = -1121}, fragmentPen = (0,-932), fragmentGlyphs = + [(GlyphInfo {codepoint = 68, cluster = 10, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 11, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 12, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 13, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 14, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 15, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0})] + }, Fragment {fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 3132, y_size = -1121}, fragmentPen = (0,-932), fragmentGlyphs = + [(GlyphInfo {codepoint = 68, cluster = 18, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 19, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 20, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 21, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 22, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 23, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0})] + }, Fragment {fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 3132, y_size = -1121}, fragmentPen = (0,-932), fragmentGlyphs = + [(GlyphInfo {codepoint = 68, cluster = 27, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 28, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 29, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 30, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 31, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}), + (GlyphInfo {codepoint = 68, cluster = 32, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False},GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0})] + }] +]} diff --git a/test/Data/Text/ParagraphLayout/Internal/BreakSpec.hs b/test/Data/Text/ParagraphLayout/Internal/BreakSpec.hs index 094e8dc..38c5ddb 100644 --- a/test/Data/Text/ParagraphLayout/Internal/BreakSpec.hs +++ b/test/Data/Text/ParagraphLayout/Internal/BreakSpec.hs @@ -51,6 +51,16 @@ spec = do ,(0, BreakStatus.Soft) ] + it "finds soft breaks after each run of whitespace" $ + b "en" (pack " a few\t more \n words\n") `shouldBe` + [(16, BreakStatus.Soft) + ,(15, BreakStatus.Hard) + ,(9, BreakStatus.Soft) + ,(4, BreakStatus.Soft) + ,(1, BreakStatus.Soft) + ,(0, BreakStatus.Soft) + ] + it "finds soft breaks after spaces and hyphens" $ b "cs" (pack "následuje stanice Frýdek-Místek") `shouldBe` [(27, BreakStatus.Soft) diff --git a/test/Data/Text/ParagraphLayout/ParagraphData.hs b/test/Data/Text/ParagraphLayout/ParagraphData.hs index 90e32aa..632d8e5 100644 --- a/test/Data/Text/ParagraphLayout/ParagraphData.hs +++ b/test/Data/Text/ParagraphLayout/ParagraphData.hs @@ -10,6 +10,7 @@ module Data.Text.ParagraphLayout.ParagraphData ,hardBreaksRTLParagraph ,ligatureParagraph ,loremIpsumParagraph + ,manySpacesParagraph ,mixedLanguageLTRParagraph ,mixedScriptSerbianParagraph ,mixedScriptWordsParagraph @@ -54,6 +55,9 @@ trivialParagraph = "xxx" |< en "a" >| "zzz" ligatureParagraph :: ParagraphOptions -> Paragraph ligatureParagraph = "" |< en "inefficient" >| "" +manySpacesParagraph :: ParagraphOptions -> Paragraph +manySpacesParagraph = " " |< zxx " aaaaaa aaaaaa aaaaaa aaaaaa " >| " " + -- | Fillter text using the Arabic script. -- Source: arabicFillerParagraph :: ParagraphOptions -> Paragraph diff --git a/test/Data/Text/ParagraphLayoutSpec.hs b/test/Data/Text/ParagraphLayoutSpec.hs index bbb99aa..7129700 100644 --- a/test/Data/Text/ParagraphLayoutSpec.hs +++ b/test/Data/Text/ParagraphLayoutSpec.hs @@ -345,6 +345,11 @@ spec = do let result = layoutPlain $ mixedScriptWordsParagraph opts result `shouldBeGolden` "mixedScriptWordsParagraph" + it "trims spaces around lines" $ do + let opts = ParagraphOptions font Normal 6000 + let result = layoutPlain $ manySpacesParagraph opts + result `shouldBeGolden` "manySpacesParagraph" + it "applies hard breaks correctly" $ do let opts = ParagraphOptions font Normal 5000 let result = layoutPlain $ hardBreaksLTRParagraph opts -- 2.30.2