Index: pkg/intl/test/bidi_utils_test.dart |
diff --git a/pkg/intl/test/bidi_utils_test.dart b/pkg/intl/test/bidi_utils_test.dart |
deleted file mode 100644 |
index 8170054d466c441c1f0b9ebc604c75d65a026557..0000000000000000000000000000000000000000 |
--- a/pkg/intl/test/bidi_utils_test.dart |
+++ /dev/null |
@@ -1,347 +0,0 @@ |
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
- |
-library bidi_utils_test; |
- |
-import 'package:intl/intl.dart'; |
-import 'package:unittest/unittest.dart'; |
- |
-/** |
- * Tests the bidi utilities library. |
- */ |
-main() { |
- var LRE = '\u202A'; |
- var RLE = '\u202B'; |
- var PDF = '\u202C'; |
- var LRM = '\u200E'; |
- var RLM = '\u200F'; |
- |
- test('isRtlLang', () { |
- expect(Bidi.isRtlLanguage('en'), isFalse); |
- expect(Bidi.isRtlLanguage('fr'), isFalse); |
- expect(Bidi.isRtlLanguage('zh-CN'), isFalse); |
- expect(Bidi.isRtlLanguage('fil'), isFalse); |
- expect(Bidi.isRtlLanguage('az'), isFalse); |
- expect(Bidi.isRtlLanguage('iw-Latn'), isFalse); |
- expect(Bidi.isRtlLanguage('iw-LATN'), isFalse); |
- expect(Bidi.isRtlLanguage('iw_latn'), isFalse); |
- expect(Bidi.isRtlLanguage('ar'), isTrue); |
- expect(Bidi.isRtlLanguage('AR'), isTrue); |
- expect(Bidi.isRtlLanguage('iw'), isTrue); |
- expect(Bidi.isRtlLanguage('he'), isTrue); |
- expect(Bidi.isRtlLanguage('fa'), isTrue); |
- expect(Bidi.isRtlLanguage('ar-EG'), isTrue); |
- expect(Bidi.isRtlLanguage('az-Arab'), isTrue); |
- expect(Bidi.isRtlLanguage('az-ARAB-IR'), isTrue); |
- expect(Bidi.isRtlLanguage('az_arab_IR'), isTrue); |
- }); |
- |
- test('hasAnyLtr', () { |
- expect(Bidi.hasAnyLtr(''), isFalse); |
- expect(Bidi.hasAnyLtr('\u05e0\u05e1\u05e2'), isFalse); |
- expect(Bidi.hasAnyLtr('\u05e0\u05e1z\u05e2'), isTrue); |
- expect(Bidi.hasAnyLtr('123\t... \n'), isFalse); |
- expect(Bidi.hasAnyLtr('<br>123<', false), isTrue); |
- expect(Bidi.hasAnyLtr('<br>123<', true), isFalse); |
- }); |
- |
- test('hasAnyRtl', () { |
- expect(Bidi.hasAnyRtl(''), isFalse); |
- expect(Bidi.hasAnyRtl('abc'), isFalse); |
- expect(Bidi.hasAnyRtl('ab\u05e0c'), isTrue); |
- expect(Bidi.hasAnyRtl('123\t... \n'), isFalse); |
- expect(Bidi.hasAnyRtl('<input value=\u05e0>123', false), isTrue); |
- expect(Bidi.hasAnyRtl('<input value=\u05e0>123', true), isFalse); |
- }); |
- |
- |
- test('endsWithLtr', () { |
- expect(Bidi.endsWithLtr('a'), isTrue); |
- expect(Bidi.endsWithLtr('abc'), isTrue); |
- expect(Bidi.endsWithLtr('a (!)'), isTrue); |
- expect(Bidi.endsWithLtr('a.1'), isTrue); |
- expect(Bidi.endsWithLtr('http://www.google.com '), isTrue); |
- expect(Bidi.endsWithLtr('\u05e0a'), isTrue); |
- expect(Bidi.endsWithLtr(' \u05e0\u05e1a\u05e2\u05e3 a (!)'), isTrue); |
- expect(Bidi.endsWithLtr(''), isFalse); |
- expect(Bidi.endsWithLtr(' '), isFalse); |
- expect(Bidi.endsWithLtr('1'), isFalse); |
- expect(Bidi.endsWithLtr('\u05e0'), isFalse); |
- expect(Bidi.endsWithLtr('\u05e0 1(!)'), isFalse); |
- expect(Bidi.endsWithLtr('a\u05e0'), isFalse); |
- expect(Bidi.endsWithLtr('a abc\u05e0\u05e1def\u05e2. 1'), isFalse); |
- expect(Bidi.endsWithLtr(' \u05e0\u05e1a\u05e2 <', true), isFalse); |
- expect(Bidi.endsWithLtr(' \u05e0\u05e1a\u05e2 <', false), isTrue); |
- }); |
- |
- test('endsWithRtl', () { |
- expect(Bidi.endsWithRtl('\u05e0'), isTrue); |
- expect(Bidi.endsWithRtl('\u05e0\u05e1\u05e2'), isTrue); |
- expect(Bidi.endsWithRtl('\u05e0 (!)'), isTrue); |
- expect(Bidi.endsWithRtl('\u05e0.1'), isTrue); |
- expect(Bidi.endsWithRtl('http://www.google.com/\u05e0 '), isTrue); |
- expect(Bidi.endsWithRtl('a\u05e0'), isTrue); |
- expect(Bidi.endsWithRtl(' a abc\u05e0def\u05e3. 1'), isTrue); |
- expect(Bidi.endsWithRtl(''), isFalse); |
- expect(Bidi.endsWithRtl(' '), isFalse); |
- expect(Bidi.endsWithRtl('1'), isFalse); |
- expect(Bidi.endsWithRtl('a'), isFalse); |
- expect(Bidi.endsWithRtl('a 1(!)'), isFalse); |
- expect(Bidi.endsWithRtl('\u05e0a'), isFalse); |
- expect(Bidi.endsWithRtl('\u05e0 \u05e0\u05e1ab\u05e2 a (!)'), isFalse); |
- expect(Bidi.endsWithRtl(' \u05e0\u05e1a\u05e2 <', true), isTrue); |
- expect(Bidi.endsWithRtl(' \u05e0\u05e1a\u05e2 <', false), isFalse); |
- }); |
- |
- test('guardBracketInHtml', () { |
- var strWithRtl = "asc \u05d0 (\u05d0\u05d0\u05d0)"; |
- expect(Bidi.guardBracketInHtml(strWithRtl), |
- equals("asc \u05d0 <span dir=rtl>(\u05d0\u05d0\u05d0)</span>")); |
- expect(Bidi.guardBracketInHtml(strWithRtl, true), |
- equals("asc \u05d0 <span dir=rtl>(\u05d0\u05d0\u05d0)</span>")); |
- expect(Bidi.guardBracketInHtml(strWithRtl, false), |
- equals("asc \u05d0 <span dir=ltr>(\u05d0\u05d0\u05d0)</span>")); |
- |
- var strWithRtl2 = "\u05d0 a (asc:))"; |
- expect(Bidi.guardBracketInHtml(strWithRtl2), |
- equals("\u05d0 a <span dir=rtl>(asc:))</span>")); |
- expect(Bidi.guardBracketInHtml(strWithRtl2, true), |
- equals("\u05d0 a <span dir=rtl>(asc:))</span>")); |
- expect(Bidi.guardBracketInHtml(strWithRtl2, false), |
- equals("\u05d0 a <span dir=ltr>(asc:))</span>")); |
- |
- var strWithoutRtl = "a (asc) {{123}}"; |
- expect(Bidi.guardBracketInHtml(strWithoutRtl), |
- equals("a <span dir=ltr>(asc)</span> <span dir=ltr>{{123}}</span>")); |
- expect(Bidi.guardBracketInHtml(strWithoutRtl, true), |
- equals("a <span dir=rtl>(asc)</span> <span dir=rtl>{{123}}</span>")); |
- expect(Bidi.guardBracketInHtml(strWithoutRtl, false), |
- equals("a <span dir=ltr>(asc)</span> <span dir=ltr>{{123}}</span>")); |
- |
- }); |
- |
- test('guardBracketInText', () { |
- var strWithRtl = "asc \u05d0 (\u05d0\u05d0\u05d0)"; |
- expect(Bidi.guardBracketInText(strWithRtl), |
- equals("asc \u05d0 \u200f(\u05d0\u05d0\u05d0)\u200f")); |
- expect(Bidi.guardBracketInText(strWithRtl, true), |
- equals("asc \u05d0 \u200f(\u05d0\u05d0\u05d0)\u200f")); |
- expect(Bidi.guardBracketInText(strWithRtl, false), |
- equals("asc \u05d0 \u200e(\u05d0\u05d0\u05d0)\u200e")); |
- |
- var strWithRtl2 = "\u05d0 a (asc:))"; |
- expect(Bidi.guardBracketInText(strWithRtl2), |
- equals("\u05d0 a \u200f(asc:))\u200f")); |
- expect(Bidi.guardBracketInText(strWithRtl2, true), |
- equals("\u05d0 a \u200f(asc:))\u200f")); |
- expect(Bidi.guardBracketInText(strWithRtl2, false), |
- equals("\u05d0 a \u200e(asc:))\u200e")); |
- |
- var strWithoutRtl = "a (asc) {{123}}"; |
- expect(Bidi.guardBracketInText(strWithoutRtl), |
- equals("a \u200e(asc)\u200e \u200e{{123}}\u200e")); |
- expect(Bidi.guardBracketInText(strWithoutRtl, true), |
- equals("a \u200f(asc)\u200f \u200f{{123}}\u200f")); |
- expect(Bidi.guardBracketInText(strWithoutRtl, false), |
- equals("a \u200e(asc)\u200e \u200e{{123}}\u200e")); |
- |
- }); |
- |
- test('enforceRtlInHtml', () { |
- var str = '<div> first <br> second </div>'; |
- expect(Bidi.enforceRtlInHtml(str), |
- equals('<div dir=rtl> first <br> second </div>')); |
- str = 'first second'; |
- expect(Bidi.enforceRtlInHtml(str), |
- equals('\n<span dir=rtl>first second</span>')); |
- }); |
- |
- test('enforceRtlInText', () { |
- var str = 'first second'; |
- expect(Bidi.enforceRtlInText(str), equals('${RLE}first second$PDF')); |
- }); |
- |
- test('enforceLtrInHtml', () { |
- var str = '<div> first <br> second </div>'; |
- expect(Bidi.enforceLtrInHtml(str), |
- equals('<div dir=ltr> first <br> second </div>')); |
- str = 'first second'; |
- expect(Bidi.enforceLtrInHtml(str), |
- equals('\n<span dir=ltr>first second</span>')); |
- }); |
- |
- test('enforceLtrInText', () { |
- var str = 'first second'; |
- expect(Bidi.enforceLtrInText(str), equals('${LRE}first second$PDF')); |
- }); |
- |
- test('normalizeHebrewQuote', () { |
- expect(Bidi.normalizeHebrewQuote('\u05d0"'), equals('\u05d0\u05f4')); |
- expect(Bidi.normalizeHebrewQuote('\u05d0\''), equals('\u05d0\u05f3')); |
- expect(Bidi.normalizeHebrewQuote('\u05d0"\u05d0\''), |
- equals('\u05d0\u05f4\u05d0\u05f3')); |
- }); |
- |
- test('estimateDirectionOfText', () { |
- expect(Bidi.estimateDirectionOfText('', isHtml: false).value, |
- equals(TextDirection.UNKNOWN.value)); |
- expect(Bidi.estimateDirectionOfText(' ', isHtml: false).value, |
- equals(TextDirection.UNKNOWN.value)); |
- expect(Bidi.estimateDirectionOfText('! (...)', isHtml: false).value, |
- equals(TextDirection.UNKNOWN.value)); |
- expect(Bidi.estimateDirectionOfText('All-Ascii content', |
- isHtml: false).value, |
- equals(TextDirection.LTR.value)); |
- expect(Bidi.estimateDirectionOfText('-17.0%', isHtml: false).value, |
- equals(TextDirection.LTR.value)); |
- expect(Bidi.estimateDirectionOfText('http://foo/bar/', isHtml: false).value, |
- equals(TextDirection.LTR.value)); |
- expect(Bidi.estimateDirectionOfText( |
- 'http://foo/bar/?s=\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0' |
- '\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0\u05d0' |
- '\u05d0\u05d0\u05d0\u05d0\u05d0').value, |
- equals(TextDirection.LTR.value)); |
- expect(Bidi.estimateDirectionOfText('\u05d0', isHtml: false).value, |
- equals(TextDirection.RTL.value)); |
- expect(Bidi.estimateDirectionOfText( |
- '9 \u05d0 -> 17.5, 23, 45, 19', isHtml: false).value, |
- equals(TextDirection.RTL.value)); |
- expect(Bidi.estimateDirectionOfText( |
- 'http://foo/bar/ \u05d0 http://foo2/bar2/ http://foo3/bar3/').value, |
- equals(TextDirection.RTL.value)); |
- expect(Bidi.estimateDirectionOfText( |
- '\u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc\u05e8\u05d0' |
- '\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea\u05d9 \u05d4' |
- '\u05e8\u05d1\u05d4 \u05d5\u05d2\u05dd \u05d0\u05dd \u05d4\u05d9\u05d9' |
- '\u05ea\u05d9 \u05de\u05e6\u05dc\u05dd, \u05d4\u05d9\u05d4 \u05e9' |
- '\u05dd').value, |
- equals(TextDirection.RTL.value)); |
- expect(Bidi.estimateDirectionOfText( |
- '\u05db\u05d0 - http://geek.co.il/gallery/v/2007-06 - \u05d0\u05d9' |
- '\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc\u05e8\u05d0\u05d5\u05ea:' |
- ' \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea\u05d9 \u05d4\u05e8\u05d1 ' |
- '\u05d5\u05d2\u05dd \u05d0\u05dd \u05d4\u05d9\u05d9\u05d9 \u05de\u05e6' |
- '\u05dc\u05dd, \u05d4\u05d9\u05d4 \u05e9\u05dd \u05d1\u05e2\u05d9\u05e7' |
- ' \u05d4\u05e8\u05d1\u05d4 \u05d0\u05e0\u05e9\u05d9\u05dd. \u05de\u05d4' |
- ' \u05e9\u05db\u05df - \u05d0\u05e4\u05e9\u05e8 \u05dc\u05e0\u05e6' |
- '\u05dc \u05d0\u05ea \u05d4\u05d4 \u05d3\u05d6\u05de\u05e0\u05d5 ' |
- '\u05dc\u05d4\u05e1\u05ea\u05db\u05dc \u05e2\u05dc \u05db\u05de\u05d4 ' |
- '\u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05de\u05e9\u05e9\u05e2\u05d5' |
- '\u05ea \u05d9\u05e9\u05e0\u05d5 \u05d9\u05d5\u05ea\u05e8 \u05e9\u05d9' |
- '\u05e9 \u05dc\u05d9 \u05d1\u05d0\u05ea\u05e8', isHtml: false).value, |
- equals(TextDirection.RTL.value)); |
- expect(Bidi.estimateDirectionOfText( |
- 'CAPTCHA \u05de\u05e9\u05d5\u05db\u05dc\u05dc ' |
- '\u05de\u05d3\u05d9?').value, |
- equals(TextDirection.RTL.value)); |
- expect(Bidi.estimateDirectionOfText( |
- 'Yes Prime Minister \u05e2\u05d3\u05db\u05d5\u05df. \u05e9\u05d0\u05dc' |
- '\u05d5 \u05d0\u05d5\u05ea\u05d9 \u05de\u05d4 \u05d0\u05e0\u05d9 ' |
- '\u05e8\u05d5\u05e6\u05d4 \u05de\u05ea\u05e0\u05d4 \u05dc\u05d7' |
- '\u05d2').value, |
- equals(TextDirection.RTL.value)); |
- expect(Bidi.estimateDirectionOfText( |
- '17.4.02 \u05e9\u05e2\u05d4:13-20 .15-00 .\u05dc\u05d0 \u05d4\u05d9' |
- '\u05d9\u05ea\u05d9 \u05db\u05d0\u05df.').value, |
- equals(TextDirection.RTL.value)); |
- expect(Bidi.estimateDirectionOfText( |
- '5710 5720 5730. \u05d4\u05d3\u05dc\u05ea. \u05d4\u05e0\u05e9\u05d9' |
- '\u05e7\u05d4', isHtml: false).value, |
- equals(TextDirection.RTL.value)); |
- expect(Bidi.estimateDirectionOfText( |
- '\u05d4\u05d3\u05dc\u05ea http://www.google.com ' |
- 'http://www.gmail.com').value, |
- equals(TextDirection.RTL.value)); |
- expect(Bidi.estimateDirectionOfText( |
- '\u05d4\u05d3\u05dc <some quite nasty html mark up>').value, |
- equals(TextDirection.LTR.value)); |
- expect(Bidi.estimateDirectionOfText( |
- '\u05d4\u05d3\u05dc <some quite nasty html mark up>').value, |
- equals(TextDirection.LTR.value)); |
- expect(Bidi.estimateDirectionOfText( |
- '\u05d4\u05d3\u05dc\u05ea & < >').value, |
- equals(TextDirection.LTR.value)); |
- expect(Bidi.estimateDirectionOfText( |
- '\u05d4\u05d3\u05dc\u05ea & < >', isHtml: true).value, |
- equals(TextDirection.RTL.value)); |
- }); |
- |
- test('detectRtlDirectionality', () { |
- var bidiText = []; |
- var item = new SampleItem('Pure Ascii content'); |
- bidiText.add(item); |
- |
- item = new SampleItem('\u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4' |
- ' \u05dc\u05e8\u05d0\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc' |
- '\u05de\u05ea\u05d9 \u05d4\u05e8\u05d1\u05d4 \u05d5\u05d2\u05dd ' |
- '\u05d0\u05dd \u05d4\u05d9\u05d9\u05ea\u05d9 \u05de\u05e6\u05dc\u05dd, ' |
- '\u05d4\u05d9\u05d4 \u05e9\u05dd', true); |
- bidiText.add(item); |
- |
- item = new SampleItem('\u05db\u05d0\u05df - http://geek.co.il/gallery/v/' |
- '2007-06 - \u05d0\u05d9\u05df \u05de\u05de\u05e9 \u05de\u05d4 \u05dc' |
- '\u05e8\u05d0\u05d5\u05ea: \u05dc\u05d0 \u05e6\u05d9\u05dc\u05de\u05ea' |
- '\u05d9 \u05d4\u05e8\u05d1\u05d4 \u05d5\u05d2\u05dd \u05d0\u05dd \u05d4' |
- '\u05d9\u05d9\u05ea\u05d9 \u05de\u05e6\u05dc\u05dd, \u05d4\u05d9\u05d4 ' |
- '\u05e9\u05dd \u05d1\u05e2\u05d9\u05e7\u05e8 \u05d4\u05e8\u05d1\u05d4 ' |
- '\u05d0\u05e0\u05e9\u05d9\u05dd. \u05de\u05d4 \u05e9\u05db\u05df - ' |
- '\u05d0\u05e4\u05e9\u05e8 \u05dc\u05e0\u05e6\u05dc \u05d0\u05ea \u05d4' |
- '\u05d4\u05d3\u05d6\u05de\u05e0\u05d5\u05ea \u05dc\u05d4\u05e1\u05ea' |
- '\u05db\u05dc \u05e2\u05dc \u05db\u05de\u05d4 \u05ea\u05de\u05d5\u05e0' |
- '\u05d5\u05ea \u05de\u05e9\u05e2\u05e9\u05e2\u05d5\u05ea \u05d9\u05e9' |
- '\u05e0\u05d5\u05ea \u05d9\u05d5\u05ea\u05e8 \u05e9\u05d9\u05e9 \u05dc' |
- '\u05d9 \u05d1\u05d0\u05ea\u05e8', true); |
- bidiText.add(item); |
- |
- item = new SampleItem('CAPTCHA \u05de\u05e9\u05d5\u05db\u05dc\u05dc ' |
- '\u05de\u05d3\u05d9?', true); |
- bidiText.add(item); |
- |
- |
- item = new SampleItem('Yes Prime Minister \u05e2\u05d3\u05db\u05d5\u05df. ' |
- '\u05e9\u05d0\u05dc\u05d5 \u05d0\u05d5\u05ea\u05d9 \u05de\u05d4 \u05d0' |
- '\u05e0\u05d9 \u05e8\u05d5\u05e6\u05d4 \u05de\u05ea\u05e0\u05d4 ' |
- '\u05dc\u05d7\u05d2', true); |
- bidiText.add(item); |
- |
- item = new SampleItem('17.4.02 \u05e9\u05e2\u05d4:13-20 .15-00 .\u05dc' |
- '\u05d0 \u05d4\u05d9\u05d9\u05ea\u05d9 \u05db\u05d0\u05df.', true); |
- bidiText.add(item); |
- |
- item = new SampleItem('5710 5720 5730. \u05d4\u05d3\u05dc\u05ea. \u05d4' |
- '\u05e0\u05e9\u05d9\u05e7\u05d4', true); |
- bidiText.add(item); |
- |
- item = new SampleItem('\u05d4\u05d3\u05dc\u05ea http://www.google.com ' |
- 'http://www.gmail.com', true); |
- bidiText.add(item); |
- |
- item = new SampleItem('>\u05d4<', true, true); |
- bidiText.add(item); |
- |
- item = new SampleItem('>\u05d4<', false); |
- bidiText.add(item); |
- |
- for (var i = 0; i < bidiText.length; i++) { |
- var isRtlDir = Bidi.detectRtlDirectionality(bidiText[i].text, |
- isHtml: bidiText[i].isHtml); |
- if (isRtlDir != bidiText[i].isRtl) { |
- var str = '"${bidiText[i].text} " should be ' |
- '${bidiText[i].isRtl ? "rtl" : "ltr"} but detected as ' |
- '${isRtlDir ? "rtl" : "ltr"}'; |
- //alert(str); |
- } |
- expect(bidiText[i].isRtl, isRtlDir); |
- } |
- }); |
-} |
- |
-class SampleItem { |
- String text; |
- bool isRtl; |
- bool isHtml; |
- SampleItem([someText='', someIsRtl=false, isHtml=false]) : |
- this.text=someText, this.isRtl=someIsRtl, this.isHtml=isHtml; |
-} |