+ 12u,
+ 1u,
+ paragraphs03
+ },
+ {
+ "Some paragraphs",
+ "Hello world\ndemo\n\n",
+ 12u,
+ 5u,
+ 1u,
+ paragraphs04
+ },
+ {
+ "Some paragraphs",
+ "Hello world\ndemo\n\n",
+ 3u,
+ 15u,
+ 3u,
+ paragraphs05
+ },
+ };
+ const unsigned int numberOfTests = 5u;
+
+ for( unsigned int index = 0u; index < numberOfTests; ++index )
+ {
+ ToolkitTestApplication application;
+ if( !FindParagraphTest( data[index] ) )
+ {
+ tet_result(TET_FAIL);
+ }
+ }
+
+ tet_result(TET_PASS);
+ END_TEST;
+}
+
+int UtcDaliFetchBidirectionalLineInfo(void)
+{
+ tet_infoline(" UtcDaliFetchBidirectionalLineInfo");
+
+ unsigned int logicalIndex01[] = { 0u };
+ bool fetched01[] = { false };
+ unsigned int bidiLine01[] = { 0u };
+
+ unsigned int logicalIndex02[] = { 3u };
+ bool fetched02[] = { false };
+ unsigned int bidiLine02[] = { 0u };
+
+ unsigned int logicalIndex03[] = { 0u, 11u, 12u, 21u, 22u, 33u, 34u, 43u, 44u, 54u};
+ bool fetched03[] = { false, false, true, true, false, false, true, true, false, false };
+ unsigned int bidiLine03[] = { 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 0u, 0u };
+
+ struct FetchBidirectionalLineInfoData data[] =
+ {
+ {
+ "Void text",
+ "",
+ 1u,
+ logicalIndex01,
+ fetched01,
+ bidiLine01
+ },
+ {
+ "LTR text",
+ "Hello world",
+ 1u,
+ logicalIndex02,
+ fetched02,
+ bidiLine02
+ },
+ {
+ "Bidi text",
+ "Hello world\nשלום עולם\nhello world\nשלום עולם\nhello world",
+ 10u,
+ logicalIndex03,
+ fetched03,
+ bidiLine03
+ }
+ };
+ const unsigned int numberOfTests = 3u;
+
+ for( unsigned int index = 0u; index < numberOfTests; ++index )
+ {
+ ToolkitTestApplication application;
+ if( !FetchBidirectionalLineInfoTest( data[index] ) )
+ {
+ tet_result(TET_FAIL);
+ }
+ }
+
+ tet_result(TET_PASS);
+ END_TEST;
+}
+
+int UtcDaliGetLogicalCharacterIndex(void)
+{
+ tet_infoline(" UtcDaliSetVisualToLogicalMap");
+
+ unsigned int visualToLogical01[] = {};
+ unsigned int cachedBidiLine01[] = {};
+ unsigned int visualToLogical02[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u };
+ unsigned int cachedBidiLine02[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u };
+ unsigned int visualToLogical03[] = { 12u, 11u, 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u };
+ unsigned int cachedBidiLine03[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u };
+
+ unsigned int visualToLogical04[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 25u, 24u, 23u, 22u, 21u, 20u, 19u, 18u, 17u, 16u, 15u, 14u, 13u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 81u, 80u, 79u, 78u, 77u, 76u, 75u, 74u, 73u, 72u, 71u, 70u, 69u, 68u, 67u, 66u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 54u, 53u, 52u, 51u, 50u, 49u, 48u, 47u, 46u, 45u, 44u, 43u, 42u, 41u, 40u, 95u, 94u, 93u, 92u, 91u, 90u, 89u, 88u, 87u, 86u, 85u, 84u, 83u, 82u, 96u, 97u, 98u, 99u, 100u, 101u, 102u, 103u, 104u, 105u, 106u };
+ unsigned int cachedBidiLine04[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
+ 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
+ 1u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u };
+
+// size 300, 300
+// LO H e l l o _ w o r l d , _ م ر ح ب ا _ ب ا ل ع ا ل م , _ h e l l o _ w o r l d \n
+// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
+// VO H e l l o _ w o r l d , _ م ل ا ع ل ا ب _ ا ب ح ر م , _ h e l l o _ w o r l d \n
+// 0 1 2 3 4 5 6 7 8 9 10 11 12 25 24 23 22 21 20 19 18 17 16 15 14 13 26 27 28 29 30 31 32 33 34 35 36 37 38 39
+
+// LO م ر ح ب ا _ ب ا ل ع ا ل م , _ h e l l o _ w o r l d , _ م ر ح ب ا _ ب ا ل ع ا ل م \n
+// 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
+// VO \n م ل ا ع ل ا ب _ ا ب ح ر م _ , h e l l o _ w o r l d _ , م ل ا ع ل ا ب _ ا ب ح ر م
+// 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 55 56 57 58 59 60 61 62 63 64 65 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+
+// LO م ر ح ب ا _ ب ا ل ع ا ل م \n
+// 82 83 84 85 86 87 88 89 90 91 92 93 94 95
+// VO \n م ل ا ع ل ا ب _ ا ب ح ر م
+// 95 94 93 92 91 90 89 88 87 86 85 84 83 82
+
+
+// LO h e l l o _ w o r l d
+// 96 97 98 99 100 101 102 103 104 105 106
+// VO h e l l o _ w o r l d
+// 96 97 98 99 100 101 102 103 104 105 106
+
+ unsigned int visualToLogical05[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 25u, 24u, 23u, 22u, 21u, 20u, 19u, 18u, 17u, 16u, 15u, 14u, 13u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 67u, 66u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 54u, 53u, 52u, 51u, 50u, 49u, 48u, 47u, 46u, 45u, 44u, 43u, 42u, 41u, 40u, 81u, 80u, 79u, 78u, 77u, 76u, 75u, 74u, 73u, 72u, 71u, 70u, 69u, 68u, 95u, 94u, 93u, 92u, 91u, 90u, 89u, 88u, 87u, 86u, 85u, 84u, 83u, 82u, 96u, 97u, 98u, 99u, 100u, 101u, 102u, 103u, 104u, 105u, 106u };
+ unsigned int cachedBidiLine05[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u };
+
+// size 300, 300
+// LO H e l l o _ w o r l d , _ م ر ح ب ا _ ب ا ل ع ا ل م , _
+// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
+// VO H e l l o _ w o r l d , _ م ل ا ع ل ا ب _ ا ب ح ر م , _
+// 0 1 2 3 4 5 6 7 8 9 10 11 12 25 24 23 22 21 20 19 18 17 16 15 14 13 26 27
+
+// LO h e l l o _ w o r l d \n
+// 28 29 30 31 32 33 34 35 36 37 38 39
+// VO h e l l o _ w o r l d \n
+// 28 29 30 31 32 33 34 35 36 37 38 39
+
+// LO م ر ح ب ا _ ب ا ل ع ا ل م , _ h e l l o _ w o r l d , _
+// 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
+// VO _ , h e l l o _ w o r l d _ , م ل ا ع ل ا ب _ ا ب ح ر م
+// 67 66 55 56 57 58 59 60 61 62 63 64 65 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+
+// LO م ر ح ب ا _ ب ا ل ع ا ل م \n
+// 68 69 70 71 72 73 74 75 76 77 78 79 80 81
+// VO \n م ل ا ع ل ا ب _ ا ب ح ر م
+// 81 80 79 78 77 76 75 74 73 72 71 70 69 68
+
+// LO م ر ح ب ا _ ب ا ل ع ا ل م \n
+// 82 83 84 85 86 87 88 89 90 91 92 93 94 95
+// VO \n م ل ا ع ل ا ب _ ا ب ح ر م
+// 95 94 93 92 91 90 89 88 87 86 85 84 83 82
+
+
+// LO h e l l o _ w o r l d
+// 96 97 98 99 100 101 102 103 104 105 106
+// VO h e l l o _ w o r l d
+// 96 97 98 99 100 101 102 103 104 105 106
+
+ unsigned int visualToLogical06[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 25u, 24u, 23u, 22u, 21u, 20u, 19u, 18u, 17u, 16u, 15u, 14u, 13u, 26u, 27u, 28u, 29u, 30u, 31u, 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, 54u, 53u, 52u, 51u, 50u, 49u, 48u, 47u, 46u, 45u, 44u, 43u, 42u, 41u, 40u, 67u, 66u, 55u, 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, 64u, 65u, 81u, 80u, 79u, 78u, 77u, 76u, 75u, 74u, 73u, 72u, 71u, 70u, 69u, 68u, 95u, 94u, 93u, 92u, 91u, 90u, 89u, 88u, 87u, 86u, 85u, 84u, 83u, 82u, 96u, 97u, 98u, 99u, 100u, 101u, 102u, 103u, 104u, 105u, 106u };
+ unsigned int cachedBidiLine06[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
+ 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
+ 1u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u, 2u,
+ 2u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u, 3u,
+ 3u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u,
+ 4u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u, 5u,
+ 5u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u,
+ 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u, 6u };
+
+// size 100, 600
+// LO H e l l o _ w o r l d , _
+// 0 1 2 3 4 5 6 7 8 9 10 11 12
+// VO H e l l o _ w o r l d , _
+// 0 1 2 3 4 5 6 7 8 9 10 11 12
+
+// LO م ر ح ب ا _ ب ا ل ع ا ل م , _
+// 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
+// VO م ل ا ع ل ا ب _ ا ب ح ر م , _
+// 25 24 23 22 21 20 19 18 17 16 15 14 13 26 27
+
+// LO h e l l o _ w o r l d \n
+// 28 29 30 31 32 33 34 35 36 37 38 39
+// VO h e l l o _ w o r l d \n
+// 28 29 30 31 32 33 34 35 36 37 38 39
+
+// LO م ر ح ب ا _ ب ا ل ع ا ل م , _
+// 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
+// VO _ , م ل ا ع ل ا ب _ ا ب ح ر م
+// 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+
+// LO h e l l o _ w o r l d , _
+// 55 56 57 58 59 60 61 62 63 64 65 66 67
+// VO _ , h e l l o _ w o r l d
+// 67 66 55 56 57 58 59 60 61 62 63 64 65
+
+// LO م ر ح ب ا _ ب ا ل ع ا ل م \n
+// 68 69 70 71 72 73 74 75 76 77 78 79 80 81
+// VO \n م ل ا ع ل ا ب _ ا ب ح ر م
+// 81 80 79 78 77 76 75 74 73 72 71 70 69 68
+
+// LO م ر ح ب ا _ ب ا ل ع ا ل م \n
+// 82 83 84 85 86 87 88 89 90 91 92 93 94 95
+// VO \n م ل ا ع ل ا ب _ ا ب ح ر م
+// 95 94 93 92 91 90 89 88 87 86 85 84 83 82
+
+
+// LO h e l l o _ w o r l d
+// 96 97 98 99 100 101 102 103 104 105 106
+// VO h e l l o _ w o r l d
+// 96 97 98 99 100 101 102 103 104 105 106
+
+ struct GetLogicalCharacterIndexData data[] =
+ {
+ {
+ "Zero characters text",
+ "",
+ Size( 300.f, 300.f ),
+ 0u,
+ visualToLogical01,
+ cachedBidiLine01
+ },
+ {
+ "Left to right text only",
+ "Hello world",
+ Size( 300.f, 300.f ),
+ 11u,
+ visualToLogical02,
+ cachedBidiLine02
+ },
+ {
+ "Right to left text only",
+ "مرحبا بالعالم",
+ Size( 300.f, 300.f ),
+ 13u,
+ visualToLogical03,
+ cachedBidiLine03