X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit-internal%2Futc-Dali-BidirectionalSupport.cpp;h=e056f73526ff6d87b40dd4651b3b1091abbb07ce;hp=191ead13410d6ef345125c2f285ac79fdd1f937a;hb=610495b8647d1a25c98bf0773ccc0dd6d1996263;hpb=259267e944a0215c92b3955695b9b4bc610660db 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 191ead1..e056f73 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-BidirectionalSupport.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-BidirectionalSupport.cpp @@ -38,11 +38,6 @@ using namespace Text; // CharacterIndex startIndex, // Length numberOfCharacters, // Vector& bidirectionalInfo ) -// void ReorderLines( const Vector& bidirectionalInfo, -// CharacterIndex startIndex, -// Length numberOfCharacters, -// Vector& lineRuns, -// Vector& lineInfoRuns ) // bool GetMirroredText( const Vector& text, // Vector& directions, // const Vector& bidirectionalInfo, @@ -50,6 +45,7 @@ using namespace Text; // Length numberOfCharacters, // Vector& mirroredText ) // void GetCharactersDirection( const Vector& bidirectionalInfo, +// Length totalNumberOfCharacters, // CharacterIndex startIndex, // Length numberOfCharacters, // Vector& directions ) @@ -78,18 +74,6 @@ struct BidiLineData unsigned int* visualToLogical; }; -struct ReorderLinesData -{ - 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. - 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 { std::string description; ///< Description of the test. @@ -112,8 +96,7 @@ struct GetCharactersDirectionData bool SetBidirectionalInfoTest( const SetBidirectionalInfoData& data ) { // 1) Create the model. - LogicalModelPtr logicalModel; - VisualModelPtr visualModel; + ModelPtr textModel; MetricsPtr metrics; Size textArea(100.f, 60.f); Size layoutSize; @@ -126,11 +109,13 @@ bool SetBidirectionalInfoTest( const SetBidirectionalInfoData& data ) fontDescriptions, options, layoutSize, - logicalModel, - visualModel, + textModel, metrics, false ); + LogicalModelPtr logicalModel = textModel->mLogicalModel; + VisualModelPtr visualModel = textModel->mVisualModel; + // 2) Clear the bidirectional paragraph info data. Vector& bidirectionalInfo = logicalModel->mBidirectionalParagraphInfo; if( 0u != data.numberOfCharacters ) @@ -193,160 +178,10 @@ bool SetBidirectionalInfoTest( const SetBidirectionalInfoData& data ) return true; } -/** - * @brief Frees previously allocated bidirectional resources. - * - * @param[in] bidirectionalLineInfo Bidirectional info per line. - * @param[in] startIndex Index to the first line with bidirectional info to be freed. - * @param[in] endIndex Index to the last line with bidirectional info to be freed. - */ -void FreeBidirectionalLineInfoResources( Vector bidirectionalLineInfo, - uint32_t startIndex, - uint32_t endIndex ) -{ - // Free the allocated memory used to store the conversion table in the bidirectional line info run. - for( Vector::Iterator it = bidirectionalLineInfo.Begin() + startIndex, - endIt = bidirectionalLineInfo.Begin() + endIndex; - it != endIt; - ++it ) - { - BidirectionalLineInfoRun& bidiLineInfo = *it; - - free( bidiLineInfo.visualToLogicalMap ); - } -} - -bool ReorderLinesTest( const ReorderLinesData& data ) -{ - // 1) Create the model. - 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, - metrics, - false ); - - // 2) Clear the bidirectional line info data. - uint32_t startRemoveIndex = logicalModel->mBidirectionalLineInfo.Count(); - uint32_t endRemoveIndex = startRemoveIndex; - ClearCharacterRuns( data.startIndex, - data.startIndex + data.numberOfCharacters - 1u, - logicalModel->mBidirectionalLineInfo, - startRemoveIndex, - endRemoveIndex ); - - // Index to the first index to be removed. - - FreeBidirectionalLineInfoResources( logicalModel->mBidirectionalLineInfo, startRemoveIndex, endRemoveIndex ); - BidirectionalLineInfoRun* bidiLineBuffer = logicalModel->mBidirectionalLineInfo.Begin(); - logicalModel->mBidirectionalLineInfo.Erase( bidiLineBuffer + startRemoveIndex, - bidiLineBuffer + endRemoveIndex ); - - // 3) Call the function ReorderLines() - - ReorderLines( logicalModel->mBidirectionalParagraphInfo, - data.startIndex, - data.numberOfCharacters, - visualModel->mLines, - logicalModel->mBidirectionalLineInfo ); - - // 4) Compare the results. - - if( data.numberOfLineInfo != logicalModel->mBidirectionalLineInfo.Count() ) - { - // Different number of bidirectional lines. - std::cout << " different number of bidi lines : " << logicalModel->mBidirectionalLineInfo.Count() << ", expected : " << data.numberOfLineInfo << std::endl; - for( unsigned int index = 0u; index < logicalModel->mBidirectionalLineInfo.Count(); ++index ) - { - const BidirectionalLineInfoRun& run = logicalModel->mBidirectionalLineInfo[index]; - const BidiLineData& bidiLineData = data.bidiLineData[index]; - - std::cout << " bidi line : " << index << ", index : " << run.characterRun.characterIndex << ", num chars : " << run.characterRun.numberOfCharacters << std::endl; - std::cout << " expected index : " << bidiLineData.characterIndex << ", num chars : " << bidiLineData.numberOfCharacters << std::endl; - } - return false; - } - - for( unsigned int index = 0u; index < data.numberOfLineInfo; ++index ) - { - const BidirectionalLineInfoRun& run = logicalModel->mBidirectionalLineInfo[index]; - const BidiLineData& bidiLineData = data.bidiLineData[index]; - - if( bidiLineData.characterIndex != run.characterRun.characterIndex ) - { - std::cout << " bidi line : " << index << ", index : " << run.characterRun.characterIndex << ", num chars : " << run.characterRun.numberOfCharacters << std::endl; - std::cout << " expected index : " << bidiLineData.characterIndex << ", num chars : " << bidiLineData.numberOfCharacters << std::endl; - return false; - } - if( bidiLineData.numberOfCharacters != run.characterRun.numberOfCharacters ) - { - std::cout << " bidi line : " << index << ", index : " << run.characterRun.characterIndex << ", num chars : " << run.characterRun.numberOfCharacters << std::endl; - std::cout << " expected index : " << bidiLineData.characterIndex << ", num chars : " << bidiLineData.numberOfCharacters << std::endl; - return false; - } - - for( unsigned int i = 0u; i < run.characterRun.numberOfCharacters; ++i ) - { - if( bidiLineData.visualToLogical[i] != run.visualToLogicalMap[i] ) - { - std::cout << " v2l : "; - for( unsigned int i = 0u; i < run.characterRun.numberOfCharacters; ++i ) - { - std::cout << run.visualToLogicalMap[i] << " "; - } - std::cout << std::endl; - std::cout << " expected v2l : "; - for( unsigned int i = 0u; i < run.characterRun.numberOfCharacters; ++i ) - { - std::cout << bidiLineData.visualToLogical[i] << " "; - } - std::cout << std::endl; - - return false; - } - } - } - - 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; - VisualModelPtr visualModel; + ModelPtr textModel; MetricsPtr metrics; Size textArea(100.f, 60.f); Size layoutSize; @@ -359,11 +194,13 @@ bool GetMirroredTextTest( const GetMirroredTextData& data ) fontDescriptions, options, layoutSize, - logicalModel, - visualModel, + textModel, metrics, false ); + LogicalModelPtr logicalModel = textModel->mLogicalModel; + VisualModelPtr visualModel = textModel->mVisualModel; + // 2) Call the GetMirroredText() function for the whole text Vector mirroredText; bool mirrored = false; @@ -420,8 +257,7 @@ bool GetMirroredTextTest( const GetMirroredTextData& data ) bool GetCharactersDirectionTest( const GetCharactersDirectionData& data ) { // 1) Create the model. - LogicalModelPtr logicalModel; - VisualModelPtr visualModel; + ModelPtr textModel; MetricsPtr metrics; Size textArea(100.f, 60.f); Size layoutSize; @@ -434,11 +270,13 @@ bool GetCharactersDirectionTest( const GetCharactersDirectionData& data ) fontDescriptions, options, layoutSize, - logicalModel, - visualModel, + textModel, metrics, data.markupProcessorEnabled ); + LogicalModelPtr logicalModel = textModel->mLogicalModel; + VisualModelPtr visualModel = textModel->mVisualModel; + Vector& bidirectionalInfo = logicalModel->mBidirectionalParagraphInfo; // 2) Clear the direction info data. @@ -620,193 +458,6 @@ int UtcDaliSetBidirectionalInfo(void) END_TEST; } -int UtcDaliReorderLines(void) -{ - tet_infoline(" UtcDaliSetBidirectionalInfo"); - - unsigned int visualToLogical0301[] = { 0u, 1u, 2u, 3u, 4u, 5u, 9u, 8u, 7u, 6u, 10u }; - unsigned int visualToLogical0302[] = { 3u, 2u, 1u, 0u, 4u, 5u, 6u, 7u, 8u, 9u, 10u }; - unsigned int visualToLogical0303[] = { 0u, 1u, 2u, 3u, 4u }; - unsigned int visualToLogical0304[] = { 12u, 11u, 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; - unsigned int visualToLogical0305[] = { 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; - unsigned int visualToLogical0306[] = { 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; - unsigned int visualToLogical0307[] = { 13u, 8u, 9u, 10u, 11u, 12u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; - unsigned int visualToLogical0308[] = { 5u, 0u, 1u, 2u, 3u, 4u }; - unsigned int visualToLogical0309[] = { 0u, 1u, 2u, 3u, 4u, 5u, 9u, 8u, 7u, 6u, 10u }; - unsigned int visualToLogical0310[] = { 3u, 2u, 1u, 0u, 4u, 5u, 6u, 7u, 8u, 9u, 10u }; - unsigned int visualToLogical0311[] = { 0u, 1u, 2u, 3u, 4u }; - unsigned int visualToLogical0312[] = { 12u, 11u, 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; - unsigned int visualToLogical0313[] = { 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; - unsigned int visualToLogical0314[] = { 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; - unsigned int visualToLogical0315[] = { 13u, 8u, 9u, 10u, 11u, 12u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; - unsigned int visualToLogical0316[] = { 0u, 1u, 2u, 3u, 4u }; - - BidiLineData bidiLine01[] = {}; - BidiLineData bidiLine02[] = {}; - BidiLineData bidiLine03[] = { - { - 17u, - 11u, - visualToLogical0301 - }, - { - 28u, - 11u, - visualToLogical0302 - }, - { - 39u, - 5u, - visualToLogical0303 - }, - { - 44u, - 13u, - visualToLogical0304 - }, - { - 57u, - 11u, - visualToLogical0305 - }, - { - 68u, - 10u, - visualToLogical0306 - }, - { - 78u, - 14u, - visualToLogical0307 - }, - { - 92u, - 6u, - visualToLogical0308 - }, - { - 115u, - 11u, - visualToLogical0309 - }, - { - 126u, - 11u, - visualToLogical0310 - }, - { - 137u, - 5u, - visualToLogical0311 - }, - { - 142u, - 13u, - visualToLogical0312 - }, - { - 155u, - 11u, - visualToLogical0313 - }, - { - 166u, - 10u, - visualToLogical0314 - }, - { - 176u, - 14u, - visualToLogical0315 - }, - { - 190u, - 5u, - visualToLogical0316 - }, - }; - - 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[] = - { - { - "Zero characters.", - "", - 0u, - 0u, - 0u, - bidiLine01, - 0u, - NULL - }, - { - "Left to right text only.", - "Hello world demo\nhello world demo\nhello world demo.", - 0u, - 51u, - 0u, - bidiLine02, - 6u, - directions02 - }, - { - "Bidirectional paragraphs.", - "Hello world demo\nhello שלום עולם world demo\nשלום بالعالم עולם مرحبا שלום עולם بالعالم hello world\nHello world demo\nhello שלום עולם world demo\nשלום بالعالم עולם مرحبا שלום עולם بالعالم hello world", - 0u, - 195u, - 16u, - bidiLine03, - 20u, - directions03 - }, - { - "Bidirectional paragraphs. Update initial paragraphs.", - "Hello world demo\nhello שלום עולם world demo\nשלום بالعالم עולם مرحبا שלום עולם بالعالم hello world\nHello world demo\nhello שלום עולם world demo\nשלום بالعالم עולם مرحبا שלום עולם بالعالم hello world", - 0u, - 44u, - 16u, - bidiLine03, - 20u, - directions03 - }, - { - "Bidirectional paragraphs. Update middle paragraphs.", - "Hello world demo\nhello שלום עולם world demo\nשלום بالعالم עולם مرحبا שלום עולם بالعالم hello world\nHello world demo\nhello שלום עולם world demo\nשלום بالعالم עולם مرحبا שלום עולם بالعالم hello world", - 44u, - 54u, - 16u, - bidiLine03, - 20u, - directions03 - }, - { - "Bidirectional paragraphs. Update final paragraphs.", - "Hello world demo\nhello שלום עולם world demo\nשלום بالعالم עולם مرحبا שלום עולם بالعالم hello world\nHello world demo\nhello שלום עולם world demo\nשלום بالعالم עולם مرحبا שלום עולם بالعالم hello world", - 142u, - 53u, - 16u, - 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); - } - } - - tet_result(TET_PASS); - END_TEST; -} - int UtcDaliGetMirroredText(void) { tet_infoline(" UtcDaliGetMirroredText");