OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library bidi_utils_test; | 5 library bidi_utils_test; |
6 | 6 |
7 import 'package:intl/intl.dart'; | 7 import 'package:intl/intl.dart'; |
8 import 'package:unittest/unittest.dart'; | 8 import 'package:test/test.dart'; |
9 | 9 |
10 /** | 10 /// Tests the bidi utilities library. |
11 * Tests the bidi utilities library. | |
12 */ | |
13 main() { | 11 main() { |
14 var LRE = '\u202A'; | 12 var LRE = '\u202A'; |
15 var RLE = '\u202B'; | 13 var RLE = '\u202B'; |
16 var PDF = '\u202C'; | 14 var PDF = '\u202C'; |
17 | 15 |
18 test('isRtlLang', () { | 16 test('isRtlLang', () { |
19 expect(Bidi.isRtlLanguage('en'), isFalse); | 17 expect(Bidi.isRtlLanguage('en'), isFalse); |
20 expect(Bidi.isRtlLanguage('fr'), isFalse); | 18 expect(Bidi.isRtlLanguage('fr'), isFalse); |
21 expect(Bidi.isRtlLanguage('zh-CN'), isFalse); | 19 expect(Bidi.isRtlLanguage('zh-CN'), isFalse); |
22 expect(Bidi.isRtlLanguage('fil'), isFalse); | 20 expect(Bidi.isRtlLanguage('fil'), isFalse); |
23 expect(Bidi.isRtlLanguage('az'), isFalse); | 21 expect(Bidi.isRtlLanguage('az'), isFalse); |
24 expect(Bidi.isRtlLanguage('iw-Latn'), isFalse); | 22 expect(Bidi.isRtlLanguage('iw-Latn'), isFalse); |
25 expect(Bidi.isRtlLanguage('iw-LATN'), isFalse); | 23 expect(Bidi.isRtlLanguage('iw-LATN'), isFalse); |
26 expect(Bidi.isRtlLanguage('iw_latn'), isFalse); | 24 expect(Bidi.isRtlLanguage('iw_latn'), isFalse); |
27 expect(Bidi.isRtlLanguage('ar'), isTrue); | 25 expect(Bidi.isRtlLanguage('ar'), isTrue); |
28 expect(Bidi.isRtlLanguage('AR'), isTrue); | 26 expect(Bidi.isRtlLanguage('AR'), isTrue); |
29 expect(Bidi.isRtlLanguage('iw'), isTrue); | 27 expect(Bidi.isRtlLanguage('iw'), isTrue); |
30 expect(Bidi.isRtlLanguage('he'), isTrue); | 28 expect(Bidi.isRtlLanguage('he'), isTrue); |
31 expect(Bidi.isRtlLanguage('fa'), isTrue); | 29 expect(Bidi.isRtlLanguage('fa'), isTrue); |
32 expect(Bidi.isRtlLanguage('ar-EG'), isTrue); | 30 expect(Bidi.isRtlLanguage('ar-EG'), isTrue); |
33 expect(Bidi.isRtlLanguage('az-Arab'), isTrue); | 31 expect(Bidi.isRtlLanguage('az-Arab'), isTrue); |
34 expect(Bidi.isRtlLanguage('az-ARAB-IR'), isTrue); | 32 expect(Bidi.isRtlLanguage('az-ARAB-IR'), isTrue); |
35 expect(Bidi.isRtlLanguage('az_arab_IR'), isTrue); | 33 expect(Bidi.isRtlLanguage('az_arab_IR'), isTrue); |
| 34 Intl.withLocale('en_US', () { |
| 35 expect(Bidi.isRtlLanguage(), isFalse); |
| 36 }); |
| 37 Intl.withLocale('ar', () { |
| 38 expect(Bidi.isRtlLanguage(), isTrue); |
| 39 }); |
| 40 Intl.withLocale(null, () { |
| 41 expect(Bidi.isRtlLanguage(), Bidi.isRtlLanguage(Intl.systemLocale)); |
| 42 }); |
36 }); | 43 }); |
37 | 44 |
38 test('hasAnyLtr', () { | 45 test('hasAnyLtr', () { |
39 expect(Bidi.hasAnyLtr(''), isFalse); | 46 expect(Bidi.hasAnyLtr(''), isFalse); |
40 expect(Bidi.hasAnyLtr('\u05e0\u05e1\u05e2'), isFalse); | 47 expect(Bidi.hasAnyLtr('\u05e0\u05e1\u05e2'), isFalse); |
41 expect(Bidi.hasAnyLtr('\u05e0\u05e1z\u05e2'), isTrue); | 48 expect(Bidi.hasAnyLtr('\u05e0\u05e1z\u05e2'), isTrue); |
42 expect(Bidi.hasAnyLtr('123\t... \n'), isFalse); | 49 expect(Bidi.hasAnyLtr('123\t... \n'), isFalse); |
43 expect(Bidi.hasAnyLtr('<br>123<', false), isTrue); | 50 expect(Bidi.hasAnyLtr('<br>123<', false), isTrue); |
44 expect(Bidi.hasAnyLtr('<br>123<', true), isFalse); | 51 expect(Bidi.hasAnyLtr('<br>123<', true), isFalse); |
45 }); | 52 }); |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 equals(TextDirection.UNKNOWN.value)); | 192 equals(TextDirection.UNKNOWN.value)); |
186 expect(Bidi.estimateDirectionOfText('! (...)', isHtml: false).value, | 193 expect(Bidi.estimateDirectionOfText('! (...)', isHtml: false).value, |
187 equals(TextDirection.UNKNOWN.value)); | 194 equals(TextDirection.UNKNOWN.value)); |
188 expect( | 195 expect( |
189 Bidi.estimateDirectionOfText('All-Ascii content', isHtml: false).value, | 196 Bidi.estimateDirectionOfText('All-Ascii content', isHtml: false).value, |
190 equals(TextDirection.LTR.value)); | 197 equals(TextDirection.LTR.value)); |
191 expect(Bidi.estimateDirectionOfText('-17.0%', isHtml: false).value, | 198 expect(Bidi.estimateDirectionOfText('-17.0%', isHtml: false).value, |
192 equals(TextDirection.LTR.value)); | 199 equals(TextDirection.LTR.value)); |
193 expect(Bidi.estimateDirectionOfText('http://foo/bar/', isHtml: false).value, | 200 expect(Bidi.estimateDirectionOfText('http://foo/bar/', isHtml: false).value, |
194 equals(TextDirection.LTR.value)); | 201 equals(TextDirection.LTR.value)); |
195 expect(Bidi.estimateDirectionOfText( | 202 expect( |
196 'http://foo/bar/?s=\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0' | 203 Bidi |
197 '\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0' | 204 .estimateDirectionOfText( |
198 '\u05d0\u05d0\u05d0\u05d0\u05d0').value, | 205 'http://foo/bar/?s=\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u0
5d0' |
| 206 '\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u0
5d0' |
| 207 '\u05d0\u05d0\u05d0\u05d0\u05d0') |
| 208 .value, |
199 equals(TextDirection.LTR.value)); | 209 equals(TextDirection.LTR.value)); |
200 expect(Bidi.estimateDirectionOfText('\u05d0', isHtml: false).value, | 210 expect(Bidi.estimateDirectionOfText('\u05d0', isHtml: false).value, |
201 equals(TextDirection.RTL.value)); | 211 equals(TextDirection.RTL.value)); |
202 expect(Bidi.estimateDirectionOfText('9 \u05d0 -> 17.5, 23, 45, 19', | 212 expect( |
203 isHtml: false).value, equals(TextDirection.RTL.value)); | 213 Bidi |
204 expect(Bidi.estimateDirectionOfText( | 214 .estimateDirectionOfText('9 \u05d0 -> 17.5, 23, 45, 19', |
205 'http://foo/bar/ \u05d0 http://foo2/bar2/ http://foo3/bar3/').value, | 215 isHtml: false) |
| 216 .value, |
206 equals(TextDirection.RTL.value)); | 217 equals(TextDirection.RTL.value)); |
207 expect(Bidi.estimateDirectionOfText( | 218 expect( |
208 '\u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc\u05e8\u05d0' | 219 Bidi |
209 '\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea\u05d9 \u05d4' | 220 .estimateDirectionOfText( |
210 '\u05e8\u05d1\u05d4 \u05d5\u05d2\u05dd \u05d0\u05dd \u05d4\u05d9\u05d9' | 221 'http://foo/bar/ \u05d0 http://foo2/bar2/ http://foo3/bar3/') |
211 '\u05ea\u05d9 \u05de\u05e6\u05dc\u05dd, \u05d4\u05d9\u05d4 \u05e9' | 222 .value, |
212 '\u05dd').value, equals(TextDirection.RTL.value)); | |
213 expect(Bidi.estimateDirectionOfText( | |
214 '\u05db\u05d0 - http://geek.co.il/gallery/v/2007-06 - \u05d0\u05d9' | |
215 '\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc\u05e8\u05d0\u05d5\u05ea:' | |
216 ' \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea\u05d9 \u05d4\u05e8\u05d1 ' | |
217 '\u05d5\u05d2\u05dd \u05d0\u05dd \u05d4\u05d9\u05d9\u05d9 \u05de\u05e6' | |
218 '\u05dc\u05dd, \u05d4\u05d9\u05d4 \u05e9\u05dd \u05d1\u05e2\u05d9\u05e7' | |
219 ' \u05d4\u05e8\u05d1\u05d4 \u05d0\u05e0\u05e9\u05d9\u05dd. \u05de\u05d4' | |
220 ' \u05e9\u05db\u05df - \u05d0\u05e4\u05e9\u05e8 \u05dc\u05e0\u05e6' | |
221 '\u05dc \u05d0\u05ea \u05d4\u05d4 \u05d3\u05d6\u05de\u05e0\u05d5 ' | |
222 '\u05dc\u05d4\u05e1\u05ea\u05db\u05dc \u05e2\u05dc \u05db\u05de\u05d4 ' | |
223 '\u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05de\u05e9\u05e9\u05e2\u05d5' | |
224 '\u05ea \u05d9\u05e9\u05e0\u05d5 \u05d9\u05d5\u05ea\u05e8 \u05e9\u05d9' | |
225 '\u05e9 \u05dc\u05d9 \u05d1\u05d0\u05ea\u05e8', | |
226 isHtml: false).value, equals(TextDirection.RTL.value)); | |
227 expect(Bidi.estimateDirectionOfText( | |
228 'CAPTCHA \u05de\u05e9\u05d5\u05db\u05dc\u05dc ' | |
229 '\u05de\u05d3\u05d9?').value, equals(TextDirection.RTL.value)); | |
230 expect(Bidi.estimateDirectionOfText( | |
231 'Yes Prime Minister \u05e2\u05d3\u05db\u05d5\u05df. \u05e9\u05d0\u05dc' | |
232 '\u05d5 \u05d0\u05d5\u05ea\u05d9 \u05de\u05d4 \u05d0\u05e0\u05d9 ' | |
233 '\u05e8\u05d5\u05e6\u05d4 \u05de\u05ea\u05e0\u05d4 \u05dc\u05d7' | |
234 '\u05d2').value, equals(TextDirection.RTL.value)); | |
235 expect(Bidi.estimateDirectionOfText( | |
236 '17.4.02 \u05e9\u05e2\u05d4:13-20 .15-00 .\u05dc\u05d0 \u05d4\u05d9' | |
237 '\u05d9\u05ea\u05d9 \u05db\u05d0\u05df.').value, | |
238 equals(TextDirection.RTL.value)); | 223 equals(TextDirection.RTL.value)); |
239 expect(Bidi.estimateDirectionOfText( | 224 expect( |
240 '5710 5720 5730. \u05d4\u05d3\u05dc\u05ea. \u05d4\u05e0\u05e9\u05d9' | 225 Bidi |
241 '\u05e7\u05d4', isHtml: false).value, equals(TextDirection.RTL.value)); | 226 .estimateDirectionOfText( |
242 expect(Bidi.estimateDirectionOfText( | 227 '\u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc\u05e8
\u05d0' |
243 '\u05d4\u05d3\u05dc\u05ea http://www.google.com ' | 228 '\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea\u05d9
\u05d4' |
244 'http://www.gmail.com').value, equals(TextDirection.RTL.value)); | 229 '\u05e8\u05d1\u05d4 \u05d5\u05d2\u05dd \u05d0\u05dd \u05d4\u05d9
\u05d9' |
245 expect(Bidi.estimateDirectionOfText( | 230 '\u05ea\u05d9 \u05de\u05e6\u05dc\u05dd, \u05d4\u05d9\u05d4 \u05e
9' |
246 '\u05d4\u05d3\u05dc <some quite nasty html mark up>').value, | 231 '\u05dd') |
| 232 .value, |
| 233 equals(TextDirection.RTL.value)); |
| 234 expect( |
| 235 Bidi |
| 236 .estimateDirectionOfText( |
| 237 '\u05db\u05d0 - http://geek.co.il/gallery/v/2007-06 - \u05d0\u05
d9' |
| 238 '\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc\u05e8\u05d0\u05d5
\u05ea:' |
| 239 ' \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea\u05d9 \u05d4\u05e8
\u05d1 ' |
| 240 '\u05d5\u05d2\u05dd \u05d0\u05dd \u05d4\u05d9\u05d9\u05d9 \u05de
\u05e6' |
| 241 '\u05dc\u05dd, \u05d4\u05d9\u05d4 \u05e9\u05dd \u05d1\u05e2\u05d
9\u05e7' |
| 242 ' \u05d4\u05e8\u05d1\u05d4 \u05d0\u05e0\u05e9\u05d9\u05dd. \u05d
e\u05d4' |
| 243 ' \u05e9\u05db\u05df - \u05d0\u05e4\u05e9\u05e8 \u05dc\u05e0\u05
e6' |
| 244 '\u05dc \u05d0\u05ea \u05d4\u05d4 \u05d3\u05d6\u05de\u05e0\u05d5
' |
| 245 '\u05dc\u05d4\u05e1\u05ea\u05db\u05dc \u05e2\u05dc \u05db\u05de\
u05d4 ' |
| 246 '\u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05de\u05e9\u05e9\u05e2\u
05d5' |
| 247 '\u05ea \u05d9\u05e9\u05e0\u05d5 \u05d9\u05d5\u05ea\u05e8 \u05e9
\u05d9' |
| 248 '\u05e9 \u05dc\u05d9 \u05d1\u05d0\u05ea\u05e8', |
| 249 isHtml: false) |
| 250 .value, |
| 251 equals(TextDirection.RTL.value)); |
| 252 expect( |
| 253 Bidi |
| 254 .estimateDirectionOfText( |
| 255 'CAPTCHA \u05de\u05e9\u05d5\u05db\u05dc\u05dc ' |
| 256 '\u05de\u05d3\u05d9?') |
| 257 .value, |
| 258 equals(TextDirection.RTL.value)); |
| 259 expect( |
| 260 Bidi |
| 261 .estimateDirectionOfText( |
| 262 'Yes Prime Minister \u05e2\u05d3\u05db\u05d5\u05df. \u05e9\u05d0
\u05dc' |
| 263 '\u05d5 \u05d0\u05d5\u05ea\u05d9 \u05de\u05d4 \u05d0\u05e0\u05d9
' |
| 264 '\u05e8\u05d5\u05e6\u05d4 \u05de\u05ea\u05e0\u05d4 \u05dc\u05d7' |
| 265 '\u05d2') |
| 266 .value, |
| 267 equals(TextDirection.RTL.value)); |
| 268 expect( |
| 269 Bidi |
| 270 .estimateDirectionOfText( |
| 271 '17.4.02 \u05e9\u05e2\u05d4:13-20 .15-00 .\u05dc\u05d0 \u05d4\u0
5d9' |
| 272 '\u05d9\u05ea\u05d9 \u05db\u05d0\u05df.') |
| 273 .value, |
| 274 equals(TextDirection.RTL.value)); |
| 275 expect( |
| 276 Bidi |
| 277 .estimateDirectionOfText( |
| 278 '5710 5720 5730. \u05d4\u05d3\u05dc\u05ea. \u05d4\u05e0\u05e9\u0
5d9' |
| 279 '\u05e7\u05d4', |
| 280 isHtml: false) |
| 281 .value, |
| 282 equals(TextDirection.RTL.value)); |
| 283 expect( |
| 284 Bidi |
| 285 .estimateDirectionOfText( |
| 286 '\u05d4\u05d3\u05dc\u05ea http://www.google.com ' |
| 287 'http://www.gmail.com') |
| 288 .value, |
| 289 equals(TextDirection.RTL.value)); |
| 290 expect( |
| 291 Bidi |
| 292 .estimateDirectionOfText( |
| 293 '\u05d4\u05d3\u05dc <some quite nasty html mark up>') |
| 294 .value, |
247 equals(TextDirection.LTR.value)); | 295 equals(TextDirection.LTR.value)); |
248 expect(Bidi.estimateDirectionOfText( | 296 expect( |
249 '\u05d4\u05d3\u05dc <some quite nasty html mark up>').value, | 297 Bidi |
| 298 .estimateDirectionOfText( |
| 299 '\u05d4\u05d3\u05dc <some quite nasty html mark up>') |
| 300 .value, |
250 equals(TextDirection.LTR.value)); | 301 equals(TextDirection.LTR.value)); |
251 expect(Bidi.estimateDirectionOfText( | 302 expect( |
252 '\u05d4\u05d3\u05dc\u05ea & < >').value, | 303 Bidi |
| 304 .estimateDirectionOfText('\u05d4\u05d3\u05dc\u05ea & < >') |
| 305 .value, |
253 equals(TextDirection.LTR.value)); | 306 equals(TextDirection.LTR.value)); |
254 expect(Bidi.estimateDirectionOfText( | 307 expect( |
255 '\u05d4\u05d3\u05dc\u05ea & < >', isHtml: true).value, | 308 Bidi |
| 309 .estimateDirectionOfText('\u05d4\u05d3\u05dc\u05ea & < >', |
| 310 isHtml: true) |
| 311 .value, |
256 equals(TextDirection.RTL.value)); | 312 equals(TextDirection.RTL.value)); |
257 }); | 313 }); |
258 | 314 |
259 test('detectRtlDirectionality', () { | 315 test('detectRtlDirectionality', () { |
260 var bidiText = []; | 316 var bidiText = []; |
261 var item = new SampleItem('Pure Ascii content'); | 317 var item = new SampleItem('Pure Ascii content'); |
262 bidiText.add(item); | 318 bidiText.add(item); |
263 | 319 |
264 item = new SampleItem('\u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4' | 320 item = new SampleItem( |
| 321 '\u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4' |
265 ' \u05dc\u05e8\u05d0\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc' | 322 ' \u05dc\u05e8\u05d0\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc' |
266 '\u05de\u05ea\u05d9 \u05d4\u05e8\u05d1\u05d4 \u05d5\u05d2\u05dd ' | 323 '\u05de\u05ea\u05d9 \u05d4\u05e8\u05d1\u05d4 \u05d5\u05d2\u05dd ' |
267 '\u05d0\u05dd \u05d4\u05d9\u05d9\u05ea\u05d9 \u05de\u05e6\u05dc\u05dd, ' | 324 '\u05d0\u05dd \u05d4\u05d9\u05d9\u05ea\u05d9 \u05de\u05e6\u05dc\u05dd, ' |
268 '\u05d4\u05d9\u05d4 \u05e9\u05dd', true); | 325 '\u05d4\u05d9\u05d4 \u05e9\u05dd', |
| 326 true); |
269 bidiText.add(item); | 327 bidiText.add(item); |
270 | 328 |
271 item = new SampleItem('\u05db\u05d0\u05df - http://geek.co.il/gallery/v/' | 329 item = new SampleItem( |
| 330 '\u05db\u05d0\u05df - http://geek.co.il/gallery/v/' |
272 '2007-06 - \u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc' | 331 '2007-06 - \u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc' |
273 '\u05e8\u05d0\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea' | 332 '\u05e8\u05d0\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea' |
274 '\u05d9 \u05d4\u05e8\u05d1\u05d4 \u05d5\u05d2\u05dd \u05d0\u05dd \u05d4' | 333 '\u05d9 \u05d4\u05e8\u05d1\u05d4 \u05d5\u05d2\u05dd \u05d0\u05dd \u05d4' |
275 '\u05d9\u05d9\u05ea\u05d9 \u05de\u05e6\u05dc\u05dd, \u05d4\u05d9\u05d4 ' | 334 '\u05d9\u05d9\u05ea\u05d9 \u05de\u05e6\u05dc\u05dd, \u05d4\u05d9\u05d4 ' |
276 '\u05e9\u05dd \u05d1\u05e2\u05d9\u05e7\u05e8 \u05d4\u05e8\u05d1\u05d4 ' | 335 '\u05e9\u05dd \u05d1\u05e2\u05d9\u05e7\u05e8 \u05d4\u05e8\u05d1\u05d4 ' |
277 '\u05d0\u05e0\u05e9\u05d9\u05dd. \u05de\u05d4 \u05e9\u05db\u05df - ' | 336 '\u05d0\u05e0\u05e9\u05d9\u05dd. \u05de\u05d4 \u05e9\u05db\u05df - ' |
278 '\u05d0\u05e4\u05e9\u05e8 \u05dc\u05e0\u05e6\u05dc \u05d0\u05ea \u05d4' | 337 '\u05d0\u05e4\u05e9\u05e8 \u05dc\u05e0\u05e6\u05dc \u05d0\u05ea \u05d4' |
279 '\u05d4\u05d3\u05d6\u05de\u05e0\u05d5\u05ea \u05dc\u05d4\u05e1\u05ea' | 338 '\u05d4\u05d3\u05d6\u05de\u05e0\u05d5\u05ea \u05dc\u05d4\u05e1\u05ea' |
280 '\u05db\u05dc \u05e2\u05dc \u05db\u05de\u05d4 \u05ea\u05de\u05d5\u05e0' | 339 '\u05db\u05dc \u05e2\u05dc \u05db\u05de\u05d4 \u05ea\u05de\u05d5\u05e0' |
281 '\u05d5\u05ea \u05de\u05e9\u05e2\u05e9\u05e2\u05d5\u05ea \u05d9\u05e9' | 340 '\u05d5\u05ea \u05de\u05e9\u05e2\u05e9\u05e2\u05d5\u05ea \u05d9\u05e9' |
282 '\u05e0\u05d5\u05ea \u05d9\u05d5\u05ea\u05e8 \u05e9\u05d9\u05e9 \u05dc' | 341 '\u05e0\u05d5\u05ea \u05d9\u05d5\u05ea\u05e8 \u05e9\u05d9\u05e9 \u05dc' |
283 '\u05d9 \u05d1\u05d0\u05ea\u05e8', true); | 342 '\u05d9 \u05d1\u05d0\u05ea\u05e8', |
| 343 true); |
284 bidiText.add(item); | 344 bidiText.add(item); |
285 | 345 |
286 item = new SampleItem('CAPTCHA \u05de\u05e9\u05d5\u05db\u05dc\u05dc ' | 346 item = new SampleItem( |
287 '\u05de\u05d3\u05d9?', true); | 347 'CAPTCHA \u05de\u05e9\u05d5\u05db\u05dc\u05dc ' |
| 348 '\u05de\u05d3\u05d9?', |
| 349 true); |
288 bidiText.add(item); | 350 bidiText.add(item); |
289 | 351 |
290 item = new SampleItem('Yes Prime Minister \u05e2\u05d3\u05db\u05d5\u05df. ' | 352 item = new SampleItem( |
| 353 'Yes Prime Minister \u05e2\u05d3\u05db\u05d5\u05df. ' |
291 '\u05e9\u05d0\u05dc\u05d5 \u05d0\u05d5\u05ea\u05d9 \u05de\u05d4 \u05d0' | 354 '\u05e9\u05d0\u05dc\u05d5 \u05d0\u05d5\u05ea\u05d9 \u05de\u05d4 \u05d0' |
292 '\u05e0\u05d9 \u05e8\u05d5\u05e6\u05d4 \u05de\u05ea\u05e0\u05d4 ' | 355 '\u05e0\u05d9 \u05e8\u05d5\u05e6\u05d4 \u05de\u05ea\u05e0\u05d4 ' |
293 '\u05dc\u05d7\u05d2', true); | 356 '\u05dc\u05d7\u05d2', |
| 357 true); |
294 bidiText.add(item); | 358 bidiText.add(item); |
295 | 359 |
296 item = new SampleItem('17.4.02 \u05e9\u05e2\u05d4:13-20 .15-00 .\u05dc' | 360 item = new SampleItem( |
297 '\u05d0 \u05d4\u05d9\u05d9\u05ea\u05d9 \u05db\u05d0\u05df.', true); | 361 '17.4.02 \u05e9\u05e2\u05d4:13-20 .15-00 .\u05dc' |
| 362 '\u05d0 \u05d4\u05d9\u05d9\u05ea\u05d9 \u05db\u05d0\u05df.', |
| 363 true); |
298 bidiText.add(item); | 364 bidiText.add(item); |
299 | 365 |
300 item = new SampleItem('5710 5720 5730. \u05d4\u05d3\u05dc\u05ea. \u05d4' | 366 item = new SampleItem( |
301 '\u05e0\u05e9\u05d9\u05e7\u05d4', true); | 367 '5710 5720 5730. \u05d4\u05d3\u05dc\u05ea. \u05d4' |
| 368 '\u05e0\u05e9\u05d9\u05e7\u05d4', |
| 369 true); |
302 bidiText.add(item); | 370 bidiText.add(item); |
303 | 371 |
304 item = new SampleItem('\u05d4\u05d3\u05dc\u05ea http://www.google.com ' | 372 item = new SampleItem( |
305 'http://www.gmail.com', true); | 373 '\u05d4\u05d3\u05dc\u05ea http://www.google.com ' |
| 374 'http://www.gmail.com', |
| 375 true); |
306 bidiText.add(item); | 376 bidiText.add(item); |
307 | 377 |
308 item = new SampleItem('>\u05d4<', true, true); | 378 item = new SampleItem('>\u05d4<', true, true); |
309 bidiText.add(item); | 379 bidiText.add(item); |
310 | 380 |
311 item = new SampleItem('>\u05d4<', false); | 381 item = new SampleItem('>\u05d4<', false); |
312 bidiText.add(item); | 382 bidiText.add(item); |
313 | 383 |
314 for (var i = 0; i < bidiText.length; i++) { | 384 for (var i = 0; i < bidiText.length; i++) { |
315 var isRtlDir = Bidi.detectRtlDirectionality(bidiText[i].text, | 385 var isRtlDir = Bidi.detectRtlDirectionality(bidiText[i].text, |
316 isHtml: bidiText[i].isHtml); | 386 isHtml: bidiText[i].isHtml); |
| 387 |
317 if (isRtlDir != bidiText[i].isRtl) { | 388 if (isRtlDir != bidiText[i].isRtl) { |
318 var str = '"${bidiText[i].text} " should be ' | 389 var str = '"${bidiText[i].text} " should be ' |
319 '${bidiText[i].isRtl ? "rtl" : "ltr"} but detected as ' | 390 '${bidiText[i].isRtl ? "rtl" : "ltr"} but detected as ' |
320 '${isRtlDir ? "rtl" : "ltr"}'; | 391 '${isRtlDir ? "rtl" : "ltr"}'; |
321 //alert(str); | 392 fail(str); |
322 } | 393 } |
323 expect(bidiText[i].isRtl, isRtlDir); | |
324 } | 394 } |
325 }); | 395 }); |
326 } | 396 } |
327 | 397 |
328 class SampleItem { | 398 class SampleItem { |
329 String text; | 399 String text; |
330 bool isRtl; | 400 bool isRtl; |
331 bool isHtml; | 401 bool isHtml; |
332 SampleItem([someText = '', someIsRtl = false, isHtml = false]) | 402 SampleItem([someText = '', someIsRtl = false, isHtml = false]) |
333 : this.text = someText, | 403 : this.text = someText, |
334 this.isRtl = someIsRtl, | 404 this.isRtl = someIsRtl, |
335 this.isHtml = isHtml; | 405 this.isHtml = isHtml; |
336 } | 406 } |
OLD | NEW |