# Copyright 2013 the V8 project authors. All rights reserved.
# Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1.  Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
# 2.  Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This test checks Unicode in negative RegExp character classes.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS "\s", " \t\f\v\r\n".
PASS "\S", "Проверка".
PASS "\s", "Проверка".
PASS "[\s]", "Проверка".
PASS "[\S]", "Проверка".
PASS "[^\s]", "Проверка".
PASS "[^\S]", "Проверка".
PASS "[\s\S]*", "\u2002Проверка\r\n\u00a0".
PASS "\S\S", "уф".
PASS "\S{2}", "уф".
PASS "\w", "Проверка".
PASS "\W", "Проверка".
PASS "[\w]", "Проверка".
PASS "[\W]", "Проверка".
PASS "[^\w]", "Проверка".
PASS "[^\W]", "Проверка".
PASS "\W\W", "уф".
PASS "\W{2}", "уф".
PASS "\d", "Проверка".
PASS "\D", "Проверка".
PASS "[\d]", "Проверка".
PASS "[\D]", "Проверка".
PASS "[^\d]", "Проверка".
PASS "[^\D]", "Проверка".
PASS "\D\D", "уф".
PASS "\D{2}", "уф".
PASS "[\S\d]", "Проверка123".
PASS "[\d\S]", "Проверка123".
PASS "[^\S\d]", "Проверка123".
PASS "[^\d\S]", "Проверка123".
PASS "[ \S]", " Проверка ".
PASS "[\S ]", " Проверка ".
PASS "[ф \S]", " Проверка ".
PASS "[\Sф ]", " Проверка ".
PASS "[^р\S]", " Проверка ".
PASS "[^\Sр]", " Проверка ".
PASS "[^р\s]", " Проверка ".
PASS "[^\sр]", " Проверка ".
PASS "[ф \s\S]", "Проверка \r\n".
PASS "[\S\sф ]", "Проверка \r\n".
PASS "[^z]", "Проверка \r\n".
PASS "[^ф]", "Проверка \r\n".
PASS successfullyParsed is true

TEST COMPLETE

