| 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'));
|
|
|