| 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 | 5 |
| 6 #library('bidi_utils_test'); | 6 #library('bidi_utils_test'); |
| 7 | 7 |
| 8 #import('../lib/intl.dart'); | 8 #import('../lib/intl.dart'); |
| 9 #import('../../../pkg/unittest/unittest.dart'); | 9 #import('../../../pkg/unittest/unittest.dart'); |
| 10 | 10 |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 }); | 178 }); |
| 179 | 179 |
| 180 test('normalizeHebrewQuote', () { | 180 test('normalizeHebrewQuote', () { |
| 181 expect(Bidi.normalizeHebrewQuote('\u05d0"'), equals('\u05d0\u05f4')); | 181 expect(Bidi.normalizeHebrewQuote('\u05d0"'), equals('\u05d0\u05f4')); |
| 182 expect(Bidi.normalizeHebrewQuote('\u05d0\''), equals('\u05d0\u05f3')); | 182 expect(Bidi.normalizeHebrewQuote('\u05d0\''), equals('\u05d0\u05f3')); |
| 183 expect(Bidi.normalizeHebrewQuote('\u05d0"\u05d0\''), | 183 expect(Bidi.normalizeHebrewQuote('\u05d0"\u05d0\''), |
| 184 equals('\u05d0\u05f4\u05d0\u05f3')); | 184 equals('\u05d0\u05f4\u05d0\u05f3')); |
| 185 }); | 185 }); |
| 186 | 186 |
| 187 test('estimateDirectionOfText', () { | 187 test('estimateDirectionOfText', () { |
| 188 expect(Bidi.estimateDirectionOfText('', false).value, | 188 expect(Bidi.estimateDirectionOfText('', isHtml: false).value, |
| 189 equals(TextDirection.UNKNOWN.value)); | 189 equals(TextDirection.UNKNOWN.value)); |
| 190 expect(Bidi.estimateDirectionOfText(' ', false).value, | 190 expect(Bidi.estimateDirectionOfText(' ', isHtml: false).value, |
| 191 equals(TextDirection.UNKNOWN.value)); | 191 equals(TextDirection.UNKNOWN.value)); |
| 192 expect(Bidi.estimateDirectionOfText('! (...)', false).value, | 192 expect(Bidi.estimateDirectionOfText('! (...)', isHtml: false).value, |
| 193 equals(TextDirection.UNKNOWN.value)); | 193 equals(TextDirection.UNKNOWN.value)); |
| 194 expect(Bidi.estimateDirectionOfText('All-Ascii content', false).value, | 194 expect(Bidi.estimateDirectionOfText('All-Ascii content', |
| 195 isHtml: false).value, |
| 195 equals(TextDirection.LTR.value)); | 196 equals(TextDirection.LTR.value)); |
| 196 expect(Bidi.estimateDirectionOfText('-17.0%', false).value, | 197 expect(Bidi.estimateDirectionOfText('-17.0%', isHtml: false).value, |
| 197 equals(TextDirection.LTR.value)); | 198 equals(TextDirection.LTR.value)); |
| 198 expect(Bidi.estimateDirectionOfText('http://foo/bar/', false).value, | 199 expect(Bidi.estimateDirectionOfText('http://foo/bar/', isHtml: false).value, |
| 199 equals(TextDirection.LTR.value)); | 200 equals(TextDirection.LTR.value)); |
| 200 expect(Bidi.estimateDirectionOfText( | 201 expect(Bidi.estimateDirectionOfText( |
| 201 'http://foo/bar/?s=\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0' | 202 'http://foo/bar/?s=\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0' |
| 202 '\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0' | 203 '\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0' |
| 203 '\u05d0\u05d0\u05d0\u05d0\u05d0').value, | 204 '\u05d0\u05d0\u05d0\u05d0\u05d0').value, |
| 204 equals(TextDirection.LTR.value)); | 205 equals(TextDirection.LTR.value)); |
| 205 expect(Bidi.estimateDirectionOfText('\u05d0', false).value, | 206 expect(Bidi.estimateDirectionOfText('\u05d0', isHtml: false).value, |
| 206 equals(TextDirection.RTL.value)); | 207 equals(TextDirection.RTL.value)); |
| 207 expect(Bidi.estimateDirectionOfText( | 208 expect(Bidi.estimateDirectionOfText( |
| 208 '9 \u05d0 -> 17.5, 23, 45, 19', false).value, | 209 '9 \u05d0 -> 17.5, 23, 45, 19', isHtml: false).value, |
| 209 equals(TextDirection.RTL.value)); | 210 equals(TextDirection.RTL.value)); |
| 210 expect(Bidi.estimateDirectionOfText( | 211 expect(Bidi.estimateDirectionOfText( |
| 211 'http://foo/bar/ \u05d0 http://foo2/bar2/ http://foo3/bar3/').value, | 212 'http://foo/bar/ \u05d0 http://foo2/bar2/ http://foo3/bar3/').value, |
| 212 equals(TextDirection.RTL.value)); | 213 equals(TextDirection.RTL.value)); |
| 213 expect(Bidi.estimateDirectionOfText( | 214 expect(Bidi.estimateDirectionOfText( |
| 214 '\u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc\u05e8\u05d0' | 215 '\u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc\u05e8\u05d0' |
| 215 '\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea\u05d9 \u05d4' | 216 '\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea\u05d9 \u05d4' |
| 216 '\u05e8\u05d1\u05d4 \u05d5\u05d2\u05dd \u05d0\u05dd \u05d4\u05d9\u05d9' | 217 '\u05e8\u05d1\u05d4 \u05d5\u05d2\u05dd \u05d0\u05dd \u05d4\u05d9\u05d9' |
| 217 '\u05ea\u05d9 \u05de\u05e6\u05dc\u05dd, \u05d4\u05d9\u05d4 \u05e9' | 218 '\u05ea\u05d9 \u05de\u05e6\u05dc\u05dd, \u05d4\u05d9\u05d4 \u05e9' |
| 218 '\u05dd').value, | 219 '\u05dd').value, |
| 219 equals(TextDirection.RTL.value)); | 220 equals(TextDirection.RTL.value)); |
| 220 expect(Bidi.estimateDirectionOfText( | 221 expect(Bidi.estimateDirectionOfText( |
| 221 '\u05db\u05d0 - http://geek.co.il/gallery/v/2007-06 - \u05d0\u05d9' | 222 '\u05db\u05d0 - http://geek.co.il/gallery/v/2007-06 - \u05d0\u05d9' |
| 222 '\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc\u05e8\u05d0\u05d5\u05ea:' | 223 '\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc\u05e8\u05d0\u05d5\u05ea:' |
| 223 ' \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea\u05d9 \u05d4\u05e8\u05d1 ' | 224 ' \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea\u05d9 \u05d4\u05e8\u05d1 ' |
| 224 '\u05d5\u05d2\u05dd \u05d0\u05dd \u05d4\u05d9\u05d9\u05d9 \u05de\u05e6' | 225 '\u05d5\u05d2\u05dd \u05d0\u05dd \u05d4\u05d9\u05d9\u05d9 \u05de\u05e6' |
| 225 '\u05dc\u05dd, \u05d4\u05d9\u05d4 \u05e9\u05dd \u05d1\u05e2\u05d9\u05e7' | 226 '\u05dc\u05dd, \u05d4\u05d9\u05d4 \u05e9\u05dd \u05d1\u05e2\u05d9\u05e7' |
| 226 ' \u05d4\u05e8\u05d1\u05d4 \u05d0\u05e0\u05e9\u05d9\u05dd. \u05de\u05d4' | 227 ' \u05d4\u05e8\u05d1\u05d4 \u05d0\u05e0\u05e9\u05d9\u05dd. \u05de\u05d4' |
| 227 ' \u05e9\u05db\u05df - \u05d0\u05e4\u05e9\u05e8 \u05dc\u05e0\u05e6' | 228 ' \u05e9\u05db\u05df - \u05d0\u05e4\u05e9\u05e8 \u05dc\u05e0\u05e6' |
| 228 '\u05dc \u05d0\u05ea \u05d4\u05d4 \u05d3\u05d6\u05de\u05e0\u05d5 ' | 229 '\u05dc \u05d0\u05ea \u05d4\u05d4 \u05d3\u05d6\u05de\u05e0\u05d5 ' |
| 229 '\u05dc\u05d4\u05e1\u05ea\u05db\u05dc \u05e2\u05dc \u05db\u05de\u05d4 ' | 230 '\u05dc\u05d4\u05e1\u05ea\u05db\u05dc \u05e2\u05dc \u05db\u05de\u05d4 ' |
| 230 '\u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05de\u05e9\u05e9\u05e2\u05d5' | 231 '\u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05de\u05e9\u05e9\u05e2\u05d5' |
| 231 '\u05ea \u05d9\u05e9\u05e0\u05d5 \u05d9\u05d5\u05ea\u05e8 \u05e9\u05d9' | 232 '\u05ea \u05d9\u05e9\u05e0\u05d5 \u05d9\u05d5\u05ea\u05e8 \u05e9\u05d9' |
| 232 '\u05e9 \u05dc\u05d9 \u05d1\u05d0\u05ea\u05e8', false).value, | 233 '\u05e9 \u05dc\u05d9 \u05d1\u05d0\u05ea\u05e8', isHtml: false).value, |
| 233 equals(TextDirection.RTL.value)); | 234 equals(TextDirection.RTL.value)); |
| 234 expect(Bidi.estimateDirectionOfText( | 235 expect(Bidi.estimateDirectionOfText( |
| 235 'CAPTCHA \u05de\u05e9\u05d5\u05db\u05dc\u05dc ' | 236 'CAPTCHA \u05de\u05e9\u05d5\u05db\u05dc\u05dc ' |
| 236 '\u05de\u05d3\u05d9?').value, | 237 '\u05de\u05d3\u05d9?').value, |
| 237 equals(TextDirection.RTL.value)); | 238 equals(TextDirection.RTL.value)); |
| 238 expect(Bidi.estimateDirectionOfText( | 239 expect(Bidi.estimateDirectionOfText( |
| 239 'Yes Prime Minister \u05e2\u05d3\u05db\u05d5\u05df. \u05e9\u05d0\u05dc' | 240 'Yes Prime Minister \u05e2\u05d3\u05db\u05d5\u05df. \u05e9\u05d0\u05dc' |
| 240 '\u05d5 \u05d0\u05d5\u05ea\u05d9 \u05de\u05d4 \u05d0\u05e0\u05d9 ' | 241 '\u05d5 \u05d0\u05d5\u05ea\u05d9 \u05de\u05d4 \u05d0\u05e0\u05d9 ' |
| 241 '\u05e8\u05d5\u05e6\u05d4 \u05de\u05ea\u05e0\u05d4 \u05dc\u05d7' | 242 '\u05e8\u05d5\u05e6\u05d4 \u05de\u05ea\u05e0\u05d4 \u05dc\u05d7' |
| 242 '\u05d2').value, | 243 '\u05d2').value, |
| 243 equals(TextDirection.RTL.value)); | 244 equals(TextDirection.RTL.value)); |
| 244 expect(Bidi.estimateDirectionOfText( | 245 expect(Bidi.estimateDirectionOfText( |
| 245 '17.4.02 \u05e9\u05e2\u05d4:13-20 .15-00 .\u05dc\u05d0 \u05d4\u05d9' | 246 '17.4.02 \u05e9\u05e2\u05d4:13-20 .15-00 .\u05dc\u05d0 \u05d4\u05d9' |
| 246 '\u05d9\u05ea\u05d9 \u05db\u05d0\u05df.').value, | 247 '\u05d9\u05ea\u05d9 \u05db\u05d0\u05df.').value, |
| 247 equals(TextDirection.RTL.value)); | 248 equals(TextDirection.RTL.value)); |
| 248 expect(Bidi.estimateDirectionOfText( | 249 expect(Bidi.estimateDirectionOfText( |
| 249 '5710 5720 5730. \u05d4\u05d3\u05dc\u05ea. \u05d4\u05e0\u05e9\u05d9' | 250 '5710 5720 5730. \u05d4\u05d3\u05dc\u05ea. \u05d4\u05e0\u05e9\u05d9' |
| 250 '\u05e7\u05d4', false).value, | 251 '\u05e7\u05d4', isHtml: false).value, |
| 251 equals(TextDirection.RTL.value)); | 252 equals(TextDirection.RTL.value)); |
| 252 expect(Bidi.estimateDirectionOfText( | 253 expect(Bidi.estimateDirectionOfText( |
| 253 '\u05d4\u05d3\u05dc\u05ea http://www.google.com ' | 254 '\u05d4\u05d3\u05dc\u05ea http://www.google.com ' |
| 254 'http://www.gmail.com').value, | 255 'http://www.gmail.com').value, |
| 255 equals(TextDirection.RTL.value)); | 256 equals(TextDirection.RTL.value)); |
| 256 expect(Bidi.estimateDirectionOfText( | 257 expect(Bidi.estimateDirectionOfText( |
| 257 '\u05d4\u05d3\u05dc <some quite nasty html mark up>').value, | 258 '\u05d4\u05d3\u05dc <some quite nasty html mark up>').value, |
| 258 equals(TextDirection.LTR.value)); | 259 equals(TextDirection.LTR.value)); |
| 259 expect(Bidi.estimateDirectionOfText( | 260 expect(Bidi.estimateDirectionOfText( |
| 260 '\u05d4\u05d3\u05dc <some quite nasty html mark up>').value, | 261 '\u05d4\u05d3\u05dc <some quite nasty html mark up>').value, |
| 261 equals(TextDirection.LTR.value)); | 262 equals(TextDirection.LTR.value)); |
| 262 expect(Bidi.estimateDirectionOfText( | 263 expect(Bidi.estimateDirectionOfText( |
| 263 '\u05d4\u05d3\u05dc\u05ea & < >').value, | 264 '\u05d4\u05d3\u05dc\u05ea & < >').value, |
| 264 equals(TextDirection.LTR.value)); | 265 equals(TextDirection.LTR.value)); |
| 265 expect(Bidi.estimateDirectionOfText( | 266 expect(Bidi.estimateDirectionOfText( |
| 266 '\u05d4\u05d3\u05dc\u05ea & < >', true).value, | 267 '\u05d4\u05d3\u05dc\u05ea & < >', isHtml: true).value, |
| 267 equals(TextDirection.RTL.value)); | 268 equals(TextDirection.RTL.value)); |
| 268 }); | 269 }); |
| 269 | 270 |
| 270 test('detectRtlDirectionality', () { | 271 test('detectRtlDirectionality', () { |
| 271 var bidiText = []; | 272 var bidiText = []; |
| 272 var item = new SampleItem('Pure Ascii content'); | 273 var item = new SampleItem('Pure Ascii content'); |
| 273 bidiText.add(item); | 274 bidiText.add(item); |
| 274 | 275 |
| 275 item = new SampleItem('\u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4' | 276 item = new SampleItem('\u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4' |
| 276 ' \u05dc\u05e8\u05d0\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc' | 277 ' \u05dc\u05e8\u05d0\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc' |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 bidiText.add(item); | 319 bidiText.add(item); |
| 319 | 320 |
| 320 item = new SampleItem('>\u05d4<', true, true); | 321 item = new SampleItem('>\u05d4<', true, true); |
| 321 bidiText.add(item); | 322 bidiText.add(item); |
| 322 | 323 |
| 323 item = new SampleItem('>\u05d4<', false); | 324 item = new SampleItem('>\u05d4<', false); |
| 324 bidiText.add(item); | 325 bidiText.add(item); |
| 325 | 326 |
| 326 for (var i = 0; i < bidiText.length; i++) { | 327 for (var i = 0; i < bidiText.length; i++) { |
| 327 var isRtlDir = Bidi.detectRtlDirectionality(bidiText[i].text, | 328 var isRtlDir = Bidi.detectRtlDirectionality(bidiText[i].text, |
| 328 bidiText[i].isHtml); | 329 isHtml: bidiText[i].isHtml); |
| 329 if (isRtlDir != bidiText[i].isRtl) { | 330 if (isRtlDir != bidiText[i].isRtl) { |
| 330 var str = '"${bidiText[i].text} " should be ' | 331 var str = '"${bidiText[i].text} " should be ' |
| 331 '${bidiText[i].isRtl ? "rtl" : "ltr"} but detected as ' | 332 '${bidiText[i].isRtl ? "rtl" : "ltr"} but detected as ' |
| 332 '${isRtlDir ? "rtl" : "ltr"}'; | 333 '${isRtlDir ? "rtl" : "ltr"}'; |
| 333 //alert(str); | 334 //alert(str); |
| 334 } | 335 } |
| 335 expect(bidiText[i].isRtl, isRtlDir); | 336 expect(bidiText[i].isRtl, isRtlDir); |
| 336 } | 337 } |
| 337 }); | 338 }); |
| 338 } | 339 } |
| 339 | 340 |
| 340 class SampleItem { | 341 class SampleItem { |
| 341 String text; | 342 String text; |
| 342 bool isRtl; | 343 bool isRtl; |
| 343 bool isHtml; | 344 bool isHtml; |
| 344 SampleItem([someText='', someIsRtl=false, isHtml=false]) : | 345 SampleItem([someText='', someIsRtl=false, isHtml=false]) : |
| 345 this.text=someText, this.isRtl=someIsRtl, this.isHtml=isHtml; | 346 this.text=someText, this.isRtl=someIsRtl, this.isHtml=isHtml; |
| 346 } | 347 } |
| OLD | NEW |