X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit-internal%2Futc-Dali-BidirectionalSupport.cpp;h=191ead13410d6ef345125c2f285ac79fdd1f937a;hb=9346cf33ef49063185d54fbbfc186864d96c51ca;hp=92ee58002c1929c64d67dd4f3370ba8c40498752;hpb=eefe73d95db6e9be0b518c5b796e1f1a081cce12;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-BidirectionalSupport.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-BidirectionalSupport.cpp index 92ee580..191ead1 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-BidirectionalSupport.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-BidirectionalSupport.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +24,7 @@ #include #include #include -#include +#include using namespace Dali; using namespace Toolkit; @@ -86,6 +86,8 @@ struct ReorderLinesData unsigned int numberOfCharacters; ///< The number of characters. unsigned int numberOfLineInfo; ///< The number or reordered lines. BidiLineData* bidiLineData; ///< The bidirectional line info. + unsigned int numberOfLines; ///< The number of laid-out lines. + bool* lineDirections; ///< The directions of the lines. }; struct GetMirroredTextData @@ -99,27 +101,35 @@ struct GetMirroredTextData struct GetCharactersDirectionData { - std::string description; ///< Description of the test. - std::string text; ///< Input text. - unsigned int startIndex; ///< The index from where the model is updated. - unsigned int numberOfCharacters; ///< The number of characters. - bool* directions; ///< The expected directions. + std::string description; ///< Description of the test. + std::string text; ///< Input text. + unsigned int startIndex; ///< The index from where the model is updated. + unsigned int numberOfCharacters; ///< The number of characters. + bool* directions; ///< The expected directions. + bool markupProcessorEnabled; ///< Enable markup processor to use markup text. }; bool SetBidirectionalInfoTest( const SetBidirectionalInfoData& data ) { // 1) Create the model. - LogicalModelPtr logicalModel = LogicalModel::New(); - VisualModelPtr visualModel = VisualModel::New(); + LogicalModelPtr logicalModel; + VisualModelPtr visualModel; + MetricsPtr metrics; Size textArea(100.f, 60.f); Size layoutSize; // Create the model. + const Vector fontDescriptions; + const LayoutOptions options; CreateTextModel( data.text, textArea, + fontDescriptions, + options, layoutSize, logicalModel, - visualModel ); + visualModel, + metrics, + false ); // 2) Clear the bidirectional paragraph info data. Vector& bidirectionalInfo = logicalModel->mBidirectionalParagraphInfo; @@ -209,17 +219,24 @@ void FreeBidirectionalLineInfoResources( Vector bidire bool ReorderLinesTest( const ReorderLinesData& data ) { // 1) Create the model. - LogicalModelPtr logicalModel = LogicalModel::New(); - VisualModelPtr visualModel = VisualModel::New(); + LogicalModelPtr logicalModel; + VisualModelPtr visualModel; + MetricsPtr metrics; Size textArea(100.f, 300.f); Size layoutSize; // Create the model. + const Vector fontDescriptions; + const LayoutOptions options; CreateTextModel( data.text, textArea, + fontDescriptions, + options, layoutSize, logicalModel, - visualModel ); + visualModel, + metrics, + false ); // 2) Clear the bidirectional line info data. uint32_t startRemoveIndex = logicalModel->mBidirectionalLineInfo.Count(); @@ -302,23 +319,50 @@ bool ReorderLinesTest( const ReorderLinesData& data ) } } + if( data.numberOfLines != visualModel->mLines.Count() ) + { + std::cout << "Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl; + + unsigned int index = 0u; + for( Vector::ConstIterator it = visualModel->mLines.Begin(), + endIt = visualModel->mLines.End(); + it != endIt; + ++it, ++index ) + { + const LineRun& line = *it; + + if( line.direction != *( data.lineDirections + index ) ) + { + std::cout << " Different line direction : " << line.direction << ", expected : " << *( data.lineDirections + index ) << std::endl; + return false; + } + } + } + return true; } bool GetMirroredTextTest( const GetMirroredTextData& data ) { // 1) Create the model. - LogicalModelPtr logicalModel = LogicalModel::New(); - VisualModelPtr visualModel = VisualModel::New(); + LogicalModelPtr logicalModel; + VisualModelPtr visualModel; + MetricsPtr metrics; Size textArea(100.f, 60.f); Size layoutSize; // Create the model. + const Vector fontDescriptions; + const LayoutOptions options; CreateTextModel( data.text, textArea, + fontDescriptions, + options, layoutSize, logicalModel, - visualModel ); + visualModel, + metrics, + false ); // 2) Call the GetMirroredText() function for the whole text Vector mirroredText; @@ -376,25 +420,35 @@ bool GetMirroredTextTest( const GetMirroredTextData& data ) bool GetCharactersDirectionTest( const GetCharactersDirectionData& data ) { // 1) Create the model. - LogicalModelPtr logicalModel = LogicalModel::New(); - VisualModelPtr visualModel = VisualModel::New(); + LogicalModelPtr logicalModel; + VisualModelPtr visualModel; + MetricsPtr metrics; Size textArea(100.f, 60.f); Size layoutSize; // Create the model. + const Vector fontDescriptions; + const LayoutOptions options; CreateTextModel( data.text, textArea, + fontDescriptions, + options, layoutSize, logicalModel, - visualModel ); + visualModel, + metrics, + data.markupProcessorEnabled ); Vector& bidirectionalInfo = logicalModel->mBidirectionalParagraphInfo; // 2) Clear the direction info data. Vector& directions = logicalModel->mCharacterDirections; - directions.Erase( directions.Begin() + data.startIndex, - directions.Begin() + data.startIndex + data.numberOfCharacters ); + if( directions.Count() >= data.startIndex + data.numberOfCharacters ) + { + directions.Erase( directions.Begin() + data.startIndex, + directions.Begin() + data.startIndex + data.numberOfCharacters ); + } // 3) Call GetCharactersDirection() function. @@ -421,7 +475,6 @@ bool GetCharactersDirectionTest( const GetCharactersDirectionData& data ) int UtcDaliSetBidirectionalInfo(void) { - ToolkitTestApplication application; tet_infoline(" UtcDaliSetBidirectionalInfo"); unsigned int indices01[] = {}; @@ -556,6 +609,7 @@ int UtcDaliSetBidirectionalInfo(void) for( unsigned int index = 0u; index < numberOfTests; ++index ) { + ToolkitTestApplication application; if( !SetBidirectionalInfoTest( data[index] ) ) { tet_result(TET_FAIL); @@ -568,7 +622,6 @@ int UtcDaliSetBidirectionalInfo(void) int UtcDaliReorderLines(void) { - ToolkitTestApplication application; tet_infoline(" UtcDaliSetBidirectionalInfo"); unsigned int visualToLogical0301[] = { 0u, 1u, 2u, 3u, 4u, 5u, 9u, 8u, 7u, 6u, 10u }; @@ -673,6 +726,9 @@ int UtcDaliReorderLines(void) }, }; + bool directions02[] = { false, false, false, false, false, false }; + bool directions03[] = { false, false, false, false, false, true, true, true, true, true, false, false, false, false, false, true, true, true, true, true }; + struct ReorderLinesData data[] = { { @@ -681,7 +737,9 @@ int UtcDaliReorderLines(void) 0u, 0u, 0u, - bidiLine01 + bidiLine01, + 0u, + NULL }, { "Left to right text only.", @@ -689,7 +747,9 @@ int UtcDaliReorderLines(void) 0u, 51u, 0u, - bidiLine02 + bidiLine02, + 6u, + directions02 }, { "Bidirectional paragraphs.", @@ -697,7 +757,9 @@ int UtcDaliReorderLines(void) 0u, 195u, 16u, - bidiLine03 + bidiLine03, + 20u, + directions03 }, { "Bidirectional paragraphs. Update initial paragraphs.", @@ -705,7 +767,9 @@ int UtcDaliReorderLines(void) 0u, 44u, 16u, - bidiLine03 + bidiLine03, + 20u, + directions03 }, { "Bidirectional paragraphs. Update middle paragraphs.", @@ -713,7 +777,9 @@ int UtcDaliReorderLines(void) 44u, 54u, 16u, - bidiLine03 + bidiLine03, + 20u, + directions03 }, { "Bidirectional paragraphs. Update final paragraphs.", @@ -721,13 +787,16 @@ int UtcDaliReorderLines(void) 142u, 53u, 16u, - bidiLine03 + bidiLine03, + 20u, + directions03 }, }; const unsigned int numberOfTests = 6u; for( unsigned int index = 0u; index < numberOfTests; ++index ) { + ToolkitTestApplication application; if( !ReorderLinesTest( data[index] ) ) { tet_result(TET_FAIL); @@ -740,7 +809,6 @@ int UtcDaliReorderLines(void) int UtcDaliGetMirroredText(void) { - ToolkitTestApplication application; tet_infoline(" UtcDaliGetMirroredText"); struct GetMirroredTextData data[] = @@ -812,6 +880,7 @@ int UtcDaliGetMirroredText(void) for( unsigned int index = 0u; index < numberOfTests; ++index ) { + ToolkitTestApplication application; if( !GetMirroredTextTest( data[index] ) ) { tet_result(TET_FAIL); @@ -824,7 +893,6 @@ int UtcDaliGetMirroredText(void) int UtcDaliGetCharactersDirection(void) { - ToolkitTestApplication application; tet_infoline(" UtcDaliGetCharactersDirection"); bool directions01[] = {}; @@ -867,6 +935,11 @@ int UtcDaliGetCharactersDirection(void) true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false }; + bool directions06[] = { + true, true, true, true, true, true, true, true, true, true, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false }; + struct GetCharactersDirectionData data[] = { { @@ -874,28 +947,32 @@ int UtcDaliGetCharactersDirection(void) "", 0u, 0u, - directions01 + directions01, + false }, { "Left to right characters only", "Hello world\nhello world demo", 0u, 28u, - directions02 + directions02, + false }, { "Right to left characters only", "שלום עולם\nשלום עולם", 0u, 19u, - directions03 + directions03, + false }, { "Mix of bidirectional text", "Hello world\nhello world שלום עולם\nשלום עולם hello world", 0u, 55u, - directions04 + directions04, + false }, { "Mix of bidirectional text. With more paragraphs.", @@ -903,7 +980,8 @@ int UtcDaliGetCharactersDirection(void) " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello", 0u, 227u, - directions05 + directions05, + false }, { "Mix of bidirectional text. With more paragraphs. Update first paragraph.", @@ -911,7 +989,8 @@ int UtcDaliGetCharactersDirection(void) " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello", 0u, 17u, - directions05 + directions05, + false }, { "Mix of bidirectional text. With more paragraphs. Update from character 29", @@ -919,7 +998,8 @@ int UtcDaliGetCharactersDirection(void) " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello", 29u, 134u, - directions05 + directions05, + false }, { "Mix of bidirectional text. With more paragraphs. Update from character 163", @@ -927,13 +1007,23 @@ int UtcDaliGetCharactersDirection(void) " مرحبا بالعالم שלום עולם hello world hello world\nبالعالم שלום hello world demo עולם\nשלום مرحبا بالعالم עולם hello", 163u, 35u, - directions05 + directions05, + false + }, + { + "Mix of bidirectional text. With brackets and LRM", + "שלום עולם ‎(hello)[world]‎", + 0u, + 26u, + directions06, + true } }; - const unsigned int numberOfTests = 8u; + const unsigned int numberOfTests = 9u; for( unsigned int index = 0u; index < numberOfTests; ++index ) { + ToolkitTestApplication application; if( !GetCharactersDirectionTest( data[index] ) ) { tet_result(TET_FAIL);