Index: test/intl/collator/normalization.js |
diff --git a/src/extensions/i18n/collator.h b/test/intl/collator/normalization.js |
similarity index 52% |
copy from src/extensions/i18n/collator.h |
copy to test/intl/collator/normalization.js |
index a3991b9ed244afad996cf5d547c17e077010ac60..e7cc30d3bc433c67a20545a626feb813bb3f2a44 100644 |
--- a/src/extensions/i18n/collator.h |
+++ b/test/intl/collator/normalization.js |
@@ -26,43 +26,32 @@ |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
// limitations under the License. |
-#ifndef V8_EXTENSIONS_I18N_COLLATOR_H_ |
-#define V8_EXTENSIONS_I18N_COLLATOR_H_ |
- |
-#include "unicode/uversion.h" |
-#include "v8.h" |
- |
-namespace U_ICU_NAMESPACE { |
-class Collator; |
-class UnicodeString; |
-} |
- |
-namespace v8_i18n { |
- |
-class Collator { |
- public: |
- static void JSCreateCollator(const v8::FunctionCallbackInfo<v8::Value>& args); |
- |
- // Helper methods for various bindings. |
- |
- // Unpacks collator object from corresponding JavaScript object. |
- static icu::Collator* UnpackCollator(v8::Handle<v8::Object> obj); |
- |
- // Release memory we allocated for the Collator once the JS object that |
- // holds the pointer gets garbage collected. |
- static void DeleteCollator(v8::Isolate* isolate, |
- v8::Persistent<v8::Object>* object, |
- void* param); |
- |
- // Compare two strings and returns -1, 0 and 1 depending on |
- // whether string1 is smaller than, equal to or larger than string2. |
- static void JSInternalCompare( |
- const v8::FunctionCallbackInfo<v8::Value>& args); |
- |
- private: |
- Collator() {} |
-}; |
- |
-} // namespace v8_i18n |
- |
-#endif // V8_EXTENSIONS_I18N_COLLATOR_H_ |
+// Make sure normalization is always on, and normalization flag is ignored. |
+ |
+// We need a character with two combining marks, from two different classes, |
+// to make ICU fail comparison without normalization (upper, lower accent). |
+// We will just switch order of combining characters to try to induce failure. |
+ |
+// FYI, this one wouldn't work, since both accents are from the same class: |
+// http://unicode.org/cldr/utility/character.jsp?a=01DF |
+ |
+// See http://demo.icu-project.org/icu-bin/nbrowser?t=&s=1E09&uv=0 and |
+// http://unicode.org/cldr/utility/character.jsp?a=1E09 for character details. |
+var toCompare = ['\u0063\u0327\u0301', '\u0063\u0301\u0327']; |
+ |
+// Try with normalization off (as an option). |
+var collator = Intl.Collator([], {normalization: false}); |
+// If we accepted normalization parameter, this would have failed. |
+assertEquals(0, collator.compare(toCompare[0], toCompare[1])); |
+assertFalse(collator.resolvedOptions().hasOwnProperty('normalization')); |
+ |
+// Try with normalization off (as Unicode extension). |
+collator = Intl.Collator(['de-u-kk-false']); |
+// If we accepted normalization parameter, this would have failed. |
+assertEquals(0, collator.compare(toCompare[0], toCompare[1])); |
+assertFalse(collator.resolvedOptions().hasOwnProperty('normalization')); |
+ |
+// Normalization is on by default. |
+collator = Intl.Collator(); |
+assertEquals(0, collator.compare(toCompare[0], toCompare[1])); |
+assertFalse(collator.resolvedOptions().hasOwnProperty('normalization')); |