| @@ -617,66 +617,4 @@ void TextLayout::recalculateSize() | |||||
| } | } | ||||
| } | } | ||||
| //============================================================================== | |||||
| #if JUCE_UNIT_TESTS | |||||
| struct TextLayoutTests : public UnitTest | |||||
| { | |||||
| TextLayoutTests() | |||||
| : UnitTest ("Text Layout", UnitTestCategories::text) | |||||
| {} | |||||
| static TextLayout createLayout (StringRef text, float width) | |||||
| { | |||||
| Font fontToUse (12.0f); | |||||
| AttributedString string (text); | |||||
| string.setFont (std::move (fontToUse)); | |||||
| TextLayout layout; | |||||
| layout.createLayout (std::move (string), width); | |||||
| return layout; | |||||
| } | |||||
| void testLineBreaks (const String& line, float width, const StringArray& expected) | |||||
| { | |||||
| const auto layout = createLayout (line, width); | |||||
| beginTest ("A line is split into expected pieces"); | |||||
| { | |||||
| expectEquals (layout.getNumLines(), expected.size()); | |||||
| const auto limit = jmin (layout.getNumLines(), expected.size()); | |||||
| for (int i = 0; i != limit; ++i) | |||||
| expectEquals (substring (line, layout.getLine (i).stringRange), expected[i]); | |||||
| } | |||||
| } | |||||
| void runTest() override | |||||
| { | |||||
| const String shortLine ("hello world"); | |||||
| testLineBreaks (shortLine, 1.0e7f, { shortLine }); | |||||
| testLineBreaks ("this line should be split", | |||||
| 60.0f, | |||||
| { "this line ", | |||||
| "should be ", | |||||
| "split" }); | |||||
| testLineBreaks ("these\nlines \nhave\n weird \n spacing ", | |||||
| 80.0f, | |||||
| { "these\n", | |||||
| "lines \n", | |||||
| "have\n", | |||||
| " weird \n", | |||||
| " spacing " }); | |||||
| } | |||||
| }; | |||||
| static TextLayoutTests textLayoutTests; | |||||
| #endif | |||||
| } // namespace juce | } // namespace juce | ||||