Line spacing for TextLabel and vertical line alignment feature
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Text-Controller.cpp
index 02f2e66..6c63ce1 100644 (file)
@@ -535,3 +535,125 @@ int UtcDaliTextControllerSetGetTapLongPressAction(void)
 
   END_TEST;
 }
+
+int UtcDaliTextControllerSetGetLineSpacingProperty(void)
+{
+  tet_infoline(" UtcDaliTextControllerSetGetLineSpacingProperty");
+  ToolkitTestApplication application;
+
+  const Size size( Dali::Stage::GetCurrent().GetSize() );
+
+  // single line text
+  const std::string textSingle("A Quick Brown Fox Jumps Over The Lazy Dog");
+
+  // multi-line text
+  const std::string textMulti("A Quick Brown\nFox Jumps Over\nThe Lazy Dog");
+
+  // Creates a text controller.
+  ControllerPtr controller = Controller::New();
+
+  ConfigureTextLabel(controller);
+
+  // single line, line spacing = 0px
+  {
+    const float EXPECTED_SPACING = 0.0f;
+    const Vector2 EXPECTED_LAYOUT_SIZE( 326.0f, 19.0f);
+    const Vector3 EXPECTED_NATURAL_SIZE( 326.0f, 20.0f, 0.0f );
+
+    controller->SetText(textSingle);
+    controller->Relayout(size);
+    controller->SetMultiLineEnabled( false );
+
+    Vector3 naturalSize  = controller->GetNaturalSize();
+    Vector2 layoutSize   = controller->GetTextModel()->GetLayoutSize();
+    float lineSpacing0 = controller->GetDefaultLineSpacing();
+
+    DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
+    DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
+    DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
+  }
+
+  // single line, line spacing = 20px
+  {
+    const float EXPECTED_SPACING = 20.0f;
+    const Vector2 EXPECTED_LAYOUT_SIZE( 326.0f, 19.0f );
+    const Vector3 EXPECTED_NATURAL_SIZE( 326.0f, 40.0f, 0.0f );
+
+    controller->SetText(textSingle);
+    controller->Relayout(size);
+    controller->SetDefaultLineSpacing( 20 );
+    controller->SetMultiLineEnabled( false );
+
+    Vector3 naturalSize  = controller->GetNaturalSize();
+    Vector2 layoutSize   = controller->GetTextModel()->GetLayoutSize();
+    float lineSpacing0 = controller->GetDefaultLineSpacing();
+
+    DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
+    DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
+    DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
+  }
+
+  // multi-line, line spacing = 0px
+  {
+    const float EXPECTED_SPACING = 0.0f;
+    const Vector2 EXPECTED_LAYOUT_SIZE( 318.0f, 39.0f );
+    const Vector3 EXPECTED_NATURAL_SIZE( 116.0f, 58.0f, 0.0f );
+
+    controller->SetText(textMulti);
+    controller->Relayout(size);
+    controller->SetMultiLineEnabled( true );
+    controller->SetDefaultLineSpacing( 0 );
+
+    Vector3 naturalSize  = controller->GetNaturalSize();
+    Vector2 layoutSize   = controller->GetTextModel()->GetLayoutSize();
+    float lineSpacing0 = controller->GetDefaultLineSpacing();
+
+    DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
+    DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
+    DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
+  }
+
+  // multi-line, line spacing = 20px
+  {
+    const float EXPECTED_SPACING = 20.0f;
+    const Vector2 EXPECTED_LAYOUT_SIZE( 115.0f, 57.0f );
+    const Vector3 EXPECTED_NATURAL_SIZE( 116.0f, 118.0f, 0.0f );
+
+    controller->SetText(textMulti);
+    controller->Relayout(size);
+    controller->SetMultiLineEnabled( true );
+    controller->SetDefaultLineSpacing( 20 );
+
+    Vector3 naturalSize  = controller->GetNaturalSize();
+    Vector2 layoutSize   = controller->GetTextModel()->GetLayoutSize();
+    float lineSpacing0 = controller->GetDefaultLineSpacing();
+
+    DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
+    DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
+    DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
+  }
+
+  // multi-line, line spacing = 30px
+  {
+    const float EXPECTED_SPACING = 30.0f;
+    const Vector2 EXPECTED_LAYOUT_SIZE( 115.0f, 117.0f );
+    const Vector3 EXPECTED_NATURAL_SIZE( 116.0f, 148.0f, 0.0f );
+
+    controller->SetText(textMulti);
+    controller->Relayout(size);
+    controller->SetMultiLineEnabled( true );
+    controller->SetDefaultLineSpacing( 30 );
+
+    Vector3 naturalSize  = controller->GetNaturalSize();
+    Vector2 layoutSize   = controller->GetTextModel()->GetLayoutSize();
+    float lineSpacing0 = controller->GetDefaultLineSpacing();
+
+    DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
+    DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
+    DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
+  }
+
+
+  END_TEST;
+
+}
\ No newline at end of file