diff options
| author | Ben Murdoch <benm@google.com> | 2011-06-08 16:22:53 +0100 |
|---|---|---|
| committer | Ben Murdoch <benm@google.com> | 2011-06-08 16:56:58 +0100 |
| commit | 8b112d2025046f85ef7f6be087c6129c872ebad2 (patch) | |
| tree | a52884866a47449a8037fc3a960fb5a1ba665ceb /test | |
| parent | 7eeff62978ae0a77c5a22455e231e22c10a89958 (diff) | |
| download | android_external_v8-8b112d2025046f85ef7f6be087c6129c872ebad2.tar.gz android_external_v8-8b112d2025046f85ef7f6be087c6129c872ebad2.tar.bz2 android_external_v8-8b112d2025046f85ef7f6be087c6129c872ebad2.zip | |
Merge V8 at r7668: Initial merge by Git.
Change-Id: I1703c8b4f5c63052451a22cf3fb878abc9a0ec75
Diffstat (limited to 'test')
105 files changed, 8006 insertions, 5925 deletions
diff --git a/test/cctest/cctest.status b/test/cctest/cctest.status index 986fb8d7..3bb9998b 100644 --- a/test/cctest/cctest.status +++ b/test/cctest/cctest.status @@ -57,6 +57,12 @@ test-log/ProfLazyMode: SKIP test-debug/DebuggerAgentProtocolOverflowHeader: SKIP test-sockets/Socket: SKIP +# BUG(1075): Unresolved crashes. +cctest/test-serialize/Deserialize: PASS || FAIL +cctest/test-serialize/DeserializeFromSecondSerializationAndRunScript2: PASS || FAIL +cctest/test-serialize/DeserializeAndRunScript2: PASS || FAIL +cctest/test-serialize/DeserializeFromSecondSerialization: PASS || FAIL + ############################################################################## [ $arch == arm && $crankshaft ] diff --git a/test/cctest/test-accessors.cc b/test/cctest/test-accessors.cc index b74f166f..028f82f3 100644 --- a/test/cctest/test-accessors.cc +++ b/test/cctest/test-accessors.cc @@ -397,7 +397,7 @@ static v8::Handle<Value> StackCheck(Local<String> name, for (int i = 0; !iter.done(); i++) { i::StackFrame* frame = iter.frame(); CHECK(i != 0 || (frame->type() == i::StackFrame::EXIT)); - i::Code* code = frame->LookupCode(i::Isolate::Current()); + i::Code* code = frame->LookupCode(); CHECK(code->IsCode()); i::Address pc = frame->pc(); CHECK(code->contains(pc)); diff --git a/test/cctest/test-alloc.cc b/test/cctest/test-alloc.cc index 3d8157d9..0ccf4b8b 100644 --- a/test/cctest/test-alloc.cc +++ b/test/cctest/test-alloc.cc @@ -200,6 +200,7 @@ TEST(CodeRange) { size_t allocated = 0; void* base = Isolate::Current()->code_range()-> AllocateRawMemory(requested, &allocated); + CHECK(base != NULL); blocks.Add(Block(base, static_cast<int>(allocated))); current_allocated += static_cast<int>(allocated); total_allocated += static_cast<int>(allocated); diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc index 33d505ea..d7621d12 100644 --- a/test/cctest/test-api.cc +++ b/test/cctest/test-api.cc @@ -1,4 +1,4 @@ -// Copyright 2007-2009 the V8 project authors. All rights reserved. +// Copyright 2011 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -50,18 +50,26 @@ static bool IsNaN(double x) { } using ::v8::AccessorInfo; +using ::v8::Arguments; using ::v8::Context; using ::v8::Extension; using ::v8::Function; +using ::v8::FunctionTemplate; +using ::v8::Handle; using ::v8::HandleScope; using ::v8::Local; +using ::v8::Message; +using ::v8::MessageCallback; using ::v8::Object; using ::v8::ObjectTemplate; using ::v8::Persistent; using ::v8::Script; +using ::v8::StackTrace; using ::v8::String; -using ::v8::Value; +using ::v8::TryCatch; +using ::v8::Undefined; using ::v8::V8; +using ::v8::Value; namespace i = ::i; @@ -2655,6 +2663,21 @@ TEST(APIThrowMessageAndVerboseTryCatch) { } +TEST(APIStackOverflowAndVerboseTryCatch) { + message_received = false; + v8::HandleScope scope; + v8::V8::AddMessageListener(receive_message); + LocalContext context; + v8::TryCatch try_catch; + try_catch.SetVerbose(true); + Local<Value> result = CompileRun("function foo() { foo(); } foo();"); + CHECK(try_catch.HasCaught()); + CHECK(result.IsEmpty()); + CHECK(message_received); + v8::V8::RemoveMessageListeners(receive_message); +} + + THREADED_TEST(ExternalScriptException) { v8::HandleScope scope; Local<ObjectTemplate> templ = ObjectTemplate::New(); @@ -8574,6 +8597,132 @@ THREADED_TEST(NamedPropertyHandlerGetterAttributes) { } +static Handle<Value> ThrowingGetter(Local<String> name, + const AccessorInfo& info) { + ApiTestFuzzer::Fuzz(); + ThrowException(Handle<Value>()); + return Undefined(); +} + + +THREADED_TEST(VariousGetPropertiesAndThrowingCallbacks) { + HandleScope scope; + LocalContext context; + + Local<FunctionTemplate> templ = FunctionTemplate::New(); + Local<ObjectTemplate> instance_templ = templ->InstanceTemplate(); + instance_templ->SetAccessor(v8_str("f"), ThrowingGetter); + + Local<Object> instance = templ->GetFunction()->NewInstance(); + + Local<Object> another = Object::New(); + another->SetPrototype(instance); + + Local<Object> with_js_getter = CompileRun( + "o = {};\n" + "o.__defineGetter__('f', function() { throw undefined; });\n" + "o\n").As<Object>(); + CHECK(!with_js_getter.IsEmpty()); + + TryCatch try_catch; + + Local<Value> result = instance->GetRealNamedProperty(v8_str("f")); + CHECK(try_catch.HasCaught()); + try_catch.Reset(); + CHECK(result.IsEmpty()); + + result = another->GetRealNamedProperty(v8_str("f")); + CHECK(try_catch.HasCaught()); + try_catch.Reset(); + CHECK(result.IsEmpty()); + + result = another->GetRealNamedPropertyInPrototypeChain(v8_str("f")); + CHECK(try_catch.HasCaught()); + try_catch.Reset(); + CHECK(result.IsEmpty()); + + result = another->Get(v8_str("f")); + CHECK(try_catch.HasCaught()); + try_catch.Reset(); + CHECK(result.IsEmpty()); + + result = with_js_getter->GetRealNamedProperty(v8_str("f")); + CHECK(try_catch.HasCaught()); + try_catch.Reset(); + CHECK(result.IsEmpty()); + + result = with_js_getter->Get(v8_str("f")); + CHECK(try_catch.HasCaught()); + try_catch.Reset(); + CHECK(result.IsEmpty()); +} + + +static Handle<Value> ThrowingCallbackWithTryCatch(const Arguments& args) { + TryCatch try_catch; + // Verboseness is important: it triggers message delivery which can call into + // external code. + try_catch.SetVerbose(true); + CompileRun("throw 'from JS';"); + CHECK(try_catch.HasCaught()); + CHECK(!i::Isolate::Current()->has_pending_exception()); + CHECK(!i::Isolate::Current()->has_scheduled_exception()); + return Undefined(); +} + + +static int call_depth; + + +static void WithTryCatch(Handle<Message> message, Handle<Value> data) { + TryCatch try_catch; +} + + +static void ThrowFromJS(Handle<Message> message, Handle<Value> data) { + if (--call_depth) CompileRun("throw 'ThrowInJS';"); +} + + +static void ThrowViaApi(Handle<Message> message, Handle<Value> data) { + if (--call_depth) ThrowException(v8_str("ThrowViaApi")); +} + + +static void WebKitLike(Handle<Message> message, Handle<Value> data) { + Handle<String> errorMessageString = message->Get(); + CHECK(!errorMessageString.IsEmpty()); + message->GetStackTrace(); + message->GetScriptResourceName(); +} + +THREADED_TEST(ExceptionsDoNotPropagatePastTryCatch) { + HandleScope scope; + LocalContext context; + + Local<Function> func = + FunctionTemplate::New(ThrowingCallbackWithTryCatch)->GetFunction(); + context->Global()->Set(v8_str("func"), func); + + MessageCallback callbacks[] = + { NULL, WebKitLike, ThrowViaApi, ThrowFromJS, WithTryCatch }; + for (unsigned i = 0; i < sizeof(callbacks)/sizeof(callbacks[0]); i++) { + MessageCallback callback = callbacks[i]; + if (callback != NULL) { + V8::AddMessageListener(callback); + } + call_depth = 5; + ExpectFalse( + "var thrown = false;\n" + "try { func(); } catch(e) { thrown = true; }\n" + "thrown\n"); + if (callback != NULL) { + V8::RemoveMessageListeners(callback); + } + } +} + + static v8::Handle<Value> ParentGetter(Local<String> name, const AccessorInfo& info) { ApiTestFuzzer::Fuzz(); @@ -11495,7 +11644,7 @@ static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, array->set(i, static_cast<ElementType>(i)); } result = CompileRun("function ee_load_test_func(sum) {" - " for (var i=0;i<40;++i)" + " for (var i = 0; i < 40; ++i)" " sum += ext_array[i];" " return sum;" "}" @@ -11508,7 +11657,7 @@ static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, // Test crankshaft external array stores result = CompileRun("function ee_store_test_func(sum) {" - " for (var i=0;i<40;++i)" + " for (var i = 0; i < 40; ++i)" " sum += ext_array[i] = i;" " return sum;" "}" @@ -11519,6 +11668,39 @@ static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, "sum;"); CHECK_EQ(7800000, result->Int32Value()); + for (int i = 0; i < kElementCount; i++) { + array->set(i, static_cast<ElementType>(i)); + } + // Test complex assignments + result = CompileRun("function ee_op_test_complex_func(sum) {" + " for (var i = 0; i < 40; ++i) {" + " sum += (ext_array[i] += 1);" + " sum += (ext_array[i] -= 1);" + " } " + " return sum;" + "}" + "sum=0;" + "for (var i=0;i<10000;++i) {" + " sum=ee_op_test_complex_func(sum);" + "}" + "sum;"); + CHECK_EQ(16000000, result->Int32Value()); + + // Test count operations + result = CompileRun("function ee_op_test_count_func(sum) {" + " for (var i = 0; i < 40; ++i) {" + " sum += (++ext_array[i]);" + " sum += (--ext_array[i]);" + " } " + " return sum;" + "}" + "sum=0;" + "for (var i=0;i<10000;++i) {" + " sum=ee_op_test_count_func(sum);" + "}" + "sum;"); + CHECK_EQ(16000000, result->Int32Value()); + result = CompileRun("ext_array[3] = 33;" "delete ext_array[3];" "ext_array[3];"); @@ -12169,28 +12351,14 @@ THREADED_TEST(GetHeapStatistics) { static double DoubleFromBits(uint64_t value) { double target; -#ifdef BIG_ENDIAN_FLOATING_POINT - const int kIntSize = 4; - // Somebody swapped the lower and higher half of doubles. - memcpy(&target, reinterpret_cast<char*>(&value) + kIntSize, kIntSize); - memcpy(reinterpret_cast<char*>(&target) + kIntSize, &value, kIntSize); -#else memcpy(&target, &value, sizeof(target)); -#endif return target; } static uint64_t DoubleToBits(double value) { uint64_t target; -#ifdef BIG_ENDIAN_FLOATING_POINT - const int kIntSize = 4; - // Somebody swapped the lower and higher half of doubles. - memcpy(&target, reinterpret_cast<char*>(&value) + kIntSize, kIntSize); - memcpy(reinterpret_cast<char*>(&target) + kIntSize, &value, kIntSize); -#else memcpy(&target, &value, sizeof(target)); -#endif return target; } @@ -13629,3 +13797,102 @@ TEST(DefinePropertyPostDetach) { context->DetachGlobal(); define_property->Call(proxy, 0, NULL); } + + +static void InstallContextId(v8::Handle<Context> context, int id) { + Context::Scope scope(context); + CompileRun("Object.prototype").As<Object>()-> + Set(v8_str("context_id"), v8::Integer::New(id)); +} + + +static void CheckContextId(v8::Handle<Object> object, int expected) { + CHECK_EQ(expected, object->Get(v8_str("context_id"))->Int32Value()); +} + + +THREADED_TEST(CreationContext) { + HandleScope handle_scope; + Persistent<Context> context1 = Context::New(); + InstallContextId(context1, 1); + Persistent<Context> context2 = Context::New(); + InstallContextId(context2, 2); + Persistent<Context> context3 = Context::New(); + InstallContextId(context3, 3); + + Local<v8::FunctionTemplate> tmpl = v8::FunctionTemplate::New(); + + Local<Object> object1; + Local<Function> func1; + { + Context::Scope scope(context1); + object1 = Object::New(); + func1 = tmpl->GetFunction(); + } + + Local<Object> object2; + Local<Function> func2; + { + Context::Scope scope(context2); + object2 = Object::New(); + func2 = tmpl->GetFunction(); + } + + Local<Object> instance1; + Local<Object> instance2; + + { + Context::Scope scope(context3); + instance1 = func1->NewInstance(); + instance2 = func2->NewInstance(); + } + + CHECK(object1->CreationContext() == context1); + CheckContextId(object1, 1); + CHECK(func1->CreationContext() == context1); + CheckContextId(func1, 1); + CHECK(instance1->CreationContext() == context1); + CheckContextId(instance1, 1); + CHECK(object2->CreationContext() == context2); + CheckContextId(object2, 2); + CHECK(func2->CreationContext() == context2); + CheckContextId(func2, 2); + CHECK(instance2->CreationContext() == context2); + CheckContextId(instance2, 2); + + { + Context::Scope scope(context1); + CHECK(object1->CreationContext() == context1); + CheckContextId(object1, 1); + CHECK(func1->CreationContext() == context1); + CheckContextId(func1, 1); + CHECK(instance1->CreationContext() == context1); + CheckContextId(instance1, 1); + CHECK(object2->CreationContext() == context2); + CheckContextId(object2, 2); + CHECK(func2->CreationContext() == context2); + CheckContextId(func2, 2); + CHECK(instance2->CreationContext() == context2); + CheckContextId(instance2, 2); + } + + { + Context::Scope scope(context2); + CHECK(object1->CreationContext() == context1); + CheckContextId(object1, 1); + CHECK(func1->CreationContext() == context1); + CheckContextId(func1, 1); + CHECK(instance1->CreationContext() == context1); + CheckContextId(instance1, 1); + CHECK(object2->CreationContext() == context2); + CheckContextId(object2, 2); + CHECK(func2->CreationContext() == context2); + CheckContextId(func2, 2); + CHECK(instance2->CreationContext() == context2); + CheckContextId(instance2, 2); + } + + context1.Dispose(); + context2.Dispose(); + context3.Dispose(); +} diff --git a/test/cctest/test-assembler-arm.cc b/test/cctest/test-assembler-arm.cc index a91886e7..89153c74 100644 --- a/test/cctest/test-assembler-arm.cc +++ b/test/cctest/test-assembler-arm.cc @@ -1,4 +1,4 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Copyright 2011 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -39,7 +39,8 @@ using namespace v8::internal; // Define these function prototypes to match JSEntryFunction in execution.cc. typedef Object* (*F1)(int x, int p1, int p2, int p3, int p4); typedef Object* (*F2)(int x, int y, int p2, int p3, int p4); -typedef Object* (*F3)(void* p, int p1, int p2, int p3, int p4); +typedef Object* (*F3)(void* p0, int p1, int p2, int p3, int p4); +typedef Object* (*F4)(void* p0, void* p1, int p2, int p3, int p4); static v8::Persistent<v8::Context> env; @@ -58,7 +59,7 @@ TEST(0) { InitializeVM(); v8::HandleScope scope; - Assembler assm(NULL, 0); + Assembler assm(Isolate::Current(), NULL, 0); __ add(r0, r0, Operand(r1)); __ mov(pc, Operand(lr)); @@ -84,7 +85,7 @@ TEST(1) { InitializeVM(); v8::HandleScope scope; - Assembler assm(NULL, 0); + Assembler assm(Isolate::Current(), NULL, 0); Label L, C; __ mov(r1, Operand(r0)); @@ -121,7 +122,7 @@ TEST(2) { InitializeVM(); v8::HandleScope scope; - Assembler assm(NULL, 0); + Assembler assm(Isolate::Current(), NULL, 0); Label L, C; __ mov(r1, Operand(r0)); @@ -174,7 +175,7 @@ TEST(3) { } T; T t; - Assembler assm(NULL, 0); + Assembler assm(Isolate::Current(), NULL, 0); Label L, C; __ mov(ip, Operand(sp)); @@ -241,11 +242,11 @@ TEST(4) { // Create a function that accepts &t, and loads, manipulates, and stores // the doubles and floats. - Assembler assm(NULL, 0); + Assembler assm(Isolate::Current(), NULL, 0); Label L, C; - if (Isolate::Current()->cpu_features()->IsSupported(VFP3)) { + if (CpuFeatures::IsSupported(VFP3)) { CpuFeatures::Scope scope(VFP3); __ mov(ip, Operand(sp)); @@ -357,9 +358,9 @@ TEST(5) { InitializeVM(); v8::HandleScope scope; - Assembler assm(NULL, 0); + Assembler assm(Isolate::Current(), NULL, 0); - if (Isolate::Current()->cpu_features()->IsSupported(ARMv7)) { + if (CpuFeatures::IsSupported(ARMv7)) { CpuFeatures::Scope scope(ARMv7); // On entry, r0 = 0xAAAAAAAA = 0b10..10101010. __ ubfx(r0, r0, 1, 12); // 0b00..010101010101 = 0x555 @@ -393,9 +394,9 @@ TEST(6) { InitializeVM(); v8::HandleScope scope; - Assembler assm(NULL, 0); + Assembler assm(Isolate::Current(), NULL, 0); - if (Isolate::Current()->cpu_features()->IsSupported(ARMv7)) { + if (CpuFeatures::IsSupported(ARMv7)) { CpuFeatures::Scope scope(ARMv7); __ usat(r1, 8, Operand(r0)); // Sat 0xFFFF to 0-255 = 0xFF. __ usat(r2, 12, Operand(r0, ASR, 9)); // Sat (0xFFFF>>9) to 0-4095 = 0x7F. @@ -436,9 +437,9 @@ static void TestRoundingMode(VCVTTypes types, InitializeVM(); v8::HandleScope scope; - Assembler assm(NULL, 0); + Assembler assm(Isolate::Current(), NULL, 0); - if (Isolate::Current()->cpu_features()->IsSupported(VFP3)) { + if (CpuFeatures::IsSupported(VFP3)) { CpuFeatures::Scope scope(VFP3); Label wrong_exception; @@ -608,4 +609,340 @@ TEST(7) { TestRoundingMode(u32_f64, RN, (kMaxUInt + 1.0), kMaxUInt, true); } +TEST(8) { + // Test VFP multi load/store with ia_w. + InitializeVM(); + v8::HandleScope scope; + + typedef struct { + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + } D; + D d; + + typedef struct { + float a; + float b; + float c; + float d; + float e; + float f; + float g; + float h; + } F; + F f; + + // Create a function that uses vldm/vstm to move some double and + // single precision values around in memory. + Assembler assm(Isolate::Current(), NULL, 0); + + if (CpuFeatures::IsSupported(VFP3)) { + CpuFeatures::Scope scope(VFP3); + + __ mov(ip, Operand(sp)); + __ stm(db_w, sp, r4.bit() | fp.bit() | lr.bit()); + __ sub(fp, ip, Operand(4)); + + __ add(r4, r0, Operand(OFFSET_OF(D, a))); + __ vldm(ia_w, r4, d0, d3); + __ vldm(ia_w, r4, d4, d7); + + __ add(r4, r0, Operand(OFFSET_OF(D, a))); + __ vstm(ia_w, r4, d6, d7); + __ vstm(ia_w, r4, d0, d5); + + __ add(r4, r1, Operand(OFFSET_OF(F, a))); + __ vldm(ia_w, r4, s0, s3); + __ vldm(ia_w, r4, s4, s7); + + __ add(r4, r1, Operand(OFFSET_OF(F, a))); + __ vstm(ia_w, r4, s6, s7); + __ vstm(ia_w, r4, s0, s5); + + __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); + + CodeDesc desc; + assm.GetCode(&desc); + Object* code = HEAP->CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(HEAP->undefined_value()))->ToObjectChecked(); + CHECK(code->IsCode()); +#ifdef DEBUG + Code::cast(code)->Print(); +#endif + F4 fn = FUNCTION_CAST<F4>(Code::cast(code)->entry()); + d.a = 1.1; + d.b = 2.2; + d.c = 3.3; + d.d = 4.4; + d.e = 5.5; + d.f = 6.6; + d.g = 7.7; + d.h = 8.8; + + f.a = 1.0; + f.b = 2.0; + f.c = 3.0; + f.d = 4.0; + f.e = 5.0; + f.f = 6.0; + f.g = 7.0; + f.h = 8.0; + + Object* dummy = CALL_GENERATED_CODE(fn, &d, &f, 0, 0, 0); + USE(dummy); + + CHECK_EQ(7.7, d.a); + CHECK_EQ(8.8, d.b); + CHECK_EQ(1.1, d.c); + CHECK_EQ(2.2, d.d); + CHECK_EQ(3.3, d.e); + CHECK_EQ(4.4, d.f); + CHECK_EQ(5.5, d.g); + CHECK_EQ(6.6, d.h); + + CHECK_EQ(7.0, f.a); + CHECK_EQ(8.0, f.b); + CHECK_EQ(1.0, f.c); + CHECK_EQ(2.0, f.d); + CHECK_EQ(3.0, f.e); + CHECK_EQ(4.0, f.f); + CHECK_EQ(5.0, f.g); + CHECK_EQ(6.0, f.h); + } +} + + +TEST(9) { + // Test VFP multi load/store with ia. + InitializeVM(); + v8::HandleScope scope; + + typedef struct { + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + } D; + D d; + + typedef struct { + float a; + float b; + float c; + float d; + float e; + float f; + float g; + float h; + } F; + F f; + + // Create a function that uses vldm/vstm to move some double and + // single precision values around in memory. + Assembler assm(Isolate::Current(), NULL, 0); + + if (CpuFeatures::IsSupported(VFP3)) { + CpuFeatures::Scope scope(VFP3); + + __ mov(ip, Operand(sp)); + __ stm(db_w, sp, r4.bit() | fp.bit() | lr.bit()); + __ sub(fp, ip, Operand(4)); + + __ add(r4, r0, Operand(OFFSET_OF(D, a))); + __ vldm(ia, r4, d0, d3); + __ add(r4, r4, Operand(4 * 8)); + __ vldm(ia, r4, d4, d7); + + __ add(r4, r0, Operand(OFFSET_OF(D, a))); + __ vstm(ia, r4, d6, d7); + __ add(r4, r4, Operand(2 * 8)); + __ vstm(ia, r4, d0, d5); + + __ add(r4, r1, Operand(OFFSET_OF(F, a))); + __ vldm(ia, r4, s0, s3); + __ add(r4, r4, Operand(4 * 4)); + __ vldm(ia, r4, s4, s7); + + __ add(r4, r1, Operand(OFFSET_OF(F, a))); + __ vstm(ia, r4, s6, s7); + __ add(r4, r4, Operand(2 * 4)); + __ vstm(ia, r4, s0, s5); + + __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); + + CodeDesc desc; + assm.GetCode(&desc); + Object* code = HEAP->CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(HEAP->undefined_value()))->ToObjectChecked(); + CHECK(code->IsCode()); +#ifdef DEBUG + Code::cast(code)->Print(); +#endif + F4 fn = FUNCTION_CAST<F4>(Code::cast(code)->entry()); + d.a = 1.1; + d.b = 2.2; + d.c = 3.3; + d.d = 4.4; + d.e = 5.5; + d.f = 6.6; + d.g = 7.7; + d.h = 8.8; + + f.a = 1.0; + f.b = 2.0; + f.c = 3.0; + f.d = 4.0; + f.e = 5.0; + f.f = 6.0; + f.g = 7.0; + f.h = 8.0; + + Object* dummy = CALL_GENERATED_CODE(fn, &d, &f, 0, 0, 0); + USE(dummy); + + CHECK_EQ(7.7, d.a); + CHECK_EQ(8.8, d.b); + CHECK_EQ(1.1, d.c); + CHECK_EQ(2.2, d.d); + CHECK_EQ(3.3, d.e); + CHECK_EQ(4.4, d.f); + CHECK_EQ(5.5, d.g); + CHECK_EQ(6.6, d.h); + + CHECK_EQ(7.0, f.a); + CHECK_EQ(8.0, f.b); + CHECK_EQ(1.0, f.c); + CHECK_EQ(2.0, f.d); + CHECK_EQ(3.0, f.e); + CHECK_EQ(4.0, f.f); + CHECK_EQ(5.0, f.g); + CHECK_EQ(6.0, f.h); + } +} + + +TEST(10) { + // Test VFP multi load/store with db_w. + InitializeVM(); + v8::HandleScope scope; + + typedef struct { + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + } D; + D d; + + typedef struct { + float a; + float b; + float c; + float d; + float e; + float f; + float g; + float h; + } F; + F f; + + // Create a function that uses vldm/vstm to move some double and + // single precision values around in memory. + Assembler assm(Isolate::Current(), NULL, 0); + + if (CpuFeatures::IsSupported(VFP3)) { + CpuFeatures::Scope scope(VFP3); + + __ mov(ip, Operand(sp)); + __ stm(db_w, sp, r4.bit() | fp.bit() | lr.bit()); + __ sub(fp, ip, Operand(4)); + + __ add(r4, r0, Operand(OFFSET_OF(D, h) + 8)); + __ vldm(db_w, r4, d4, d7); + __ vldm(db_w, r4, d0, d3); + + __ add(r4, r0, Operand(OFFSET_OF(D, h) + 8)); + __ vstm(db_w, r4, d0, d5); + __ vstm(db_w, r4, d6, d7); + + __ add(r4, r1, Operand(OFFSET_OF(F, h) + 4)); + __ vldm(db_w, r4, s4, s7); + __ vldm(db_w, r4, s0, s3); + + __ add(r4, r1, Operand(OFFSET_OF(F, h) + 4)); + __ vstm(db_w, r4, s0, s5); + __ vstm(db_w, r4, s6, s7); + + __ ldm(ia_w, sp, r4.bit() | fp.bit() | pc.bit()); + + CodeDesc desc; + assm.GetCode(&desc); + Object* code = HEAP->CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(HEAP->undefined_value()))->ToObjectChecked(); + CHECK(code->IsCode()); +#ifdef DEBUG + Code::cast(code)->Print(); +#endif + F4 fn = FUNCTION_CAST<F4>(Code::cast(code)->entry()); + d.a = 1.1; + d.b = 2.2; + d.c = 3.3; + d.d = 4.4; + d.e = 5.5; + d.f = 6.6; + d.g = 7.7; + d.h = 8.8; + + f.a = 1.0; + f.b = 2.0; + f.c = 3.0; + f.d = 4.0; + f.e = 5.0; + f.f = 6.0; + f.g = 7.0; + f.h = 8.0; + + Object* dummy = CALL_GENERATED_CODE(fn, &d, &f, 0, 0, 0); + USE(dummy); + + CHECK_EQ(7.7, d.a); + CHECK_EQ(8.8, d.b); + CHECK_EQ(1.1, d.c); + CHECK_EQ(2.2, d.d); + CHECK_EQ(3.3, d.e); + CHECK_EQ(4.4, d.f); + CHECK_EQ(5.5, d.g); + CHECK_EQ(6.6, d.h); + + CHECK_EQ(7.0, f.a); + CHECK_EQ(8.0, f.b); + CHECK_EQ(1.0, f.c); + CHECK_EQ(2.0, f.d); + CHECK_EQ(3.0, f.e); + CHECK_EQ(4.0, f.f); + CHECK_EQ(5.0, f.g); + CHECK_EQ(6.0, f.h); + } +} + #undef __ diff --git a/test/cctest/test-assembler-ia32.cc b/test/cctest/test-assembler-ia32.cc index 694bd57b..576739b7 100644 --- a/test/cctest/test-assembler-ia32.cc +++ b/test/cctest/test-assembler-ia32.cc @@ -61,7 +61,7 @@ TEST(AssemblerIa320) { v8::HandleScope scope; v8::internal::byte buffer[256]; - Assembler assm(buffer, sizeof buffer); + Assembler assm(Isolate::Current(), buffer, sizeof buffer); __ mov(eax, Operand(esp, 4)); __ add(eax, Operand(esp, 8)); @@ -89,7 +89,7 @@ TEST(AssemblerIa321) { v8::HandleScope scope; v8::internal::byte buffer[256]; - Assembler assm(buffer, sizeof buffer); + Assembler assm(Isolate::Current(), buffer, sizeof buffer); Label L, C; __ mov(edx, Operand(esp, 4)); @@ -127,7 +127,7 @@ TEST(AssemblerIa322) { v8::HandleScope scope; v8::internal::byte buffer[256]; - Assembler assm(buffer, sizeof buffer); + Assembler assm(Isolate::Current(), buffer, sizeof buffer); Label L, C; __ mov(edx, Operand(esp, 4)); @@ -167,15 +167,15 @@ TEST(AssemblerIa322) { typedef int (*F3)(float x); TEST(AssemblerIa323) { - if (!Isolate::Current()->cpu_features()->IsSupported(SSE2)) return; - InitializeVM(); + if (!CpuFeatures::IsSupported(SSE2)) return; + v8::HandleScope scope; v8::internal::byte buffer[256]; - Assembler assm(buffer, sizeof buffer); + Assembler assm(Isolate::Current(), buffer, sizeof buffer); - CHECK(Isolate::Current()->cpu_features()->IsSupported(SSE2)); + CHECK(CpuFeatures::IsSupported(SSE2)); { CpuFeatures::Scope fscope(SSE2); __ cvttss2si(eax, Operand(esp, 4)); __ ret(0); @@ -202,15 +202,15 @@ TEST(AssemblerIa323) { typedef int (*F4)(double x); TEST(AssemblerIa324) { - if (!Isolate::Current()->cpu_features()->IsSupported(SSE2)) return; - InitializeVM(); + if (!CpuFeatures::IsSupported(SSE2)) return; + v8::HandleScope scope; v8::internal::byte buffer[256]; - Assembler assm(buffer, sizeof buffer); + Assembler assm(Isolate::Current(), buffer, sizeof buffer); - CHECK(Isolate::Current()->cpu_features()->IsSupported(SSE2)); + CHECK(CpuFeatures::IsSupported(SSE2)); CpuFeatures::Scope fscope(SSE2); __ cvttsd2si(eax, Operand(esp, 4)); __ ret(0); @@ -239,7 +239,7 @@ TEST(AssemblerIa325) { v8::HandleScope scope; v8::internal::byte buffer[256]; - Assembler assm(buffer, sizeof buffer); + Assembler assm(Isolate::Current(), buffer, sizeof buffer); __ mov(eax, Operand(reinterpret_cast<intptr_t>(&baz), RelocInfo::NONE)); __ ret(0); @@ -259,14 +259,14 @@ TEST(AssemblerIa325) { typedef double (*F5)(double x, double y); TEST(AssemblerIa326) { - if (!Isolate::Current()->cpu_features()->IsSupported(SSE2)) return; - InitializeVM(); + if (!CpuFeatures::IsSupported(SSE2)) return; + v8::HandleScope scope; - CHECK(Isolate::Current()->cpu_features()->IsSupported(SSE2)); + CHECK(CpuFeatures::IsSupported(SSE2)); CpuFeatures::Scope fscope(SSE2); v8::internal::byte buffer[256]; - Assembler assm(buffer, sizeof buffer); + Assembler assm(Isolate::Current(), buffer, sizeof buffer); __ movdbl(xmm0, Operand(esp, 1 * kPointerSize)); __ movdbl(xmm1, Operand(esp, 3 * kPointerSize)); @@ -305,14 +305,14 @@ TEST(AssemblerIa326) { typedef double (*F6)(int x); TEST(AssemblerIa328) { - if (!Isolate::Current()->cpu_features()->IsSupported(SSE2)) return; - InitializeVM(); + if (!CpuFeatures::IsSupported(SSE2)) return; + v8::HandleScope scope; - CHECK(Isolate::Current()->cpu_features()->IsSupported(SSE2)); + CHECK(CpuFeatures::IsSupported(SSE2)); CpuFeatures::Scope fscope(SSE2); v8::internal::byte buffer[256]; - Assembler assm(buffer, sizeof buffer); + Assembler assm(Isolate::Current(), buffer, sizeof buffer); __ mov(eax, Operand(esp, 4)); __ cvtsi2sd(xmm0, Operand(eax)); // Copy xmm0 to st(0) using eight bytes of stack. @@ -345,7 +345,7 @@ TEST(AssemblerIa329) { InitializeVM(); v8::HandleScope scope; v8::internal::byte buffer[256]; - MacroAssembler assm(buffer, sizeof buffer); + MacroAssembler assm(Isolate::Current(), buffer, sizeof buffer); enum { kEqual = 0, kGreater = 1, kLess = 2, kNaN = 3, kUndefined = 4 }; Label equal_l, less_l, greater_l, nan_l; __ fld_d(Operand(esp, 3 * kPointerSize)); diff --git a/test/cctest/test-assembler-x64.cc b/test/cctest/test-assembler-x64.cc index 7e2115a1..ea70f542 100644 --- a/test/cctest/test-assembler-x64.cc +++ b/test/cctest/test-assembler-x64.cc @@ -35,31 +35,31 @@ #include "serialize.h" #include "cctest.h" -using v8::internal::byte; -using v8::internal::OS; using v8::internal::Assembler; -using v8::internal::Operand; +using v8::internal::CodeDesc; +using v8::internal::FUNCTION_CAST; using v8::internal::Immediate; +using v8::internal::Isolate; using v8::internal::Label; +using v8::internal::OS; +using v8::internal::Operand; +using v8::internal::byte; +using v8::internal::greater; +using v8::internal::less_equal; +using v8::internal::not_equal; +using v8::internal::r13; +using v8::internal::r15; +using v8::internal::r8; +using v8::internal::r9; using v8::internal::rax; -using v8::internal::rsi; -using v8::internal::rdi; +using v8::internal::rbp; using v8::internal::rcx; +using v8::internal::rdi; using v8::internal::rdx; -using v8::internal::rbp; +using v8::internal::rsi; using v8::internal::rsp; -using v8::internal::r8; -using v8::internal::r9; -using v8::internal::r13; -using v8::internal::r15; using v8::internal::times_1; -using v8::internal::FUNCTION_CAST; -using v8::internal::CodeDesc; -using v8::internal::less_equal; -using v8::internal::not_equal; -using v8::internal::greater; - // Test the x64 assembler by compiling some simple functions into // a buffer and executing them. These tests do not initialize the // V8 library, create a context, or use any V8 objects. @@ -93,7 +93,7 @@ TEST(AssemblerX64ReturnOperation) { &actual_size, true)); CHECK(buffer); - Assembler assm(buffer, static_cast<int>(actual_size)); + Assembler assm(Isolate::Current(), buffer, static_cast<int>(actual_size)); // Assemble a simple function that copies argument 2 and returns it. __ movq(rax, arg2); @@ -115,7 +115,7 @@ TEST(AssemblerX64StackOperations) { &actual_size, true)); CHECK(buffer); - Assembler assm(buffer, static_cast<int>(actual_size)); + Assembler assm(Isolate::Current(), buffer, static_cast<int>(actual_size)); // Assemble a simple function that copies argument 2 and returns it. // We compile without stack frame pointers, so the gdb debugger shows @@ -147,7 +147,7 @@ TEST(AssemblerX64ArithmeticOperations) { &actual_size, true)); CHECK(buffer); - Assembler assm(buffer, static_cast<int>(actual_size)); + Assembler assm(Isolate::Current(), buffer, static_cast<int>(actual_size)); // Assemble a simple function that adds arguments returning the sum. __ movq(rax, arg2); @@ -169,7 +169,7 @@ TEST(AssemblerX64ImulOperation) { &actual_size, true)); CHECK(buffer); - Assembler assm(buffer, static_cast<int>(actual_size)); + Assembler assm(Isolate::Current(), buffer, static_cast<int>(actual_size)); // Assemble a simple function that multiplies arguments returning the high // word. @@ -197,7 +197,7 @@ TEST(AssemblerX64MemoryOperands) { &actual_size, true)); CHECK(buffer); - Assembler assm(buffer, static_cast<int>(actual_size)); + Assembler assm(Isolate::Current(), buffer, static_cast<int>(actual_size)); // Assemble a simple function that copies argument 2 and returns it. __ push(rbp); @@ -231,7 +231,7 @@ TEST(AssemblerX64ControlFlow) { &actual_size, true)); CHECK(buffer); - Assembler assm(buffer, static_cast<int>(actual_size)); + Assembler assm(Isolate::Current(), buffer, static_cast<int>(actual_size)); // Assemble a simple function that copies argument 1 and returns it. __ push(rbp); @@ -260,7 +260,7 @@ TEST(AssemblerX64LoopImmediates) { &actual_size, true)); CHECK(buffer); - Assembler assm(buffer, static_cast<int>(actual_size)); + Assembler assm(Isolate::Current(), buffer, static_cast<int>(actual_size)); // Assemble two loops using rax as counter, and verify the ending counts. Label Fail; __ movq(rax, Immediate(-3)); diff --git a/test/cctest/test-conversions.cc b/test/cctest/test-conversions.cc index 1b5cc2de..7c29746f 100644 --- a/test/cctest/test-conversions.cc +++ b/test/cctest/test-conversions.cc @@ -1,4 +1,4 @@ -// Copyright 2006-2008 the V8 project authors. All rights reserved. +// Copyright 2011 the V8 project authors. All rights reserved. #include <stdlib.h> @@ -11,139 +11,151 @@ using namespace v8::internal; TEST(Hex) { - CHECK_EQ(0.0, StringToDouble("0x0", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(0.0, StringToDouble("0X0", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(1.0, StringToDouble("0x1", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(16.0, StringToDouble("0x10", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(255.0, StringToDouble("0xff", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(175.0, StringToDouble("0xAF", ALLOW_HEX | ALLOW_OCTALS)); - - CHECK_EQ(0.0, StringToDouble("0x0", ALLOW_HEX)); - CHECK_EQ(0.0, StringToDouble("0X0", ALLOW_HEX)); - CHECK_EQ(1.0, StringToDouble("0x1", ALLOW_HEX)); - CHECK_EQ(16.0, StringToDouble("0x10", ALLOW_HEX)); - CHECK_EQ(255.0, StringToDouble("0xff", ALLOW_HEX)); - CHECK_EQ(175.0, StringToDouble("0xAF", ALLOW_HEX)); + UnicodeCache uc; + CHECK_EQ(0.0, StringToDouble(&uc, "0x0", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(0.0, StringToDouble(&uc, "0X0", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(1.0, StringToDouble(&uc, "0x1", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(16.0, StringToDouble(&uc, "0x10", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(255.0, StringToDouble(&uc, "0xff", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(175.0, StringToDouble(&uc, "0xAF", ALLOW_HEX | ALLOW_OCTALS)); + + CHECK_EQ(0.0, StringToDouble(&uc, "0x0", ALLOW_HEX)); + CHECK_EQ(0.0, StringToDouble(&uc, "0X0", ALLOW_HEX)); + CHECK_EQ(1.0, StringToDouble(&uc, "0x1", ALLOW_HEX)); + CHECK_EQ(16.0, StringToDouble(&uc, "0x10", ALLOW_HEX)); + CHECK_EQ(255.0, StringToDouble(&uc, "0xff", ALLOW_HEX)); + CHECK_EQ(175.0, StringToDouble(&uc, "0xAF", ALLOW_HEX)); } TEST(Octal) { - CHECK_EQ(0.0, StringToDouble("0", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(0.0, StringToDouble("00", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(1.0, StringToDouble("01", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(7.0, StringToDouble("07", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(8.0, StringToDouble("010", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(63.0, StringToDouble("077", ALLOW_HEX | ALLOW_OCTALS)); - - CHECK_EQ(0.0, StringToDouble("0", ALLOW_HEX)); - CHECK_EQ(0.0, StringToDouble("00", ALLOW_HEX)); - CHECK_EQ(1.0, StringToDouble("01", ALLOW_HEX)); - CHECK_EQ(7.0, StringToDouble("07", ALLOW_HEX)); - CHECK_EQ(10.0, StringToDouble("010", ALLOW_HEX)); - CHECK_EQ(77.0, StringToDouble("077", ALLOW_HEX)); + UnicodeCache uc; + CHECK_EQ(0.0, StringToDouble(&uc, "0", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(0.0, StringToDouble(&uc, "00", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(1.0, StringToDouble(&uc, "01", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(7.0, StringToDouble(&uc, "07", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(8.0, StringToDouble(&uc, "010", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(63.0, StringToDouble(&uc, "077", ALLOW_HEX | ALLOW_OCTALS)); + + CHECK_EQ(0.0, StringToDouble(&uc, "0", ALLOW_HEX)); + CHECK_EQ(0.0, StringToDouble(&uc, "00", ALLOW_HEX)); + CHECK_EQ(1.0, StringToDouble(&uc, "01", ALLOW_HEX)); + CHECK_EQ(7.0, StringToDouble(&uc, "07", ALLOW_HEX)); + CHECK_EQ(10.0, StringToDouble(&uc, "010", ALLOW_HEX)); + CHECK_EQ(77.0, StringToDouble(&uc, "077", ALLOW_HEX)); const double x = 010000000000; // Power of 2, no rounding errors. - CHECK_EQ(x * x * x * x * x, StringToDouble("01" "0000000000" "0000000000" + CHECK_EQ(x * x * x * x * x, StringToDouble(&uc, "01" "0000000000" "0000000000" "0000000000" "0000000000" "0000000000", ALLOW_OCTALS)); } TEST(MalformedOctal) { - CHECK_EQ(8.0, StringToDouble("08", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(81.0, StringToDouble("081", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(78.0, StringToDouble("078", ALLOW_HEX | ALLOW_OCTALS)); + UnicodeCache uc; + CHECK_EQ(8.0, StringToDouble(&uc, "08", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(81.0, StringToDouble(&uc, "081", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(78.0, StringToDouble(&uc, "078", ALLOW_HEX | ALLOW_OCTALS)); - CHECK(isnan(StringToDouble("07.7", ALLOW_HEX | ALLOW_OCTALS))); - CHECK(isnan(StringToDouble("07.8", ALLOW_HEX | ALLOW_OCTALS))); - CHECK(isnan(StringToDouble("07e8", ALLOW_HEX | ALLOW_OCTALS))); - CHECK(isnan(StringToDouble("07e7", ALLOW_HEX | ALLOW_OCTALS))); + CHECK(isnan(StringToDouble(&uc, "07.7", ALLOW_HEX | ALLOW_OCTALS))); + CHECK(isnan(StringToDouble(&uc, "07.8", ALLOW_HEX | ALLOW_OCTALS))); + CHECK(isnan(StringToDouble(&uc, "07e8", ALLOW_HEX | ALLOW_OCTALS))); + CHECK(isnan(StringToDouble(&uc, "07e7", ALLOW_HEX | ALLOW_OCTALS))); - CHECK_EQ(8.7, StringToDouble("08.7", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(8e7, StringToDouble("08e7", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(8.7, StringToDouble(&uc, "08.7", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(8e7, StringToDouble(&uc, "08e7", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(0.001, StringToDouble("0.001", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(0.713, StringToDouble("0.713", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(0.001, StringToDouble(&uc, "0.001", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(0.713, StringToDouble(&uc, "0.713", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(8.0, StringToDouble("08", ALLOW_HEX)); - CHECK_EQ(81.0, StringToDouble("081", ALLOW_HEX)); - CHECK_EQ(78.0, StringToDouble("078", ALLOW_HEX)); + CHECK_EQ(8.0, StringToDouble(&uc, "08", ALLOW_HEX)); + CHECK_EQ(81.0, StringToDouble(&uc, "081", ALLOW_HEX)); + CHECK_EQ(78.0, StringToDouble(&uc, "078", ALLOW_HEX)); - CHECK_EQ(7.7, StringToDouble("07.7", ALLOW_HEX)); - CHECK_EQ(7.8, StringToDouble("07.8", ALLOW_HEX)); - CHECK_EQ(7e8, StringToDouble("07e8", ALLOW_HEX)); - CHECK_EQ(7e7, StringToDouble("07e7", ALLOW_HEX)); + CHECK_EQ(7.7, StringToDouble(&uc, "07.7", ALLOW_HEX)); + CHECK_EQ(7.8, StringToDouble(&uc, "07.8", ALLOW_HEX)); + CHECK_EQ(7e8, StringToDouble(&uc, "07e8", ALLOW_HEX)); + CHECK_EQ(7e7, StringToDouble(&uc, "07e7", ALLOW_HEX)); - CHECK_EQ(8.7, StringToDouble("08.7", ALLOW_HEX)); - CHECK_EQ(8e7, StringToDouble("08e7", ALLOW_HEX)); + CHECK_EQ(8.7, StringToDouble(&uc, "08.7", ALLOW_HEX)); + CHECK_EQ(8e7, StringToDouble(&uc, "08e7", ALLOW_HEX)); - CHECK_EQ(0.001, StringToDouble("0.001", ALLOW_HEX)); - CHECK_EQ(0.713, StringToDouble("0.713", ALLOW_HEX)); + CHECK_EQ(0.001, StringToDouble(&uc, "0.001", ALLOW_HEX)); + CHECK_EQ(0.713, StringToDouble(&uc, "0.713", ALLOW_HEX)); } TEST(TrailingJunk) { - CHECK_EQ(8.0, StringToDouble("8q", ALLOW_TRAILING_JUNK)); - CHECK_EQ(63.0, StringToDouble("077qqq", ALLOW_OCTALS | ALLOW_TRAILING_JUNK)); - CHECK_EQ(10.0, StringToDouble("10e", ALLOW_OCTALS | ALLOW_TRAILING_JUNK)); - CHECK_EQ(10.0, StringToDouble("10e-", ALLOW_OCTALS | ALLOW_TRAILING_JUNK)); + UnicodeCache uc; + CHECK_EQ(8.0, StringToDouble(&uc, "8q", ALLOW_TRAILING_JUNK)); + CHECK_EQ(63.0, + StringToDouble(&uc, "077qqq", ALLOW_OCTALS | ALLOW_TRAILING_JUNK)); + CHECK_EQ(10.0, + StringToDouble(&uc, "10e", ALLOW_OCTALS | ALLOW_TRAILING_JUNK)); + CHECK_EQ(10.0, + StringToDouble(&uc, "10e-", ALLOW_OCTALS | ALLOW_TRAILING_JUNK)); } TEST(NonStrDecimalLiteral) { - CHECK(isnan(StringToDouble(" ", NO_FLAGS, OS::nan_value()))); - CHECK(isnan(StringToDouble("", NO_FLAGS, OS::nan_value()))); - CHECK(isnan(StringToDouble(" ", NO_FLAGS, OS::nan_value()))); - CHECK_EQ(0.0, StringToDouble("", NO_FLAGS)); - CHECK_EQ(0.0, StringToDouble(" ", NO_FLAGS)); + UnicodeCache uc; + CHECK(isnan(StringToDouble(&uc, " ", NO_FLAGS, OS::nan_value()))); + CHECK(isnan(StringToDouble(&uc, "", NO_FLAGS, OS::nan_value()))); + CHECK(isnan(StringToDouble(&uc, " ", NO_FLAGS, OS::nan_value()))); + CHECK_EQ(0.0, StringToDouble(&uc, "", NO_FLAGS)); + CHECK_EQ(0.0, StringToDouble(&uc, " ", NO_FLAGS)); } TEST(IntegerStrLiteral) { - CHECK_EQ(0.0, StringToDouble("0.0", NO_FLAGS)); - CHECK_EQ(0.0, StringToDouble("0", NO_FLAGS)); - CHECK_EQ(0.0, StringToDouble("00", NO_FLAGS)); - CHECK_EQ(0.0, StringToDouble("000", NO_FLAGS)); - CHECK_EQ(1.0, StringToDouble("1", NO_FLAGS)); - CHECK_EQ(-1.0, StringToDouble("-1", NO_FLAGS)); - CHECK_EQ(-1.0, StringToDouble(" -1 ", NO_FLAGS)); - CHECK_EQ(1.0, StringToDouble(" +1 ", NO_FLAGS)); - CHECK(isnan(StringToDouble(" - 1 ", NO_FLAGS))); - CHECK(isnan(StringToDouble(" + 1 ", NO_FLAGS))); - - CHECK_EQ(0.0, StringToDouble("0e0", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(0.0, StringToDouble("0e1", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(0.0, StringToDouble("0e-1", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(0.0, StringToDouble("0e-100000", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(0.0, StringToDouble("0e+100000", ALLOW_HEX | ALLOW_OCTALS)); - CHECK_EQ(0.0, StringToDouble("0.", ALLOW_HEX | ALLOW_OCTALS)); + UnicodeCache uc; + CHECK_EQ(0.0, StringToDouble(&uc, "0.0", NO_FLAGS)); + CHECK_EQ(0.0, StringToDouble(&uc, "0", NO_FLAGS)); + CHECK_EQ(0.0, StringToDouble(&uc, "00", NO_FLAGS)); + CHECK_EQ(0.0, StringToDouble(&uc, "000", NO_FLAGS)); + CHECK_EQ(1.0, StringToDouble(&uc, "1", NO_FLAGS)); + CHECK_EQ(-1.0, StringToDouble(&uc, "-1", NO_FLAGS)); + CHECK_EQ(-1.0, StringToDouble(&uc, " -1 ", NO_FLAGS)); + CHECK_EQ(1.0, StringToDouble(&uc, " +1 ", NO_FLAGS)); + CHECK(isnan(StringToDouble(&uc, " - 1 ", NO_FLAGS))); + CHECK(isnan(StringToDouble(&uc, " + 1 ", NO_FLAGS))); + + CHECK_EQ(0.0, StringToDouble(&uc, "0e0", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(0.0, StringToDouble(&uc, "0e1", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(0.0, StringToDouble(&uc, "0e-1", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(0.0, StringToDouble(&uc, "0e-100000", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(0.0, StringToDouble(&uc, "0e+100000", ALLOW_HEX | ALLOW_OCTALS)); + CHECK_EQ(0.0, StringToDouble(&uc, "0.", ALLOW_HEX | ALLOW_OCTALS)); } TEST(LongNumberStr) { - CHECK_EQ(1e10, StringToDouble("1" "0000000000", NO_FLAGS)); - CHECK_EQ(1e20, StringToDouble("1" "0000000000" "0000000000", NO_FLAGS)); + UnicodeCache uc; + CHECK_EQ(1e10, StringToDouble(&uc, "1" "0000000000", NO_FLAGS)); + CHECK_EQ(1e20, StringToDouble(&uc, "1" "0000000000" "0000000000", NO_FLAGS)); - CHECK_EQ(1e60, StringToDouble("1" "0000000000" "0000000000" "0000000000" + CHECK_EQ(1e60, StringToDouble(&uc, "1" "0000000000" "0000000000" "0000000000" "0000000000" "0000000000" "0000000000", NO_FLAGS)); - CHECK_EQ(1e-2, StringToDouble("." "0" "1", NO_FLAGS)); - CHECK_EQ(1e-11, StringToDouble("." "0000000000" "1", NO_FLAGS)); - CHECK_EQ(1e-21, StringToDouble("." "0000000000" "0000000000" "1", NO_FLAGS)); + CHECK_EQ(1e-2, StringToDouble(&uc, "." "0" "1", NO_FLAGS)); + CHECK_EQ(1e-11, StringToDouble(&uc, "." "0000000000" "1", NO_FLAGS)); + CHECK_EQ(1e-21, StringToDouble(&uc, "." "0000000000" "0000000000" "1", + NO_FLAGS)); - CHECK_EQ(1e-61, StringToDouble("." "0000000000" "0000000000" "0000000000" + CHECK_EQ(1e-61, StringToDouble(&uc, "." "0000000000" "0000000000" "0000000000" "0000000000" "0000000000" "0000000000" "1", NO_FLAGS)); // x = 24414062505131248.0 and y = 24414062505131252.0 are representable in // double. Check chat z = (x + y) / 2 is rounded to x... CHECK_EQ(24414062505131248.0, - StringToDouble("24414062505131250.0", NO_FLAGS)); + StringToDouble(&uc, "24414062505131250.0", NO_FLAGS)); // ... and z = (x + y) / 2 + delta is rounded to y. CHECK_EQ(24414062505131252.0, - StringToDouble("24414062505131250.000000001", NO_FLAGS)); + StringToDouble(&uc, "24414062505131250.000000001", NO_FLAGS)); } TEST(MaximumSignificantDigits) { + UnicodeCache uc; char num[] = "4.4501477170144020250819966727949918635852426585926051135169509" "122872622312493126406953054127118942431783801370080830523154578" @@ -159,15 +171,16 @@ TEST(MaximumSignificantDigits) { "847003580761626016356864581135848683152156368691976240370422601" "6998291015625000000000000000000000000000000000e-308"; - CHECK_EQ(4.4501477170144017780491e-308, StringToDouble(num, NO_FLAGS)); + CHECK_EQ(4.4501477170144017780491e-308, StringToDouble(&uc, num, NO_FLAGS)); // Changes the result of strtod (at least in glibc implementation). num[sizeof(num) - 8] = '1'; - CHECK_EQ(4.4501477170144022721148e-308, StringToDouble(num, NO_FLAGS)); + CHECK_EQ(4.4501477170144022721148e-308, StringToDouble(&uc, num, NO_FLAGS)); } TEST(MinimumExponent) { + UnicodeCache uc; // Same test but with different point-position. char num[] = "445014771701440202508199667279499186358524265859260511351695091" @@ -184,29 +197,31 @@ TEST(MinimumExponent) { "470035807616260163568645811358486831521563686919762403704226016" "998291015625000000000000000000000000000000000e-1108"; - CHECK_EQ(4.4501477170144017780491e-308, StringToDouble(num, NO_FLAGS)); + CHECK_EQ(4.4501477170144017780491e-308, StringToDouble(&uc, num, NO_FLAGS)); // Changes the result of strtod (at least in glibc implementation). num[sizeof(num) - 8] = '1'; - CHECK_EQ(4.4501477170144022721148e-308, StringToDouble(num, NO_FLAGS)); + CHECK_EQ(4.4501477170144022721148e-308, StringToDouble(&uc, num, NO_FLAGS)); } TEST(MaximumExponent) { + UnicodeCache uc; char num[] = "0.16e309"; - CHECK_EQ(1.59999999999999997765e+308, StringToDouble(num, NO_FLAGS)); + CHECK_EQ(1.59999999999999997765e+308, StringToDouble(&uc, num, NO_FLAGS)); } TEST(ExponentNumberStr) { - CHECK_EQ(1e1, StringToDouble("1e1", NO_FLAGS)); - CHECK_EQ(1e1, StringToDouble("1e+1", NO_FLAGS)); - CHECK_EQ(1e-1, StringToDouble("1e-1", NO_FLAGS)); - CHECK_EQ(1e100, StringToDouble("1e+100", NO_FLAGS)); - CHECK_EQ(1e-100, StringToDouble("1e-100", NO_FLAGS)); - CHECK_EQ(1e-106, StringToDouble(".000001e-100", NO_FLAGS)); + UnicodeCache uc; + CHECK_EQ(1e1, StringToDouble(&uc, "1e1", NO_FLAGS)); + CHECK_EQ(1e1, StringToDouble(&uc, "1e+1", NO_FLAGS)); + CHECK_EQ(1e-1, StringToDouble(&uc, "1e-1", NO_FLAGS)); + CHECK_EQ(1e100, StringToDouble(&uc, "1e+100", NO_FLAGS)); + CHECK_EQ(1e-100, StringToDouble(&uc, "1e-100", NO_FLAGS)); + CHECK_EQ(1e-106, StringToDouble(&uc, ".000001e-100", NO_FLAGS)); } class OneBit1: public BitField<uint32_t, 0, 1> {}; diff --git a/test/cctest/test-disasm-arm.cc b/test/cctest/test-disasm-arm.cc index 32216147..65a2cf36 100644 --- a/test/cctest/test-disasm-arm.cc +++ b/test/cctest/test-disasm-arm.cc @@ -1,4 +1,4 @@ -// Copyright 2007-2008 the V8 project authors. All rights reserved. +// Copyright 2011 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -72,11 +72,11 @@ bool DisassembleAndCompare(byte* pc, const char* compare_string) { // Setup V8 to a state where we can at least run the assembler and // disassembler. Declare the variables and allocate the data structures used // in the rest of the macros. -#define SETUP() \ - InitializeVM(); \ - v8::HandleScope scope; \ +#define SETUP() \ + InitializeVM(); \ + v8::HandleScope scope; \ byte *buffer = reinterpret_cast<byte*>(malloc(4*1024)); \ - Assembler assm(buffer, 4*1024); \ + Assembler assm(Isolate::Current(), buffer, 4*1024); \ bool failure = false; @@ -270,7 +270,7 @@ TEST(Type0) { "13a06000 movne r6, #0"); // mov -> movw. - if (Isolate::Current()->cpu_features()->IsSupported(ARMv7)) { + if (CpuFeatures::IsSupported(ARMv7)) { COMPARE(mov(r5, Operand(0x01234), LeaveCC, ne), "13015234 movwne r5, #4660"); // We only disassemble one instruction so the eor instruction is not here. @@ -360,7 +360,7 @@ TEST(Type1) { TEST(Type3) { SETUP(); - if (Isolate::Current()->cpu_features()->IsSupported(ARMv7)) { + if (CpuFeatures::IsSupported(ARMv7)) { COMPARE(ubfx(r0, r1, 5, 10), "e7e902d1 ubfx r0, r1, #5, #10"); COMPARE(ubfx(r1, r0, 5, 10), @@ -415,7 +415,7 @@ TEST(Type3) { TEST(Vfp) { SETUP(); - if (Isolate::Current()->cpu_features()->IsSupported(VFP3)) { + if (CpuFeatures::IsSupported(VFP3)) { CpuFeatures::Scope scope(VFP3); COMPARE(vmov(d0, d1), "eeb00b41 vmov.f64 d0, d1"); @@ -522,6 +522,23 @@ TEST(Vfp) { "aef1aa10 vmrsge r10, FPSCR"); COMPARE(vmrs(pc), "eef1fa10 vmrs APSR, FPSCR"); + + COMPARE(vstm(ia, r0, d1, d3), + "ec801b06 vstmia r0, {d1-d3}"); + COMPARE(vldm(ia, r1, d2, d5), + "ec912b08 vldmia r1, {d2-d5}"); + COMPARE(vstm(ia, r2, d0, d15), + "ec820b20 vstmia r2, {d0-d15}"); + COMPARE(vldm(ia, r3, d0, d15), + "ec930b20 vldmia r3, {d0-d15}"); + COMPARE(vstm(ia, r4, s1, s3), + "ecc40a03 vstmia r4, {s1-s3}"); + COMPARE(vldm(ia, r5, s2, s5), + "ec951a04 vldmia r5, {s2-s5}"); + COMPARE(vstm(ia, r6, s0, s31), + "ec860a20 vstmia r6, {s0-s31}"); + COMPARE(vldm(ia, r7, s0, s31), + "ec970a20 vldmia r7, {s0-s31}"); } VERIFY_RUN(); diff --git a/test/cctest/test-disasm-ia32.cc b/test/cctest/test-disasm-ia32.cc index 26da5c9c..cb735c78 100644 --- a/test/cctest/test-disasm-ia32.cc +++ b/test/cctest/test-disasm-ia32.cc @@ -58,7 +58,7 @@ TEST(DisasmIa320) { InitializeVM(); v8::HandleScope scope; v8::internal::byte buffer[2048]; - Assembler assm(buffer, sizeof buffer); + Assembler assm(Isolate::Current(), buffer, sizeof buffer); DummyStaticFunction(NULL); // just bloody use it (DELETE; debugging) // Short immediate instructions @@ -107,12 +107,12 @@ TEST(DisasmIa320) { __ xor_(edx, 3); __ nop(); { - CHECK(Isolate::Current()->cpu_features()->IsSupported(CPUID)); + CHECK(CpuFeatures::IsSupported(CPUID)); CpuFeatures::Scope fscope(CPUID); __ cpuid(); } { - CHECK(Isolate::Current()->cpu_features()->IsSupported(RDTSC)); + CHECK(CpuFeatures::IsSupported(RDTSC)); CpuFeatures::Scope fscope(RDTSC); __ rdtsc(); } @@ -375,7 +375,7 @@ TEST(DisasmIa320) { __ fwait(); __ nop(); { - if (Isolate::Current()->cpu_features()->IsSupported(SSE2)) { + if (CpuFeatures::IsSupported(SSE2)) { CpuFeatures::Scope fscope(SSE2); __ cvttss2si(edx, Operand(ebx, ecx, times_4, 10000)); __ cvtsi2sd(xmm1, Operand(ebx, ecx, times_4, 10000)); @@ -397,7 +397,7 @@ TEST(DisasmIa320) { // cmov. { - if (Isolate::Current()->cpu_features()->IsSupported(CMOV)) { + if (CpuFeatures::IsSupported(CMOV)) { CpuFeatures::Scope use_cmov(CMOV); __ cmov(overflow, eax, Operand(eax, 0)); __ cmov(no_overflow, eax, Operand(eax, 1)); @@ -420,7 +420,7 @@ TEST(DisasmIa320) { // andpd, cmpltsd, movaps, psllq, psrlq, por. { - if (Isolate::Current()->cpu_features()->IsSupported(SSE2)) { + if (CpuFeatures::IsSupported(SSE2)) { CpuFeatures::Scope fscope(SSE2); __ andpd(xmm0, xmm1); __ andpd(xmm1, xmm2); @@ -449,7 +449,7 @@ TEST(DisasmIa320) { } { - if (Isolate::Current()->cpu_features()->IsSupported(SSE4_1)) { + if (CpuFeatures::IsSupported(SSE4_1)) { CpuFeatures::Scope scope(SSE4_1); __ pextrd(Operand(eax), xmm0, 1); __ pinsrd(xmm1, Operand(eax), 0); diff --git a/test/cctest/test-heap-profiler.cc b/test/cctest/test-heap-profiler.cc index 141b42f7..bd08d4ce 100644 --- a/test/cctest/test-heap-profiler.cc +++ b/test/cctest/test-heap-profiler.cc @@ -574,10 +574,10 @@ TEST(HeapSnapshotCodeObjects) { // Find references to code. const v8::HeapGraphNode* compiled_code = - GetProperty(compiled, v8::HeapGraphEdge::kInternal, "code"); + GetProperty(compiled, v8::HeapGraphEdge::kInternal, "shared"); CHECK_NE(NULL, compiled_code); const v8::HeapGraphNode* lazy_code = - GetProperty(lazy, v8::HeapGraphEdge::kInternal, "code"); + GetProperty(lazy, v8::HeapGraphEdge::kInternal, "shared"); CHECK_NE(NULL, lazy_code); // Verify that non-compiled code doesn't contain references to "x" @@ -1257,9 +1257,9 @@ TEST(HeapSnapshotRetainedObjectInfo) { ccc, v8::HeapGraphNode::kString, "CCC"); CHECK_NE(NULL, n_CCC); - CHECK_EQ(aaa, GetProperty(n_AAA, v8::HeapGraphEdge::kInternal, "Native")); - CHECK_EQ(aaa, GetProperty(n_BBB, v8::HeapGraphEdge::kInternal, "Native")); - CHECK_EQ(ccc, GetProperty(n_CCC, v8::HeapGraphEdge::kInternal, "Native")); + CHECK_EQ(aaa, GetProperty(n_AAA, v8::HeapGraphEdge::kInternal, "native")); + CHECK_EQ(aaa, GetProperty(n_BBB, v8::HeapGraphEdge::kInternal, "native")); + CHECK_EQ(ccc, GetProperty(n_CCC, v8::HeapGraphEdge::kInternal, "native")); } diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc index 86860ce0..09aa613e 100644 --- a/test/cctest/test-heap.cc +++ b/test/cctest/test-heap.cc @@ -70,7 +70,7 @@ static void CheckFindCodeObject() { // Test FindCodeObject #define __ assm. - Assembler assm(NULL, 0); + Assembler assm(Isolate::Current(), NULL, 0); __ nop(); // supported on all architectures diff --git a/test/cctest/test-log-stack-tracer.cc b/test/cctest/test-log-stack-tracer.cc index df0806f8..b967c738 100644 --- a/test/cctest/test-log-stack-tracer.cc +++ b/test/cctest/test-log-stack-tracer.cc @@ -1,4 +1,4 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Copyright 2011 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -39,7 +39,6 @@ #include "isolate.h" #include "cctest.h" #include "disassembler.h" -#include "register-allocator-inl.h" #include "vm-state-inl.h" using v8::Function; @@ -280,6 +279,9 @@ static void CreateTraceCallerFunction(const char* func_name, // StackTracer uses Isolate::c_entry_fp as a starting point for stack // walking. TEST(CFromJSStackTrace) { + // BUG(1303) Inlining of JSFuncDoTrace() in JSTrace below breaks this test. + i::FLAG_use_inlining = false; + TickSample sample; InitTraceEnv(&sample); diff --git a/test/cctest/test-macro-assembler-x64.cc b/test/cctest/test-macro-assembler-x64.cc index c7c67b05..59eeed90 100755 --- a/test/cctest/test-macro-assembler-x64.cc +++ b/test/cctest/test-macro-assembler-x64.cc @@ -35,48 +35,49 @@ #include "serialize.h" #include "cctest.h" -using v8::internal::byte; -using v8::internal::OS; using v8::internal::Assembler; +using v8::internal::CodeDesc; using v8::internal::Condition; -using v8::internal::MacroAssembler; +using v8::internal::FUNCTION_CAST; using v8::internal::HandleScope; -using v8::internal::Operand; using v8::internal::Immediate; -using v8::internal::SmiIndex; +using v8::internal::Isolate; using v8::internal::Label; +using v8::internal::MacroAssembler; +using v8::internal::OS; +using v8::internal::Operand; using v8::internal::RelocInfo; +using v8::internal::Smi; +using v8::internal::SmiIndex; +using v8::internal::byte; +using v8::internal::carry; +using v8::internal::greater; +using v8::internal::greater_equal; +using v8::internal::kIntSize; +using v8::internal::kPointerSize; +using v8::internal::kSmiTagMask; +using v8::internal::kSmiValueSize; +using v8::internal::less_equal; +using v8::internal::negative; +using v8::internal::not_carry; +using v8::internal::not_equal; +using v8::internal::not_zero; +using v8::internal::positive; +using v8::internal::r11; +using v8::internal::r13; +using v8::internal::r14; +using v8::internal::r15; +using v8::internal::r8; +using v8::internal::r9; using v8::internal::rax; +using v8::internal::rbp; using v8::internal::rbx; -using v8::internal::rsi; -using v8::internal::rdi; using v8::internal::rcx; +using v8::internal::rdi; using v8::internal::rdx; -using v8::internal::rbp; +using v8::internal::rsi; using v8::internal::rsp; -using v8::internal::r8; -using v8::internal::r9; -using v8::internal::r11; -using v8::internal::r13; -using v8::internal::r14; -using v8::internal::r15; using v8::internal::times_pointer_size; -using v8::internal::FUNCTION_CAST; -using v8::internal::CodeDesc; -using v8::internal::less_equal; -using v8::internal::not_equal; -using v8::internal::not_zero; -using v8::internal::greater; -using v8::internal::greater_equal; -using v8::internal::carry; -using v8::internal::not_carry; -using v8::internal::negative; -using v8::internal::positive; -using v8::internal::Smi; -using v8::internal::kSmiTagMask; -using v8::internal::kSmiValueSize; -using v8::internal::kPointerSize; -using v8::internal::kIntSize; // Test the x64 assembler by compiling some simple functions into // a buffer and executing them. These tests do not initialize the @@ -157,7 +158,9 @@ TEST(SmiMove) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. masm->set_allow_stub_calls(false); EntryCode(masm); @@ -245,7 +248,9 @@ TEST(SmiCompare) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -295,7 +300,9 @@ TEST(Integer32ToSmi) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -423,7 +430,9 @@ TEST(Integer64PlusConstantToSmi) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -467,7 +476,9 @@ TEST(SmiCheck) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -715,7 +726,9 @@ TEST(SmiNeg) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -803,7 +816,9 @@ TEST(SmiAdd) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -993,7 +1008,9 @@ TEST(SmiSub) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1083,7 +1100,9 @@ TEST(SmiMul) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1189,7 +1208,9 @@ TEST(SmiDiv) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1299,7 +1320,9 @@ TEST(SmiMod) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1395,7 +1418,9 @@ TEST(SmiIndex) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1464,7 +1489,9 @@ TEST(SmiSelectNonSmi) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); // Avoid inline checks. @@ -1543,7 +1570,9 @@ TEST(SmiAnd) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1624,7 +1653,9 @@ TEST(SmiOr) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1707,7 +1738,9 @@ TEST(SmiXor) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1774,7 +1807,9 @@ TEST(SmiNot) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1870,7 +1905,9 @@ TEST(SmiShiftLeft) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1976,7 +2013,9 @@ TEST(SmiShiftLogicalRight) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -2045,7 +2084,9 @@ TEST(SmiShiftArithmeticRight) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -2109,7 +2150,9 @@ TEST(PositiveSmiTimesPowerOfTwoToInteger64) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -2152,7 +2195,9 @@ TEST(OperandOffset) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); diff --git a/test/cctest/test-mark-compact.cc b/test/cctest/test-mark-compact.cc index 6d1b5ce6..dcb51a0b 100644 --- a/test/cctest/test-mark-compact.cc +++ b/test/cctest/test-mark-compact.cc @@ -299,8 +299,8 @@ static void WeakPointerCallback(v8::Persistent<v8::Value> handle, void* id) { } TEST(ObjectGroups) { - GlobalHandles* global_handles = Isolate::Current()->global_handles(); InitializeVM(); + GlobalHandles* global_handles = Isolate::Current()->global_handles(); NumberOfWeakCalls = 0; v8::HandleScope handle_scope; @@ -308,9 +308,9 @@ TEST(ObjectGroups) { Handle<Object> g1s1 = global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); Handle<Object> g1s2 = - global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); + global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); Handle<Object> g1c1 = - global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); + global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); global_handles->MakeWeak(g1s1.location(), reinterpret_cast<void*>(1234), &WeakPointerCallback); @@ -349,11 +349,11 @@ TEST(ObjectGroups) { Object** g2_objects[] = { g2s1.location(), g2s2.location() }; Object** g2_children[] = { g2c1.location() }; global_handles->AddObjectGroup(g1_objects, 2, NULL); - global_handles->AddImplicitReferences(HeapObject::cast(*g1s1), - g1_children, 1); + global_handles->AddImplicitReferences( + Handle<HeapObject>::cast(g1s1).location(), g1_children, 1); global_handles->AddObjectGroup(g2_objects, 2, NULL); - global_handles->AddImplicitReferences(HeapObject::cast(*g2s2), - g2_children, 1); + global_handles->AddImplicitReferences( + Handle<HeapObject>::cast(g2s2).location(), g2_children, 1); } // Do a full GC HEAP->CollectGarbage(OLD_POINTER_SPACE); @@ -377,11 +377,11 @@ TEST(ObjectGroups) { Object** g2_objects[] = { g2s1.location(), g2s2.location() }; Object** g2_children[] = { g2c1.location() }; global_handles->AddObjectGroup(g1_objects, 2, NULL); - global_handles->AddImplicitReferences(HeapObject::cast(*g1s1), - g1_children, 1); + global_handles->AddImplicitReferences( + Handle<HeapObject>::cast(g1s1).location(), g1_children, 1); global_handles->AddObjectGroup(g2_objects, 2, NULL); - global_handles->AddImplicitReferences(HeapObject::cast(*g2s2), - g2_children, 1); + global_handles->AddImplicitReferences( + Handle<HeapObject>::cast(g2s2).location(), g2_children, 1); } HEAP->CollectGarbage(OLD_POINTER_SPACE); @@ -400,3 +400,45 @@ TEST(ObjectGroups) { HEAP->CollectGarbage(OLD_POINTER_SPACE); CHECK_EQ(7, NumberOfWeakCalls); } + + +class TestRetainedObjectInfo : public v8::RetainedObjectInfo { + public: + TestRetainedObjectInfo() : has_been_disposed_(false) {} + + bool has_been_disposed() { return has_been_disposed_; } + + virtual void Dispose() { + ASSERT(!has_been_disposed_); + has_been_disposed_ = true; + } + + virtual bool IsEquivalent(v8::RetainedObjectInfo* other) { + return other == this; + } + + virtual intptr_t GetHash() { return 0; } + + virtual const char* GetLabel() { return "whatever"; } + + private: + bool has_been_disposed_; +}; + + +TEST(EmptyObjectGroups) { + InitializeVM(); + GlobalHandles* global_handles = Isolate::Current()->global_handles(); + + v8::HandleScope handle_scope; + + Handle<Object> object = + global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); + + TestRetainedObjectInfo info; + global_handles->AddObjectGroup(NULL, 0, &info); + ASSERT(info.has_been_disposed()); + + global_handles->AddImplicitReferences( + Handle<HeapObject>::cast(object).location(), NULL, 0); +} diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc index 98a5870a..39856b67 100755 --- a/test/cctest/test-parsing.cc +++ b/test/cctest/test-parsing.cc @@ -1,4 +1,4 @@ -// Copyright 2006-2009 the V8 project authors. All rights reserved. +// Copyright 2011 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -258,14 +258,14 @@ TEST(StandAlonePreParser) { NULL }; - uintptr_t stack_limit = ISOLATE->stack_guard()->real_climit(); + uintptr_t stack_limit = i::Isolate::Current()->stack_guard()->real_climit(); for (int i = 0; programs[i]; i++) { const char* program = programs[i]; i::Utf8ToUC16CharacterStream stream( reinterpret_cast<const i::byte*>(program), static_cast<unsigned>(strlen(program))); i::CompleteParserRecorder log; - i::V8JavaScriptScanner scanner(ISOLATE->scanner_constants()); + i::V8JavaScriptScanner scanner(i::Isolate::Current()->unicode_cache()); scanner.Initialize(&stream); v8::preparser::PreParser::PreParseResult result = @@ -282,7 +282,7 @@ TEST(StandAlonePreParser) { TEST(RegressChromium62639) { int marker; - ISOLATE->stack_guard()->SetStackLimit( + i::Isolate::Current()->stack_guard()->SetStackLimit( reinterpret_cast<uintptr_t>(&marker) - 128 * 1024); const char* program = "var x = 'something';\n" @@ -307,7 +307,7 @@ TEST(Regress928) { // the block could be lazily compiled, and an extra, unexpected, // entry was added to the data. int marker; - ISOLATE->stack_guard()->SetStackLimit( + i::Isolate::Current()->stack_guard()->SetStackLimit( reinterpret_cast<uintptr_t>(&marker) - 128 * 1024); const char* program = @@ -343,7 +343,7 @@ TEST(Regress928) { TEST(PreParseOverflow) { int marker; - ISOLATE->stack_guard()->SetStackLimit( + i::Isolate::Current()->stack_guard()->SetStackLimit( reinterpret_cast<uintptr_t>(&marker) - 128 * 1024); size_t kProgramSize = 1024 * 1024; @@ -352,13 +352,13 @@ TEST(PreParseOverflow) { memset(*program, '(', kProgramSize); program[kProgramSize] = '\0'; - uintptr_t stack_limit = ISOLATE->stack_guard()->real_climit(); + uintptr_t stack_limit = i::Isolate::Current()->stack_guard()->real_climit(); i::Utf8ToUC16CharacterStream stream( reinterpret_cast<const i::byte*>(*program), static_cast<unsigned>(kProgramSize)); i::CompleteParserRecorder log; - i::V8JavaScriptScanner scanner(ISOLATE->scanner_constants()); + i::V8JavaScriptScanner scanner(i::Isolate::Current()->unicode_cache()); scanner.Initialize(&stream); @@ -576,7 +576,7 @@ void TestStreamScanner(i::UC16CharacterStream* stream, i::Token::Value* expected_tokens, int skip_pos = 0, // Zero means not skipping. int skip_to = 0) { - i::V8JavaScriptScanner scanner(ISOLATE->scanner_constants()); + i::V8JavaScriptScanner scanner(i::Isolate::Current()->unicode_cache()); scanner.Initialize(stream); int i = 0; @@ -655,7 +655,7 @@ void TestScanRegExp(const char* re_source, const char* expected) { i::Utf8ToUC16CharacterStream stream( reinterpret_cast<const i::byte*>(re_source), static_cast<unsigned>(strlen(re_source))); - i::V8JavaScriptScanner scanner(ISOLATE->scanner_constants()); + i::V8JavaScriptScanner scanner(i::Isolate::Current()->unicode_cache()); scanner.Initialize(&stream); i::Token::Value start = scanner.peek(); diff --git a/test/cctest/test-regexp.cc b/test/cctest/test-regexp.cc index e7026d42..fa3c6eac 100644 --- a/test/cctest/test-regexp.cc +++ b/test/cctest/test-regexp.cc @@ -488,12 +488,14 @@ TEST(CharacterClassEscapes) { static RegExpNode* Compile(const char* input, bool multiline, bool is_ascii) { V8::Initialize(NULL); - FlatStringReader reader(Isolate::Current(), CStrVector(input)); + Isolate* isolate = Isolate::Current(); + FlatStringReader reader(isolate, CStrVector(input)); RegExpCompileData compile_data; if (!v8::internal::RegExpParser::ParseRegExp(&reader, multiline, &compile_data)) return NULL; - Handle<String> pattern = FACTORY->NewStringFromUtf8(CStrVector(input)); + Handle<String> pattern = isolate->factory()-> + NewStringFromUtf8(CStrVector(input)); RegExpEngine::Compile(&compile_data, false, multiline, pattern, is_ascii); return compile_data.node; } @@ -715,17 +717,18 @@ static ArchRegExpMacroAssembler::Result Execute(Code* code, TEST(MacroAssemblerNativeSuccess) { v8::V8::Initialize(); ContextInitializer initializer; + Factory* factory = Isolate::Current()->factory(); ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); m.Succeed(); - Handle<String> source = FACTORY->NewStringFromAscii(CStrVector("")); + Handle<String> source = factory->NewStringFromAscii(CStrVector("")); Handle<Object> code_object = m.GetCode(source); Handle<Code> code = Handle<Code>::cast(code_object); int captures[4] = {42, 37, 87, 117}; - Handle<String> input = FACTORY->NewStringFromAscii(CStrVector("foofoo")); + Handle<String> input = factory->NewStringFromAscii(CStrVector("foofoo")); Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); const byte* start_adr = reinterpret_cast<const byte*>(seq_input->GetCharsAddress()); @@ -749,6 +752,7 @@ TEST(MacroAssemblerNativeSuccess) { TEST(MacroAssemblerNativeSimple) { v8::V8::Initialize(); ContextInitializer initializer; + Factory* factory = Isolate::Current()->factory(); ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); @@ -764,12 +768,12 @@ TEST(MacroAssemblerNativeSimple) { m.Bind(&fail); m.Fail(); - Handle<String> source = FACTORY->NewStringFromAscii(CStrVector("^foo")); + Handle<String> source = factory->NewStringFromAscii(CStrVector("^foo")); Handle<Object> code_object = m.GetCode(source); Handle<Code> code = Handle<Code>::cast(code_object); int captures[4] = {42, 37, 87, 117}; - Handle<String> input = FACTORY->NewStringFromAscii(CStrVector("foofoo")); + Handle<String> input = factory->NewStringFromAscii(CStrVector("foofoo")); Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); Address start_adr = seq_input->GetCharsAddress(); @@ -787,7 +791,7 @@ TEST(MacroAssemblerNativeSimple) { CHECK_EQ(-1, captures[2]); CHECK_EQ(-1, captures[3]); - input = FACTORY->NewStringFromAscii(CStrVector("barbarbar")); + input = factory->NewStringFromAscii(CStrVector("barbarbar")); seq_input = Handle<SeqAsciiString>::cast(input); start_adr = seq_input->GetCharsAddress(); @@ -805,6 +809,7 @@ TEST(MacroAssemblerNativeSimple) { TEST(MacroAssemblerNativeSimpleUC16) { v8::V8::Initialize(); ContextInitializer initializer; + Factory* factory = Isolate::Current()->factory(); ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::UC16, 4); @@ -820,14 +825,14 @@ TEST(MacroAssemblerNativeSimpleUC16) { m.Bind(&fail); m.Fail(); - Handle<String> source = FACTORY->NewStringFromAscii(CStrVector("^foo")); + Handle<String> source = factory->NewStringFromAscii(CStrVector("^foo")); Handle<Object> code_object = m.GetCode(source); Handle<Code> code = Handle<Code>::cast(code_object); int captures[4] = {42, 37, 87, 117}; const uc16 input_data[6] = {'f', 'o', 'o', 'f', 'o', '\xa0'}; Handle<String> input = - FACTORY->NewStringFromTwoByte(Vector<const uc16>(input_data, 6)); + factory->NewStringFromTwoByte(Vector<const uc16>(input_data, 6)); Handle<SeqTwoByteString> seq_input = Handle<SeqTwoByteString>::cast(input); Address start_adr = seq_input->GetCharsAddress(); @@ -846,7 +851,7 @@ TEST(MacroAssemblerNativeSimpleUC16) { CHECK_EQ(-1, captures[3]); const uc16 input_data2[9] = {'b', 'a', 'r', 'b', 'a', 'r', 'b', 'a', '\xa0'}; - input = FACTORY->NewStringFromTwoByte(Vector<const uc16>(input_data2, 9)); + input = factory->NewStringFromTwoByte(Vector<const uc16>(input_data2, 9)); seq_input = Handle<SeqTwoByteString>::cast(input); start_adr = seq_input->GetCharsAddress(); @@ -864,6 +869,7 @@ TEST(MacroAssemblerNativeSimpleUC16) { TEST(MacroAssemblerNativeBacktrack) { v8::V8::Initialize(); ContextInitializer initializer; + Factory* factory = Isolate::Current()->factory(); ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 0); @@ -878,11 +884,11 @@ TEST(MacroAssemblerNativeBacktrack) { m.Bind(&backtrack); m.Fail(); - Handle<String> source = FACTORY->NewStringFromAscii(CStrVector("..........")); + Handle<String> source = factory->NewStringFromAscii(CStrVector("..........")); Handle<Object> code_object = m.GetCode(source); Handle<Code> code = Handle<Code>::cast(code_object); - Handle<String> input = FACTORY->NewStringFromAscii(CStrVector("foofoo")); + Handle<String> input = factory->NewStringFromAscii(CStrVector("foofoo")); Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); Address start_adr = seq_input->GetCharsAddress(); @@ -901,6 +907,7 @@ TEST(MacroAssemblerNativeBacktrack) { TEST(MacroAssemblerNativeBackReferenceASCII) { v8::V8::Initialize(); ContextInitializer initializer; + Factory* factory = Isolate::Current()->factory(); ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); @@ -919,11 +926,11 @@ TEST(MacroAssemblerNativeBackReferenceASCII) { m.Bind(&missing_match); m.Fail(); - Handle<String> source = FACTORY->NewStringFromAscii(CStrVector("^(..)..\1")); + Handle<String> source = factory->NewStringFromAscii(CStrVector("^(..)..\1")); Handle<Object> code_object = m.GetCode(source); Handle<Code> code = Handle<Code>::cast(code_object); - Handle<String> input = FACTORY->NewStringFromAscii(CStrVector("fooofo")); + Handle<String> input = factory->NewStringFromAscii(CStrVector("fooofo")); Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); Address start_adr = seq_input->GetCharsAddress(); @@ -947,6 +954,7 @@ TEST(MacroAssemblerNativeBackReferenceASCII) { TEST(MacroAssemblerNativeBackReferenceUC16) { v8::V8::Initialize(); ContextInitializer initializer; + Factory* factory = Isolate::Current()->factory(); ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::UC16, 4); @@ -965,13 +973,13 @@ TEST(MacroAssemblerNativeBackReferenceUC16) { m.Bind(&missing_match); m.Fail(); - Handle<String> source = FACTORY->NewStringFromAscii(CStrVector("^(..)..\1")); + Handle<String> source = factory->NewStringFromAscii(CStrVector("^(..)..\1")); Handle<Object> code_object = m.GetCode(source); Handle<Code> code = Handle<Code>::cast(code_object); const uc16 input_data[6] = {'f', 0x2028, 'o', 'o', 'f', 0x2028}; Handle<String> input = - FACTORY->NewStringFromTwoByte(Vector<const uc16>(input_data, 6)); + factory->NewStringFromTwoByte(Vector<const uc16>(input_data, 6)); Handle<SeqTwoByteString> seq_input = Handle<SeqTwoByteString>::cast(input); Address start_adr = seq_input->GetCharsAddress(); @@ -996,6 +1004,7 @@ TEST(MacroAssemblerNativeBackReferenceUC16) { TEST(MacroAssemblernativeAtStart) { v8::V8::Initialize(); ContextInitializer initializer; + Factory* factory = Isolate::Current()->factory(); ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 0); @@ -1020,11 +1029,11 @@ TEST(MacroAssemblernativeAtStart) { m.CheckNotCharacter('b', &fail); m.Succeed(); - Handle<String> source = FACTORY->NewStringFromAscii(CStrVector("(^f|ob)")); + Handle<String> source = factory->NewStringFromAscii(CStrVector("(^f|ob)")); Handle<Object> code_object = m.GetCode(source); Handle<Code> code = Handle<Code>::cast(code_object); - Handle<String> input = FACTORY->NewStringFromAscii(CStrVector("foobar")); + Handle<String> input = factory->NewStringFromAscii(CStrVector("foobar")); Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); Address start_adr = seq_input->GetCharsAddress(); @@ -1052,6 +1061,7 @@ TEST(MacroAssemblernativeAtStart) { TEST(MacroAssemblerNativeBackRefNoCase) { v8::V8::Initialize(); ContextInitializer initializer; + Factory* factory = Isolate::Current()->factory(); ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); @@ -1078,12 +1088,12 @@ TEST(MacroAssemblerNativeBackRefNoCase) { m.Succeed(); Handle<String> source = - FACTORY->NewStringFromAscii(CStrVector("^(abc)\1\1(?!\1)...(?!\1)")); + factory->NewStringFromAscii(CStrVector("^(abc)\1\1(?!\1)...(?!\1)")); Handle<Object> code_object = m.GetCode(source); Handle<Code> code = Handle<Code>::cast(code_object); Handle<String> input = - FACTORY->NewStringFromAscii(CStrVector("aBcAbCABCxYzab")); + factory->NewStringFromAscii(CStrVector("aBcAbCABCxYzab")); Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); Address start_adr = seq_input->GetCharsAddress(); @@ -1108,6 +1118,7 @@ TEST(MacroAssemblerNativeBackRefNoCase) { TEST(MacroAssemblerNativeRegisters) { v8::V8::Initialize(); ContextInitializer initializer; + Factory* factory = Isolate::Current()->factory(); ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 6); @@ -1176,13 +1187,13 @@ TEST(MacroAssemblerNativeRegisters) { m.Fail(); Handle<String> source = - FACTORY->NewStringFromAscii(CStrVector("<loop test>")); + factory->NewStringFromAscii(CStrVector("<loop test>")); Handle<Object> code_object = m.GetCode(source); Handle<Code> code = Handle<Code>::cast(code_object); // String long enough for test (content doesn't matter). Handle<String> input = - FACTORY->NewStringFromAscii(CStrVector("foofoofoofoofoo")); + factory->NewStringFromAscii(CStrVector("foofoofoofoofoo")); Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); Address start_adr = seq_input->GetCharsAddress(); @@ -1208,6 +1219,8 @@ TEST(MacroAssemblerNativeRegisters) { TEST(MacroAssemblerStackOverflow) { v8::V8::Initialize(); ContextInitializer initializer; + Isolate* isolate = Isolate::Current(); + Factory* factory = isolate->factory(); ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 0); @@ -1217,13 +1230,13 @@ TEST(MacroAssemblerStackOverflow) { m.GoTo(&loop); Handle<String> source = - FACTORY->NewStringFromAscii(CStrVector("<stack overflow test>")); + factory->NewStringFromAscii(CStrVector("<stack overflow test>")); Handle<Object> code_object = m.GetCode(source); Handle<Code> code = Handle<Code>::cast(code_object); // String long enough for test (content doesn't matter). Handle<String> input = - FACTORY->NewStringFromAscii(CStrVector("dummy")); + factory->NewStringFromAscii(CStrVector("dummy")); Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); Address start_adr = seq_input->GetCharsAddress(); @@ -1236,14 +1249,16 @@ TEST(MacroAssemblerStackOverflow) { NULL); CHECK_EQ(NativeRegExpMacroAssembler::EXCEPTION, result); - CHECK(Isolate::Current()->has_pending_exception()); - Isolate::Current()->clear_pending_exception(); + CHECK(isolate->has_pending_exception()); + isolate->clear_pending_exception(); } TEST(MacroAssemblerNativeLotsOfRegisters) { v8::V8::Initialize(); ContextInitializer initializer; + Isolate* isolate = Isolate::Current(); + Factory* factory = isolate->factory(); ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 2); @@ -1261,13 +1276,13 @@ TEST(MacroAssemblerNativeLotsOfRegisters) { m.Succeed(); Handle<String> source = - FACTORY->NewStringFromAscii(CStrVector("<huge register space test>")); + factory->NewStringFromAscii(CStrVector("<huge register space test>")); Handle<Object> code_object = m.GetCode(source); Handle<Code> code = Handle<Code>::cast(code_object); // String long enough for test (content doesn't matter). Handle<String> input = - FACTORY->NewStringFromAscii(CStrVector("sample text")); + factory->NewStringFromAscii(CStrVector("sample text")); Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); Address start_adr = seq_input->GetCharsAddress(); @@ -1284,7 +1299,7 @@ TEST(MacroAssemblerNativeLotsOfRegisters) { CHECK_EQ(0, captures[0]); CHECK_EQ(42, captures[1]); - Isolate::Current()->clear_pending_exception(); + isolate->clear_pending_exception(); } #else // V8_INTERPRETED_REGEXP @@ -1327,17 +1342,19 @@ TEST(MacroAssembler) { m.PopRegister(0); m.Fail(); - v8::HandleScope scope; + Isolate* isolate = Isolate::Current(); + Factory* factory = isolate->factory(); + HandleScope scope(isolate); - Handle<String> source = FACTORY->NewStringFromAscii(CStrVector("^f(o)o")); + Handle<String> source = factory->NewStringFromAscii(CStrVector("^f(o)o")); Handle<ByteArray> array = Handle<ByteArray>::cast(m.GetCode(source)); int captures[5]; const uc16 str1[] = {'f', 'o', 'o', 'b', 'a', 'r'}; Handle<String> f1_16 = - FACTORY->NewStringFromTwoByte(Vector<const uc16>(str1, 6)); + factory->NewStringFromTwoByte(Vector<const uc16>(str1, 6)); - CHECK(IrregexpInterpreter::Match(array, f1_16, captures, 0)); + CHECK(IrregexpInterpreter::Match(isolate, array, f1_16, captures, 0)); CHECK_EQ(0, captures[0]); CHECK_EQ(3, captures[1]); CHECK_EQ(1, captures[2]); @@ -1346,9 +1363,9 @@ TEST(MacroAssembler) { const uc16 str2[] = {'b', 'a', 'r', 'f', 'o', 'o'}; Handle<String> f2_16 = - FACTORY->NewStringFromTwoByte(Vector<const uc16>(str2, 6)); + factory->NewStringFromTwoByte(Vector<const uc16>(str2, 6)); - CHECK(!IrregexpInterpreter::Match(array, f2_16, captures, 0)); + CHECK(!IrregexpInterpreter::Match(isolate, array, f2_16, captures, 0)); CHECK_EQ(42, captures[0]); } diff --git a/test/cctest/test-threads.cc b/test/cctest/test-threads.cc index 37f02050..c6d5cb09 100644 --- a/test/cctest/test-threads.cc +++ b/test/cctest/test-threads.cc @@ -28,6 +28,7 @@ #include "v8.h" #include "platform.h" +#include "isolate.h" #include "cctest.h" @@ -136,3 +137,55 @@ TEST(JSFunctionResultCachesInTwoThreads) { CHECK_EQ(DONE, turn); } + +class ThreadIdValidationThread : public v8::internal::Thread { + public: + ThreadIdValidationThread(i::Thread* thread_to_start, + i::List<i::ThreadId>* refs, + unsigned int thread_no, + i::Semaphore* semaphore) + : Thread(NULL, "ThreadRefValidationThread"), + refs_(refs), thread_no_(thread_no), thread_to_start_(thread_to_start), + semaphore_(semaphore) { + } + + void Run() { + i::ThreadId thread_id = i::ThreadId::Current(); + for (int i = 0; i < thread_no_; i++) { + CHECK(!(*refs_)[i].Equals(thread_id)); + } + CHECK(thread_id.IsValid()); + (*refs_)[thread_no_] = thread_id; + if (thread_to_start_ != NULL) { + thread_to_start_->Start(); + } + semaphore_->Signal(); + } + private: + i::List<i::ThreadId>* refs_; + int thread_no_; + i::Thread* thread_to_start_; + i::Semaphore* semaphore_; +}; + +TEST(ThreadIdValidation) { + const int kNThreads = 100; + i::List<ThreadIdValidationThread*> threads(kNThreads); + i::List<i::ThreadId> refs(kNThreads); + i::Semaphore* semaphore = i::OS::CreateSemaphore(0); + ThreadIdValidationThread* prev = NULL; + for (int i = kNThreads - 1; i >= 0; i--) { + ThreadIdValidationThread* newThread = + new ThreadIdValidationThread(prev, &refs, i, semaphore); + threads.Add(newThread); + prev = newThread; + refs.Add(i::ThreadId::Invalid()); + } + prev->Start(); + for (int i = 0; i < kNThreads; i++) { + semaphore->Wait(); + } + for (int i = 0; i < kNThreads; i++) { + delete threads[i]; + } +} diff --git a/test/cctest/test-utils.cc b/test/cctest/test-utils.cc index 018018a1..ce53f8e4 100644 --- a/test/cctest/test-utils.cc +++ b/test/cctest/test-utils.cc @@ -89,8 +89,8 @@ void TestMemCopy(Vector<byte> src, memset(dst.start(), 0xFF, dst.length()); byte* to = dst.start() + 32 + destination_alignment; byte* from = src.start() + source_alignment; - int length = kMinComplexMemCopy + length_alignment; - MemCopy(to, from, static_cast<size_t>(length)); + int length = OS::kMinComplexMemCopy + length_alignment; + OS::MemCopy(to, from, static_cast<size_t>(length)); printf("[%d,%d,%d]\n", source_alignment, destination_alignment, length_alignment); for (int i = 0; i < length; i++) { @@ -103,8 +103,9 @@ void TestMemCopy(Vector<byte> src, TEST(MemCopy) { + v8::V8::Initialize(); OS::Setup(); - const int N = kMinComplexMemCopy + 128; + const int N = OS::kMinComplexMemCopy + 128; Vector<byte> buffer1 = Vector<byte>::New(N); Vector<byte> buffer2 = Vector<byte>::New(N); diff --git a/test/mjsunit/apply.js b/test/mjsunit/apply.js index 613d37d9..c166110d 100644 --- a/test/mjsunit/apply.js +++ b/test/mjsunit/apply.js @@ -33,43 +33,43 @@ function f1(a) { return a; } -assertTrue(this === f0.apply(), "1-0"); +assertSame(this, f0.apply(), "1-0"); -assertTrue(this === f0.apply(this), "2a"); -assertTrue(this === f0.apply(this, new Array(1)), "2b"); -assertTrue(this === f0.apply(this, new Array(2)), "2c"); -assertTrue(this === f0.apply(this, new Array(4242)), "2d"); +assertSame(this, f0.apply(this), "2a"); +assertSame(this, f0.apply(this, new Array(1)), "2b"); +assertSame(this, f0.apply(this, new Array(2)), "2c"); +assertSame(this, f0.apply(this, new Array(4242)), "2d"); -assertTrue(this === f0.apply(null), "3a"); -assertTrue(this === f0.apply(null, new Array(1)), "3b"); -assertTrue(this === f0.apply(null, new Array(2)), "3c"); -assertTrue(this === f0.apply(this, new Array(4242)), "3d"); +assertSame(this, f0.apply(null), "3a"); +assertSame(this, f0.apply(null, new Array(1)), "3b"); +assertSame(this, f0.apply(null, new Array(2)), "3c"); +assertSame(this, f0.apply(this, new Array(4242)), "3d"); -assertTrue(this === f0.apply(void 0), "4a"); -assertTrue(this === f0.apply(void 0, new Array(1)), "4b"); -assertTrue(this === f0.apply(void 0, new Array(2)), "4c"); +assertSame(this, f0.apply(void 0), "4a"); +assertSame(this, f0.apply(void 0, new Array(1)), "4b"); +assertSame(this, f0.apply(void 0, new Array(2)), "4c"); -assertTrue(void 0 === f1.apply(), "1-1"); +assertEquals(void 0, f1.apply(), "1-1"); -assertTrue(void 0 === f1.apply(this), "5a"); -assertTrue(void 0 === f1.apply(this, new Array(1)), "5b"); -assertTrue(void 0 === f1.apply(this, new Array(2)), "5c"); -assertTrue(void 0 === f1.apply(this, new Array(4242)), "5d"); -assertTrue(42 === f1.apply(this, new Array(42, 43)), "5e"); +assertEquals(void 0, f1.apply(this), "5a"); +assertEquals(void 0, f1.apply(this, new Array(1)), "5b"); +assertEquals(void 0, f1.apply(this, new Array(2)), "5c"); +assertEquals(void 0, f1.apply(this, new Array(4242)), "5d"); +assertEquals(42, f1.apply(this, new Array(42, 43)), "5e"); assertEquals("foo", f1.apply(this, new Array("foo", "bar", "baz", "bo")), "5f"); -assertTrue(void 0 === f1.apply(null), "6a"); -assertTrue(void 0 === f1.apply(null, new Array(1)), "6b"); -assertTrue(void 0 === f1.apply(null, new Array(2)), "6c"); -assertTrue(void 0 === f1.apply(null, new Array(4242)), "6d"); -assertTrue(42 === f1.apply(null, new Array(42, 43)), "6e"); +assertEquals(void 0, f1.apply(null), "6a"); +assertEquals(void 0, f1.apply(null, new Array(1)), "6b"); +assertEquals(void 0, f1.apply(null, new Array(2)), "6c"); +assertEquals(void 0, f1.apply(null, new Array(4242)), "6d"); +assertEquals(42, f1.apply(null, new Array(42, 43)), "6e"); assertEquals("foo", f1.apply(null, new Array("foo", "bar", "baz", "bo")), "6f"); -assertTrue(void 0 === f1.apply(void 0), "7a"); -assertTrue(void 0 === f1.apply(void 0, new Array(1)), "7b"); -assertTrue(void 0 === f1.apply(void 0, new Array(2)), "7c"); -assertTrue(void 0 === f1.apply(void 0, new Array(4242)), "7d"); -assertTrue(42 === f1.apply(void 0, new Array(42, 43)), "7e"); +assertEquals(void 0, f1.apply(void 0), "7a"); +assertEquals(void 0, f1.apply(void 0, new Array(1)), "7b"); +assertEquals(void 0, f1.apply(void 0, new Array(2)), "7c"); +assertEquals(void 0, f1.apply(void 0, new Array(4242)), "7d"); +assertEquals(42, f1.apply(void 0, new Array(42, 43)), "7e"); assertEquals("foo", f1.apply(void 0, new Array("foo", "bar", "ba", "b")), "7f"); var arr = new Array(42, "foo", "fish", "horse"); @@ -108,7 +108,7 @@ function s() { assertEquals("bar42foofishhorse", s.apply("bar", arr), "apply to string"); function al() { - assertEquals(345, this); + assertEquals(Object(345), this); return arguments.length + arguments[arguments.length - 1]; } @@ -186,7 +186,7 @@ primes[0] = ""; primes[1] = holey; assertThrows("String.prototype.concat.apply.apply('foo', primes)"); assertEquals("morseper", - String.prototype.concat.apply.apply(String.prototype.concat, primes), + String.prototype.concat.apply.apply(String.prototype.concat, primes), "moreseper-prime"); delete(Array.prototype["1"]); diff --git a/test/mjsunit/arguments-apply.js b/test/mjsunit/arguments-apply.js index 5a912285..48c42349 100644 --- a/test/mjsunit/arguments-apply.js +++ b/test/mjsunit/arguments-apply.js @@ -73,11 +73,11 @@ function NonObjectReceiver(receiver) { return ReturnReceiver.apply(receiver, arguments); } -assertEquals(42, NonObjectReceiver(42)); +assertEquals(Object(42), NonObjectReceiver(42)); assertEquals("object", typeof NonObjectReceiver(42)); -assertTrue(NonObjectReceiver(42) instanceof Number); -assertTrue(this === NonObjectReceiver(null)); -assertTrue(this === NonObjectReceiver(void 0)); +assertInstanceof(NonObjectReceiver(42), Number); +assertSame(this, NonObjectReceiver(null)); +assertSame(this, NonObjectReceiver(void 0)); function FunctionReceiver() { diff --git a/test/mjsunit/arguments-opt.js b/test/mjsunit/arguments-opt.js index c74fc75a..b8280b4b 100644 --- a/test/mjsunit/arguments-opt.js +++ b/test/mjsunit/arguments-opt.js @@ -79,36 +79,38 @@ assertTrue(typeof(A(10000)) == 'undefined'); assertTrue(typeof(A(10000, 0)) == 'undefined'); // String access. -assertEquals(0, A('0')); -assertEquals(0, A('0',1)); +assertEquals('0', A('0')); +assertEquals('0', A('0',1)); assertEquals(2, A('1',2)); assertEquals(2, A('1',2,3,4,5)); assertEquals(5, A('4',2,3,4,5)); -assertTrue(typeof A('1') == 'undefined'); -assertTrue(typeof A('3',2,1) == 'undefined'); +assertEquals('undefined', typeof A('1')); +assertEquals('undefined', typeof A('3',2,1)); assertEquals(A, A('callee')); assertEquals(1, A('length')); assertEquals(2, A('length',2)); assertEquals(5, A('length',2,3,4,5)); assertEquals({}.toString, A('toString')); assertEquals({}.isPrototypeOf, A('isPrototypeOf')); -assertTrue(typeof A('xxx') == 'undefined'); +assertEquals('undefined', typeof A('xxx')); // Object access. function O(key) { return { toString: function() { return key; } }; } -assertEquals(0, A(O(0))); -assertEquals(0, A(O(0),1)); +var O0 = O(0); +assertSame(O0, A(O0)); +assertSame(O0, A(O0,1)); assertEquals(2, A(O(1),2)); assertEquals(2, A(O(1),2,3,4,5)); assertEquals(5, A(O(4),2,3,4,5)); assertTrue(typeof A(O(1)) == 'undefined'); assertTrue(typeof A(O(3),2,1) == 'undefined'); -assertEquals(0, A(O('0'))); -assertEquals(0, A(O('0'),1)); +O0 = O('0'); +assertSame(O0, A(O0)); +assertSame(O0, A(O0,1)); assertEquals(2, A(O('1'),2)); assertEquals(2, A(O('1'),2,3,4,5)); assertEquals(5, A(O('4'),2,3,4,5)); diff --git a/test/mjsunit/array-length.js b/test/mjsunit/array-length.js index 967d7203..16867db7 100644 --- a/test/mjsunit/array-length.js +++ b/test/mjsunit/array-length.js @@ -102,7 +102,7 @@ assertEquals('undefined', typeof a[Math.pow(2,32)-2], "top"); var a = new Array(); -assertEquals(12, a.length = new Number(12)); +assertEquals(Object(12), a.length = new Number(12)); assertEquals(12, a.length); diff --git a/test/mjsunit/compiler/array-length.js b/test/mjsunit/compiler/array-length.js index 126c7a02..462a1e77 100644 --- a/test/mjsunit/compiler/array-length.js +++ b/test/mjsunit/compiler/array-length.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + function ArrayLength(a) { return a.length; } function Test(a0, a2, a5) { @@ -36,7 +38,12 @@ function Test(a0, a2, a5) { var a0 = []; var a2 = [1,2]; var a5 = [1,2,3,4,5]; -for (var i = 0; i < 100000; i++) Test(a0, a2, a5); +for (var i = 0; i < 5; i++) Test(a0, a2, a5); +%OptimizeFunctionOnNextCall(ArrayLength); +%OptimizeFunctionOnNextCall(Test); +Test(a0, a2, a5); assertEquals("undefined", typeof(ArrayLength(0))); -for (var i = 0; i < 100000; i++) Test(a0, a2, a5); +for (var i = 0; i < 5; i++) Test(a0, a2, a5); +%OptimizeFunctionOnNextCall(Test); +Test(a0, a2, a5); assertEquals(4, ArrayLength("hest")); diff --git a/test/mjsunit/compiler/assignment-deopt.js b/test/mjsunit/compiler/assignment-deopt.js index 74f185bb..2b006254 100644 --- a/test/mjsunit/compiler/assignment-deopt.js +++ b/test/mjsunit/compiler/assignment-deopt.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test deopt with count operation on parameter. var max_smi = 1073741823; var o = {x:0}; @@ -44,12 +46,15 @@ o.x = "42"; assign2(o); assertEquals("421", o.x); -var s = max_smi - 10000; +var s = max_smi - 10; o.x = s; -for(var i = 0; i < 20000; i++) { +for(var i = 0; i < 20; i++) { assign2(o); + if (i == 4) { + %OptimizeFunctionOnNextCall(assign2); + } } -assertEquals(max_smi + 10000, o.x); +assertEquals(max_smi + 10, o.x); // Test deopt with count operation on keyed property. @@ -59,36 +64,48 @@ o = ["42"]; assign3(o, 0); assertEquals("421", o[0]); -var s = max_smi - 10000; +var s = max_smi - 10; o[0] = s; -for(var i = 0; i < 20000; i++) { +for(var i = 0; i < 20; i++) { assign3(o, 0); + if (i == 4) { + %OptimizeFunctionOnNextCall(assign3); + } } -assertEquals(max_smi + 10000, o[0]); +assertEquals(max_smi + 10, o[0]); -assign3(o,"0"); +assign3(o, "0"); -assertEquals(max_smi + 10001, o[0]); +assertEquals(max_smi + 11, o[0]); // Test bailout when accessing a non-existing array element. o[0] = 0; -for(var i = 0; i < 10000; i++) { +for(var i = 0; i < 5; i++) { assign3(o, 0); } -assign3(o,1); +%OptimizeFunctionOnNextCall(assign3); +assign3(o, 0); +assign3(o, 1); // Test bailout with count operation in a value context. function assign5(x,y) { return (x += 1) + y; } -for (var i = 0; i < 10000; ++i) assertEquals(4, assign5(2, 1)); +for (var i = 0; i < 5; ++i) assertEquals(4, assign5(2, 1)); +%OptimizeFunctionOnNextCall(assign5); +assertEquals(4, assign5(2, 1)); + assertEquals(4.1, assign5(2, 1.1)); assertEquals(4.1, assign5(2.1, 1)); function assign7(o,y) { return (o.x += 1) + y; } o = {x:0}; -for (var i = 0; i < 10000; ++i) { +for (var i = 0; i < 5; ++i) { o.x = 42; assertEquals(44, assign7(o, 1)); } +%OptimizeFunctionOnNextCall(assign7); +o.x = 42; +assertEquals(44, assign7(o, 1)); + o.x = 42; assertEquals(44.1, assign7(o, 1.1)); o.x = 42.1; @@ -96,10 +113,14 @@ assertEquals(44.1, assign7(o, 1)); function assign9(o,y) { return (o[0] += 1) + y; } q = [0]; -for (var i = 0; i < 10000; ++i) { +for (var i = 0; i < 5; ++i) { q[0] = 42; assertEquals(44, assign9(q, 1)); } +%OptimizeFunctionOnNextCall(assign9); +q[0] = 42; +assertEquals(44, assign9(q, 1)); + q[0] = 42; assertEquals(44.1, assign9(q, 1.1)); q[0] = 42.1; @@ -109,11 +130,16 @@ assertEquals(44.1, assign9(q, 1)); function assign10(p) { return p.x += 1 } var g1 = {x:0}; var g2 = {y:0, x:42}; -for (var i = 0; i < 10000; ++i) { +for (var i = 0; i < 5; ++i) { g1.x = 42; assertEquals(43, assign10(g1)); assertEquals(43, g1.x); } +%OptimizeFunctionOnNextCall(assign10); +g1.x = 42; +assertEquals(43, assign10(g1)); +assertEquals(43, g1.x); + assertEquals(43, assign10(g2)); assertEquals(43, g2.x); @@ -123,10 +149,14 @@ o = {x:0}; var g3 = { valueOf: function() { o.y = "bar"; return 42; }}; function assign11(p) { return p.x += 1; } -for (var i = 0; i < 10000; i++) { +for (var i = 0; i < 5; i++) { o.x = "a"; assign11(o); } +%OptimizeFunctionOnNextCall(assign11); +o.x = "a"; +assign11(o); + assertEquals("a11", assign11(o)); o.x = g3; assertEquals(43, assign11(o)); @@ -136,10 +166,14 @@ o = [0]; var g4 = { valueOf: function() { o.y = "bar"; return 42; }}; function assign12(p) { return p[0] += 1; } -for (var i = 0; i < 1000000; i++) { +for (var i = 0; i < 5; i++) { o[0] = "a"; assign12(o); } +%OptimizeFunctionOnNextCall(assign12); +o[0] = "a"; +assign12(o); + assertEquals("a11", assign12(o)); o[0] = g4; assertEquals(43, assign12(o)); diff --git a/test/mjsunit/compiler/count-deopt.js b/test/mjsunit/compiler/count-deopt.js index dcd82f87..415dadc0 100644 --- a/test/mjsunit/compiler/count-deopt.js +++ b/test/mjsunit/compiler/count-deopt.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test deopt with count operation on parameter. var max_smi = 1073741823; var o = {x:0}; @@ -44,12 +46,15 @@ o.x = "42"; inc2(o); assertEquals(43, o.x); -var s = max_smi - 10000; +var s = max_smi - 10; o.x = s; -for(var i = 0; i < 20000; i++) { +for(var i = 0; i < 20; i++) { inc2(o); + if (i == 4) { + %OptimizeFunctionOnNextCall(inc2); + } } -assertEquals(max_smi + 10000, o.x); +assertEquals(max_smi + 10, o.x); // Test deopt with count operation on keyed property. @@ -59,40 +64,52 @@ o = ["42"]; inc3(o, 0); assertEquals(43, o[0]); -var s = max_smi - 10000; +var s = max_smi - 10; o[0] = s; -for(var i = 0; i < 20000; i++) { +for(var i = 0; i < 20; i++) { inc3(o, 0); + if (i == 4) { + %OptimizeFunctionOnNextCall(inc3); + } } -assertEquals(max_smi + 10000, o[0]); +assertEquals(max_smi + 10, o[0]); inc3(o,"0"); -assertEquals(max_smi + 10001, o[0]); +assertEquals(max_smi + 11, o[0]); // Test bailout when accessing a non-existing array element. o[0] = 0; -for(var i = 0; i < 10000; i++) { +for(var i = 0; i < 5; i++) { inc3(o, 0); } -inc3(o,1); +%OptimizeFunctionOnNextCall(inc3); +inc3(o, 0); +inc3(o, 1); // Test bailout with count operation in a value context. function inc4(x,y) { return (x++) + y; } -for (var i = 0; i < 100000; ++i) assertEquals(3, inc4(2, 1)); +for (var i = 0; i < 5; ++i) assertEquals(3, inc4(2, 1)); +%OptimizeFunctionOnNextCall(inc4); +inc4(2, 1); assertEquals(3.1, inc4(2, 1.1)); function inc5(x,y) { return (++x) + y; } -for (var i = 0; i < 100000; ++i) assertEquals(4, inc5(2, 1)); +for (var i = 0; i < 5; ++i) assertEquals(4, inc5(2, 1)); +%OptimizeFunctionOnNextCall(inc5); +assertEquals(4, inc5(2, 1)); assertEquals(4.1, inc5(2, 1.1)); assertEquals(4.1, inc5(2.1, 1)); function inc6(o,y) { return (o.x++) + y; } o = {x:0}; -for (var i = 0; i < 10000; ++i) { +for (var i = 0; i < 5; ++i) { o.x = 42; assertEquals(43, inc6(o, 1)); } +%OptimizeFunctionOnNextCall(inc6); +o.x = 42; +assertEquals(43, inc6(o, 1)); o.x = 42; assertEquals(43.1, inc6(o, 1.1)); o.x = 42.1; @@ -100,10 +117,13 @@ assertEquals(43.1, inc6(o, 1)); function inc7(o,y) { return (++o.x) + y; } o = {x:0}; -for (var i = 0; i < 10000; ++i) { +for (var i = 0; i < 5; ++i) { o.x = 42; assertEquals(44, inc7(o, 1)); } +%OptimizeFunctionOnNextCall(inc7); +o.x = 42; +assertEquals(44, inc7(o, 1)); o.x = 42; assertEquals(44.1, inc7(o, 1.1)); o.x = 42.1; @@ -111,10 +131,13 @@ assertEquals(44.1, inc7(o, 1)); function inc8(o,y) { return (o[0]++) + y; } var q = [0]; -for (var i = 0; i < 100000; ++i) { +for (var i = 0; i < 5; ++i) { q[0] = 42; assertEquals(43, inc8(q, 1)); } +%OptimizeFunctionOnNextCall(inc8); +q[0] = 42; +assertEquals(43, inc8(q, 1)); q[0] = 42; assertEquals(43.1, inc8(q, 1.1)); q[0] = 42.1; @@ -122,10 +145,13 @@ assertEquals(43.1, inc8(q, 1)); function inc9(o,y) { return (++o[0]) + y; } q = [0]; -for (var i = 0; i < 100000; ++i) { +for (var i = 0; i < 5; ++i) { q[0] = 42; assertEquals(44, inc9(q, 1)); } +%OptimizeFunctionOnNextCall(inc9); +q[0] = 42; +assertEquals(44, inc9(q, 1)); q[0] = 42; assertEquals(44.1, inc9(q, 1.1)); q[0] = 42.1; @@ -135,11 +161,15 @@ assertEquals(44.1, inc9(q, 1)); function inc10(p) { return p.x++ } var g1 = {x:0}; var g2 = {y:0, x:42} -for (var i = 0; i < 10000; ++i) { +for (var i = 0; i < 5; ++i) { g1.x = 42; assertEquals(42, inc10(g1)); assertEquals(43, g1.x); } +%OptimizeFunctionOnNextCall(inc10); +g1.x = 42; +assertEquals(42, inc10(g1)); +assertEquals(43, g1.x); assertEquals(42, inc10(g2)); assertEquals(43, g2.x); diff --git a/test/mjsunit/compiler/deopt-args.js b/test/mjsunit/compiler/deopt-args.js index 780e2a24..17c397c1 100644 --- a/test/mjsunit/compiler/deopt-args.js +++ b/test/mjsunit/compiler/deopt-args.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + function g(x) { return x.f(0,1,2); } @@ -35,9 +37,11 @@ function f(a,b,c) { var object = { }; object.f = f; -for (var i = 0; i < 10000000; i++) { +for (var i = 0; i < 5; i++) { assertEquals(42, g(object)); } +%OptimizeFunctionOnNextCall(g); +g(object); object.f = function(a,b,c) { return 87; }; assertEquals(87, g(object)); diff --git a/test/mjsunit/compiler/global-accessors.js b/test/mjsunit/compiler/global-accessors.js new file mode 100644 index 00000000..bd031a83 --- /dev/null +++ b/test/mjsunit/compiler/global-accessors.js @@ -0,0 +1,47 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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 tests that no bailouts are missing by not hitting asserts in debug +// mode. + +test_count_operation() +test_compound_assignment() + +function f() {} +function test_count_operation() +{ + this.__defineSetter__('x', f); + this.__defineGetter__('x', f); + x = x++; +} + +function test_compound_assignment() +{ + this.__defineSetter__('y', f); + this.__defineGetter__('y', f); + y += y; +} diff --git a/test/mjsunit/compiler/inline-compare.js b/test/mjsunit/compiler/inline-compare.js index 6efe1542..d97dce2e 100644 --- a/test/mjsunit/compiler/inline-compare.js +++ b/test/mjsunit/compiler/inline-compare.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test that we can inline a function that returns the result of // a compare operation. function TestInlineCompare(o) { @@ -42,5 +44,7 @@ function TestInlineCompare(o) { var o = {}; o.f = function() { return 0 === 1; }; -for (var i = 0; i < 10000000; i++) TestInlineCompare(o); +for (var i = 0; i < 5; i++) TestInlineCompare(o); +%OptimizeFunctionOnNextCall(TestInlineCompare); +TestInlineCompare(o); TestInlineCompare({f: o.f}); diff --git a/test/mjsunit/compiler/inline-global-access.js b/test/mjsunit/compiler/inline-global-access.js index 37951734..b52652a7 100644 --- a/test/mjsunit/compiler/inline-global-access.js +++ b/test/mjsunit/compiler/inline-global-access.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test that we can inline a function that returns the result of a // global variable load. var GLOBAL; @@ -45,5 +47,7 @@ function TestInlineGlobalLoad(o) { var o = {}; o.f = function() { return GLOBAL; }; -for (var i = 0; i < 10000000; i++) TestInlineGlobalLoad(o); +for (var i = 0; i < 5; i++) TestInlineGlobalLoad(o); +%OptimizeFunctionOnNextCall(TestInlineGlobalLoad); +TestInlineGlobalLoad(o); TestInlineGlobalLoad({f: o.f}); diff --git a/test/mjsunit/compiler/inline-param.js b/test/mjsunit/compiler/inline-param.js index 8e0933a3..8fa80088 100644 --- a/test/mjsunit/compiler/inline-param.js +++ b/test/mjsunit/compiler/inline-param.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test that we can inline a call with a parameter. function TestInlineOneParam(o, p) { // Effect context. @@ -42,7 +44,9 @@ function TestInlineOneParam(o, p) { var obj = {x:42}; var o1 = {}; o1.f = function(o) { return o.x; }; -for (var i = 0; i < 10000; i++) TestInlineOneParam(o1, obj); +for (var i = 0; i < 5; i++) TestInlineOneParam(o1, obj); +%OptimizeFunctionOnNextCall(TestInlineOneParam); +TestInlineOneParam(o1, obj); TestInlineOneParam({f: o1.f}, {x:42}); @@ -76,5 +80,7 @@ function TestInlineTwoParams(o, p) { var o2 = {}; o2.h = function(i, j) { return i < j; }; -for (var i = 0; i < 10000; i++) TestInlineTwoParams(o2, 42); +for (var i = 0; i < 5; i++) TestInlineTwoParams(o2, 42); +%OptimizeFunctionOnNextCall(TestInlineTwoParams); +TestInlineTwoParams(o2, 42); TestInlineTwoParams({h: o2.h}, 42); diff --git a/test/mjsunit/compiler/inline-throw.js b/test/mjsunit/compiler/inline-throw.js new file mode 100644 index 00000000..e3aab39e --- /dev/null +++ b/test/mjsunit/compiler/inline-throw.js @@ -0,0 +1,69 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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. + +// Flags: --allow-natives-syntax + +// Test inlined functions contain throw. +function doThrow() { + throw "uha"; +} + +function f(x) { + if (x == 42) throw doThrow(); + if (x == 43) throw "wow"; + return x == 0; +} + +function g(x) { + return f(x); +} + +for (var i = 0; i < 5; i++) g(0); +%OptimizeFunctionOnNextCall(g); +assertEquals(true, g(0)); + +try { + g(42); +} catch(e) { + assertEquals("uha", e); +} + +// Test inlining in a test context. +function h(x) { + return f(x) ? "yes" : "no"; +} + +for (var i = 0; i < 5; i++) h(0); +%OptimizeFunctionOnNextCall(h); +assertEquals("yes", h(0)); + +try { + h(43); +} catch(e) { + assertEquals("wow", e); +} + diff --git a/test/mjsunit/compiler/inline-two.js b/test/mjsunit/compiler/inline-two.js index 30f579df..68372a97 100644 --- a/test/mjsunit/compiler/inline-two.js +++ b/test/mjsunit/compiler/inline-two.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test that we can inline a function that calls another function. function TestInlineX(o) { // Effect context. @@ -42,7 +44,9 @@ function TestInlineX(o) { var o2 = {}; o2.size = function() { return 42; } o2.g = function() { return this.size(); }; -for (var i = 0; i < 10000; i++) TestInlineX(o2); +for (var i = 0; i < 5; i++) TestInlineX(o2); +%OptimizeFunctionOnNextCall(TestInlineX); +TestInlineX(o2); TestInlineX({g: o2.g, size:o2.size}); @@ -65,7 +69,9 @@ obj.foo = function() { return 42; } var o3 = {}; o3.v = obj; o3.h = function() { return this.v.foo(); }; -for (var i = 0; i < 10000; i++) TestInlineX2(o3); +for (var i = 0; i < 5; i++) TestInlineX2(o3); +%OptimizeFunctionOnNextCall(TestInlineX2); +TestInlineX2(o3); TestInlineX2({h: o3.h, v:obj}); @@ -89,5 +95,7 @@ var o3 = {}; o3.v = obj; o3.f = function() { return this.v; } o3.h = function() { return this.f().g(); }; -for (var i = 0; i < 10000; i++) TestInlineFG(o3); +for (var i = 0; i < 5; i++) TestInlineFG(o3); +%OptimizeFunctionOnNextCall(TestInlineFG); +TestInlineFG(o3); TestInlineFG({h: o3.h, f: o3.f, v:obj}); diff --git a/test/mjsunit/compiler/logical-and.js b/test/mjsunit/compiler/logical-and.js index 1d31a0a5..783edb6a 100644 --- a/test/mjsunit/compiler/logical-and.js +++ b/test/mjsunit/compiler/logical-and.js @@ -46,8 +46,8 @@ assertFalse(AndBB(1, 0)); assertFalse(AndBB(0, 1)); assertFalse(AndBB(1, 1)); -assertFalse(AndBN(0, 0)); -assertTrue(AndBN(0, 1)); +assertEquals(0, AndBN(0, 0)); +assertEquals(1, AndBN(0, 1)); assertFalse(AndBN(1, 0)); assertEquals(1, AndBN(0, 1)); assertEquals(2, AndBN(0, 2)); diff --git a/test/mjsunit/compiler/optimized-function-calls.js b/test/mjsunit/compiler/optimized-function-calls.js index 1b5f3b03..c3e69d71 100644 --- a/test/mjsunit/compiler/optimized-function-calls.js +++ b/test/mjsunit/compiler/optimized-function-calls.js @@ -25,7 +25,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Flags: --expose-gc +// Flags: --allow-natives-syntax --expose-gc function f() { gc(); @@ -48,7 +48,9 @@ delete object.x; function call_f(o) { return o.f(); } -for (var i = 0; i < 10000000; i++) call_f(object); +for (var i = 0; i < 5; i++) call_f(object); +%OptimizeFunctionOnNextCall(call_f); +call_f(object); // Check that nested global function calls work. diff --git a/test/mjsunit/compiler/pic.js b/test/mjsunit/compiler/pic.js index 06f2b3eb..f5b136ce 100644 --- a/test/mjsunit/compiler/pic.js +++ b/test/mjsunit/compiler/pic.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + function GetX(o) { return o.x; } function CallF(o) { return o.f(); } function SetX(o) { o.x = 42; } @@ -53,11 +55,15 @@ o1.f = o2.f = o3.f = function() { return 99; } // Run the test until we're fairly sure we've optimized the // polymorphic property access. -for (var i = 0; i < 100000; i++) { +for (var i = 0; i < 5; i++) { Test(o1); Test(o2); Test(o3); } +%OptimizeFunctionOnNextCall(Test); +Test(o1); +Test(o2); +Test(o3); // Make sure that the following doesn't crash. GetX(0); diff --git a/test/mjsunit/compiler/property-calls.js b/test/mjsunit/compiler/property-calls.js index 3366971e..ad5ca81b 100644 --- a/test/mjsunit/compiler/property-calls.js +++ b/test/mjsunit/compiler/property-calls.js @@ -25,12 +25,16 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + function f(o) { return o.g(); } function g() { return 42; } var object = { }; object.g = g; -for (var i = 0; i < 10000000; i++) f(object); +for (var i = 0; i < 5; i++) f(object); +%OptimizeFunctionOnNextCall(f); +f(object); assertEquals(42, f(object)); object = { g: function() { return 87; } }; diff --git a/test/mjsunit/compiler/property-refs.js b/test/mjsunit/compiler/property-refs.js index 3f6f7937..6f1f19f0 100644 --- a/test/mjsunit/compiler/property-refs.js +++ b/test/mjsunit/compiler/property-refs.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + function Load(o) { return o.outer.x | o.outer.inner.y; } @@ -45,7 +47,9 @@ function LoadXY(x, y) { return Load(object); } -for (var i = 0; i < 10000; i++) LoadXY(i, i); +for (var i = 0; i < 5; i++) LoadXY(i, i); +%OptimizeFunctionOnNextCall(LoadXY); +LoadXY(6, 6); assertEquals(42 | 87, LoadXY(42, 87)); assertEquals(42 | 87, LoadXY(42, 87)); assertEquals(42 | 99, LoadXY(42, "99")); diff --git a/test/mjsunit/compiler/property-stores.js b/test/mjsunit/compiler/property-stores.js index 0dec82ad..4ffac07a 100644 --- a/test/mjsunit/compiler/property-stores.js +++ b/test/mjsunit/compiler/property-stores.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + var a = 42; var obj = {x: 0, @@ -33,11 +35,17 @@ var obj = {x: 0, h: function() { this.x = a; }}; var i; -for (i = 0; i < 10000; i++) { obj.f(); } +for (i = 0; i < 5; i++) { obj.f(); } +%OptimizeFunctionOnNextCall(obj.f); +obj.f(); assertEquals(7, obj.x); -for (i = 0; i < 10000; i++) { obj.g(); } +for (i = 0; i < 5; i++) { obj.g(); } +%OptimizeFunctionOnNextCall(obj.g); +obj.g(); assertEquals(43, obj.x); -for (i = 0; i < 10000; i++) { obj.h(); } +for (i = 0; i < 5; i++) { obj.h(); } +%OptimizeFunctionOnNextCall(obj.h); +obj.h(); assertEquals(42, obj.x); diff --git a/test/mjsunit/compiler/recursive-deopt.js b/test/mjsunit/compiler/recursive-deopt.js index 366f59ae..c921ade6 100644 --- a/test/mjsunit/compiler/recursive-deopt.js +++ b/test/mjsunit/compiler/recursive-deopt.js @@ -25,6 +25,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax function f(n) { // Force deopt in both leaf case and when returning. To make @@ -34,15 +35,11 @@ function f(n) { return f(n - 1) << one; } -function RunTests() { - assertEquals(1 << 1, f(0)); - assertEquals(1 << 2, f(1)); - assertEquals(1 << 5, f(4)); -} - var one = 1; -for (var i = 0; i < 1000000; i++) RunTests(); +for (var i = 0; i < 5; i++) assertEquals(1 << 5, f(4)); +%OptimizeFunctionOnNextCall(f); +assertEquals(1 << 5, f(4)); var one = { valueOf: function() { return 1; } }; -for (var j = 0; j < 100000; j++) RunTests(); +assertEquals(1 << 5, f(4)); diff --git a/test/mjsunit/compiler/regress-3218915.js b/test/mjsunit/compiler/regress-3218915.js index d27c319e..dfce815a 100644 --- a/test/mjsunit/compiler/regress-3218915.js +++ b/test/mjsunit/compiler/regress-3218915.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Regression test for failure to deoptimize properly when the most recent // side effect occurred in a comma expression in an effect context. @@ -40,7 +42,9 @@ function observe(x, y) { try {} finally {} return x; } function test(x) { return observe(this, ((0, side_effect()), x + 1)); } // Run test enough times to get it optimized. -for (var i = 0; i < 1000000; ++i) test(0); +for (var i = 0; i < 5; ++i) test(0); +%OptimizeFunctionOnNextCall(test); +test(0); // Force test to deopt. If it behaves normally, it should return the global // object. If the value of the call to side_effect() is lingering after the diff --git a/test/mjsunit/compiler/regress-loadfield.js b/test/mjsunit/compiler/regress-loadfield.js index a2028919..a3da156e 100644 --- a/test/mjsunit/compiler/regress-loadfield.js +++ b/test/mjsunit/compiler/regress-loadfield.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Regression test for GVN on field loads. function bar() {} @@ -58,8 +60,10 @@ a.p9 = ""; a.p10 = ""; a.p11 = ""; a.foo = "foo"; -for (var i = 0; i < 100000; i++) { +for (var i = 0; i < 5; i++) { test(a); } +%OptimizeFunctionOnNextCall(test); +test(a); test(""); diff --git a/test/mjsunit/compiler/regress-max.js b/test/mjsunit/compiler/regress-max.js index 94c543a6..ee2fd587 100644 --- a/test/mjsunit/compiler/regress-max.js +++ b/test/mjsunit/compiler/regress-max.js @@ -25,10 +25,12 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Test Math.max with negative zero as input. -function f(x, y) { return Math.max(x, y) } +// Flags: --allow-natives-syntax -for (var i = 0; i < 1000000; i++) f(0, 0); +// Test Math.max with negative zero as input. +for (var i = 0; i < 5; i++) Math.max(0, 0); +%OptimizeFunctionOnNextCall(Math.max); +Math.max(0, 0); -var r = f(-0, -0); +var r = Math.max(-0, -0); assertEquals(-Infinity, 1 / r); diff --git a/test/mjsunit/compiler/regress-stacktrace-methods.js b/test/mjsunit/compiler/regress-stacktrace-methods.js index 4900ccf8..4d287279 100644 --- a/test/mjsunit/compiler/regress-stacktrace-methods.js +++ b/test/mjsunit/compiler/regress-stacktrace-methods.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test stack traces with method calls. function Hest() {} function Svin() {} @@ -39,9 +41,12 @@ var o = new Hest(); var s = new Svin(); var v = 0; -for (var i = 0; i < 1000000; i++) { +for (var i = 0; i < 5; i++) { o.one(s); } +%OptimizeFunctionOnNextCall(Hest.prototype.one); +%OptimizeFunctionOnNextCall(Hest.prototype.three); +o.one(s); v = 42; @@ -57,8 +62,8 @@ try { assertTrue(p1 != -1); assertTrue(p3 < p2); assertTrue(p2 < p1); - assertTrue(stack.indexOf("36:56") != -1); - assertTrue(stack.indexOf("32:51") != -1); - assertTrue(stack.indexOf("34:38") != -1); - assertTrue(stack.indexOf("49:5") != -1); + assertTrue(stack.indexOf("38:56") != -1); + assertTrue(stack.indexOf("34:51") != -1); + assertTrue(stack.indexOf("36:38") != -1); + assertTrue(stack.indexOf("54:5") != -1); } diff --git a/test/mjsunit/compiler/simple-deopt.js b/test/mjsunit/compiler/simple-deopt.js index 8befd9f6..7f985acc 100644 --- a/test/mjsunit/compiler/simple-deopt.js +++ b/test/mjsunit/compiler/simple-deopt.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + function f(x) { return ~x; } @@ -59,7 +61,9 @@ obj.g = g; function k(o) { return o.g(); } -for (var i = 0; i < 1000000; i++) k(obj); +for (var i = 0; i < 5; i++) k(obj); +%OptimizeFunctionOnNextCall(k); +k(obj); assertEquals(42, k(obj)); assertEquals(87, k({g: function() { return 87; }})); @@ -88,9 +92,11 @@ assertEquals('lit[42]', LiteralToStack(42)); var str = "abc"; var r; function CallCharAt(n) { return str.charAt(n); } -for (var i = 0; i < 1000000; i++) { +for (var i = 0; i < 5; i++) { r = CallCharAt(0); } +%OptimizeFunctionOnNextCall(CallCharAt); +r = CallCharAt(0); assertEquals("a", r); diff --git a/test/mjsunit/compiler/simple-inlining.js b/test/mjsunit/compiler/simple-inlining.js index 219580f0..8bd37eae 100644 --- a/test/mjsunit/compiler/simple-inlining.js +++ b/test/mjsunit/compiler/simple-inlining.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test that we can inline a function that returns a constant. function TestInlineConstant(o) { // Effect context. @@ -41,7 +43,9 @@ function TestInlineConstant(o) { var o1 = {}; o1.f = function() { return 42; }; -for (var i = 0; i < 10000; i++) TestInlineConstant(o1); +for (var i = 0; i < 5; i++) TestInlineConstant(o1); +%OptimizeFunctionOnNextCall(TestInlineConstant); +TestInlineConstant(o1); TestInlineConstant({f: o1.f}); @@ -61,7 +65,9 @@ function TestInlineThis(o) { var o2 = {}; o2.g = function() { return this; }; -for (var i = 0; i < 10000; i++) TestInlineThis(o2); +for (var i = 0; i < 5; i++) TestInlineThis(o2); +%OptimizeFunctionOnNextCall(TestInlineThis); +TestInlineThis(o2); TestInlineThis({g: o2.g}); @@ -81,7 +87,9 @@ function TestInlineThisX(o) { var o3 = {y:0,x:42}; o3.h = function() { return this.x; }; -for (var i = 0; i < 10000; i++) TestInlineThisX(o3); +for (var i = 0; i < 5; i++) TestInlineThisX(o3); +%OptimizeFunctionOnNextCall(TestInlineThisX); +TestInlineThisX(o3); TestInlineThisX({h: o3.h, x:42}); @@ -101,7 +109,9 @@ function TestInlineThisXLength(o) { var o4 = {x:[1,2,3]}; o4.h = function() { return this.x.length; }; -for (var i = 0; i < 10000; i++) TestInlineThisXLength(o4); +for (var i = 0; i < 5; i++) TestInlineThisXLength(o4); +%OptimizeFunctionOnNextCall(TestInlineThisXLength); +TestInlineThisXLength(o4); TestInlineThisXLength({h: o4.h, x:[1,2,3]}); @@ -122,7 +132,9 @@ function TestInlineThisXY(o) { var o6 = {y:42} var o5 = {e:o6}; o5.h = function() { return this.e.y; }; -for (var i = 0; i < 10000; i++) TestInlineThisXY(o5); +for (var i = 0; i < 5; i++) TestInlineThisXY(o5); +%OptimizeFunctionOnNextCall(TestInlineThisXY); +TestInlineThisXY(o5); TestInlineThisXY({h: o5.h, e:o6}); @@ -142,5 +154,7 @@ function TestInlineThisX0(o) { var o7 = {x:[42,43,44]}; o7.foo = function() { return this.x[0]; }; -for (var i = 0; i < 10000; i++) TestInlineThisX0(o7); +for (var i = 0; i < 5; i++) TestInlineThisX0(o7); +%OptimizeFunctionOnNextCall(TestInlineThisX0); +TestInlineThisX0(o7); TestInlineThisX0({foo: o7.foo, x:[42,0,0]}); diff --git a/test/mjsunit/compiler/switch-bailout.js b/test/mjsunit/compiler/switch-bailout.js index 8011d44a..084074e0 100644 --- a/test/mjsunit/compiler/switch-bailout.js +++ b/test/mjsunit/compiler/switch-bailout.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test that bailing out of the optimized compilation doesn't mess with // the labels in the AST. function f(x) { @@ -35,5 +37,7 @@ function f(x) { return 99; } -for (var i = 0; i < 10000; i++) f("foo"); +for (var i = 0; i < 5; i++) f("foo"); +%OptimizeFunctionOnNextCall(f); +f("foo"); assertEquals(42, f("bar")); diff --git a/test/mjsunit/const-eval-init.js b/test/mjsunit/const-eval-init.js index 3f380d9d..d3503845 100644 --- a/test/mjsunit/const-eval-init.js +++ b/test/mjsunit/const-eval-init.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test the handling of initialization of deleted const variables. // This only makes sense in local scopes since the declaration and // initialization of consts in the global scope happen at the same @@ -67,9 +69,11 @@ function testAssignmentArgument(x) { assertEquals(7, x); } -for (var i = 0; i < 10000; i++) { +for (var i = 0; i < 5; i++) { testAssignmentArgument(); } +%OptimizeFunctionOnNextCall(testAssignmentArgument); +testAssignmentArgument(); assertEquals(6, x); __defineSetter__('x', function() { throw 42; }); diff --git a/test/mjsunit/const.js b/test/mjsunit/const.js index a48e82de..adb0b7ae 100644 --- a/test/mjsunit/const.js +++ b/test/mjsunit/const.js @@ -50,20 +50,20 @@ f(); var valueOfCount = 0; function g() { - const o = { valueOf: function() { valueOfCount++; return 42; } } - assertEquals(42, o); + const o = { valueOf: function() { valueOfCount++; return 42; } }; + assertEquals(42, +o); assertEquals(1, valueOfCount); o++; - assertEquals(42, o); + assertEquals(42, +o); assertEquals(3, valueOfCount); ++o; - assertEquals(42, o); + assertEquals(42, +o); assertEquals(5, valueOfCount); o--; - assertEquals(42, o); + assertEquals(42, +o); assertEquals(7, valueOfCount); --o; - assertEquals(42, o); + assertEquals(42, +o); assertEquals(9, valueOfCount); } diff --git a/test/mjsunit/cyrillic.js b/test/mjsunit/cyrillic.js index c5712e6f..9b21c4f8 100644 --- a/test/mjsunit/cyrillic.js +++ b/test/mjsunit/cyrillic.js @@ -187,9 +187,9 @@ for (var add_non_ascii_character_to_subject = 0; var ignore_case = (j == 0); var flag = ignore_case ? "i" : ""; var re = new RegExp(mixed, flag); - assertEquals(ignore_case || (full && add_non_ascii_character_to_subject), - re.test("A" + suffix), - 58 + flag + f); + var expected = + ignore_case || (full && !!add_non_ascii_character_to_subject); + assertEquals(expected, re.test("A" + suffix), 58 + flag + f); assertTrue(re.test("a" + suffix), 59 + flag + f); assertTrue(re.test("~" + suffix), 60 + flag + f); assertTrue(re.test(cyrillic.MIDDLE), 61 + flag + f); diff --git a/test/mjsunit/debug-evaluate-with.js b/test/mjsunit/debug-evaluate-with.js index 9d95a9f5..c19a7074 100644 --- a/test/mjsunit/debug-evaluate-with.js +++ b/test/mjsunit/debug-evaluate-with.js @@ -42,13 +42,13 @@ function listener(event, exec_state, event_data, data) { // Break point in first with block. assertEquals(2, exec_state.frame(0).evaluate('a').value()); assertEquals(2, exec_state.frame(0).evaluate('b').value()); - } else { + } else if (breakPointCount == 2) { // Break point in second with block. assertEquals(3, exec_state.frame(0).evaluate('a').value()); assertEquals(1, exec_state.frame(0).evaluate('b').value()); - - // Indicate that all was processed. - listenerComplete = true; + } else if (breakPointCount == 3) { + // Break point in eval with block. + assertEquals('local', exec_state.frame(0).evaluate('foo').value()); } } } catch (e) { @@ -72,6 +72,10 @@ function f() { }; f(); + +var foo = "global"; +eval("with({bar:'with'}) { (function g() { var foo = 'local'; debugger; })(); }"); + // Make sure that the debug event listener vas invoked. -assertTrue(listenerComplete); +assertEquals(3, breakPointCount); assertFalse(exception, "exception in listener") diff --git a/test/mjsunit/debug-scopes.js b/test/mjsunit/debug-scopes.js index 37cefd1a..40adf5b2 100644 --- a/test/mjsunit/debug-scopes.js +++ b/test/mjsunit/debug-scopes.js @@ -31,9 +31,9 @@ // Get the Debug object exposed from the debug context global object. -Debug = debug.Debug +Debug = debug.Debug; -var name; +var test_name; var listener_delegate; var listener_called; var exception; @@ -48,7 +48,7 @@ function listener(event, exec_state, event_data, data) { if (event == Debug.DebugEvent.Break) { break_count++; listener_called = true; - listener_delegate(exec_state) + listener_delegate(exec_state); } } catch (e) { exception = e; @@ -59,7 +59,7 @@ function listener(event, exec_state, event_data, data) { Debug.setListener(listener); -// Initialize for a noew test. +// Initialize for a new test. function BeginTest(name) { test_name = name; listener_delegate = null; @@ -72,7 +72,7 @@ function BeginTest(name) { // Check result of a test. function EndTest() { assertTrue(listener_called, "listerner not called for " + test_name); - assertNull(exception, test_name) + assertNull(exception, test_name); end_test_count++; } @@ -87,7 +87,9 @@ function CheckScopeChain(scopes, exec_state) { // Check the global object when hitting the global scope. if (scopes[i] == debug.ScopeType.Global) { - assertEquals(this, scope.scopeObject().value()); + // Objects don't have same class (one is "global", other is "Object", + // so just check the properties directly. + assertPropertiesEqual(this, scope.scopeObject().value()); } } @@ -96,7 +98,7 @@ function CheckScopeChain(scopes, exec_state) { // Send a scopes request and check the result. var json; - request_json = '{"seq":0,"type":"request","command":"scopes"}' + var request_json = '{"seq":0,"type":"request","command":"scopes"}'; var response_json = dcp.processDebugJSONRequest(request_json); var response = JSON.parse(response_json); assertEquals(scopes.length, response.body.scopes.length); @@ -121,7 +123,7 @@ function CheckScopeChain(scopes, exec_state) { // Check that the content of the scope is as expected. For functions just check // that there is a function. function CheckScopeContent(content, number, exec_state) { - var scope = exec_state.frame().scope(number) + var scope = exec_state.frame().scope(number); var count = 0; for (var p in content) { var property_mirror = scope.scopeObject().property(p); @@ -144,6 +146,10 @@ function CheckScopeContent(content, number, exec_state) { if (!scope.scopeObject().property('.catch-var').isUndefined()) { scope_size--; } + // Skip property with empty name. + if (!scope.scopeObject().property('').isUndefined()) { + scope_size--; + } if (count != scope_size) { print('Names found in scope:'); @@ -159,9 +165,9 @@ function CheckScopeContent(content, number, exec_state) { // Send a scope request for information on a single scope and check the // result. - request_json = '{"seq":0,"type":"request","command":"scope","arguments":{"number":' + var request_json = '{"seq":0,"type":"request","command":"scope","arguments":{"number":'; request_json += scope.scopeIndex(); - request_json += '}}' + request_json += '}}'; var response_json = dcp.processDebugJSONRequest(request_json); var response = JSON.parse(response_json); assertEquals(scope.scopeType(), response.body.type); @@ -191,8 +197,8 @@ listener_delegate = function(exec_state) { CheckScopeChain([debug.ScopeType.Local, debug.ScopeType.Global], exec_state); CheckScopeContent({}, 0, exec_state); -} -local_1() +}; +local_1(); EndTest(); @@ -207,8 +213,8 @@ listener_delegate = function(exec_state) { CheckScopeChain([debug.ScopeType.Local, debug.ScopeType.Global], exec_state); CheckScopeContent({a:1}, 0, exec_state); -} -local_2(1) +}; +local_2(1); EndTest(); @@ -224,8 +230,8 @@ listener_delegate = function(exec_state) { CheckScopeChain([debug.ScopeType.Local, debug.ScopeType.Global], exec_state); CheckScopeContent({a:1,x:3}, 0, exec_state); -} -local_3(1) +}; +local_3(1); EndTest(); @@ -242,8 +248,8 @@ listener_delegate = function(exec_state) { CheckScopeChain([debug.ScopeType.Local, debug.ScopeType.Global], exec_state); CheckScopeContent({a:1,b:2,x:3,y:4}, 0, exec_state); -} -local_4(1, 2) +}; +local_4(1, 2); EndTest(); @@ -259,8 +265,8 @@ listener_delegate = function(exec_state) { CheckScopeChain([debug.ScopeType.Local, debug.ScopeType.Global], exec_state); CheckScopeContent({}, 0, exec_state); -} -local_5() +}; +local_5(); EndTest(); @@ -276,8 +282,8 @@ listener_delegate = function(exec_state) { CheckScopeChain([debug.ScopeType.Local, debug.ScopeType.Global], exec_state); CheckScopeContent({i:5}, 0, exec_state); -} -local_6() +}; +local_6(); EndTest(); @@ -297,8 +303,8 @@ listener_delegate = function(exec_state) { CheckScopeChain([debug.ScopeType.Local, debug.ScopeType.Global], exec_state); CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6}, 0, exec_state); -} -local_7(1, 2) +}; +local_7(1, 2); EndTest(); @@ -316,8 +322,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Local, debug.ScopeType.Global], exec_state); CheckScopeContent({}, 0, exec_state); -} -with_1() +}; +with_1(); EndTest(); @@ -339,8 +345,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Global], exec_state); CheckScopeContent({}, 0, exec_state); CheckScopeContent({}, 1, exec_state); -} -with_2() +}; +with_2(); EndTest(); @@ -358,8 +364,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Local, debug.ScopeType.Global], exec_state); CheckScopeContent({a:1,b:2}, 0, exec_state); -} -with_3() +}; +with_3(); EndTest(); @@ -381,8 +387,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Global], exec_state); CheckScopeContent({a:2,b:1}, 0, exec_state); CheckScopeContent({a:1,b:2}, 1, exec_state); -} -with_4() +}; +with_4(); EndTest(); @@ -407,8 +413,8 @@ listener_delegate = function(exec_state) { CheckScopeContent(with_object, 1, exec_state); assertEquals(exec_state.frame().scope(0).scopeObject(), exec_state.frame().scope(1).scopeObject()); assertEquals(with_object, exec_state.frame().scope(1).scopeObject().value()); -} -with_5() +}; +with_5(); EndTest(); @@ -429,8 +435,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Closure, debug.ScopeType.Global], exec_state); CheckScopeContent({a:1}, 1, exec_state); -} -closure_1(1)() +}; +closure_1(1)(); EndTest(); @@ -454,8 +460,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Closure, debug.ScopeType.Global], exec_state); CheckScopeContent({a:1,x:3}, 1, exec_state); -} -closure_2(1, 2)() +}; +closure_2(1, 2)(); EndTest(); @@ -480,8 +486,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Closure, debug.ScopeType.Global], exec_state); CheckScopeContent({a:1,b:2,x:3,y:4}, 1, exec_state); -} -closure_3(1, 2)() +}; +closure_3(1, 2)(); EndTest(); @@ -509,8 +515,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Closure, debug.ScopeType.Global], exec_state); CheckScopeContent({a:1,b:2,x:3,y:4,f:function(){}}, 1, exec_state); -} -closure_4(1, 2)() +}; +closure_4(1, 2)(); EndTest(); @@ -537,8 +543,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Closure, debug.ScopeType.Global], exec_state); CheckScopeContent({a:1,b:2,x:3,y:4,f:function(){}}, 1, exec_state); -} -closure_5(1, 2)() +}; +closure_5(1, 2)(); EndTest(); @@ -555,7 +561,7 @@ function closure_6(a, b) { debugger; some_global = a; return f; - } + }; } return f(a, b); } @@ -567,8 +573,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Global], exec_state); CheckScopeContent({a:1}, 1, exec_state); CheckScopeContent({f:function(){}}, 2, exec_state); -} -closure_6(1, 2)() +}; +closure_6(1, 2)(); EndTest(); @@ -589,7 +595,7 @@ function closure_7(a, b) { debugger; some_global = a; return f; - } + }; } return f(a, b); } @@ -602,8 +608,45 @@ listener_delegate = function(exec_state) { CheckScopeContent({}, 0, exec_state); CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6}, 1, exec_state); CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6,f:function(){}}, 2, exec_state); +}; +closure_7(1, 2)(); +EndTest(); + + +// Closure that may be optimized out. +BeginTest("Closure 8"); +function closure_8() { + (function inner(x) { + debugger; + })(2); +} + +listener_delegate = function(exec_state) { + CheckScopeChain([debug.ScopeType.Local, + debug.ScopeType.Global], exec_state); + CheckScopeContent({x: 2}, 0, exec_state); +}; +closure_8(); +EndTest(); + + +BeginTest("Closure 9"); +function closure_9() { + eval("var y = 1;"); + eval("var z = 1;"); + (function inner(x) { + y++; + z++; + debugger; + })(2); } -closure_7(1, 2)() + +listener_delegate = function(exec_state) { + CheckScopeChain([debug.ScopeType.Local, + debug.ScopeType.Closure, + debug.ScopeType.Global], exec_state); +}; +closure_9(); EndTest(); @@ -629,7 +672,7 @@ function the_full_monty(a, b) { return f; } } - } + }; } } return f(a, b); @@ -649,15 +692,90 @@ listener_delegate = function(exec_state) { CheckScopeContent({j:13}, 3, exec_state); CheckScopeContent({a:1,b:2,x:9,y:10,i:11,j:12}, 4, exec_state); CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6,f:function(){}}, 5, exec_state); +}; +the_full_monty(1, 2)(); +EndTest(); + + +BeginTest("Closure inside With 1"); +function closure_in_with_1() { + with({x:1}) { + (function inner(x) { + debugger; + })(2); + } } -the_full_monty(1, 2)() + +listener_delegate = function(exec_state) { + CheckScopeChain([debug.ScopeType.Local, + debug.ScopeType.With, + debug.ScopeType.Closure, + debug.ScopeType.Global], exec_state); + CheckScopeContent({x: 2}, 0, exec_state); +}; +closure_in_with_1(); EndTest(); + +BeginTest("Closure inside With 2"); +function closure_in_with_2() { + with({x:1}) { + (function inner(x) { + with({x:3}) { + debugger; + } + })(2); + } +} + +listener_delegate = function(exec_state) { + CheckScopeChain([debug.ScopeType.With, + debug.ScopeType.Local, + debug.ScopeType.With, + debug.ScopeType.Closure, + debug.ScopeType.Global], exec_state); + CheckScopeContent({x: 3}, 0, exec_state); + CheckScopeContent({x: 2}, 1, exec_state); + CheckScopeContent({x: 1}, 2, exec_state); +}; +closure_in_with_2(); +EndTest(); + + +BeginTest("Closure inside With 3"); +function createClosure(a) { + var b = a + 1; + return function closure() { + var c = b; + (function inner(x) { + with({x:c}) { + debugger; + } + })(2); + }; +} + +function closure_in_with_3() { + var f = createClosure(0); + f(); +} + +listener_delegate = function(exec_state) { + CheckScopeChain([debug.ScopeType.With, + debug.ScopeType.Local, + debug.ScopeType.Closure, + debug.ScopeType.Closure, + debug.ScopeType.Global], exec_state); +} +closure_in_with_3(); +EndTest(); + + // Test global scope. BeginTest("Global"); listener_delegate = function(exec_state) { CheckScopeChain([debug.ScopeType.Global], exec_state); -} +}; debugger; EndTest(); @@ -677,8 +795,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Local, debug.ScopeType.Global], exec_state); CheckScopeContent({e:'Exception'}, 0, exec_state); -} -catch_block_1() +}; +catch_block_1(); EndTest(); @@ -701,8 +819,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Global], exec_state); CheckScopeContent({n:10}, 0, exec_state); CheckScopeContent({e:'Exception'}, 1, exec_state); -} -catch_block_2() +}; +catch_block_2(); EndTest(); @@ -725,8 +843,8 @@ listener_delegate = function(exec_state) { debug.ScopeType.Global], exec_state); CheckScopeContent({e:'Exception'}, 0, exec_state); CheckScopeContent({y:78}, 1, exec_state); -} -catch_block_3() +}; +catch_block_3(); EndTest(); @@ -752,10 +870,12 @@ listener_delegate = function(exec_state) { CheckScopeContent({n:10}, 0, exec_state); CheckScopeContent({e:'Exception'}, 1, exec_state); CheckScopeContent({y:98}, 2, exec_state); -} -catch_block_4() +}; +catch_block_4(); EndTest(); -assertEquals(begin_test_count, break_count, 'one or more tests did not enter the debugger'); -assertEquals(begin_test_count, end_test_count, 'one or more tests did not have its result checked'); +assertEquals(begin_test_count, break_count, + 'one or more tests did not enter the debugger'); +assertEquals(begin_test_count, end_test_count, + 'one or more tests did not have its result checked'); diff --git a/test/mjsunit/external-array.js b/test/mjsunit/external-array.js new file mode 100644 index 00000000..45d8be5a --- /dev/null +++ b/test/mjsunit/external-array.js @@ -0,0 +1,65 @@ +// Copyright 2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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. + +// Flags: --allow-natives-syntax + +// This is a regression test for overlapping key and value registers. +function f(a) { + a[0] = 0; + a[1] = 0; +} + +var a = new Int32Array(2); +for (var i = 0; i < 5; i++) { + f(a); +} +%OptimizeFunctionOnNextCall(f); +f(a); + +assertEquals(0, a[0]); +assertEquals(0, a[1]); + +// Test the correct behavior of the |length| property (which is read-only). +a = new Int32Array(42); +assertEquals(42, a.length); +a.length = 2; +assertEquals(42, a.length); +assertTrue(delete a.length); +a.length = 2 +assertEquals(2, a.length); + +// Test the correct behavior of the |BYTES_PER_ELEMENT| property (which is +// "constant", but not read-only). +a = new Int32Array(2); +assertEquals(4, a.BYTES_PER_ELEMENT); +a.BYTES_PER_ELEMENT = 42; +assertEquals(42, a.BYTES_PER_ELEMENT); +a = new Uint8Array(2); +assertEquals(1, a.BYTES_PER_ELEMENT); +a = new Int16Array(2); +assertEquals(2, a.BYTES_PER_ELEMENT); + diff --git a/test/mjsunit/global-accessors.js b/test/mjsunit/global-accessors.js new file mode 100644 index 00000000..47f4328b --- /dev/null +++ b/test/mjsunit/global-accessors.js @@ -0,0 +1,52 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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. + +// Test accessors on the global object. + +var x_ = 0; + +__defineSetter__('x', function(x) { x_ = x; }); +__defineGetter__('x', function() { return x_; }); + +__defineSetter__('y', function(x) { }); +__defineGetter__('y', function() { return 7; }); + +function f(a) { + x = x + a; + return x; +} + +function g(a) { + y = y + a; + return y; +} + +assertEquals(1, f(1)); +assertEquals(3, f(2)); + +assertEquals(7, g(1)); +assertEquals(7, g(2)); diff --git a/test/mjsunit/math-abs.js b/test/mjsunit/math-abs.js index bec1a01c..33df6f4c 100644 --- a/test/mjsunit/math-abs.js +++ b/test/mjsunit/math-abs.js @@ -35,13 +35,13 @@ function zero() { function test() { assertEquals(0, Math.abs(0)); assertEquals(0, Math.abs(zero())); - assertEquals(1/0, 1/Math.abs(-0)); // 0 == -0, so we use reciprocals. + assertEquals(0, Math.abs(-0)); assertEquals(Infinity, Math.abs(Infinity)); assertEquals(Infinity, Math.abs(-Infinity)); - assertNaN(Math.abs(NaN)); - assertNaN(Math.abs(-NaN)); - assertEquals('Infinity', Math.abs(Number('+Infinity').toString())); - assertEquals('Infinity', Math.abs(Number('-Infinity').toString())); + assertEquals(NaN, Math.abs(NaN)); + assertEquals(NaN, Math.abs(-NaN)); + assertEquals('Infinity', Math.abs(Number('+Infinity')).toString()); + assertEquals('Infinity', Math.abs(Number('-Infinity')).toString()); assertEquals('NaN', Math.abs(NaN).toString()); assertEquals('NaN', Math.abs(-NaN).toString()); @@ -85,8 +85,8 @@ function test() { assertEquals(two_31 - 1, Math.abs(two_31 - 1)); assertEquals(two_31 - 1, Math.abs(-two_31 + 1)); - assertNaN(Math.abs("not a number")); - assertNaN(Math.abs([1, 2, 3])); + assertEquals(NaN, Math.abs("not a number")); + assertEquals(NaN, Math.abs([1, 2, 3])); assertEquals(42, Math.abs({valueOf: function() { return 42; } })); assertEquals(42, Math.abs({valueOf: function() { return -42; } })); } diff --git a/test/mjsunit/math-floor.js b/test/mjsunit/math-floor.js index 0d1c0ac5..11f4cd78 100644 --- a/test/mjsunit/math-floor.js +++ b/test/mjsunit/math-floor.js @@ -1,4 +1,4 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Copyright 2011 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -25,7 +25,18 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Flags: --max-new-space-size=256 +// Flags: --max-new-space-size=256 --allow-natives-syntax + +function testFloor(expect, input) { + function test(n) { + return Math.floor(n); + } + assertEquals(expect, test(input)); + assertEquals(expect, test(input)); + assertEquals(expect, test(input)); + %OptimizeFunctionOnNextCall(test); + assertEquals(expect, test(input)); +} function zero() { var x = 0.5; @@ -33,82 +44,84 @@ function zero() { } function test() { - assertEquals(0, Math.floor(0)); - assertEquals(0, Math.floor(zero())); - assertEquals(1/-0, 1/Math.floor(-0)); // 0 == -0, so we use reciprocals. - assertEquals(Infinity, Math.floor(Infinity)); - assertEquals(-Infinity, Math.floor(-Infinity)); - assertNaN(Math.floor(NaN)); - - assertEquals(0, Math.floor(0.1)); - assertEquals(0, Math.floor(0.5)); - assertEquals(0, Math.floor(0.7)); - assertEquals(-1, Math.floor(-0.1)); - assertEquals(-1, Math.floor(-0.5)); - assertEquals(-1, Math.floor(-0.7)); - assertEquals(1, Math.floor(1)); - assertEquals(1, Math.floor(1.1)); - assertEquals(1, Math.floor(1.5)); - assertEquals(1, Math.floor(1.7)); - assertEquals(-1, Math.floor(-1)); - assertEquals(-2, Math.floor(-1.1)); - assertEquals(-2, Math.floor(-1.5)); - assertEquals(-2, Math.floor(-1.7)); - - assertEquals(0, Math.floor(Number.MIN_VALUE)); - assertEquals(-1, Math.floor(-Number.MIN_VALUE)); - assertEquals(Number.MAX_VALUE, Math.floor(Number.MAX_VALUE)); - assertEquals(-Number.MAX_VALUE, Math.floor(-Number.MAX_VALUE)); - assertEquals(Infinity, Math.floor(Infinity)); - assertEquals(-Infinity, Math.floor(-Infinity)); + testFloor(0, 0); + testFloor(0, zero()); + testFloor(-0, -0); + testFloor(Infinity, Infinity); + testFloor(-Infinity, -Infinity); + testFloor(NaN, NaN); + + testFloor(0, 0.1); + testFloor(0, 0.49999999999999994); + testFloor(0, 0.5); + testFloor(0, 0.7); + testFloor(-1, -0.1); + testFloor(-1, -0.49999999999999994); + testFloor(-1, -0.5); + testFloor(-1, -0.7); + testFloor(1, 1); + testFloor(1, 1.1); + testFloor(1, 1.5); + testFloor(1, 1.7); + testFloor(-1, -1); + testFloor(-2, -1.1); + testFloor(-2, -1.5); + testFloor(-2, -1.7); + + testFloor(0, Number.MIN_VALUE); + testFloor(-1, -Number.MIN_VALUE); + testFloor(Number.MAX_VALUE, Number.MAX_VALUE); + testFloor(-Number.MAX_VALUE, -Number.MAX_VALUE); + testFloor(Infinity, Infinity); + testFloor(-Infinity, -Infinity); // 2^30 is a smi boundary. var two_30 = 1 << 30; - assertEquals(two_30, Math.floor(two_30)); - assertEquals(two_30, Math.floor(two_30 + 0.1)); - assertEquals(two_30, Math.floor(two_30 + 0.5)); - assertEquals(two_30, Math.floor(two_30 + 0.7)); + testFloor(two_30, two_30); + testFloor(two_30, two_30 + 0.1); + testFloor(two_30, two_30 + 0.5); + testFloor(two_30, two_30 + 0.7); - assertEquals(two_30 - 1, Math.floor(two_30 - 1)); - assertEquals(two_30 - 1, Math.floor(two_30 - 1 + 0.1)); - assertEquals(two_30 - 1, Math.floor(two_30 - 1 + 0.5)); - assertEquals(two_30 - 1, Math.floor(two_30 - 1 + 0.7)); + testFloor(two_30 - 1, two_30 - 1); + testFloor(two_30 - 1, two_30 - 1 + 0.1); + testFloor(two_30 - 1, two_30 - 1 + 0.5); + testFloor(two_30 - 1, two_30 - 1 + 0.7); - assertEquals(-two_30, Math.floor(-two_30)); - assertEquals(-two_30, Math.floor(-two_30 + 0.1)); - assertEquals(-two_30, Math.floor(-two_30 + 0.5)); - assertEquals(-two_30, Math.floor(-two_30 + 0.7)); + testFloor(-two_30, -two_30); + testFloor(-two_30, -two_30 + 0.1); + testFloor(-two_30, -two_30 + 0.5); + testFloor(-two_30, -two_30 + 0.7); - assertEquals(-two_30 + 1, Math.floor(-two_30 + 1)); - assertEquals(-two_30 + 1, Math.floor(-two_30 + 1 + 0.1)); - assertEquals(-two_30 + 1, Math.floor(-two_30 + 1 + 0.5)); - assertEquals(-two_30 + 1, Math.floor(-two_30 + 1 + 0.7)); + testFloor(-two_30 + 1, -two_30 + 1); + testFloor(-two_30 + 1, -two_30 + 1 + 0.1); + testFloor(-two_30 + 1, -two_30 + 1 + 0.5); + testFloor(-two_30 + 1, -two_30 + 1 + 0.7); // 2^52 is a precision boundary. var two_52 = (1 << 30) * (1 << 22); - assertEquals(two_52, Math.floor(two_52)); - assertEquals(two_52, Math.floor(two_52 + 0.1)); + testFloor(two_52, two_52); + testFloor(two_52, two_52 + 0.1); assertEquals(two_52, two_52 + 0.5); - assertEquals(two_52, Math.floor(two_52 + 0.5)); + testFloor(two_52, two_52 + 0.5); assertEquals(two_52 + 1, two_52 + 0.7); - assertEquals(two_52 + 1, Math.floor(two_52 + 0.7)); - - assertEquals(two_52 - 1, Math.floor(two_52 - 1)); - assertEquals(two_52 - 1, Math.floor(two_52 - 1 + 0.1)); - assertEquals(two_52 - 1, Math.floor(two_52 - 1 + 0.5)); - assertEquals(two_52 - 1, Math.floor(two_52 - 1 + 0.7)); - - assertEquals(-two_52, Math.floor(-two_52)); - assertEquals(-two_52, Math.floor(-two_52 + 0.1)); - assertEquals(-two_52, Math.floor(-two_52 + 0.5)); - assertEquals(-two_52, Math.floor(-two_52 + 0.7)); - - assertEquals(-two_52 + 1, Math.floor(-two_52 + 1)); - assertEquals(-two_52 + 1, Math.floor(-two_52 + 1 + 0.1)); - assertEquals(-two_52 + 1, Math.floor(-two_52 + 1 + 0.5)); - assertEquals(-two_52 + 1, Math.floor(-two_52 + 1 + 0.7)); + testFloor(two_52 + 1, two_52 + 0.7); + + testFloor(two_52 - 1, two_52 - 1); + testFloor(two_52 - 1, two_52 - 1 + 0.1); + testFloor(two_52 - 1, two_52 - 1 + 0.5); + testFloor(two_52 - 1, two_52 - 1 + 0.7); + + testFloor(-two_52, -two_52); + testFloor(-two_52, -two_52 + 0.1); + testFloor(-two_52, -two_52 + 0.5); + testFloor(-two_52, -two_52 + 0.7); + + testFloor(-two_52 + 1, -two_52 + 1); + testFloor(-two_52 + 1, -two_52 + 1 + 0.1); + testFloor(-two_52 + 1, -two_52 + 1 + 0.5); + testFloor(-two_52 + 1, -two_52 + 1 + 0.7); } diff --git a/test/mjsunit/math-min-max.js b/test/mjsunit/math-min-max.js index 13d54a35..0833c5c8 100644 --- a/test/mjsunit/math-min-max.js +++ b/test/mjsunit/math-min-max.js @@ -76,9 +76,9 @@ assertEquals(-1, Math.min(+0, -0, -1)); assertEquals(-1, Math.min(-1, +0, -0)); assertEquals(-1, Math.min(+0, -1, -0)); assertEquals(-1, Math.min(-0, -1, +0)); -assertNaN(Math.min('oxen')); -assertNaN(Math.min('oxen', 1)); -assertNaN(Math.min(1, 'oxen')); +assertEquals(NaN, Math.min('oxen')); +assertEquals(NaN, Math.min('oxen', 1)); +assertEquals(NaN, Math.min(1, 'oxen')); // Test Math.max(). @@ -109,9 +109,9 @@ assertEquals(1, Math.max(+0, -0, +1)); assertEquals(1, Math.max(+1, +0, -0)); assertEquals(1, Math.max(+0, +1, -0)); assertEquals(1, Math.max(-0, +1, +0)); -assertNaN(Math.max('oxen')); -assertNaN(Math.max('oxen', 1)); -assertNaN(Math.max(1, 'oxen')); +assertEquals(NaN, Math.max('oxen')); +assertEquals(NaN, Math.max('oxen', 1)); +assertEquals(NaN, Math.max(1, 'oxen')); assertEquals(Infinity, 1/Math.max(ZERO, -0)); assertEquals(Infinity, 1/Math.max(-0, ZERO)); diff --git a/test/mjsunit/math-round.js b/test/mjsunit/math-round.js index 3b060885..1366557f 100644 --- a/test/mjsunit/math-round.js +++ b/test/mjsunit/math-round.js @@ -25,77 +25,133 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -assertEquals(0, Math.round(0)); -assertEquals(-0, Math.round(-0)); -assertEquals(Infinity, Math.round(Infinity)); -assertEquals(-Infinity, Math.round(-Infinity)); -assertNaN(Math.round(NaN)); - -assertEquals(1, Math.round(0.5)); -assertEquals(1, Math.round(0.7)); -assertEquals(1, Math.round(1)); -assertEquals(1, Math.round(1.1)); -assertEquals(1, Math.round(1.49999)); -assertEquals(1/-0, 1/Math.round(-0.5)); // Test for -0 result. -assertEquals(-1, Math.round(-0.5000000000000001)); -assertEquals(-1, Math.round(-0.7)); -assertEquals(-1, Math.round(-1)); -assertEquals(-1, Math.round(-1.1)); -assertEquals(-1, Math.round(-1.49999)); -assertEquals(-1, Math.round(-1.5)); - -assertEquals(9007199254740990, Math.round(9007199254740990)); -assertEquals(9007199254740991, Math.round(9007199254740991)); -assertEquals(-9007199254740990, Math.round(-9007199254740990)); -assertEquals(-9007199254740991, Math.round(-9007199254740991)); -assertEquals(Number.MAX_VALUE, Math.round(Number.MAX_VALUE)); -assertEquals(-Number.MAX_VALUE, Math.round(-Number.MAX_VALUE)); - -assertEquals(536870911, Math.round(536870910.5)); -assertEquals(536870911, Math.round(536870911)); -assertEquals(536870911, Math.round(536870911.4)); -assertEquals(536870912, Math.round(536870911.5)); -assertEquals(536870912, Math.round(536870912)); -assertEquals(536870912, Math.round(536870912.4)); -assertEquals(536870913, Math.round(536870912.5)); -assertEquals(536870913, Math.round(536870913)); -assertEquals(536870913, Math.round(536870913.4)); -assertEquals(1073741823, Math.round(1073741822.5)); -assertEquals(1073741823, Math.round(1073741823)); -assertEquals(1073741823, Math.round(1073741823.4)); -assertEquals(1073741824, Math.round(1073741823.5)); -assertEquals(1073741824, Math.round(1073741824)); -assertEquals(1073741824, Math.round(1073741824.4)); -assertEquals(1073741825, Math.round(1073741824.5)); -assertEquals(2147483647, Math.round(2147483646.5)); -assertEquals(2147483647, Math.round(2147483647)); -assertEquals(2147483647, Math.round(2147483647.4)); -assertEquals(2147483648, Math.round(2147483647.5)); -assertEquals(2147483648, Math.round(2147483648)); -assertEquals(2147483648, Math.round(2147483648.4)); -assertEquals(2147483649, Math.round(2147483648.5)); +// Flags: --allow-natives-syntax + +function testRound(expect, input) { + function doRound(input) { + return Math.round(input); + } + assertEquals(expect, doRound(input)); + assertEquals(expect, doRound(input)); + assertEquals(expect, doRound(input)); + %OptimizeFunctionOnNextCall(doRound); + assertEquals(expect, doRound(input)); +} + +testRound(0, 0); +testRound(-0, -0); +testRound(Infinity, Infinity); +testRound(-Infinity, -Infinity); +testRound(NaN, NaN); + +testRound(1, 0.5); +testRound(1, 0.7); +testRound(1, 1); +testRound(1, 1.1); +testRound(1, 1.49999); +testRound(-0, -0.5); +testRound(-1, -0.5000000000000001); +testRound(-1, -0.7); +testRound(-1, -1); +testRound(-1, -1.1); +testRound(-1, -1.49999); +testRound(-1, -1.5); + +testRound(9007199254740990, 9007199254740990); +testRound(9007199254740991, 9007199254740991); +testRound(-9007199254740990, -9007199254740990); +testRound(-9007199254740991, -9007199254740991); +testRound(Number.MAX_VALUE, Number.MAX_VALUE); +testRound(-Number.MAX_VALUE, -Number.MAX_VALUE); + +testRound(536870911, 536870910.5); +testRound(536870911, 536870911); +testRound(536870911, 536870911.4); +testRound(536870912, 536870911.5); +testRound(536870912, 536870912); +testRound(536870912, 536870912.4); +testRound(536870913, 536870912.5); +testRound(536870913, 536870913); +testRound(536870913, 536870913.4); +testRound(1073741823, 1073741822.5); +testRound(1073741823, 1073741823); +testRound(1073741823, 1073741823.4); +testRound(1073741824, 1073741823.5); +testRound(1073741824, 1073741824); +testRound(1073741824, 1073741824.4); +testRound(1073741825, 1073741824.5); +testRound(2147483647, 2147483646.5); +testRound(2147483647, 2147483647); +testRound(2147483647, 2147483647.4); +testRound(2147483648, 2147483647.5); +testRound(2147483648, 2147483648); +testRound(2147483648, 2147483648.4); +testRound(2147483649, 2147483648.5); // Tests based on WebKit LayoutTests -assertEquals(0, Math.round(0.4)); -assertEquals(-0, Math.round(-0.4)); -assertEquals(-0, Math.round(-0.5)); -assertEquals(1, Math.round(0.6)); -assertEquals(-1, Math.round(-0.6)); -assertEquals(2, Math.round(1.5)); -assertEquals(2, Math.round(1.6)); -assertEquals(-2, Math.round(-1.6)); -assertEquals(8640000000000000, Math.round(8640000000000000)); -assertEquals(8640000000000001, Math.round(8640000000000001)); -assertEquals(8640000000000002, Math.round(8640000000000002)); -assertEquals(9007199254740990, Math.round(9007199254740990)); -assertEquals(9007199254740991, Math.round(9007199254740991)); -assertEquals(1.7976931348623157e+308, Math.round(1.7976931348623157e+308)); -assertEquals(-8640000000000000, Math.round(-8640000000000000)); -assertEquals(-8640000000000001, Math.round(-8640000000000001)); -assertEquals(-8640000000000002, Math.round(-8640000000000002)); -assertEquals(-9007199254740990, Math.round(-9007199254740990)); -assertEquals(-9007199254740991, Math.round(-9007199254740991)); -assertEquals(-1.7976931348623157e+308, Math.round(-1.7976931348623157e+308)); -assertEquals(Infinity, Math.round(Infinity)); -assertEquals(-Infinity, Math.round(-Infinity)); +testRound(0, 0.4); +testRound(-0, -0.4); +testRound(-0, -0.5); +testRound(1, 0.6); +testRound(-1, -0.6); +testRound(2, 1.5); +testRound(2, 1.6); +testRound(-2, -1.6); +testRound(8640000000000000, 8640000000000000); +testRound(8640000000000001, 8640000000000001); +testRound(8640000000000002, 8640000000000002); +testRound(9007199254740990, 9007199254740990); +testRound(9007199254740991, 9007199254740991); +testRound(1.7976931348623157e+308, 1.7976931348623157e+308); +testRound(-8640000000000000, -8640000000000000); +testRound(-8640000000000001, -8640000000000001); +testRound(-8640000000000002, -8640000000000002); +testRound(-9007199254740990, -9007199254740990); +testRound(-9007199254740991, -9007199254740991); +testRound(-1.7976931348623157e+308, -1.7976931348623157e+308); +testRound(Infinity, Infinity); +testRound(-Infinity, -Infinity); + + // Some special double number cases. +var ulp = Math.pow(2, -1022 - 52); +var max_denormal = (Math.pow(2, 52) - 1) * ulp; +var min_normal = Math.pow(2, -1022); +var max_fraction = Math.pow(2, 52) - 0.5; +var min_nonfraction = Math.pow(2, 52); +var max_non_infinite = Number.MAX_VALUE; + +var max_smi31 = Math.pow(2,30) - 1; +var min_smi31 = -Math.pow(2,30); +var max_smi32 = Math.pow(2,31) - 1; +var min_smi32 = -Math.pow(2,31); + +testRound(0, ulp); +testRound(0, max_denormal); +testRound(0, min_normal); +testRound(0, 0.49999999999999994); +testRound(1, 0.5); +testRound(Math.pow(2,52), max_fraction); +testRound(min_nonfraction, min_nonfraction); +testRound(max_non_infinite, max_non_infinite); + +testRound(max_smi31, max_smi31 - 0.5); +testRound(max_smi31 + 1, max_smi31 + 0.5); +testRound(max_smi32, max_smi32 - 0.5); +testRound(max_smi32 + 1, max_smi32 + 0.5); + +testRound(-0, -ulp); +testRound(-0, -max_denormal); +testRound(-0, -min_normal); +testRound(-0, -0.49999999999999994); +testRound(-0, -0.5); +testRound(-Math.pow(2,52)+1, -max_fraction); +testRound(-min_nonfraction, -min_nonfraction); +testRound(-max_non_infinite, -max_non_infinite); + +testRound(min_smi31, min_smi31 - 0.5); +testRound(min_smi31 + 1, min_smi31 + 0.5); +testRound(min_smi32, min_smi32 - 0.5); +testRound(min_smi32 + 1, min_smi32 + 0.5); + + diff --git a/test/mjsunit/mirror-number.js b/test/mjsunit/mirror-number.js index 2db5df43..fc71c123 100644 --- a/test/mjsunit/mirror-number.js +++ b/test/mjsunit/mirror-number.js @@ -50,10 +50,10 @@ function testNumberMirror(n) { // Parse JSON representation and check. var fromJSON = eval('(' + json + ')'); assertEquals('number', fromJSON.type); - if (!isNaN(n)) { + if (isFinite(n)) { assertEquals(n, fromJSON.value); } else { - // NaN values are encoded as strings. + // NaN and Infinity values are encoded as strings. assertTrue(typeof fromJSON.value == 'string'); if (n === Infinity) { assertEquals('Infinity', fromJSON.value); diff --git a/test/mjsunit/mirror-object.js b/test/mjsunit/mirror-object.js index 18885549..d4d228cf 100644 --- a/test/mjsunit/mirror-object.js +++ b/test/mjsunit/mirror-object.js @@ -38,7 +38,7 @@ function MirrorRefCache(json_refs) { MirrorRefCache.prototype.lookup = function(handle) { return this.refs_[handle]; -} +}; function testObjectMirror(obj, cls_name, ctor_name, hasSpecialProperties) { // Create mirror and JSON representation. @@ -66,7 +66,7 @@ function testObjectMirror(obj, cls_name, ctor_name, hasSpecialProperties) { assertFalse(mirror.hasIndexedInterceptor(), 'No indexed interceptor expected'); var names = mirror.propertyNames(); - var properties = mirror.properties() + var properties = mirror.properties(); assertEquals(names.length, properties.length); for (var i = 0; i < properties.length; i++) { assertTrue(properties[i] instanceof debug.Mirror, 'Unexpected mirror hierachy'); @@ -130,15 +130,20 @@ function testObjectMirror(obj, cls_name, ctor_name, hasSpecialProperties) { assertTrue(typeof(fromJSON.properties[i].attributes) === 'undefined', 'Unexpected serialized attributes'); } - // Lookup the serialized object from the handle reference. + // Lookup the serialized object from the handle reference. var o = refs.lookup(fromJSON.properties[i].ref); assertTrue(o != void 0, 'Referenced object is not serialized'); assertEquals(properties[i].value().type(), o.type, 'Unexpected serialized property type for ' + name); if (properties[i].value().isPrimitive()) { - // Special check for NaN as NaN == NaN is false. - if (properties[i].value().isNumber() && isNaN(properties[i].value().value())) { - assertEquals('NaN', o.value, 'Unexpected serialized property value for ' + name); + if (properties[i].value().type() == "null" || + properties[i].value().type() == "undefined") { + // Null and undefined has no value property. + assertFalse("value" in o, 'Unexpected value property for ' + name); + } else if (properties[i].value().type() == "number" && + !isFinite(properties[i].value().value())) { + assertEquals(String(properties[i].value().value()), o.value, + 'Unexpected serialized property value for ' + name); } else { assertEquals(properties[i].value().value(), o.value, 'Unexpected serialized property value for ' + name); } diff --git a/test/mjsunit/mjsunit.js b/test/mjsunit/mjsunit.js index 436bdc81..faa5a438 100644 --- a/test/mjsunit/mjsunit.js +++ b/test/mjsunit/mjsunit.js @@ -31,234 +31,325 @@ function MjsUnitAssertionError(message) { this.stack = new Error("").stack; } -MjsUnitAssertionError.prototype.toString = function () { - return this.message; -} - /* * This file is included in all mini jsunit test cases. The test * framework expects lines that signal failed tests to start with * the f-word and ignore all other lines. */ -function MjsUnitToString(value) { - switch (typeof value) { - case "string": - return JSON.stringify(value); - case "number": - if (value === 0 && (1 / value) < 0) return "-0"; - case "boolean": - case "null": - case "undefined": - case "function": - return String(value); - case "object": - if (value === null) return "null"; - var clazz = Object.prototype.toString.call(value); - clazz = clazz.substring(8, clazz.length - 1); - switch (clazz) { + +MjsUnitAssertionError.prototype.toString = function () { + return this.message; +}; + + +// Expected and found values the same objects, or the same primitive +// values. +// For known primitive values, please use assertEquals. +var assertSame; + +// Expected and found values are identical primitive values or functions +// or similarly structured objects (checking internal properties +// of, e.g., Number and Date objects, the elements of arrays +// and the properties of non-Array objects). +var assertEquals; + +// The found object is an Array with the same length and elements +// as the expected object. The expected object doesn't need to be an Array, +// as long as it's "array-ish". +var assertArrayEquals; + +// The found object must have the same enumerable properties as the +// expected object. The type of object isn't checked. +var assertPropertiesEqual; + +// Assert that the string conversion of the found value is equal to +// the expected string. Only kept for backwards compatability, please +// check the real structure of the found value. +var assertToStringEquals; + +// Checks that the found value is true. Use with boolean expressions +// for tests that doesn't have their own assertXXX function. +var assertTrue; + +// Checks that the found value is false. +var assertFalse; + +// Checks that the found value is null. Kept for historical compatability, +// please just use assertEquals(null, expected). +var assertNull; + +// Checks that the found value is *not* null. +var assertNotNull; + +// Assert that the passed function or eval code throws an exception. +// The optional second argument is an exception constructor that the +// thrown exception is checked against with "instanceof". +// The optional third argument is a message type string that is compared +// to the type property on the thrown exception. +var assertThrows; + +// Assert that the passed function or eval code does not throw an exception. +var assertDoesNotThrow; + +// Asserts that the found value is an instance of the constructor passed +// as the second argument. +var assertInstanceof; + +// Assert that this code is never executed (i.e., always fails if executed). +var assertUnreachable; + +(function () { // Scope for utility functions. + + function classOf(object) { + // Argument must not be null or undefined. + var string = Object.prototype.toString.call(object); + // String has format [object <ClassName>]. + return string.substring(8, string.length - 1); + } + + + function PrettyPrint(value) { + switch (typeof value) { + case "string": + return JSON.stringify(value); + case "number": + if (value === 0 && (1 / value) < 0) return "-0"; + // FALLTHROUGH. + case "boolean": + case "undefined": + case "function": + return String(value); + case "object": + if (value === null) return "null"; + var objectClass = classOf(value); + switch (objectClass) { case "Number": case "String": case "Boolean": case "Date": - return clazz + "(" + MjsUnitToString(value.valueOf()) + ")"; + return objectClass + "(" + PrettyPrint(value.valueOf()) + ")"; case "RegExp": return value.toString(); case "Array": - return "[" + value.map(MjsUnitArrayElementToString).join(",") + "]"; + return "[" + value.map(PrettyPrintArrayElement).join(",") + "]"; case "Object": break; default: - return clazz + "()"; - } - // [[Class]] is "Object". - var constructor = value.constructor.name; - if (name) return name + "()"; - return "Object()"; - default: - return "-- unknown value --"; + return objectClass + "()"; + } + // [[Class]] is "Object". + var name = value.constructor.name; + if (name) return name + "()"; + return "Object()"; + default: + return "-- unknown value --"; + } } -} - - -function MjsUnitArrayElementToString(value, index, array) { - if (value === undefined && !(index in array)) return ""; - return MjsUnitToString(value); -} -function fail(expected, found, name_opt) { - var message = "Fail" + "ure"; - if (name_opt) { - // Fix this when we ditch the old test runner. - message += " (" + name_opt + ")"; + function PrettyPrintArrayElement(value, index, array) { + if (value === undefined && !(index in array)) return ""; + return PrettyPrint(value); } - message += ": expected <" + MjsUnitToString(expected) + - "> found <" + MjsUnitToString(found) + ">"; - throw new MjsUnitAssertionError(message); -} + function fail(expectedText, found, name_opt) { + var message = "Fail" + "ure"; + if (name_opt) { + // Fix this when we ditch the old test runner. + message += " (" + name_opt + ")"; + } -function deepObjectEquals(a, b) { - var aProps = []; - for (var key in a) - aProps.push(key); - var bProps = []; - for (var key in b) - bProps.push(key); - aProps.sort(); - bProps.sort(); - if (!deepEquals(aProps, bProps)) - return false; - for (var i = 0; i < aProps.length; i++) { - if (!deepEquals(a[aProps[i]], b[aProps[i]])) - return false; + message += ": expected <" + expectedText + + "> found <" + PrettyPrint(found) + ">"; + throw new MjsUnitAssertionError(message); } - return true; -} -function deepEquals(a, b) { - if (a == b) { - // Check for -0. - if (a === 0 && b === 0) return (1 / a) === (1 / b); - return true; - } - if (typeof a == "number" && typeof b == "number" && isNaN(a) && isNaN(b)) { - return true; - } - if (a == null || b == null) return false; - if (a.constructor === RegExp || b.constructor === RegExp) { - return (a.constructor === b.constructor) && (a.toString() === b.toString()); - } - if ((typeof a) !== 'object' || (typeof b) !== 'object' || - (a === null) || (b === null)) - return false; - if (a.constructor === Array) { - if (b.constructor !== Array) - return false; - if (a.length != b.length) + function deepObjectEquals(a, b) { + var aProps = Object.keys(a); + aProps.sort(); + var bProps = Object.keys(b); + bProps.sort(); + if (!deepEquals(aProps, bProps)) { return false; - for (var i = 0; i < a.length; i++) { - if (i in a) { - if (!(i in b) || !(deepEquals(a[i], b[i]))) - return false; - } else if (i in b) { + } + for (var i = 0; i < aProps.length; i++) { + if (!deepEquals(a[aProps[i]], b[aProps[i]])) { return false; } } return true; - } else { - return deepObjectEquals(a, b); } -} -function assertSame(expected, found, name_opt) { - if (found !== expected) { - fail(expected, found, name_opt); + function deepEquals(a, b) { + if (a === b) { + // Check for -0. + if (a === 0) return (1 / a) === (1 / b); + return true; + } + if (typeof a != typeof b) return false; + if (typeof a == "number") return isNaN(a) && isNaN(b); + if (typeof a !== "object" && typeof a !== "function") return false; + // Neither a nor b is primitive. + var objectClass = classOf(a); + if (objectClass !== classOf(b)) return false; + if (objectClass === "RegExp") { + // For RegExp, just compare pattern and flags using its toString. + return (a.toString() === b.toString()); + } + // Functions are only identical to themselves. + if (objectClass === "Function") return false; + if (objectClass === "Array") { + var elementCount = 0; + if (a.length != b.length) { + return false; + } + for (var i = 0; i < a.length; i++) { + if (!deepEquals(a[i], b[i])) return false; + } + return true; + } + if (objectClass == "String" || objectClass == "Number" || + objectClass == "Boolean" || objectClass == "Date") { + if (a.valueOf() !== b.valueOf()) return false; + } + return deepObjectEquals(a, b); } -} -function assertEquals(expected, found, name_opt) { - if (!deepEquals(found, expected)) { - fail(expected, found, name_opt); - } -} + assertSame = function assertSame(expected, found, name_opt) { + if (found === expected) { + if (expected !== 0 || (1 / expected) == (1 / found)) return; + } else if (isNaN(expected) && isNaN(found)) { + return; + } + fail(PrettyPrint(expected), found, name_opt); + }; -function assertArrayEquals(expected, found, name_opt) { - var start = ""; - if (name_opt) { - start = name_opt + " - "; - } - assertEquals(expected.length, found.length, start + "array length"); - if (expected.length == found.length) { - for (var i = 0; i < expected.length; ++i) { - assertEquals(expected[i], found[i], start + "array element at index " + i); + assertEquals = function assertEquals(expected, found, name_opt) { + if (!deepEquals(found, expected)) { + fail(PrettyPrint(expected), found, name_opt); } - } -} + }; -function assertTrue(value, name_opt) { - assertEquals(true, value, name_opt); -} + assertArrayEquals = function assertArrayEquals(expected, found, name_opt) { + var start = ""; + if (name_opt) { + start = name_opt + " - "; + } + assertEquals(expected.length, found.length, start + "array length"); + if (expected.length == found.length) { + for (var i = 0; i < expected.length; ++i) { + assertEquals(expected[i], found[i], + start + "array element at index " + i); + } + } + }; -function assertFalse(value, name_opt) { - assertEquals(false, value, name_opt); -} + assertPropertiesEqual = function assertPropertiesEqual(expected, found, + name_opt) { + // Check properties only. + if (!deepObjectEquals(expected, found)) { + fail(expected, found, name_opt); + } + }; -function assertNaN(value, name_opt) { - if (!isNaN(value)) { - fail("NaN", value, name_opt); - } -} + assertToStringEquals = function assertToStringEquals(expected, found, + name_opt) { + if (expected != String(found)) { + fail(expected, found, name_opt); + } + }; -function assertNull(value, name_opt) { - if (value !== null) { - fail("null", value, name_opt); - } -} + assertTrue = function assertTrue(value, name_opt) { + assertEquals(true, value, name_opt); + }; -function assertNotNull(value, name_opt) { - if (value === null) { - fail("not null", value, name_opt); - } -} + assertFalse = function assertFalse(value, name_opt) { + assertEquals(false, value, name_opt); + }; -function assertThrows(code, type_opt, cause_opt) { - var threwException = true; - try { - if (typeof code == 'function') { - code(); - } else { - eval(code); + assertNull = function assertNull(value, name_opt) { + if (value !== null) { + fail("null", value, name_opt); } - threwException = false; - } catch (e) { - if (typeof type_opt == 'function') - assertInstanceof(e, type_opt); - if (arguments.length >= 3) - assertEquals(e.type, cause_opt); - // Do nothing. - } - if (!threwException) assertTrue(false, "did not throw exception"); -} + }; -function assertInstanceof(obj, type) { - if (!(obj instanceof type)) { - assertTrue(false, "Object <" + obj + "> is not an instance of <" + type + ">"); - } -} + assertNotNull = function assertNotNull(value, name_opt) { + if (value === null) { + fail("not null", value, name_opt); + } + }; -function assertDoesNotThrow(code) { - try { - if (typeof code == 'function') { - code(); - } else { - eval(code); + assertThrows = function assertThrows(code, type_opt, cause_opt) { + var threwException = true; + try { + if (typeof code == 'function') { + code(); + } else { + eval(code); + } + threwException = false; + } catch (e) { + if (typeof type_opt == 'function') { + assertInstanceof(e, type_opt); + } + if (arguments.length >= 3) { + assertEquals(e.type, cause_opt); + } + // Success. + return; } - } catch (e) { - assertTrue(false, "threw an exception: " + (e.message || e)); - } -} + throw new MjsUnitAssertionError("Did not throw exception"); + }; -function assertUnreachable(name_opt) { - // Fix this when we ditch the old test runner. - var message = "Fail" + "ure: unreachable"; - if (name_opt) { - message += " - " + name_opt; - } - throw new MjsUnitAssertionError(message); -} + assertInstanceof = function assertInstanceof(obj, type) { + if (!(obj instanceof type)) { + var actualTypeName = null; + var actualConstructor = Object.prototypeOf(obj).constructor; + if (typeof actualConstructor == "function") { + actualTypeName = actualConstructor.name || String(actualConstructor); + } + fail("Object <" + PrettyPrint(obj) + "> is not an instance of <" + + (type.name || type) + ">" + + (actualTypeName ? " but of < " + actualTypeName + ">" : "")); + } + }; + + + assertDoesNotThrow = function assertDoesNotThrow(code, name_opt) { + try { + if (typeof code == 'function') { + code(); + } else { + eval(code); + } + } catch (e) { + fail("threw an exception: ", e.message || e, name_opt); + } + }; + + assertUnreachable = function assertUnreachable(name_opt) { + // Fix this when we ditch the old test runner. + var message = "Fail" + "ure: unreachable"; + if (name_opt) { + message += " - " + name_opt; + } + throw new MjsUnitAssertionError(message); + }; + +})(); + diff --git a/test/mjsunit/number-string-index-call.js b/test/mjsunit/number-string-index-call.js index 6f540c00..4391917c 100644 --- a/test/mjsunit/number-string-index-call.js +++ b/test/mjsunit/number-string-index-call.js @@ -26,7 +26,7 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // Flags: --call_regexp -var callbacks = [ function() {return 'foo'}, "nonobject", /abc/ ]; +var callbacks = [ function() { return 'foo'; }, "nonobject", /abc/ ]; assertEquals('foo', callbacks['0']()); assertThrows("callbacks['1']()"); -assertEquals('abc', callbacks['2']("abcdefg")); +assertEquals(['abc'], callbacks['2']("abcdefg")); diff --git a/test/mjsunit/number-tostring.js b/test/mjsunit/number-tostring.js index 83120808..35e77e2a 100644 --- a/test/mjsunit/number-tostring.js +++ b/test/mjsunit/number-tostring.js @@ -55,7 +55,7 @@ assertEquals("-90", (-90).toString()); assertEquals("-90.12", (-90.12).toString()); assertEquals("-0.1", (-0.1).toString()); assertEquals("-0.01", (-0.01).toString()); -assertEquals("-0.0123", (-0.0123).toString()) +assertEquals("-0.0123", (-0.0123).toString()); assertEquals("-111111111111111110000", (-111111111111111111111).toString()); assertEquals("-1.1111111111111111e+21", (-1111111111111111111111).toString()); assertEquals("-1.1111111111111111e+22", (-11111111111111111111111).toString()); @@ -219,7 +219,7 @@ assertEquals("0.12312312312312299889", (0.123123123123123).toFixed(20)); // Test that we round up even when the last digit generated is even. // dtoa does not do this in its original form. assertEquals("1", 0.5.toFixed(0), "0.5.toFixed(0)"); -assertEquals("-1", -0.5.toFixed(0), "-0.5.toFixed(0)"); +assertEquals("-1", (-0.5).toFixed(0), "(-0.5).toFixed(0)"); assertEquals("1.3", 1.25.toFixed(1), "1.25.toFixed(1)"); // This is bizare, but Spidermonkey and KJS behave the same. assertEquals("234.2040", (234.20405).toFixed(4), "234.2040.toFixed(4)"); diff --git a/test/mjsunit/object-seal.js b/test/mjsunit/object-seal.js index 3ce2367b..fb9bb921 100644 --- a/test/mjsunit/object-seal.js +++ b/test/mjsunit/object-seal.js @@ -91,7 +91,7 @@ assertEquals("foobar", desc.value); // Since writable is not affected by seal we should still be able to // update the values. obj.x = "43"; -assertEquals(43, obj.x); +assertEquals("43", obj.x); // Test on accessors. var obj2 = {}; @@ -142,7 +142,7 @@ assertFalse(Object.isSealed(arr)); Object.seal(arr); assertTrue(Object.isSealed(arr)); assertFalse(Object.isExtensible(arr)); -// Since the values in the array is still writable this object +// Since the values in the array is still writable this object // is not frozen. assertFalse(Object.isFrozen(arr)); @@ -186,5 +186,5 @@ Object.preventExtensions(obj4); assertFalse(Object.isSealed(obj4)); // Make sure that Object.seal returns the sealed object. -var obj4 = {} -assertTrue(obj4 === Object.seal(obj4)) +var obj4 = {}; +assertTrue(obj4 === Object.seal(obj4)); diff --git a/test/mjsunit/override-eval-with-non-function.js b/test/mjsunit/override-eval-with-non-function.js index aa93b253..edbcb19f 100644 --- a/test/mjsunit/override-eval-with-non-function.js +++ b/test/mjsunit/override-eval-with-non-function.js @@ -30,7 +30,7 @@ function test() { eval = /foo/; - assertEquals("foo", eval("foobar")); + assertEquals(["foo"], eval("foobar")); } test(); diff --git a/test/mjsunit/regexp-capture.js b/test/mjsunit/regexp-capture.js index dc24491d..8aae7179 100755 --- a/test/mjsunit/regexp-capture.js +++ b/test/mjsunit/regexp-capture.js @@ -39,19 +39,20 @@ assertEquals(0, "y".search(/(x)?\1y/)); assertEquals("z", "y".replace(/(x)?\1y/, "z")); assertEquals("", "y".replace(/(x)?y/, "$1")); assertEquals("undefined", "y".replace(/(x)?\1y/, - function($0, $1){ - return String($1); + function($0, $1){ + return String($1); })); -assertEquals("undefined", "y".replace(/(x)?y/, - function($0, $1){ - return String($1); +assertEquals("undefined", "y".replace(/(x)?y/, + function($0, $1){ + return String($1); })); -assertEquals("undefined", "y".replace(/(x)?y/, - function($0, $1){ - return $1; +assertEquals("undefined", "y".replace(/(x)?y/, + function($0, $1){ + return $1; })); // See https://bugzilla.mozilla.org/show_bug.cgi?id=476146 -assertEquals("bbc,b", /^(b+|a){1,2}?bc/.exec("bbc")); -assertEquals("bbaa,a,,a", /((\3|b)\2(a)){2,}/.exec("bbaababbabaaaaabbaaaabba")); +assertEquals(["bbc", "b"], /^(b+|a){1,2}?bc/.exec("bbc")); +assertEquals(["bbaa", "a", "", "a"], + /((\3|b)\2(a)){2,}/.exec("bbaababbabaaaaabbaaaabba")); diff --git a/test/mjsunit/regexp-compile.js b/test/mjsunit/regexp-compile.js index 6f8e7519..6a24325e 100644 --- a/test/mjsunit/regexp-compile.js +++ b/test/mjsunit/regexp-compile.js @@ -27,16 +27,16 @@ // Test that we don't cache the result of a regexp match across a // compile event. -var re = /x/; +var re = /x/; assertEquals("a.yb", "axyb".replace(re, ".")); -re.compile("y") +re.compile("y"); assertEquals("ax.b", "axyb".replace(re, ".")); re.compile("(x)"); -assertEquals("x,x", re.exec("axyb")); +assertEquals(["x", "x"], re.exec("axyb")); re.compile("(y)"); -assertEquals("y,y", re.exec("axyb")); +assertEquals(["y", "y"], re.exec("axyb")); diff --git a/test/mjsunit/regexp-static.js b/test/mjsunit/regexp-static.js index 9e73f3d6..0f849687 100644 --- a/test/mjsunit/regexp-static.js +++ b/test/mjsunit/regexp-static.js @@ -134,7 +134,8 @@ function f() { return RegExp.$1; }; assertEquals('abcd', 'abcd'.replace(re, f)); // lastParen where the last parenthesis didn't match. -assertEquals("foo,", /foo(?:a(x))?/.exec("foobx"), "lastParen setup"); +assertEquals(["foo",undefined], /foo(?:a(x))?/.exec("foobx"), + "lastParen setup"); assertEquals("", RegExp.lastParen, "lastParen"); // The same test for $1 to $9. diff --git a/test/mjsunit/regexp-string-methods.js b/test/mjsunit/regexp-string-methods.js index ef3bf6ea..56604a65 100644 --- a/test/mjsunit/regexp-string-methods.js +++ b/test/mjsunit/regexp-string-methods.js @@ -28,18 +28,18 @@ // Regexp shouldn't use String.prototype.slice() var s = new String("foo"); assertEquals("f", s.slice(0,1)); -String.prototype.slice = function() { return "x"; } +String.prototype.slice = function() { return "x"; }; assertEquals("x", s.slice(0,1)); -assertEquals("g", /g/.exec("gg")); +assertEquals(["g"], /g/.exec("gg")); // Regexp shouldn't use String.prototype.charAt() var f1 = new RegExp("f", "i"); -assertEquals("F", f1.exec("F")); +assertEquals(["F"], f1.exec("F")); assertEquals("f", "foo".charAt(0)); String.prototype.charAt = function(idx) { return 'g'; }; assertEquals("g", "foo".charAt(0)); var f2 = new RegExp("[g]", "i"); -assertEquals("G", f2.exec("G")); +assertEquals(["G"], f2.exec("G")); assertTrue(f2.ignoreCase); // On the other hand test is defined in a semi-coherent way as a call to exec. @@ -47,5 +47,5 @@ assertTrue(f2.ignoreCase); // We match other browsers in using the original value of RegExp.prototype.exec. // I.e., RegExp.prototype.test shouldn't use the current value of // RegExp.prototype.exec. -RegExp.prototype.exec = function(string) { return 'x'; } +RegExp.prototype.exec = function(string) { return 'x'; }; assertFalse(/f/.test('x')); diff --git a/test/mjsunit/regexp.js b/test/mjsunit/regexp.js index 24e1b21e..3c4f883b 100644 --- a/test/mjsunit/regexp.js +++ b/test/mjsunit/regexp.js @@ -333,9 +333,9 @@ assertFalse(/f(o)$\1/.test('foo'), "backref detects at_end"); // Check decimal escapes doesn't overflow. // (Note: \214 is interpreted as octal). -assertEquals(/\2147483648/.exec("\x8c7483648"), - ["\x8c7483648"], - "Overflow decimal escape"); +assertArrayEquals(["\x8c7483648"], + /\2147483648/.exec("\x8c7483648"), + "Overflow decimal escape"); // Check numbers in quantifiers doesn't overflow and doesn't throw on @@ -435,8 +435,8 @@ assertEquals(0, re.lastIndex); re.lastIndex = 42; re.someOtherProperty = 42; re.someDeletableProperty = 42; -re[37] = 37; -re[42] = 42; +re[37] = 37; +re[42] = 42; re.compile("ra+", "i"); assertEquals("ra+", re.source); @@ -466,7 +466,7 @@ assertEquals(37, re.someOtherProperty); assertEquals(37, re[42]); // Test boundary-checks. -function assertRegExpTest(re, input, test) { +function assertRegExpTest(re, input, test) { assertEquals(test, re.test(input), "test:" + re + ":" + input); } @@ -525,7 +525,7 @@ for (var i = 0; i < 100; i++) { assertEquals(1, res.index); assertEquals("axyzb", res.input); assertEquals(undefined, res.foobar); - + res.foobar = "Arglebargle"; res[3] = "Glopglyf"; assertEquals("Arglebargle", res.foobar); @@ -534,18 +534,18 @@ for (var i = 0; i < 100; i++) { // Test that we perform the spec required conversions in the correct order. var log; var string = "the string"; -var fakeLastIndex = { - valueOf: function() { +var fakeLastIndex = { + valueOf: function() { log.push("li"); return 0; - } + } }; -var fakeString = { +var fakeString = { toString: function() { log.push("ts"); return string; - }, - length: 0 + }, + length: 0 }; var re = /str/; diff --git a/test/mjsunit/regress/regress-1079.js b/test/mjsunit/regress/regress-1079.js index f3f3ce5b..208dc5b4 100644 --- a/test/mjsunit/regress/regress-1079.js +++ b/test/mjsunit/regress/regress-1079.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Getting the arguments property of an optimized function should not crash, // even if called through our optimized version of Function.prototype.apply. @@ -39,7 +41,8 @@ function unoptimized() { } } -for (var i = 0; i < 100000; ++i) { +for (var i = 0; i < 5; ++i) { assertEquals(3, optimized(1, 2, 3).length); } - +%OptimizeFunctionOnNextCall(optimized); +assertEquals(3, optimized(1, 2, 3).length); diff --git a/test/mjsunit/regress/regress-1106.js b/test/mjsunit/regress/regress-1106.js index 382fd1ba..e462d5da 100644 --- a/test/mjsunit/regress/regress-1106.js +++ b/test/mjsunit/regress/regress-1106.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test for issue 1106, where the optimizing compiler broke when accessing // a property lying on a prototype of the global object, and that prototype // object was in dictionary mode. @@ -37,14 +39,18 @@ x.foo = 5; function f() { return foo; } -for (i=0 ; i < 100000; ++i) { +for (i=0 ; i < 5; ++i) { assertEquals(5, f()); } +%OptimizeFunctionOnNextCall(f); +assertEquals(5, f()); // Test calls on functions defined in the prototype of the global object. x.gee = function() { return 42; } function g() { return gee(); } -for (i=0 ; i < 100000; ++i) { +for (i=0 ; i < 5; ++i) { assertEquals(42, g()); } +%OptimizeFunctionOnNextCall(g); +assertEquals(42, g()); diff --git a/test/mjsunit/regress/regress-1166.js b/test/mjsunit/regress/regress-1166.js index d75d397e..8278abae 100644 --- a/test/mjsunit/regress/regress-1166.js +++ b/test/mjsunit/regress/regress-1166.js @@ -25,11 +25,16 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Deoptimization after a short-circuit logical operation in an effect // context should not see the value of the expression. function observe(x, y) { return x; } function test(x) { return observe(1, ((false || false), x + 1)); } -for (var i = 0; i < 10000000; ++i) test(0); +for (var i = 0; i < 5; ++i) test(0); +%OptimizeFunctionOnNextCall(test); +test(0); + test("a"); diff --git a/test/mjsunit/regress/regress-1167.js b/test/mjsunit/regress/regress-1167.js index 8437d83b..2206f3d0 100644 --- a/test/mjsunit/regress/regress-1167.js +++ b/test/mjsunit/regress/regress-1167.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Deoptimization after a logical not in an effect context should not see a // value for the logical not expression. function test0(n) { @@ -68,5 +70,7 @@ function test2(x) { x + 1)); } -for (var i = 0; i < 1000000; ++i) test2(0); +for (var i = 0; i < 5; ++i) test2(0); +%OptimizeFunctionOnNextCall(test2); +test2(0); test2(test2); diff --git a/test/mjsunit/regress/regress-1199637.js b/test/mjsunit/regress/regress-1199637.js index d9116c1d..9c560a95 100644 --- a/test/mjsunit/regress/regress-1199637.js +++ b/test/mjsunit/regress/regress-1199637.js @@ -34,43 +34,43 @@ const NONE = 0; const READ_ONLY = 1; // Use DeclareGlobal... -%SetProperty(this.__proto__, "a", "1234", NONE); +%SetProperty(this.__proto__, "a", 1234, NONE); assertEquals(1234, a); eval("var a = 5678;"); assertEquals(5678, a); -%SetProperty(this.__proto__, "b", "1234", NONE); +%SetProperty(this.__proto__, "b", 1234, NONE); assertEquals(1234, b); eval("const b = 5678;"); assertEquals(5678, b); -%SetProperty(this.__proto__, "c", "1234", READ_ONLY); +%SetProperty(this.__proto__, "c", 1234, READ_ONLY); assertEquals(1234, c); eval("var c = 5678;"); assertEquals(5678, c); -%SetProperty(this.__proto__, "d", "1234", READ_ONLY); +%SetProperty(this.__proto__, "d", 1234, READ_ONLY); assertEquals(1234, d); eval("const d = 5678;"); assertEquals(5678, d); // Use DeclareContextSlot... -%SetProperty(this.__proto__, "x", "1234", NONE); +%SetProperty(this.__proto__, "x", 1234, NONE); assertEquals(1234, x); eval("with({}) { var x = 5678; }"); assertEquals(5678, x); -%SetProperty(this.__proto__, "y", "1234", NONE); +%SetProperty(this.__proto__, "y", 1234, NONE); assertEquals(1234, y); eval("with({}) { const y = 5678; }"); assertEquals(5678, y); -%SetProperty(this.__proto__, "z", "1234", READ_ONLY); +%SetProperty(this.__proto__, "z", 1234, READ_ONLY); assertEquals(1234, z); eval("with({}) { var z = 5678; }"); assertEquals(5678, z); -%SetProperty(this.__proto__, "w", "1234", READ_ONLY); +%SetProperty(this.__proto__, "w", 1234, READ_ONLY); assertEquals(1234, w); eval("with({}) { const w = 5678; }"); assertEquals(5678, w); diff --git a/test/mjsunit/regress/regress-1210.js b/test/mjsunit/regress/regress-1210.js index 9c708a58..7d4735a4 100644 --- a/test/mjsunit/regress/regress-1210.js +++ b/test/mjsunit/regress/regress-1210.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Deoptimization of the key expression in an arguments access should see // the arguments object as the value of the receiver. @@ -43,6 +45,8 @@ function test() { // Run enough to optimize assuming global 'a' is a smi. for (var i = 0; i < 1000000; ++i) test(0); +%OptimizeFunctionOnNextCall(test); +test(0); a = "hello"; test(0); diff --git a/test/mjsunit/regress/regress-1229.js b/test/mjsunit/regress/regress-1229.js new file mode 100644 index 00000000..e16d278b --- /dev/null +++ b/test/mjsunit/regress/regress-1229.js @@ -0,0 +1,87 @@ +// Copyright 2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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. + +// Flags: --allow-natives-syntax + +// Check that %NewObjectFromBound works correctly when called from optimized +// frame. +function foo(x, y, z) { + assertEquals(1, x); + assertEquals(2, y); + assertEquals(3, z); +} + +var bound_arg = [1]; + +function f(y, z) { + return %NewObjectFromBound(foo, bound_arg); +} + +// Check that %NewObjectFromBound looks at correct frame for inlined function. +function g(z, y) { + return f(y, z); /* f should be inlined into g, note rotated arguments */ +} + +// Check that %NewObjectFromBound looks at correct frame for inlined function. +function ff(x) { } +function h(z2, y2) { + var local_z = z2 >> 1; + ff(local_z); + var local_y = y2 >> 1; + ff(local_y); + return f(local_y, local_z); /* f should be inlined into h */ +} + +for (var i = 0; i < 5; i++) f(2, 3); +%OptimizeFunctionOnNextCall(f); +f(2, 3); + +for (var i = 0; i < 5; i++) g(3, 2); +%OptimizeFunctionOnNextCall(g); +g(3, 2); + +for (var i = 0; i < 5; i++) h(6, 4); +%OptimizeFunctionOnNextCall(h); +h(6, 4); + +// Check that %_IsConstructCall returns correct value when inlined +var NON_CONSTRUCT_MARKER = {}; +var CONSTRUCT_MARKER = {}; +function baz() { + return (!%_IsConstructCall()) ? NON_CONSTRUCT_MARKER : CONSTRUCT_MARKER; +} + +function bar(x, y, z) { + var non_construct = baz(); /* baz should be inlined */ + assertEquals(non_construct, NON_CONSTRUCT_MARKER); + var construct = new baz(); + assertEquals(construct, CONSTRUCT_MARKER); +} + +for (var i = 0; i < 5; i++) new bar(1, 2, 3); +%OptimizeFunctionOnNextCall(bar); +bar(1, 2, 3); diff --git a/test/mjsunit/regress/regress-1237.js b/test/mjsunit/regress/regress-1237.js index f97f9786..111df803 100644 --- a/test/mjsunit/regress/regress-1237.js +++ b/test/mjsunit/regress/regress-1237.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Deoptimization after a conditional expression in an effect context should // not see the value of the expression. function observe(x, y) { return x; } @@ -32,5 +34,8 @@ function test(x) { return observe(1, ((x? observe(observe.prototype.x): 'c'), x + 1)); } -for (var i = 0; i < 10000000; ++i) test(0); +for (var i = 0; i < 5; ++i) test(0); +%OptimizeFunctionOnNextCall(test); +test(0); + test("a"); diff --git a/test/mjsunit/regress/regress-1309.js b/test/mjsunit/regress/regress-1309.js new file mode 100644 index 00000000..122e5915 --- /dev/null +++ b/test/mjsunit/regress/regress-1309.js @@ -0,0 +1,30 @@ +// Copyright 2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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. + + +var o = Object.preventExtensions({}); +assertThrows("o.__proto__ = {}"); diff --git a/test/mjsunit/regress/regress-1323.js b/test/mjsunit/regress/regress-1323.js new file mode 100644 index 00000000..552a48db --- /dev/null +++ b/test/mjsunit/regress/regress-1323.js @@ -0,0 +1,50 @@ +// Copyright 2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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. + +// Flags: --allow-natives-syntax + +// Regression test for load/store operating with wrong number of bits. +function get(a, index) { + return a[index]; +} + +var a = new Float32Array(2); +a[0] = 2.5; +a[1] = 3.5; +for (var i = 0; i < 5; i++) get(a, 0); +%OptimizeFunctionOnNextCall(get); +assertEquals(2.5, get(a, 0)); +assertEquals(3.5, get(a, 1)); + +function set(a, index, value) { + a[index] = value; +} +for (var i = 0; i < 5; i++) set(a, 0, 4.5); +%OptimizeFunctionOnNextCall(set); +set(a, 0, 4.5); +assertEquals(4.5, a[0]); +assertEquals(3.5, a[1]); diff --git a/test/mjsunit/regress/regress-176.js b/test/mjsunit/regress/regress-176.js index b2048124..ef0c4f11 100644 --- a/test/mjsunit/regress/regress-176.js +++ b/test/mjsunit/regress/regress-176.js @@ -27,24 +27,24 @@ // See http://code.google.com/p/v8/issues/detail?id=176 -assertEquals("f,", - "foo".match(/(?:(?=(f)o))?f/).toString(), - "zero length match in (?:) with capture in lookahead"); -assertEquals("f,", - "foo".match(/(?=(f)o)?f/).toString(), - "zero length match in (?=) with capture in lookahead"); -assertEquals("fo,f", - "foo".match(/(?:(?=(f)o)f)?o/), - "non-zero length match with capture in lookahead"); -assertEquals("fo,f", - "foo".match(/(?:(?=(f)o)f?)?o/), - "non-zero length match with greedy ? in (?:)"); -assertEquals("fo,f", - "foo".match(/(?:(?=(f)o)f??)?o/), - "non-zero length match with non-greedy ? in (?:), o forces backtrack"); -assertEquals("fo,f", - "foo".match(/(?:(?=(f)o)f??)?./), - "non-zero length match with non-greedy ? in (?:), zero length match causes backtrack"); -assertEquals("f,", - "foo".match(/(?:(?=(f)o)fx)?./), - "x causes backtrack inside (?:)"); +assertArrayEquals(["f", undefined], + "foo".match(/(?:(?=(f)o))?f/), + "zero length match in (?:) with capture in lookahead"); +assertArrayEquals(["f", undefined], + "foo".match(/(?=(f)o)?f/), + "zero length match in (?=) with capture in lookahead"); +assertArrayEquals(["fo", "f"], + "foo".match(/(?:(?=(f)o)f)?o/), + "non-zero length match with capture in lookahead"); +assertArrayEquals(["fo", "f"], + "foo".match(/(?:(?=(f)o)f?)?o/), + "non-zero length match with greedy ? in (?:)"); +assertArrayEquals(["fo", "f"], + "foo".match(/(?:(?=(f)o)f??)?o/), + "non-zero length match with non-greedy ? in (?:), o forces backtrack"); +assertArrayEquals(["fo", "f"], + "foo".match(/(?:(?=(f)o)f??)?./), + "non-zero length match with non-greedy ? in (?:), zero length match causes backtrack"); +assertArrayEquals(["f", undefined], + "foo".match(/(?:(?=(f)o)fx)?./), + "x causes backtrack inside (?:)"); diff --git a/test/mjsunit/regress/regress-187.js b/test/mjsunit/regress/regress-187.js index 44d8d7a5..2f8b0a15 100644 --- a/test/mjsunit/regress/regress-187.js +++ b/test/mjsunit/regress/regress-187.js @@ -27,4 +27,4 @@ // See http://code.google.com/p/v8/issues/detail?id=187 -assertEquals("f,", "foo".match(/(?:(?=(f)o)fx|)./)); +assertEquals(["f", undefined], "foo".match(/(?:(?=(f)o)fx|)./)); diff --git a/test/mjsunit/regress/regress-3218915.js b/test/mjsunit/regress/regress-3218915.js index 5fcbcec3..4b08a6e8 100644 --- a/test/mjsunit/regress/regress-3218915.js +++ b/test/mjsunit/regress/regress-3218915.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Checks that comma expression in conditional context is processed correctly. function withCommaExpressionInConditional(x) { @@ -36,7 +38,9 @@ function withCommaExpressionInConditional(x) { return (y = x + 1, y > 1) ? 'medium' : 'small'; } -for (var i = 0; i < 10000; i++) { +for (var i = 0; i < 5; i++) { withCommaExpressionInConditional(i); } +%OptimizeFunctionOnNextCall(withCommaExpressionInConditional); +withCommaExpressionInConditional(i); withCommaExpressionInConditional("1") diff --git a/test/mjsunit/regress/regress-399.js b/test/mjsunit/regress/regress-399.js index 2ee998ba..6c8eab54 100644 --- a/test/mjsunit/regress/regress-399.js +++ b/test/mjsunit/regress/regress-399.js @@ -28,5 +28,5 @@ // See http://code.google.com/p/v8/issues/detail?id=399 var date = new Date(1.009804e12); -var year = String(date).match(/.*(200\d)/)[1]; +var year = Number(String(date).match(/.*(200\d)/)[1]); assertEquals(year, date.getFullYear()); diff --git a/test/mjsunit/regress/regress-78270.js b/test/mjsunit/regress/regress-78270.js new file mode 100644 index 00000000..b9ce286f --- /dev/null +++ b/test/mjsunit/regress/regress-78270.js @@ -0,0 +1,37 @@ +// Copyright 2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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. + +for (var i = 0; i < 10000; i++) { + try { + var object = { }; + function g(f0) { + var f0 = (object instanceof encodeURI)('foo'); + } + g(75); + } catch (g) { + } +} diff --git a/test/mjsunit/regress/regress-962.js b/test/mjsunit/regress/regress-962.js index f9f46e18..85ada0c8 100644 --- a/test/mjsunit/regress/regress-962.js +++ b/test/mjsunit/regress/regress-962.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + function L(scope) { this.s = new Object(); } L.prototype.c = function() { return true; } @@ -50,4 +52,6 @@ F.prototype.foo = function () { var ctx = new F; -for (var i = 0; i < 10000; i++) ctx.foo(); +for (var i = 0; i < 5; i++) ctx.foo(); +%OptimizeFunctionOnNextCall(F.prototype.foo); +ctx.foo(); diff --git a/test/mjsunit/strict-mode-opt.js b/test/mjsunit/strict-mode-opt.js new file mode 100644 index 00000000..e2eae33f --- /dev/null +++ b/test/mjsunit/strict-mode-opt.js @@ -0,0 +1,98 @@ +// Copyright 2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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. + +var global = 0; +var MAX = 1000000; + +// Attempt to inline strcit in non-strict. + +function strictToBeInlined(n) { + "use strict"; + global = "strict"; + if (n == MAX) { undefined_variable_strict = "value"; } +} + +function nonstrictCallStrict(n) { + strictToBeInlined(n); +} + +(function testInlineStrictInNonStrict() { + for (var i = 0; i <= MAX; i ++) { + try { + nonstrictCallStrict(i); + } catch (e) { + assertInstanceof(e, ReferenceError); + assertEquals(MAX, i); + return; + } + } + fail("ReferenceError after MAX iterations", "no exception"); +})(); + +// Attempt to inline non-strict in strict. + +function nonstrictToBeInlined(n) { + global = "nonstrict"; + if (n == MAX) { undefined_variable_nonstrict = "The nonstrict value"; } +} + +function strictCallNonStrict(n) { + "use strict"; + nonstrictToBeInlined(n); +} + +(function testInlineNonStrictInStrict() { + for (var i = 0; i <= MAX; i ++) { + try { + strictCallNonStrict(i); + } catch (e) { + fail("no exception", "exception"); + } + } + assertEquals("The nonstrict value", undefined_variable_nonstrict); +})(); + +// Optimize strict function. + +function strictAssignToUndefined(n) { + "use strict"; + global = "strict"; + if (n == MAX) { undefined_variable_strict_2 = "value"; } +} + +(function testOptimizeStrictAssignToUndefined() { + for (var i = 0; i <= MAX; i ++) { + try { + strictAssignToUndefined(i); + } catch (e) { + assertInstanceof(e, ReferenceError); + assertEquals(MAX, i); + return; + } + } + fail("ReferenceError after MAX iterations", "no exception"); +})(); diff --git a/test/mjsunit/strict-mode.js b/test/mjsunit/strict-mode.js index 84ccb30f..beca582a 100644 --- a/test/mjsunit/strict-mode.js +++ b/test/mjsunit/strict-mode.js @@ -387,10 +387,9 @@ for (var i = 0; i < future_reserved_words.length; i++) { testFutureReservedWord(future_reserved_words[i]); } -function testAssignToUndefined(should_throw) { - "use strict"; +function testAssignToUndefined(test, should_throw) { try { - possibly_undefined_variable_for_strict_mode_test = "should throw?"; + test(); } catch (e) { assertTrue(should_throw, "strict mode"); assertInstanceof(e, ReferenceError, "strict mode"); @@ -399,33 +398,78 @@ function testAssignToUndefined(should_throw) { assertFalse(should_throw, "strict mode"); } -testAssignToUndefined(true); -testAssignToUndefined(true); -testAssignToUndefined(true); +function repeat(n, f) { + for (var i = 0; i < n; i ++) { f(); } +} + +function assignToUndefined() { + "use strict"; + possibly_undefined_variable_for_strict_mode_test = "should throw?"; +} + +testAssignToUndefined(assignToUndefined, true); +testAssignToUndefined(assignToUndefined, true); +testAssignToUndefined(assignToUndefined, true); possibly_undefined_variable_for_strict_mode_test = "value"; -testAssignToUndefined(false); -testAssignToUndefined(false); -testAssignToUndefined(false); +testAssignToUndefined(assignToUndefined, false); +testAssignToUndefined(assignToUndefined, false); +testAssignToUndefined(assignToUndefined, false); delete possibly_undefined_variable_for_strict_mode_test; -testAssignToUndefined(true); -testAssignToUndefined(true); -testAssignToUndefined(true); +testAssignToUndefined(assignToUndefined, true); +testAssignToUndefined(assignToUndefined, true); +testAssignToUndefined(assignToUndefined, true); -function repeat(n, f) { - for (var i = 0; i < n; i ++) { f(); } -} - -repeat(10, function() { testAssignToUndefined(true); }); +repeat(10, function() { testAssignToUndefined(assignToUndefined, true); }); possibly_undefined_variable_for_strict_mode_test = "value"; -repeat(10, function() { testAssignToUndefined(false); }); +repeat(10, function() { testAssignToUndefined(assignToUndefined, false); }); delete possibly_undefined_variable_for_strict_mode_test; -repeat(10, function() { testAssignToUndefined(true); }); +repeat(10, function() { testAssignToUndefined(assignToUndefined, true); }); possibly_undefined_variable_for_strict_mode_test = undefined; -repeat(10, function() { testAssignToUndefined(false); }); +repeat(10, function() { testAssignToUndefined(assignToUndefined, false); }); + +function assignToUndefinedWithEval() { + "use strict"; + possibly_undefined_variable_for_strict_mode_test_with_eval = "should throw?"; + eval(""); +} + +testAssignToUndefined(assignToUndefinedWithEval, true); +testAssignToUndefined(assignToUndefinedWithEval, true); +testAssignToUndefined(assignToUndefinedWithEval, true); + +possibly_undefined_variable_for_strict_mode_test_with_eval = "value"; + +testAssignToUndefined(assignToUndefinedWithEval, false); +testAssignToUndefined(assignToUndefinedWithEval, false); +testAssignToUndefined(assignToUndefinedWithEval, false); + +delete possibly_undefined_variable_for_strict_mode_test_with_eval; + +testAssignToUndefined(assignToUndefinedWithEval, true); +testAssignToUndefined(assignToUndefinedWithEval, true); +testAssignToUndefined(assignToUndefinedWithEval, true); + +repeat(10, function() { + testAssignToUndefined(assignToUndefinedWithEval, true); + }); +possibly_undefined_variable_for_strict_mode_test_with_eval = "value"; +repeat(10, function() { + testAssignToUndefined(assignToUndefinedWithEval, false); + }); +delete possibly_undefined_variable_for_strict_mode_test_with_eval; +repeat(10, function() { + testAssignToUndefined(assignToUndefinedWithEval, true); + }); +possibly_undefined_variable_for_strict_mode_test_with_eval = undefined; +repeat(10, function() { + testAssignToUndefined(assignToUndefinedWithEval, false); + }); + + (function testDeleteNonConfigurable() { function delete_property(o) { diff --git a/test/mjsunit/string-charcodeat.js b/test/mjsunit/string-charcodeat.js index f18d0a53..8be6a092 100644 --- a/test/mjsunit/string-charcodeat.js +++ b/test/mjsunit/string-charcodeat.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + /** * @fileoverview Check all sorts of borderline cases for charCodeAt. */ @@ -159,9 +161,11 @@ function ConsNotSmiIndex() { assertTrue(isNaN(str.charCodeAt(0x7fffffff))); } -for (var i = 0; i < 100000; i++) { +for (var i = 0; i < 5; i++) { ConsNotSmiIndex(); } +%OptimizeFunctionOnNextCall(ConsNotSmiIndex); +ConsNotSmiIndex(); for (var i = 0; i != 10; i++) { @@ -222,6 +226,8 @@ function directlyOnPrototype() { assertEquals(99, "c".x(0)); } -for (var i = 0; i < 10000; i++) { +for (var i = 0; i < 5; i++) { directlyOnPrototype(); } +%OptimizeFunctionOnNextCall(directlyOnPrototype); +directlyOnPrototype(); diff --git a/test/mjsunit/string-fromcharcode.js b/test/mjsunit/string-fromcharcode.js index 7a2db5f9..1986dda0 100644 --- a/test/mjsunit/string-fromcharcode.js +++ b/test/mjsunit/string-fromcharcode.js @@ -65,8 +65,10 @@ function test(num) { assertEquals(" ", fcc(0x20 + 0.5, 0x20)); var receiver = (num < 5) ? String : (num < 9) ? "dummy" : 42; - fcc2 = (num < 5) ? fcc : (num < 9) ? constFun("dummy") : constFun(42); - var expected = (num < 5) ? " " : (num < 9) ? "dummy" : 42; + fcc2 = (num < 5) ? fcc + : (num < 9) ? constFun(Object("dummy")) + : constFun(Object(42)); + var expected = (num < 5) ? " " : (num < 9) ? Object("dummy") : Object(42); assertEquals(expected, receiver.fromCharCode(0x20)); assertEquals(expected, receiver.fromCharCode(0x20 - 0x10000)); assertEquals(expected, receiver.fromCharCode(0x20 + 0.5)); diff --git a/test/mjsunit/string-index.js b/test/mjsunit/string-index.js index 1d6476ea..315708ca 100644 --- a/test/mjsunit/string-index.js +++ b/test/mjsunit/string-index.js @@ -61,7 +61,7 @@ assertEquals("undefined", typeof(foo[3]), "out of range"); assertEquals("undefined", typeof(foo[-2]), "negative index"); var S = new String("foo"); -assertEquals("foo", S); +assertEquals(Object("foo"), S); assertEquals("f", S[0], "string object"); assertEquals("f", S["0"], "string object"); S[0] = 'bente'; @@ -131,7 +131,7 @@ assertEquals(false, 3 in S); assertEquals(false, "3" in S); var N = new Number(43); -assertEquals(43, N); +assertEquals(Object(43), N); N[-2] = "Alpha"; assertEquals("Alpha", N[-2]); N[0] = "Zappa"; diff --git a/test/mjsunit/sum-0-plus-undefined-is-NaN.js b/test/mjsunit/sum-0-plus-undefined-is-NaN.js index fb98d0cf..5d662d1d 100644 --- a/test/mjsunit/sum-0-plus-undefined-is-NaN.js +++ b/test/mjsunit/sum-0-plus-undefined-is-NaN.js @@ -1,4 +1,4 @@ -// Copyright 2010 the V8 project authors. All rights reserved. +// Copyright 2011 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + /** * @fileoverview Test addition of 0 and undefined. */ @@ -32,9 +34,11 @@ function sum(a, b) { return a + b; } function test(x, y, expectNaN) { - for (var i = 0; i < 1000; i++) { + for (var i = 0; i < 5; i++) { assertEquals(expectNaN, isNaN(sum(x, y))); } + %OptimizeFunctionOnNextCall(sum); + assertEquals(expectNaN, isNaN(sum(x, y))); } test(0, 1, false); diff --git a/test/mjsunit/testcfg.py b/test/mjsunit/testcfg.py index 3dd65817..f7b6d4da 100644 --- a/test/mjsunit/testcfg.py +++ b/test/mjsunit/testcfg.py @@ -107,7 +107,7 @@ class MjsunitTestCase(test.TestCase): return self_script def AfterRun(self, result): - if self.self_script and (not result.HasPreciousOutput()): + if self.self_script and (not result or (not result.HasPreciousOutput())): test.CheckedUnlink(self.self_script) class MjsunitTestConfiguration(test.TestConfiguration): diff --git a/test/mjsunit/third_party/object-keys.js b/test/mjsunit/third_party/object-keys.js index 999ce704..d09265c6 100644 --- a/test/mjsunit/third_party/object-keys.js +++ b/test/mjsunit/third_party/object-keys.js @@ -54,7 +54,7 @@ assertEquals(Object.keys(function () {}), []); assertEquals('string', typeof(Object.keys([1])[0])); function argsTest(a, b, c) { - assertEquals([0, 1, 2], Object.keys(arguments)); + assertEquals(['0', '1', '2'], Object.keys(arguments)); } argsTest(1, 2, 3); diff --git a/test/mjsunit/third_party/regexp-pcre.js b/test/mjsunit/third_party/regexp-pcre.js index dcb1b320..c049fb4d 100644 --- a/test/mjsunit/third_party/regexp-pcre.js +++ b/test/mjsunit/third_party/regexp-pcre.js @@ -1643,135 +1643,135 @@ res[1563] = /[^a]/m; res[1564] = /[^\xaa]/m; res[1565] = /[^\xaa]/m; res[1566] = / End of testinput10 /; -assertEquals("abc", res[1].exec("abc"), 0); -assertEquals("abc", res[1].exec("defabc"), 1); -assertEquals("abc", res[1].exec("Aabc"), 2); -assertEquals(null, res[1].exec("*** Failers", 3)); -assertEquals("abc", res[1].exec("Adefabc"), 4); -assertEquals("ABC", res[1].exec("ABC"), 5); -assertEquals("abc", res[2].exec("abc"), 6); -assertEquals(null, res[2].exec("Aabc", 7)); -assertEquals(null, res[2].exec("*** Failers", 8)); -assertEquals(null, res[2].exec("defabc", 9)); -assertEquals(null, res[2].exec("Adefabc", 10)); -assertEquals("abc", res[7].exec("abc"), 11); -assertEquals(null, res[7].exec("*** Failers", 12)); -assertEquals(null, res[7].exec("def\nabc", 13)); +assertToStringEquals("abc", res[1].exec("abc"), 0); +assertToStringEquals("abc", res[1].exec("defabc"), 1); +assertToStringEquals("abc", res[1].exec("Aabc"), 2); +assertNull(res[1].exec("*** Failers", 3)); +assertToStringEquals("abc", res[1].exec("Adefabc"), 4); +assertToStringEquals("ABC", res[1].exec("ABC"), 5); +assertToStringEquals("abc", res[2].exec("abc"), 6); +assertNull(res[2].exec("Aabc", 7)); +assertNull(res[2].exec("*** Failers", 8)); +assertNull(res[2].exec("defabc", 9)); +assertNull(res[2].exec("Adefabc", 10)); +assertToStringEquals("abc", res[7].exec("abc"), 11); +assertNull(res[7].exec("*** Failers", 12)); +assertNull(res[7].exec("def\nabc", 13)); assertThrows("var re = /x{5,4}/;", 14); assertThrows("var re = /[abcd/;", 15); assertThrows("var re = /[z-a]/;", 16); assertThrows("var re = /^*/;", 17); assertThrows("var re = /(abc/;", 18); assertThrows("var re = /(?# abc/;", 19); -assertEquals("cat", res[11].exec("this sentence eventually mentions a cat"), 20); -assertEquals("elephant", res[11].exec("this sentences rambles on and on for a while and then reaches elephant"), 21); -assertEquals("cat", res[12].exec("this sentence eventually mentions a cat"), 22); -assertEquals("elephant", res[12].exec("this sentences rambles on and on for a while and then reaches elephant"), 23); -assertEquals("CAT", res[13].exec("this sentence eventually mentions a CAT cat"), 24); -assertEquals("elephant", res[13].exec("this sentences rambles on and on for a while to elephant ElePhant"), 25); +assertToStringEquals("cat", res[11].exec("this sentence eventually mentions a cat"), 20); +assertToStringEquals("elephant", res[11].exec("this sentences rambles on and on for a while and then reaches elephant"), 21); +assertToStringEquals("cat", res[12].exec("this sentence eventually mentions a cat"), 22); +assertToStringEquals("elephant", res[12].exec("this sentences rambles on and on for a while and then reaches elephant"), 23); +assertToStringEquals("CAT", res[13].exec("this sentence eventually mentions a CAT cat"), 24); +assertToStringEquals("elephant", res[13].exec("this sentences rambles on and on for a while to elephant ElePhant"), 25); assertThrows("var re = /{4,5}abc/;", 26); -assertEquals("abcb,a,b,c", res[18].exec("abcb"), 27); -assertEquals("abcb,a,b,c", res[18].exec("O0abcb"), 28); -assertEquals("abcb,a,b,c", res[18].exec("O3abcb"), 29); -assertEquals("abcb,a,b,c", res[18].exec("O6abcb"), 30); -assertEquals("abcb,a,b,c", res[18].exec("O9abcb"), 31); -assertEquals("abcb,a,b,c", res[18].exec("O12abcb"), 32); -assertEquals("abc,a,,", res[19].exec("abc"), 33); -assertEquals("abc,a,,", res[19].exec("O0abc"), 34); -assertEquals("abc,a,,", res[19].exec("O3abc"), 35); -assertEquals("abc,a,,", res[19].exec("O6abc"), 36); -assertEquals("aba,,a,b", res[19].exec("aba"), 37); -assertEquals("aba,,a,b", res[19].exec("O0aba"), 38); -assertEquals("aba,,a,b", res[19].exec("O3aba"), 39); -assertEquals("aba,,a,b", res[19].exec("O6aba"), 40); -assertEquals("aba,,a,b", res[19].exec("O9aba"), 41); -assertEquals("aba,,a,b", res[19].exec("O12aba"), 42); -assertEquals("abc", res[20].exec("abc"), 43); -assertEquals(null, res[20].exec("*** Failers", 44)); -assertEquals(null, res[20].exec("abc\n", 45)); -assertEquals(null, res[20].exec("abc\ndef", 46)); -assertEquals("the quick brown fox", res[22].exec("the quick brown fox"), 47); -assertEquals("the quick brown fox", res[22].exec("this is a line with the quick brown fox"), 48); -assertEquals("abc", res[23].exec("abcdef"), 49); -assertEquals("abc", res[23].exec("abcdefB"), 50); -assertEquals("defabc,abc,abc,", res[24].exec("defabc"), 51); -assertEquals("Zdefabc,abc,abc,", res[24].exec("Zdefabc"), 52); -assertEquals("abc", res[25].exec("abc"), 53); -assertEquals(null, res[25].exec("*** Failers", 54)); -assertEquals("abc", res[26].exec("abcdef"), 55); -assertEquals("abc", res[26].exec("abcdefB"), 56); -assertEquals("defabc,abc,abc,", res[27].exec("defabc"), 57); -assertEquals("Zdefabc,abc,abc,", res[27].exec("Zdefabc"), 58); -assertEquals("the quick brown fox", res[28].exec("the quick brown fox"), 59); -assertEquals(null, res[28].exec("*** Failers", 60)); -assertEquals("The Quick Brown Fox", res[28].exec("The Quick Brown Fox"), 61); -assertEquals("the quick brown fox", res[29].exec("the quick brown fox"), 62); -assertEquals("The Quick Brown Fox", res[29].exec("The Quick Brown Fox"), 63); -assertEquals(null, res[30].exec("*** Failers", 64)); -assertEquals(null, res[30].exec("abc\ndef", 65)); -assertEquals("abc", res[31].exec("abc"), 66); -assertEquals(null, res[31].exec("abc\n", 67)); -assertEquals("abc,abc", res[33].exec("abc"), 68); +assertToStringEquals("abcb,a,b,c", res[18].exec("abcb"), 27); +assertToStringEquals("abcb,a,b,c", res[18].exec("O0abcb"), 28); +assertToStringEquals("abcb,a,b,c", res[18].exec("O3abcb"), 29); +assertToStringEquals("abcb,a,b,c", res[18].exec("O6abcb"), 30); +assertToStringEquals("abcb,a,b,c", res[18].exec("O9abcb"), 31); +assertToStringEquals("abcb,a,b,c", res[18].exec("O12abcb"), 32); +assertToStringEquals("abc,a,,", res[19].exec("abc"), 33); +assertToStringEquals("abc,a,,", res[19].exec("O0abc"), 34); +assertToStringEquals("abc,a,,", res[19].exec("O3abc"), 35); +assertToStringEquals("abc,a,,", res[19].exec("O6abc"), 36); +assertToStringEquals("aba,,a,b", res[19].exec("aba"), 37); +assertToStringEquals("aba,,a,b", res[19].exec("O0aba"), 38); +assertToStringEquals("aba,,a,b", res[19].exec("O3aba"), 39); +assertToStringEquals("aba,,a,b", res[19].exec("O6aba"), 40); +assertToStringEquals("aba,,a,b", res[19].exec("O9aba"), 41); +assertToStringEquals("aba,,a,b", res[19].exec("O12aba"), 42); +assertToStringEquals("abc", res[20].exec("abc"), 43); +assertNull(res[20].exec("*** Failers", 44)); +assertNull(res[20].exec("abc\n", 45)); +assertNull(res[20].exec("abc\ndef", 46)); +assertToStringEquals("the quick brown fox", res[22].exec("the quick brown fox"), 47); +assertToStringEquals("the quick brown fox", res[22].exec("this is a line with the quick brown fox"), 48); +assertToStringEquals("abc", res[23].exec("abcdef"), 49); +assertToStringEquals("abc", res[23].exec("abcdefB"), 50); +assertToStringEquals("defabc,abc,abc,", res[24].exec("defabc"), 51); +assertToStringEquals("Zdefabc,abc,abc,", res[24].exec("Zdefabc"), 52); +assertToStringEquals("abc", res[25].exec("abc"), 53); +assertNull(res[25].exec("*** Failers", 54)); +assertToStringEquals("abc", res[26].exec("abcdef"), 55); +assertToStringEquals("abc", res[26].exec("abcdefB"), 56); +assertToStringEquals("defabc,abc,abc,", res[27].exec("defabc"), 57); +assertToStringEquals("Zdefabc,abc,abc,", res[27].exec("Zdefabc"), 58); +assertToStringEquals("the quick brown fox", res[28].exec("the quick brown fox"), 59); +assertNull(res[28].exec("*** Failers", 60)); +assertToStringEquals("The Quick Brown Fox", res[28].exec("The Quick Brown Fox"), 61); +assertToStringEquals("the quick brown fox", res[29].exec("the quick brown fox"), 62); +assertToStringEquals("The Quick Brown Fox", res[29].exec("The Quick Brown Fox"), 63); +assertNull(res[30].exec("*** Failers", 64)); +assertNull(res[30].exec("abc\ndef", 65)); +assertToStringEquals("abc", res[31].exec("abc"), 66); +assertNull(res[31].exec("abc\n", 67)); +assertToStringEquals("abc,abc", res[33].exec("abc"), 68); assertThrows("var re = /)/;", 69); -assertEquals("-pr", res[35].exec("co-processors, and for"), 70); -assertEquals("<def>ghi<klm>", res[36].exec("abc<def>ghi<klm>nop"), 71); -assertEquals("<def>", res[37].exec("abc<def>ghi<klm>nop"), 72); -assertEquals("<def>", res[37].exec("abc<def>ghi<klm>nop"), 73); -assertEquals(null, res[37].exec("abc========def", 74)); -assertEquals(null, res[37].exec("foo", 75)); -assertEquals(null, res[37].exec("catfoo", 76)); -assertEquals(null, res[37].exec("*** Failers", 77)); -assertEquals(null, res[37].exec("the barfoo", 78)); -assertEquals(null, res[37].exec("and cattlefoo", 79)); -assertEquals("a", res[40].exec("a"), 80); -assertEquals(null, res[40].exec("a\n", 81)); -assertEquals(null, res[40].exec("*** Failers", 82)); -assertEquals("a", res[40].exec("Za"), 83); -assertEquals(null, res[40].exec("Za\n", 84)); -assertEquals("a", res[41].exec("a"), 85); -assertEquals("a", res[41].exec("a\n"), 86); -assertEquals("a", res[41].exec("Za\n"), 87); -assertEquals(null, res[41].exec("*** Failers", 88)); -assertEquals("a", res[41].exec("Za"), 89); -assertEquals("b", res[44].exec("foo\nbarbar"), 90); -assertEquals("a", res[44].exec("***Failers"), 91); -assertEquals("b", res[44].exec("rhubarb"), 92); -assertEquals("b", res[44].exec("barbell"), 93); -assertEquals("a", res[44].exec("abc\nbarton"), 94); -assertEquals("b", res[44].exec("foo\nbarbar"), 95); -assertEquals("a", res[44].exec("***Failers"), 96); -assertEquals("b", res[44].exec("rhubarb"), 97); -assertEquals("b", res[44].exec("barbell"), 98); -assertEquals("a", res[44].exec("abc\nbarton"), 99); -assertEquals("a", res[44].exec("abc"), 100); -assertEquals("a", res[44].exec("def\nabc"), 101); -assertEquals("a", res[44].exec("*** Failers"), 102); -assertEquals("a", res[44].exec("defabc"), 103); -assertEquals(null, res[45].exec("the bullock-cart", 104)); -assertEquals(null, res[45].exec("a donkey-cart race", 105)); -assertEquals(null, res[45].exec("*** Failers", 106)); -assertEquals(null, res[45].exec("cart", 107)); -assertEquals(null, res[45].exec("horse-and-cart", 108)); -assertEquals(null, res[45].exec("alphabetabcd", 109)); -assertEquals(null, res[45].exec("endingxyz", 110)); -assertEquals(null, res[45].exec("abxyZZ", 111)); -assertEquals(null, res[45].exec("abXyZZ", 112)); -assertEquals(null, res[45].exec("ZZZ", 113)); -assertEquals(null, res[45].exec("zZZ", 114)); -assertEquals(null, res[45].exec("bZZ", 115)); -assertEquals(null, res[45].exec("BZZ", 116)); -assertEquals(null, res[45].exec("*** Failers", 117)); -assertEquals(null, res[45].exec("ZZ", 118)); -assertEquals(null, res[45].exec("abXYZZ", 119)); -assertEquals(null, res[45].exec("zzz", 120)); -assertEquals(null, res[45].exec("bzz", 121)); -assertEquals(null, res[45].exec("bar", 122)); -assertEquals(null, res[45].exec("foobbar", 123)); -assertEquals(null, res[45].exec("*** Failers", 124)); -assertEquals(null, res[45].exec("fooabar", 125)); -assertEquals(null, res[46].exec("*** Failers", 126)); -assertEquals(null, res[46].exec("a", 127)); -assertEquals(null, res[48].exec("aaaaaa", 128)); +assertToStringEquals("-pr", res[35].exec("co-processors, and for"), 70); +assertToStringEquals("<def>ghi<klm>", res[36].exec("abc<def>ghi<klm>nop"), 71); +assertToStringEquals("<def>", res[37].exec("abc<def>ghi<klm>nop"), 72); +assertToStringEquals("<def>", res[37].exec("abc<def>ghi<klm>nop"), 73); +assertNull(res[37].exec("abc========def", 74)); +assertNull(res[37].exec("foo", 75)); +assertNull(res[37].exec("catfoo", 76)); +assertNull(res[37].exec("*** Failers", 77)); +assertNull(res[37].exec("the barfoo", 78)); +assertNull(res[37].exec("and cattlefoo", 79)); +assertToStringEquals("a", res[40].exec("a"), 80); +assertNull(res[40].exec("a\n", 81)); +assertNull(res[40].exec("*** Failers", 82)); +assertToStringEquals("a", res[40].exec("Za"), 83); +assertNull(res[40].exec("Za\n", 84)); +assertToStringEquals("a", res[41].exec("a"), 85); +assertToStringEquals("a", res[41].exec("a\n"), 86); +assertToStringEquals("a", res[41].exec("Za\n"), 87); +assertNull(res[41].exec("*** Failers", 88)); +assertToStringEquals("a", res[41].exec("Za"), 89); +assertToStringEquals("b", res[44].exec("foo\nbarbar"), 90); +assertToStringEquals("a", res[44].exec("***Failers"), 91); +assertToStringEquals("b", res[44].exec("rhubarb"), 92); +assertToStringEquals("b", res[44].exec("barbell"), 93); +assertToStringEquals("a", res[44].exec("abc\nbarton"), 94); +assertToStringEquals("b", res[44].exec("foo\nbarbar"), 95); +assertToStringEquals("a", res[44].exec("***Failers"), 96); +assertToStringEquals("b", res[44].exec("rhubarb"), 97); +assertToStringEquals("b", res[44].exec("barbell"), 98); +assertToStringEquals("a", res[44].exec("abc\nbarton"), 99); +assertToStringEquals("a", res[44].exec("abc"), 100); +assertToStringEquals("a", res[44].exec("def\nabc"), 101); +assertToStringEquals("a", res[44].exec("*** Failers"), 102); +assertToStringEquals("a", res[44].exec("defabc"), 103); +assertNull(res[45].exec("the bullock-cart", 104)); +assertNull(res[45].exec("a donkey-cart race", 105)); +assertNull(res[45].exec("*** Failers", 106)); +assertNull(res[45].exec("cart", 107)); +assertNull(res[45].exec("horse-and-cart", 108)); +assertNull(res[45].exec("alphabetabcd", 109)); +assertNull(res[45].exec("endingxyz", 110)); +assertNull(res[45].exec("abxyZZ", 111)); +assertNull(res[45].exec("abXyZZ", 112)); +assertNull(res[45].exec("ZZZ", 113)); +assertNull(res[45].exec("zZZ", 114)); +assertNull(res[45].exec("bZZ", 115)); +assertNull(res[45].exec("BZZ", 116)); +assertNull(res[45].exec("*** Failers", 117)); +assertNull(res[45].exec("ZZ", 118)); +assertNull(res[45].exec("abXYZZ", 119)); +assertNull(res[45].exec("zzz", 120)); +assertNull(res[45].exec("bzz", 121)); +assertNull(res[45].exec("bar", 122)); +assertNull(res[45].exec("foobbar", 123)); +assertNull(res[45].exec("*** Failers", 124)); +assertNull(res[45].exec("fooabar", 125)); +assertNull(res[46].exec("*** Failers", 126)); +assertNull(res[46].exec("a", 127)); +assertNull(res[48].exec("aaaaaa", 128)); assertThrows("var re = /a[b-a]/;", 129); assertThrows("var re = /a[/;", 130); assertThrows("var re = /*a/;", 131); @@ -1794,4810 +1794,4810 @@ assertThrows("var re = /a(?{\"{\"})b/;", 147); assertThrows("var re = /a(?{\"{\"}})b/;", 148); assertThrows("var re = /[a[:xyz:/;", 149); assertThrows("var re = /a{37,17}/;", 150); -assertEquals("abcd,a,d", res[58].exec("abcd"), 151); -assertEquals("abcd,a,d", res[58].exec("abcdC2"), 152); -assertEquals("abcd,a,d", res[58].exec("abcdC5"), 153); -assertEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyz"), 154); -assertEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyzC1"), 155); -assertEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyzG1"), 156); -assertEquals("abcdefghijklmno,abcdefghijklmno", res[60].exec("abcdefghijklmnopqrstuvwxyz"), 157); -assertEquals("abcdefghijklmno,abcdefghijklmno", res[60].exec("abcdefghijklmnopqrstuvwxyzC1G1"), 158); -assertEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].exec("abcdefghijklmnopqrstuvwxyz"), 159); -assertEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].exec("abcdefghijklmnopqrstuvwxyzC1G1L"), 160); -assertEquals("adef,a,,f", res[62].exec("adefG1G2G3G4L"), 161); -assertEquals("bcdef,bc,bc,f", res[62].exec("bcdefG1G2G3G4L"), 162); -assertEquals("adef,a,,f", res[62].exec("adefghijkC0"), 163); -assertEquals("abc\x00def", res[63].exec("abc\x00defLC0"), 164); -assertEquals("iss", res[69].exec("Mississippi"), 165); -assertEquals("iss", res[70].exec("Mississippi"), 166); -assertEquals("iss", res[71].exec("Mississippi"), 167); -assertEquals("iss", res[72].exec("Mississippi"), 168); -assertEquals("iss", res[73].exec("Mississippi"), 169); -assertEquals(null, res[73].exec("*** Failers", 170)); -assertEquals("iss", res[73].exec("MississippiA"), 171); -assertEquals("iss", res[73].exec("Mississippi"), 172); -assertEquals(null, res[73].exec("Mississippi", 173)); -assertEquals("iss", res[74].exec("ississippi"), 174); -assertEquals("abciss", res[75].exec("abciss\nxyzisspqr"), 175); -assertEquals("Mis", res[76].exec("Mississippi"), 176); -assertEquals("sis", res[76].exec("MississippiA"), 177); -assertEquals("ri ", res[76].exec("Missouri river"), 178); -assertEquals("riv", res[76].exec("Missouri riverA"), 179); -assertEquals("Mis", res[77].exec("Mississippi"), 180); -assertEquals("ab\n", res[78].exec("ab\nab\ncd"), 181); -assertEquals("ab\n", res[79].exec("ab\nab\ncd"), 182); -assertEquals("a", res[115].exec("a"), 183); -assertEquals("b", res[115].exec("b"), 184); -assertEquals("ab", res[115].exec("ab"), 185); -assertEquals("", res[115].exec("\\"), 186); -assertEquals("", res[115].exec("*** Failers"), 187); -assertEquals("", res[115].exec("N"), 188); -assertEquals("", res[116].exec("abcd"), 189); -assertEquals("", res[116].exec("-abc"), 190); -assertEquals("", res[116].exec("Nab-c"), 191); -assertEquals("", res[116].exec("*** Failers"), 192); -assertEquals("", res[116].exec("Nabc"), 193); -assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzz"), 194); -assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO0"), 195); -assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO1"), 196); -assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO2"), 197); -assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO3"), 198); -assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO4"), 199); -assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO5"), 200); -assertEquals("(abcd", res[118].exec("(abcd)"), 201); -assertEquals("(abcd", res[118].exec("(abcd)xyz"), 202); -assertEquals(null, res[118].exec("xyz(abcd)", 203)); -assertEquals(null, res[118].exec("(ab(xy)cd)pqr", 204)); -assertEquals(null, res[118].exec("(ab(xycd)pqr", 205)); -assertEquals(null, res[118].exec("() abc ()", 206)); -assertEquals(null, res[118].exec("12(abcde(fsh)xyz(foo(bar))lmno)89", 207)); -assertEquals(null, res[118].exec("*** Failers", 208)); -assertEquals("abcd", res[118].exec("abcd"), 209); -assertEquals("abcd", res[118].exec("abcd)"), 210); -assertEquals("(abcd", res[118].exec("(abcd"), 211); -assertEquals(null, res[118].exec("(ab(xy)cd)pqr", 212)); -assertEquals(null, res[118].exec("1(abcd)(x(y)z)pqr", 213)); -assertEquals("(abcd", res[118].exec("(abcd)"), 214); -assertEquals(null, res[118].exec("(ab(xy)cd)", 215)); -assertEquals(null, res[118].exec("(a(b(c)d)e)", 216)); -assertEquals(null, res[118].exec("((ab))", 217)); -assertEquals(null, res[118].exec("*** Failers", 218)); -assertEquals(null, res[118].exec("()", 219)); -assertEquals(null, res[118].exec("()", 220)); -assertEquals(null, res[118].exec("12(abcde(fsh)xyz(foo(bar))lmno)89", 221)); -assertEquals(null, res[118].exec("(ab(xy)cd)", 222)); -assertEquals(null, res[118].exec("(ab(xy)cd)", 223)); -assertEquals(null, res[118].exec("(ab(xy)cd)", 224)); -assertEquals(null, res[118].exec("(123ab(xy)cd)", 225)); -assertEquals(null, res[118].exec("(ab(xy)cd)", 226)); -assertEquals(null, res[118].exec("(123ab(xy)cd)", 227)); -assertEquals(null, res[118].exec("(ab(xy)cd)", 228)); -assertEquals("(abcd", res[118].exec("(abcd(xyz<p>qrs)123)"), 229); -assertEquals(null, res[118].exec("(ab(cd)ef)", 230)); -assertEquals(null, res[118].exec("(ab(cd(ef)gh)ij)", 231)); -assertEquals(null, res[146].exec("A", 232)); -assertEquals(null, res[146].exec("a", 233)); -assertEquals(null, res[147].exec("A", 234)); -assertEquals(null, res[147].exec("a", 235)); -assertEquals(null, res[147].exec("ab", 236)); -assertEquals(null, res[147].exec("aB", 237)); -assertEquals(null, res[147].exec("*** Failers", 238)); -assertEquals(null, res[147].exec("Ab", 239)); -assertEquals(null, res[147].exec("AB", 240)); +assertToStringEquals("abcd,a,d", res[58].exec("abcd"), 151); +assertToStringEquals("abcd,a,d", res[58].exec("abcdC2"), 152); +assertToStringEquals("abcd,a,d", res[58].exec("abcdC5"), 153); +assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyz"), 154); +assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyzC1"), 155); +assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyzG1"), 156); +assertToStringEquals("abcdefghijklmno,abcdefghijklmno", res[60].exec("abcdefghijklmnopqrstuvwxyz"), 157); +assertToStringEquals("abcdefghijklmno,abcdefghijklmno", res[60].exec("abcdefghijklmnopqrstuvwxyzC1G1"), 158); +assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].exec("abcdefghijklmnopqrstuvwxyz"), 159); +assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].exec("abcdefghijklmnopqrstuvwxyzC1G1L"), 160); +assertToStringEquals("adef,a,,f", res[62].exec("adefG1G2G3G4L"), 161); +assertToStringEquals("bcdef,bc,bc,f", res[62].exec("bcdefG1G2G3G4L"), 162); +assertToStringEquals("adef,a,,f", res[62].exec("adefghijkC0"), 163); +assertToStringEquals("abc\x00def", res[63].exec("abc\x00defLC0"), 164); +assertToStringEquals("iss", res[69].exec("Mississippi"), 165); +assertToStringEquals("iss", res[70].exec("Mississippi"), 166); +assertToStringEquals("iss", res[71].exec("Mississippi"), 167); +assertToStringEquals("iss", res[72].exec("Mississippi"), 168); +assertToStringEquals("iss", res[73].exec("Mississippi"), 169); +assertNull(res[73].exec("*** Failers", 170)); +assertToStringEquals("iss", res[73].exec("MississippiA"), 171); +assertToStringEquals("iss", res[73].exec("Mississippi"), 172); +assertNull(res[73].exec("Mississippi", 173)); +assertToStringEquals("iss", res[74].exec("ississippi"), 174); +assertToStringEquals("abciss", res[75].exec("abciss\nxyzisspqr"), 175); +assertToStringEquals("Mis", res[76].exec("Mississippi"), 176); +assertToStringEquals("sis", res[76].exec("MississippiA"), 177); +assertToStringEquals("ri ", res[76].exec("Missouri river"), 178); +assertToStringEquals("riv", res[76].exec("Missouri riverA"), 179); +assertToStringEquals("Mis", res[77].exec("Mississippi"), 180); +assertToStringEquals("ab\n", res[78].exec("ab\nab\ncd"), 181); +assertToStringEquals("ab\n", res[79].exec("ab\nab\ncd"), 182); +assertToStringEquals("a", res[115].exec("a"), 183); +assertToStringEquals("b", res[115].exec("b"), 184); +assertToStringEquals("ab", res[115].exec("ab"), 185); +assertToStringEquals("", res[115].exec("\\"), 186); +assertToStringEquals("", res[115].exec("*** Failers"), 187); +assertToStringEquals("", res[115].exec("N"), 188); +assertToStringEquals("", res[116].exec("abcd"), 189); +assertToStringEquals("", res[116].exec("-abc"), 190); +assertToStringEquals("", res[116].exec("Nab-c"), 191); +assertToStringEquals("", res[116].exec("*** Failers"), 192); +assertToStringEquals("", res[116].exec("Nabc"), 193); +assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzz"), 194); +assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO0"), 195); +assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO1"), 196); +assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO2"), 197); +assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO3"), 198); +assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO4"), 199); +assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO5"), 200); +assertToStringEquals("(abcd", res[118].exec("(abcd)"), 201); +assertToStringEquals("(abcd", res[118].exec("(abcd)xyz"), 202); +assertNull(res[118].exec("xyz(abcd)", 203)); +assertNull(res[118].exec("(ab(xy)cd)pqr", 204)); +assertNull(res[118].exec("(ab(xycd)pqr", 205)); +assertNull(res[118].exec("() abc ()", 206)); +assertNull(res[118].exec("12(abcde(fsh)xyz(foo(bar))lmno)89", 207)); +assertNull(res[118].exec("*** Failers", 208)); +assertToStringEquals("abcd", res[118].exec("abcd"), 209); +assertToStringEquals("abcd", res[118].exec("abcd)"), 210); +assertToStringEquals("(abcd", res[118].exec("(abcd"), 211); +assertNull(res[118].exec("(ab(xy)cd)pqr", 212)); +assertNull(res[118].exec("1(abcd)(x(y)z)pqr", 213)); +assertToStringEquals("(abcd", res[118].exec("(abcd)"), 214); +assertNull(res[118].exec("(ab(xy)cd)", 215)); +assertNull(res[118].exec("(a(b(c)d)e)", 216)); +assertNull(res[118].exec("((ab))", 217)); +assertNull(res[118].exec("*** Failers", 218)); +assertNull(res[118].exec("()", 219)); +assertNull(res[118].exec("()", 220)); +assertNull(res[118].exec("12(abcde(fsh)xyz(foo(bar))lmno)89", 221)); +assertNull(res[118].exec("(ab(xy)cd)", 222)); +assertNull(res[118].exec("(ab(xy)cd)", 223)); +assertNull(res[118].exec("(ab(xy)cd)", 224)); +assertNull(res[118].exec("(123ab(xy)cd)", 225)); +assertNull(res[118].exec("(ab(xy)cd)", 226)); +assertNull(res[118].exec("(123ab(xy)cd)", 227)); +assertNull(res[118].exec("(ab(xy)cd)", 228)); +assertToStringEquals("(abcd", res[118].exec("(abcd(xyz<p>qrs)123)"), 229); +assertNull(res[118].exec("(ab(cd)ef)", 230)); +assertNull(res[118].exec("(ab(cd(ef)gh)ij)", 231)); +assertNull(res[146].exec("A", 232)); +assertNull(res[146].exec("a", 233)); +assertNull(res[147].exec("A", 234)); +assertNull(res[147].exec("a", 235)); +assertNull(res[147].exec("ab", 236)); +assertNull(res[147].exec("aB", 237)); +assertNull(res[147].exec("*** Failers", 238)); +assertNull(res[147].exec("Ab", 239)); +assertNull(res[147].exec("AB", 240)); assertThrows("var re = /[\\200-\\110]/;", 241); -assertEquals("1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,46 ,47 ,48 ,49 ,50 ,51 ,52 ,53 ,54 ,55 ,56 ,57 ,58 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,66 ,67 ,68 ,69 ,70 ,71 ,72 ,73 ,74 ,75 ,76 ,77 ,78 ,79 ,80 ,81 ,82 ,83 ,84 ,85 ,86 ,87 ,88 ,89 ,90 ,91 ,92 ,93 ,94 ,95 ,96 ,97 ,98 ,99 ,100 ,101 ,102 ,103 ,104 ,105 ,106 ,107 ,108 ,109 ,110 ,111 ,112 ,113 ,114 ,115 ,116 ,117 ,118 ,119 ,120 ,121 ,122 ,123 ,124 ,125 ,126 ,127 ,128 ,129 ,130 ,131 ,132 ,133 ,134 ,135 ,136 ,137 ,138 ,139 ,140 ,141 ,142 ,143 ,144 ,145 ,146 ,147 ,148 ,149 ,150 ,151 ,152 ,153 ,154 ,155 ,156 ,157 ,158 ,159 ,160 ,161 ,162 ,163 ,164 ,165 ,166 ,167 ,168 ,169 ,170 ,171 ,172 ,173 ,174 ,175 ,176 ,177 ,178 ,179 ,180 ,181 ,182 ,183 ,184 ,185 ,186 ,187 ,188 ,189 ,190 ,191 ,192 ,193 ,194 ,195 ,196 ,197 ,198 ,199 ,200 ,201 ,202 ,203 ,204 ,205 ,206 ,207 ,208 ,209 ,210 ,211 ,212 ,213 ,214 ,215 ,216 ,217 ,218 ,219 ,220 ,221 ,222 ,223 ,224 ,225 ,226 ,227 ,228 ,229 ,230 ,231 ,232 ,233 ,234 ,235 ,236 ,237 ,238 ,239 ,240 ,241 ,242 ,243 ,244 ,245 ,246 ,247 ,248 ,249 ,250 ,251 ,252 ,253 ,254 ,255 ,256 ,257 ,258 ,259 ,260 ,261 ,262 ,263 ,264 ,265 ,266 ,267 ,268 ,269 ,ABC,ABC", res[149].exec("O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC"), 242); -assertEquals("mainmain,main,", res[151].exec("mainmain"), 243); -assertEquals("mainOmain,main,", res[151].exec("mainOmain"), 244); -assertEquals("aba,a,", res[153].exec("aba"), 245); -assertEquals("aabbaa,aa,", res[154].exec("aabbaa"), 246); -assertEquals("aabbaa,aa,", res[155].exec("aabbaa"), 247); -assertEquals("aabbaa,aa,", res[156].exec("aabbaa"), 248); -assertEquals("aabbaa,", res[157].exec("aabbaa"), 249); -assertEquals("aabbaa,aa,,", res[158].exec("aabbaa"), 250); -assertEquals("aabbaa,,", res[159].exec("aabbaa"), 251); -assertEquals("aabbaa,", res[160].exec("aabbaa"), 252); -assertEquals("aabbbaa,", res[161].exec("aabbbaa"), 253); -assertEquals("aabbbaa,", res[162].exec("aabbbaa"), 254); -assertEquals("aabbaa,", res[163].exec("aabbaa"), 255); -assertEquals("aabbbaa,", res[164].exec("aabbbaa"), 256); -assertEquals("aabbbaa,aa,,", res[165].exec("aabbbaa"), 257); -assertEquals("aabbbbaa,aa,,", res[166].exec("aabbbbaa"), 258); +assertToStringEquals("1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,46 ,47 ,48 ,49 ,50 ,51 ,52 ,53 ,54 ,55 ,56 ,57 ,58 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,66 ,67 ,68 ,69 ,70 ,71 ,72 ,73 ,74 ,75 ,76 ,77 ,78 ,79 ,80 ,81 ,82 ,83 ,84 ,85 ,86 ,87 ,88 ,89 ,90 ,91 ,92 ,93 ,94 ,95 ,96 ,97 ,98 ,99 ,100 ,101 ,102 ,103 ,104 ,105 ,106 ,107 ,108 ,109 ,110 ,111 ,112 ,113 ,114 ,115 ,116 ,117 ,118 ,119 ,120 ,121 ,122 ,123 ,124 ,125 ,126 ,127 ,128 ,129 ,130 ,131 ,132 ,133 ,134 ,135 ,136 ,137 ,138 ,139 ,140 ,141 ,142 ,143 ,144 ,145 ,146 ,147 ,148 ,149 ,150 ,151 ,152 ,153 ,154 ,155 ,156 ,157 ,158 ,159 ,160 ,161 ,162 ,163 ,164 ,165 ,166 ,167 ,168 ,169 ,170 ,171 ,172 ,173 ,174 ,175 ,176 ,177 ,178 ,179 ,180 ,181 ,182 ,183 ,184 ,185 ,186 ,187 ,188 ,189 ,190 ,191 ,192 ,193 ,194 ,195 ,196 ,197 ,198 ,199 ,200 ,201 ,202 ,203 ,204 ,205 ,206 ,207 ,208 ,209 ,210 ,211 ,212 ,213 ,214 ,215 ,216 ,217 ,218 ,219 ,220 ,221 ,222 ,223 ,224 ,225 ,226 ,227 ,228 ,229 ,230 ,231 ,232 ,233 ,234 ,235 ,236 ,237 ,238 ,239 ,240 ,241 ,242 ,243 ,244 ,245 ,246 ,247 ,248 ,249 ,250 ,251 ,252 ,253 ,254 ,255 ,256 ,257 ,258 ,259 ,260 ,261 ,262 ,263 ,264 ,265 ,266 ,267 ,268 ,269 ,ABC,ABC", res[149].exec("O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC"), 242); +assertToStringEquals("mainmain,main,", res[151].exec("mainmain"), 243); +assertToStringEquals("mainOmain,main,", res[151].exec("mainOmain"), 244); +assertToStringEquals("aba,a,", res[153].exec("aba"), 245); +assertToStringEquals("aabbaa,aa,", res[154].exec("aabbaa"), 246); +assertToStringEquals("aabbaa,aa,", res[155].exec("aabbaa"), 247); +assertToStringEquals("aabbaa,aa,", res[156].exec("aabbaa"), 248); +assertToStringEquals("aabbaa,", res[157].exec("aabbaa"), 249); +assertToStringEquals("aabbaa,aa,,", res[158].exec("aabbaa"), 250); +assertToStringEquals("aabbaa,,", res[159].exec("aabbaa"), 251); +assertToStringEquals("aabbaa,", res[160].exec("aabbaa"), 252); +assertToStringEquals("aabbbaa,", res[161].exec("aabbbaa"), 253); +assertToStringEquals("aabbbaa,", res[162].exec("aabbbaa"), 254); +assertToStringEquals("aabbaa,", res[163].exec("aabbaa"), 255); +assertToStringEquals("aabbbaa,", res[164].exec("aabbbaa"), 256); +assertToStringEquals("aabbbaa,aa,,", res[165].exec("aabbbaa"), 257); +assertToStringEquals("aabbbbaa,aa,,", res[166].exec("aabbbbaa"), 258); assertThrows("var re = //;", 259); -assertEquals("a", res[169].exec("ab"), 260); -assertEquals("a", res[169].exec("aB"), 261); -assertEquals("*", res[169].exec("*** Failers"), 262); -assertEquals("A", res[169].exec("AB"), 263); -assertEquals("a", res[169].exec("ab"), 264); -assertEquals("a", res[169].exec("aB"), 265); -assertEquals("*", res[169].exec("*** Failers"), 266); -assertEquals("A", res[169].exec("AB"), 267); -assertEquals(null, res[172].exec("\\", 268)); -assertEquals(null, res[177].exec("*** Failers", 269)); -assertEquals(null, res[177].exec("xxxxx", 270)); -assertEquals(null, res[177].exec("now is the time for all good men to come to the aid of the party", 271)); -assertEquals(null, res[177].exec("*** Failers", 272)); -assertEquals(null, res[177].exec("this is not a line with only words and spaces!", 273)); -assertEquals(null, res[177].exec("12345a", 274)); -assertEquals(null, res[177].exec("*** Failers", 275)); -assertEquals(null, res[177].exec("12345+", 276)); -assertEquals(null, res[177].exec("aaab", 277)); -assertEquals(null, res[177].exec("aaab", 278)); -assertEquals(null, res[177].exec("aaab", 279)); -assertEquals(null, res[177].exec("((abc(ade)ufh()()x", 280)); -assertEquals(null, res[177].exec("(abc)", 281)); -assertEquals(null, res[177].exec("(abc(def)xyz)", 282)); -assertEquals(null, res[177].exec("*** Failers", 283)); -assertEquals(null, res[177].exec("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 284)); -assertEquals(null, res[177].exec("xaaaab", 285)); -assertEquals(null, res[177].exec("xaaaab", 286)); +assertToStringEquals("a", res[169].exec("ab"), 260); +assertToStringEquals("a", res[169].exec("aB"), 261); +assertToStringEquals("*", res[169].exec("*** Failers"), 262); +assertToStringEquals("A", res[169].exec("AB"), 263); +assertToStringEquals("a", res[169].exec("ab"), 264); +assertToStringEquals("a", res[169].exec("aB"), 265); +assertToStringEquals("*", res[169].exec("*** Failers"), 266); +assertToStringEquals("A", res[169].exec("AB"), 267); +assertNull(res[172].exec("\\", 268)); +assertNull(res[177].exec("*** Failers", 269)); +assertNull(res[177].exec("xxxxx", 270)); +assertNull(res[177].exec("now is the time for all good men to come to the aid of the party", 271)); +assertNull(res[177].exec("*** Failers", 272)); +assertNull(res[177].exec("this is not a line with only words and spaces!", 273)); +assertNull(res[177].exec("12345a", 274)); +assertNull(res[177].exec("*** Failers", 275)); +assertNull(res[177].exec("12345+", 276)); +assertNull(res[177].exec("aaab", 277)); +assertNull(res[177].exec("aaab", 278)); +assertNull(res[177].exec("aaab", 279)); +assertNull(res[177].exec("((abc(ade)ufh()()x", 280)); +assertNull(res[177].exec("(abc)", 281)); +assertNull(res[177].exec("(abc(def)xyz)", 282)); +assertNull(res[177].exec("*** Failers", 283)); +assertNull(res[177].exec("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 284)); +assertNull(res[177].exec("xaaaab", 285)); +assertNull(res[177].exec("xaaaab", 286)); assertThrows("var re = /[/;", 287); assertThrows("var re = /[a-/;", 288); -assertEquals(null, res[189].exec("<>", 289)); -assertEquals(null, res[189].exec("<abcd>", 290)); -assertEquals(null, res[189].exec("<abc <123> hij>", 291)); -assertEquals(null, res[189].exec("<abc <def> hij>", 292)); -assertEquals(null, res[189].exec("<abc<>def>", 293)); -assertEquals(null, res[189].exec("<abc<>", 294)); -assertEquals(null, res[189].exec("*** Failers", 295)); -assertEquals(null, res[189].exec("<abc", 296)); -assertEquals("bc123bc,bc,bc", res[195].exec("abc123bc"), 297); -assertEquals("abc", res[215].exec("abcdef"), 298); -assertEquals("abc", res[215].exec("1234abcdef"), 299); -assertEquals(null, res[215].exec("*** Failers", 300)); -assertEquals("abc", res[215].exec("abcxyz"), 301); -assertEquals("abc", res[215].exec("abcxyzf"), 302); -assertEquals("abc", res[215].exec("123abcdef"), 303); -assertEquals("abc", res[215].exec("1234abcdef"), 304); -assertEquals(null, res[215].exec("*** Failers", 305)); -assertEquals("abc", res[215].exec("abcdef"), 306); -assertEquals(null, res[215].exec("*** Failers", 307)); -assertEquals("abc", res[215].exec("\x83x0abcdef"), 308); -assertEquals("abc", res[215].exec("123abcdef"), 309); -assertEquals("abc", res[215].exec("123abcdefC+"), 310); -assertEquals("abc", res[215].exec("123abcdefC-"), 311); -assertEquals(null, res[215].exec("*** Failers", 312)); -assertEquals("abc", res[215].exec("123abcdefC!1"), 313); -assertEquals("abc", res[215].exec("abcabcabc"), 314); -assertEquals("abc", res[215].exec("abcabcC!1!3"), 315); -assertEquals(null, res[215].exec("*** Failers", 316)); -assertEquals("abc", res[215].exec("abcabcabcC!1!3"), 317); -assertEquals("C", res[215].exec("123C+"), 318); -assertEquals("C", res[215].exec("123456C+"), 319); -assertEquals("C", res[215].exec("123456789C+"), 320); -assertEquals("abc", res[215].exec("xyzabcC+"), 321); -assertEquals("abc", res[215].exec("XxyzabcC+"), 322); -assertEquals("abc", res[215].exec("abcdefC+"), 323); -assertEquals("abc", res[215].exec("abcxyzC+"), 324); -assertEquals("c", res[215].exec("abbbbbcccC*1"), 325); -assertEquals("c", res[215].exec("abbbbbcccC*1"), 326); -assertEquals(null, res[215].exec("xab", 327)); -assertEquals("c", res[215].exec("xbc"), 328); -assertEquals(null, res[215].exec("xde", 329)); -assertEquals(null, res[215].exec("xxab", 330)); -assertEquals(null, res[215].exec("xxxab", 331)); -assertEquals(null, res[215].exec("*** Failers", 332)); -assertEquals(null, res[215].exec("xyab", 333)); -assertEquals("abc", res[215].exec("abc"), 334); -assertEquals("c", res[215].exec("a(b)c"), 335); -assertEquals("c", res[215].exec("a(b(c))d"), 336); -assertEquals(null, res[215].exec("*** Failers)", 337)); -assertEquals("c", res[215].exec("a(b(c)d"), 338); -assertEquals(null, res[215].exec("1221", 339)); -assertEquals("c", res[215].exec("Satan, oscillate my metallic sonatas!"), 340); -assertEquals("c", res[215].exec("A man, a plan, a canal: Panama!"), 341); -assertEquals(null, res[215].exec("Able was I ere I saw Elba.", 342)); -assertEquals(null, res[215].exec("*** Failers", 343)); -assertEquals("c", res[215].exec("The quick brown fox"), 344); -assertEquals(null, res[215].exec("12", 345)); -assertEquals(null, res[215].exec("(((2+2)*-3)-7)", 346)); -assertEquals(null, res[215].exec("-12", 347)); -assertEquals(null, res[215].exec("*** Failers", 348)); -assertEquals(null, res[215].exec("((2+2)*-3)-7)", 349)); -assertEquals(null, res[215].exec("xyz", 350)); -assertEquals(null, res[215].exec("xxyzxyzz", 351)); -assertEquals(null, res[215].exec("*** Failers", 352)); -assertEquals(null, res[215].exec("xxyzz", 353)); -assertEquals(null, res[215].exec("xxyzxyzxyzz", 354)); -assertEquals(null, res[215].exec("<>", 355)); -assertEquals("abc", res[215].exec("<abcd>"), 356); -assertEquals("abc", res[215].exec("<abc <123> hij>"), 357); -assertEquals("abc", res[215].exec("<abc <def> hij>"), 358); -assertEquals("abc", res[215].exec("<abc<>def>"), 359); -assertEquals("abc", res[215].exec("<abc<>"), 360); -assertEquals(null, res[215].exec("*** Failers", 361)); -assertEquals("abc", res[215].exec("<abc"), 362); -assertEquals("abc", res[215].exec("abcdefabc"), 363); -assertEquals(null, res[215].exec("a=a", 364)); -assertEquals(null, res[215].exec("a=b", 365)); -assertEquals("c", res[215].exec("a=bc"), 366); -assertEquals(null, res[215].exec("a=a", 367)); -assertEquals(null, res[215].exec("a=b", 368)); -assertEquals("c", res[215].exec("a=bc"), 369); -assertEquals(null, res[215].exec("abde", 370)); -assertEquals("c", res[215].exec("acde"), 371); -assertEquals(null, res[215].exec("1221", 372)); -assertEquals("c", res[215].exec("Satan, oscillate my metallic sonatas!"), 373); -assertEquals("c", res[215].exec("A man, a plan, a canal: Panama!"), 374); -assertEquals(null, res[215].exec("Able was I ere I saw Elba.", 375)); -assertEquals(null, res[215].exec("*** Failers", 376)); -assertEquals("c", res[215].exec("The quick brown fox"), 377); -assertEquals(null, res[228].exec("abcdefgh", 378)); -assertEquals(null, res[228].exec("abcdefghC1Gtwo", 379)); -assertEquals(null, res[228].exec("abcdefghConeCtwo", 380)); -assertEquals(null, res[228].exec("abcdefghCthree", 381)); -assertEquals("zz,", res[228].exec("zzaaCZ"), 382); -assertEquals("zz,", res[228].exec("zzaaCA"), 383); -assertEquals(null, res[228].exec("[10,20,30,5,5,4,4,2,43,23,4234]", 384)); -assertEquals(null, res[228].exec("*** Failers", 385)); -assertEquals(null, res[228].exec("[]", 386)); -assertEquals(null, res[228].exec("[10,20,30,5,5,4,4,2,43,23,4234]", 387)); -assertEquals(null, res[228].exec("[]", 388)); -assertEquals(" Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,", res[229].exec(" Baby Bjorn Active Carrier - With free SHIPPING!!"), 389); -assertEquals(" Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,", res[230].exec(" Baby Bjorn Active Carrier - With free SHIPPING!!"), 390); -assertEquals(null, res[238].exec("Note: that { does NOT introduce a quantifier", 391)); -assertEquals("aacaacaacaacaac123,aac", res[239].exec("aacaacaacaacaac123"), 392); -assertEquals(null, res[243].exec("abP", 393)); -assertEquals(null, res[243].exec("abcP", 394)); -assertEquals(null, res[243].exec("abcdP", 395)); -assertEquals("abcde", res[243].exec("abcdeP"), 396); -assertEquals(null, res[243].exec("the quick brown abcP", 397)); -assertEquals(null, res[243].exec("** FailersP", 398)); -assertEquals(null, res[243].exec("the quick brown abxyz foxP", 399)); -assertEquals(null, res[243].exec("13/05/04P", 400)); -assertEquals(null, res[243].exec("13/5/2004P", 401)); -assertEquals(null, res[243].exec("02/05/09P", 402)); -assertEquals(null, res[243].exec("1P", 403)); -assertEquals(null, res[243].exec("1/2P", 404)); -assertEquals(null, res[243].exec("1/2/0P", 405)); -assertEquals(null, res[243].exec("1/2/04P", 406)); -assertEquals(null, res[243].exec("0P", 407)); -assertEquals(null, res[243].exec("02/P", 408)); -assertEquals(null, res[243].exec("02/0P", 409)); -assertEquals(null, res[243].exec("02/1P", 410)); -assertEquals(null, res[243].exec("** FailersP", 411)); -assertEquals(null, res[243].exec("P", 412)); -assertEquals(null, res[243].exec("123P", 413)); -assertEquals(null, res[243].exec("33/4/04P", 414)); -assertEquals(null, res[243].exec("3/13/04P", 415)); -assertEquals(null, res[243].exec("0/1/2003P", 416)); -assertEquals(null, res[243].exec("0/P", 417)); -assertEquals(null, res[243].exec("02/0/P", 418)); -assertEquals(null, res[243].exec("02/13P", 419)); -assertEquals("123", res[248].exec("123P"), 420); -assertEquals(null, res[248].exec("aP", 421)); -assertEquals(null, res[248].exec("bP", 422)); -assertEquals(null, res[248].exec("cP", 423)); -assertEquals(null, res[248].exec("c12P", 424)); -assertEquals("c123", res[248].exec("c123P"), 425); -assertEquals(null, res[249].exec("1P", 426)); -assertEquals(null, res[249].exec("123P", 427)); -assertEquals("123X", res[249].exec("123X"), 428); -assertEquals(null, res[249].exec("1234P", 429)); -assertEquals("1234X", res[249].exec("1234X"), 430); -assertEquals(null, res[249].exec("12345P", 431)); -assertEquals("12345X", res[249].exec("12345X"), 432); -assertEquals(null, res[249].exec("*** Failers", 433)); -assertEquals(null, res[249].exec("1X", 434)); -assertEquals(null, res[249].exec("123456P", 435)); -assertEquals(null, res[249].exec("abc", 436)); -assertEquals(null, res[249].exec("** Failers", 437)); -assertEquals(null, res[249].exec("bca", 438)); -assertEquals(null, res[249].exec("abc", 439)); -assertEquals(null, res[249].exec("** Failers", 440)); -assertEquals(null, res[249].exec("bca", 441)); -assertEquals(null, res[249].exec("abc", 442)); -assertEquals(null, res[249].exec("** Failers", 443)); -assertEquals(null, res[249].exec("def", 444)); -assertEquals(null, res[249].exec("abc", 445)); -assertEquals(null, res[249].exec("** Failers", 446)); -assertEquals(null, res[249].exec("def", 447)); -assertEquals(null, res[249].exec("<!DOCTYPE seite SYSTEM \"http://www.lco.lineas.de/xmlCms.dtd\">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel=\"http://www.ca.com/\" zielfenster=\"_blank\">\n<bild name=\"logo_ca.gif\" rahmen=\"no\"/></link> <link\nziel=\"http://www.ey.com/\" zielfenster=\"_blank\"><bild\nname=\"logo_euy.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.cisco.de/\" zielfenster=\"_blank\">\n<bild name=\"logo_cisco.gif\" rahmen=\"ja\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.atelion.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_atelion.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.line-information.de/\"\nzielfenster=\"_blank\">\n<bild name=\"logo_line_information.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><bild name=\"logo_aw.gif\" rahmen=\"no\"/></absatz>\n\n<absatz><link ziel=\"http://www.incognis.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_incognis.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.addcraft.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_addcraft.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.comendo.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_comendo.gif\" rahmen=\"no\"/></link></absatz>\n\n</inhalt>\n</seite>", 448)); -assertEquals("line\nbreak", res[251].exec("this is a line\nbreak"), 449); -assertEquals("line\nbreak", res[251].exec("line one\nthis is a line\nbreak in the second line"), 450); -assertEquals("line\nbreak", res[252].exec("this is a line\nbreak"), 451); -assertEquals(null, res[252].exec("** Failers", 452)); -assertEquals("line\nbreak", res[252].exec("line one\nthis is a line\nbreak in the second line"), 453); -assertEquals("line\nbreak", res[253].exec("this is a line\nbreak"), 454); -assertEquals(null, res[253].exec("** Failers", 455)); -assertEquals("line\nbreak", res[253].exec("line one\nthis is a line\nbreak in the second line"), 456); -assertEquals("ab-cd", res[254].exec("ab-cd"), 457); -assertEquals("ab=cd", res[254].exec("ab=cd"), 458); -assertEquals(null, res[254].exec("** Failers", 459)); -assertEquals(null, res[254].exec("ab\ncd", 460)); -assertEquals("ab-cd", res[255].exec("ab-cd"), 461); -assertEquals("ab=cd", res[255].exec("ab=cd"), 462); -assertEquals(null, res[255].exec("ab\ncd", 463)); -assertEquals(null, res[255].exec("AbCd", 464)); -assertEquals(null, res[255].exec("** Failers", 465)); -assertEquals(null, res[255].exec("abcd", 466)); +assertNull(res[189].exec("<>", 289)); +assertNull(res[189].exec("<abcd>", 290)); +assertNull(res[189].exec("<abc <123> hij>", 291)); +assertNull(res[189].exec("<abc <def> hij>", 292)); +assertNull(res[189].exec("<abc<>def>", 293)); +assertNull(res[189].exec("<abc<>", 294)); +assertNull(res[189].exec("*** Failers", 295)); +assertNull(res[189].exec("<abc", 296)); +assertToStringEquals("bc123bc,bc,bc", res[195].exec("abc123bc"), 297); +assertToStringEquals("abc", res[215].exec("abcdef"), 298); +assertToStringEquals("abc", res[215].exec("1234abcdef"), 299); +assertNull(res[215].exec("*** Failers", 300)); +assertToStringEquals("abc", res[215].exec("abcxyz"), 301); +assertToStringEquals("abc", res[215].exec("abcxyzf"), 302); +assertToStringEquals("abc", res[215].exec("123abcdef"), 303); +assertToStringEquals("abc", res[215].exec("1234abcdef"), 304); +assertNull(res[215].exec("*** Failers", 305)); +assertToStringEquals("abc", res[215].exec("abcdef"), 306); +assertNull(res[215].exec("*** Failers", 307)); +assertToStringEquals("abc", res[215].exec("\x83x0abcdef"), 308); +assertToStringEquals("abc", res[215].exec("123abcdef"), 309); +assertToStringEquals("abc", res[215].exec("123abcdefC+"), 310); +assertToStringEquals("abc", res[215].exec("123abcdefC-"), 311); +assertNull(res[215].exec("*** Failers", 312)); +assertToStringEquals("abc", res[215].exec("123abcdefC!1"), 313); +assertToStringEquals("abc", res[215].exec("abcabcabc"), 314); +assertToStringEquals("abc", res[215].exec("abcabcC!1!3"), 315); +assertNull(res[215].exec("*** Failers", 316)); +assertToStringEquals("abc", res[215].exec("abcabcabcC!1!3"), 317); +assertToStringEquals("C", res[215].exec("123C+"), 318); +assertToStringEquals("C", res[215].exec("123456C+"), 319); +assertToStringEquals("C", res[215].exec("123456789C+"), 320); +assertToStringEquals("abc", res[215].exec("xyzabcC+"), 321); +assertToStringEquals("abc", res[215].exec("XxyzabcC+"), 322); +assertToStringEquals("abc", res[215].exec("abcdefC+"), 323); +assertToStringEquals("abc", res[215].exec("abcxyzC+"), 324); +assertToStringEquals("c", res[215].exec("abbbbbcccC*1"), 325); +assertToStringEquals("c", res[215].exec("abbbbbcccC*1"), 326); +assertNull(res[215].exec("xab", 327)); +assertToStringEquals("c", res[215].exec("xbc"), 328); +assertNull(res[215].exec("xde", 329)); +assertNull(res[215].exec("xxab", 330)); +assertNull(res[215].exec("xxxab", 331)); +assertNull(res[215].exec("*** Failers", 332)); +assertNull(res[215].exec("xyab", 333)); +assertToStringEquals("abc", res[215].exec("abc"), 334); +assertToStringEquals("c", res[215].exec("a(b)c"), 335); +assertToStringEquals("c", res[215].exec("a(b(c))d"), 336); +assertNull(res[215].exec("*** Failers)", 337)); +assertToStringEquals("c", res[215].exec("a(b(c)d"), 338); +assertNull(res[215].exec("1221", 339)); +assertToStringEquals("c", res[215].exec("Satan, oscillate my metallic sonatas!"), 340); +assertToStringEquals("c", res[215].exec("A man, a plan, a canal: Panama!"), 341); +assertNull(res[215].exec("Able was I ere I saw Elba.", 342)); +assertNull(res[215].exec("*** Failers", 343)); +assertToStringEquals("c", res[215].exec("The quick brown fox"), 344); +assertNull(res[215].exec("12", 345)); +assertNull(res[215].exec("(((2+2)*-3)-7)", 346)); +assertNull(res[215].exec("-12", 347)); +assertNull(res[215].exec("*** Failers", 348)); +assertNull(res[215].exec("((2+2)*-3)-7)", 349)); +assertNull(res[215].exec("xyz", 350)); +assertNull(res[215].exec("xxyzxyzz", 351)); +assertNull(res[215].exec("*** Failers", 352)); +assertNull(res[215].exec("xxyzz", 353)); +assertNull(res[215].exec("xxyzxyzxyzz", 354)); +assertNull(res[215].exec("<>", 355)); +assertToStringEquals("abc", res[215].exec("<abcd>"), 356); +assertToStringEquals("abc", res[215].exec("<abc <123> hij>"), 357); +assertToStringEquals("abc", res[215].exec("<abc <def> hij>"), 358); +assertToStringEquals("abc", res[215].exec("<abc<>def>"), 359); +assertToStringEquals("abc", res[215].exec("<abc<>"), 360); +assertNull(res[215].exec("*** Failers", 361)); +assertToStringEquals("abc", res[215].exec("<abc"), 362); +assertToStringEquals("abc", res[215].exec("abcdefabc"), 363); +assertNull(res[215].exec("a=a", 364)); +assertNull(res[215].exec("a=b", 365)); +assertToStringEquals("c", res[215].exec("a=bc"), 366); +assertNull(res[215].exec("a=a", 367)); +assertNull(res[215].exec("a=b", 368)); +assertToStringEquals("c", res[215].exec("a=bc"), 369); +assertNull(res[215].exec("abde", 370)); +assertToStringEquals("c", res[215].exec("acde"), 371); +assertNull(res[215].exec("1221", 372)); +assertToStringEquals("c", res[215].exec("Satan, oscillate my metallic sonatas!"), 373); +assertToStringEquals("c", res[215].exec("A man, a plan, a canal: Panama!"), 374); +assertNull(res[215].exec("Able was I ere I saw Elba.", 375)); +assertNull(res[215].exec("*** Failers", 376)); +assertToStringEquals("c", res[215].exec("The quick brown fox"), 377); +assertNull(res[228].exec("abcdefgh", 378)); +assertNull(res[228].exec("abcdefghC1Gtwo", 379)); +assertNull(res[228].exec("abcdefghConeCtwo", 380)); +assertNull(res[228].exec("abcdefghCthree", 381)); +assertToStringEquals("zz,", res[228].exec("zzaaCZ"), 382); +assertToStringEquals("zz,", res[228].exec("zzaaCA"), 383); +assertNull(res[228].exec("[10,20,30,5,5,4,4,2,43,23,4234]", 384)); +assertNull(res[228].exec("*** Failers", 385)); +assertNull(res[228].exec("[]", 386)); +assertNull(res[228].exec("[10,20,30,5,5,4,4,2,43,23,4234]", 387)); +assertNull(res[228].exec("[]", 388)); +assertToStringEquals(" Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,", res[229].exec(" Baby Bjorn Active Carrier - With free SHIPPING!!"), 389); +assertToStringEquals(" Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,", res[230].exec(" Baby Bjorn Active Carrier - With free SHIPPING!!"), 390); +assertNull(res[238].exec("Note: that { does NOT introduce a quantifier", 391)); +assertToStringEquals("aacaacaacaacaac123,aac", res[239].exec("aacaacaacaacaac123"), 392); +assertNull(res[243].exec("abP", 393)); +assertNull(res[243].exec("abcP", 394)); +assertNull(res[243].exec("abcdP", 395)); +assertToStringEquals("abcde", res[243].exec("abcdeP"), 396); +assertNull(res[243].exec("the quick brown abcP", 397)); +assertNull(res[243].exec("** FailersP", 398)); +assertNull(res[243].exec("the quick brown abxyz foxP", 399)); +assertNull(res[243].exec("13/05/04P", 400)); +assertNull(res[243].exec("13/5/2004P", 401)); +assertNull(res[243].exec("02/05/09P", 402)); +assertNull(res[243].exec("1P", 403)); +assertNull(res[243].exec("1/2P", 404)); +assertNull(res[243].exec("1/2/0P", 405)); +assertNull(res[243].exec("1/2/04P", 406)); +assertNull(res[243].exec("0P", 407)); +assertNull(res[243].exec("02/P", 408)); +assertNull(res[243].exec("02/0P", 409)); +assertNull(res[243].exec("02/1P", 410)); +assertNull(res[243].exec("** FailersP", 411)); +assertNull(res[243].exec("P", 412)); +assertNull(res[243].exec("123P", 413)); +assertNull(res[243].exec("33/4/04P", 414)); +assertNull(res[243].exec("3/13/04P", 415)); +assertNull(res[243].exec("0/1/2003P", 416)); +assertNull(res[243].exec("0/P", 417)); +assertNull(res[243].exec("02/0/P", 418)); +assertNull(res[243].exec("02/13P", 419)); +assertToStringEquals("123", res[248].exec("123P"), 420); +assertNull(res[248].exec("aP", 421)); +assertNull(res[248].exec("bP", 422)); +assertNull(res[248].exec("cP", 423)); +assertNull(res[248].exec("c12P", 424)); +assertToStringEquals("c123", res[248].exec("c123P"), 425); +assertNull(res[249].exec("1P", 426)); +assertNull(res[249].exec("123P", 427)); +assertToStringEquals("123X", res[249].exec("123X"), 428); +assertNull(res[249].exec("1234P", 429)); +assertToStringEquals("1234X", res[249].exec("1234X"), 430); +assertNull(res[249].exec("12345P", 431)); +assertToStringEquals("12345X", res[249].exec("12345X"), 432); +assertNull(res[249].exec("*** Failers", 433)); +assertNull(res[249].exec("1X", 434)); +assertNull(res[249].exec("123456P", 435)); +assertNull(res[249].exec("abc", 436)); +assertNull(res[249].exec("** Failers", 437)); +assertNull(res[249].exec("bca", 438)); +assertNull(res[249].exec("abc", 439)); +assertNull(res[249].exec("** Failers", 440)); +assertNull(res[249].exec("bca", 441)); +assertNull(res[249].exec("abc", 442)); +assertNull(res[249].exec("** Failers", 443)); +assertNull(res[249].exec("def", 444)); +assertNull(res[249].exec("abc", 445)); +assertNull(res[249].exec("** Failers", 446)); +assertNull(res[249].exec("def", 447)); +assertNull(res[249].exec("<!DOCTYPE seite SYSTEM \"http://www.lco.lineas.de/xmlCms.dtd\">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel=\"http://www.ca.com/\" zielfenster=\"_blank\">\n<bild name=\"logo_ca.gif\" rahmen=\"no\"/></link> <link\nziel=\"http://www.ey.com/\" zielfenster=\"_blank\"><bild\nname=\"logo_euy.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.cisco.de/\" zielfenster=\"_blank\">\n<bild name=\"logo_cisco.gif\" rahmen=\"ja\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.atelion.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_atelion.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.line-information.de/\"\nzielfenster=\"_blank\">\n<bild name=\"logo_line_information.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><bild name=\"logo_aw.gif\" rahmen=\"no\"/></absatz>\n\n<absatz><link ziel=\"http://www.incognis.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_incognis.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.addcraft.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_addcraft.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.comendo.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_comendo.gif\" rahmen=\"no\"/></link></absatz>\n\n</inhalt>\n</seite>", 448)); +assertToStringEquals("line\nbreak", res[251].exec("this is a line\nbreak"), 449); +assertToStringEquals("line\nbreak", res[251].exec("line one\nthis is a line\nbreak in the second line"), 450); +assertToStringEquals("line\nbreak", res[252].exec("this is a line\nbreak"), 451); +assertNull(res[252].exec("** Failers", 452)); +assertToStringEquals("line\nbreak", res[252].exec("line one\nthis is a line\nbreak in the second line"), 453); +assertToStringEquals("line\nbreak", res[253].exec("this is a line\nbreak"), 454); +assertNull(res[253].exec("** Failers", 455)); +assertToStringEquals("line\nbreak", res[253].exec("line one\nthis is a line\nbreak in the second line"), 456); +assertToStringEquals("ab-cd", res[254].exec("ab-cd"), 457); +assertToStringEquals("ab=cd", res[254].exec("ab=cd"), 458); +assertNull(res[254].exec("** Failers", 459)); +assertNull(res[254].exec("ab\ncd", 460)); +assertToStringEquals("ab-cd", res[255].exec("ab-cd"), 461); +assertToStringEquals("ab=cd", res[255].exec("ab=cd"), 462); +assertNull(res[255].exec("ab\ncd", 463)); +assertNull(res[255].exec("AbCd", 464)); +assertNull(res[255].exec("** Failers", 465)); +assertNull(res[255].exec("abcd", 466)); // We are compatible with JSC, and don't throw an exception in this case. // assertThrows("var re = /(){2,4294967295}/;", 467); -assertEquals(null, res[255].exec("abcdefghijklAkB", 468)); -assertEquals(null, res[255].exec("abcdefghijklAkB", 469)); -assertEquals(null, res[255].exec("abcdefghijklAkB", 470)); -assertEquals(null, res[255].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 471)); -assertEquals(null, res[255].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 472)); -assertEquals(null, res[255].exec("(this(and)that", 473)); -assertEquals(null, res[255].exec("(this(and)that)", 474)); -assertEquals(null, res[255].exec("(this(and)that)stuff", 475)); -assertEquals(null, res[255].exec("(this(and)that", 476)); -assertEquals(null, res[255].exec("(this(and)that)", 477)); -assertEquals(null, res[255].exec("(this(and)that", 478)); -assertEquals(null, res[255].exec("(this(and)that)", 479)); -assertEquals(null, res[255].exec("(this(and)that", 480)); -assertEquals(null, res[255].exec("(this(and)that)", 481)); -assertEquals(null, res[255].exec("((this))", 482)); -assertEquals(null, res[255].exec("(this(and)that", 483)); -assertEquals(null, res[255].exec("(this(and)that)", 484)); -assertEquals(null, res[255].exec("(this)", 485)); -assertEquals(null, res[255].exec("((this))", 486)); -assertEquals("abc,b", res[256].exec("abc"), 487); -assertEquals("abc,b", res[256].exec("abc"), 488); -assertEquals(null, res[256].exec("a1bCA", 489)); -assertEquals(null, res[256].exec("a2bCA", 490)); -assertEquals(null, res[257].exec("a bc dCACBCC", 491)); -assertEquals(null, res[257].exec("aabc", 492)); -assertEquals(null, res[257].exec("bc", 493)); -assertEquals(null, res[257].exec("** Failers", 494)); -assertEquals(null, res[257].exec("abc", 495)); -assertEquals(null, res[257].exec("bXaX", 496)); -assertEquals(null, res[257].exec("bbXaaX", 497)); -assertEquals(null, res[257].exec("(b)\\Xa\\X", 498)); -assertEquals(null, res[257].exec("bXXaYYaY", 499)); -assertEquals(null, res[257].exec("bXYaXXaX", 500)); -assertEquals(null, res[257].exec("bXXaYYaY", 501)); -assertEquals("\x0b,\x0b", res[259].exec("\x0b,\x0b"), 502); -assertEquals("\x0c,\x0d", res[259].exec("\x0c,\x0d"), 503); -assertEquals("abc", res[260].exec("xyz\nabc"), 504); -assertEquals("abc", res[260].exec("xyz\nabc<lf>"), 505); -assertEquals("abc", res[260].exec("xyz\x0d\nabc<lf>"), 506); -assertEquals("abc", res[260].exec("xyz\x0dabc<cr>"), 507); -assertEquals("abc", res[260].exec("xyz\x0d\nabc<crlf>"), 508); -assertEquals(null, res[260].exec("** Failers", 509)); -assertEquals("abc", res[260].exec("xyz\nabc<cr>"), 510); -assertEquals("abc", res[260].exec("xyz\x0d\nabc<cr>"), 511); -assertEquals("abc", res[260].exec("xyz\nabc<crlf>"), 512); -assertEquals("abc", res[260].exec("xyz\x0dabc<crlf>"), 513); -assertEquals("abc", res[260].exec("xyz\x0dabc<lf>"), 514); -assertEquals("abc", res[261].exec("xyzabc"), 515); -assertEquals("abc", res[261].exec("xyzabc\n"), 516); -assertEquals("abc", res[261].exec("xyzabc\npqr"), 517); -assertEquals("abc", res[261].exec("xyzabc\x0d<cr>"), 518); -assertEquals("abc", res[261].exec("xyzabc\x0dpqr<cr>"), 519); -assertEquals("abc", res[261].exec("xyzabc\x0d\n<crlf>"), 520); -assertEquals("abc", res[261].exec("xyzabc\x0d\npqr<crlf>"), 521); -assertEquals(null, res[261].exec("** Failers", 522)); -assertEquals("abc", res[261].exec("xyzabc\x0d"), 523); -assertEquals("abc", res[261].exec("xyzabc\x0dpqr"), 524); -assertEquals("abc", res[261].exec("xyzabc\x0d\n"), 525); -assertEquals("abc", res[261].exec("xyzabc\x0d\npqr"), 526); -assertEquals("abc", res[262].exec("xyz\x0dabcdef"), 527); -assertEquals("abc", res[262].exec("xyz\nabcdef<lf>"), 528); -assertEquals(null, res[262].exec("** Failers", 529)); -assertEquals("abc", res[262].exec("xyz\nabcdef"), 530); -assertEquals("abc", res[263].exec("xyz\nabcdef"), 531); -assertEquals("abc", res[263].exec("xyz\x0dabcdef<cr>"), 532); -assertEquals(null, res[263].exec("** Failers", 533)); -assertEquals("abc", res[263].exec("xyz\x0dabcdef"), 534); -assertEquals("abc", res[264].exec("xyz\x0d\nabcdef"), 535); -assertEquals("abc", res[264].exec("xyz\x0dabcdef<cr>"), 536); -assertEquals(null, res[264].exec("** Failers", 537)); -assertEquals("abc", res[264].exec("xyz\x0dabcdef"), 538); -assertEquals("abc", res[266].exec("xyz\x0dabc<bad>"), 539); -assertEquals("abc", res[266].exec("abc"), 540); -assertEquals("abc", res[267].exec("abc\ndef"), 541); -assertEquals("abc", res[267].exec("abc\x0ddef"), 542); -assertEquals("abc", res[267].exec("abc\x0d\ndef"), 543); -assertEquals("<cr>abc", res[267].exec("<cr>abc\ndef"), 544); -assertEquals("<cr>abc", res[267].exec("<cr>abc\x0ddef"), 545); -assertEquals("<cr>abc", res[267].exec("<cr>abc\x0d\ndef"), 546); -assertEquals("<crlf>abc", res[267].exec("<crlf>abc\ndef"), 547); -assertEquals("<crlf>abc", res[267].exec("<crlf>abc\x0ddef"), 548); -assertEquals("<crlf>abc", res[267].exec("<crlf>abc\x0d\ndef"), 549); -assertEquals(null, res[268].exec("abc\ndef", 550)); -assertEquals(null, res[268].exec("abc\x0ddef", 551)); -assertEquals(null, res[268].exec("abc\x0d\ndef", 552)); -assertEquals("XY,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XY,Y", res[269].exec("XYO400"), 553); -assertEquals("aaaA5", res[278].exec("aaaA5"), 554); -assertEquals(null, res[278].exec("** Failers", 555)); -assertEquals(null, res[278].exec("aaaa5", 556)); -assertEquals("aaaA5", res[279].exec("aaaA5"), 557); -assertEquals("aaaa5", res[279].exec("aaaa5"), 558); -assertEquals("x", res[350].exec("xyCabcCxyz"), 559); -assertEquals("x", res[350].exec("xyCabcCxyz"), 560); -assertEquals("b", res[350].exec("bXaX"), 561); -assertEquals("b", res[350].exec("bXbX"), 562); -assertEquals("*", res[350].exec("** Failers"), 563); -assertEquals("aX", res[350].exec("aXaX"), 564); -assertEquals("aX", res[350].exec("aXbX"), 565); -assertEquals("x", res[350].exec("xx"), 566); -assertEquals("x", res[350].exec("xy"), 567); -assertEquals("y", res[350].exec("yy"), 568); -assertEquals("y", res[350].exec("yx"), 569); -assertEquals("x", res[350].exec("xx"), 570); -assertEquals("x", res[350].exec("xy"), 571); -assertEquals("y", res[350].exec("yy"), 572); -assertEquals("y", res[350].exec("yx"), 573); -assertEquals("b", res[350].exec("bxay"), 574); -assertEquals("b", res[350].exec("bxby"), 575); -assertEquals("*", res[350].exec("** Failers"), 576); -assertEquals("ax", res[350].exec("axby"), 577); -assertEquals("X", res[350].exec("XxXxxx"), 578); -assertEquals("X", res[350].exec("XxXyyx"), 579); -assertEquals("X", res[350].exec("XxXyxx"), 580); -assertEquals("*", res[350].exec("** Failers"), 581); -assertEquals("x", res[350].exec("x"), 582); -assertEquals("ab", res[350].exec("abcabc"), 583); -assertEquals("Xaaa,a", res[351].exec("Xaaa"), 584); -assertEquals("Xaba,a", res[351].exec("Xaba"), 585); +assertNull(res[255].exec("abcdefghijklAkB", 468)); +assertNull(res[255].exec("abcdefghijklAkB", 469)); +assertNull(res[255].exec("abcdefghijklAkB", 470)); +assertNull(res[255].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 471)); +assertNull(res[255].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 472)); +assertNull(res[255].exec("(this(and)that", 473)); +assertNull(res[255].exec("(this(and)that)", 474)); +assertNull(res[255].exec("(this(and)that)stuff", 475)); +assertNull(res[255].exec("(this(and)that", 476)); +assertNull(res[255].exec("(this(and)that)", 477)); +assertNull(res[255].exec("(this(and)that", 478)); +assertNull(res[255].exec("(this(and)that)", 479)); +assertNull(res[255].exec("(this(and)that", 480)); +assertNull(res[255].exec("(this(and)that)", 481)); +assertNull(res[255].exec("((this))", 482)); +assertNull(res[255].exec("(this(and)that", 483)); +assertNull(res[255].exec("(this(and)that)", 484)); +assertNull(res[255].exec("(this)", 485)); +assertNull(res[255].exec("((this))", 486)); +assertToStringEquals("abc,b", res[256].exec("abc"), 487); +assertToStringEquals("abc,b", res[256].exec("abc"), 488); +assertNull(res[256].exec("a1bCA", 489)); +assertNull(res[256].exec("a2bCA", 490)); +assertNull(res[257].exec("a bc dCACBCC", 491)); +assertNull(res[257].exec("aabc", 492)); +assertNull(res[257].exec("bc", 493)); +assertNull(res[257].exec("** Failers", 494)); +assertNull(res[257].exec("abc", 495)); +assertNull(res[257].exec("bXaX", 496)); +assertNull(res[257].exec("bbXaaX", 497)); +assertNull(res[257].exec("(b)\\Xa\\X", 498)); +assertNull(res[257].exec("bXXaYYaY", 499)); +assertNull(res[257].exec("bXYaXXaX", 500)); +assertNull(res[257].exec("bXXaYYaY", 501)); +assertToStringEquals("\x0b,\x0b", res[259].exec("\x0b,\x0b"), 502); +assertToStringEquals("\x0c,\x0d", res[259].exec("\x0c,\x0d"), 503); +assertToStringEquals("abc", res[260].exec("xyz\nabc"), 504); +assertToStringEquals("abc", res[260].exec("xyz\nabc<lf>"), 505); +assertToStringEquals("abc", res[260].exec("xyz\x0d\nabc<lf>"), 506); +assertToStringEquals("abc", res[260].exec("xyz\x0dabc<cr>"), 507); +assertToStringEquals("abc", res[260].exec("xyz\x0d\nabc<crlf>"), 508); +assertNull(res[260].exec("** Failers", 509)); +assertToStringEquals("abc", res[260].exec("xyz\nabc<cr>"), 510); +assertToStringEquals("abc", res[260].exec("xyz\x0d\nabc<cr>"), 511); +assertToStringEquals("abc", res[260].exec("xyz\nabc<crlf>"), 512); +assertToStringEquals("abc", res[260].exec("xyz\x0dabc<crlf>"), 513); +assertToStringEquals("abc", res[260].exec("xyz\x0dabc<lf>"), 514); +assertToStringEquals("abc", res[261].exec("xyzabc"), 515); +assertToStringEquals("abc", res[261].exec("xyzabc\n"), 516); +assertToStringEquals("abc", res[261].exec("xyzabc\npqr"), 517); +assertToStringEquals("abc", res[261].exec("xyzabc\x0d<cr>"), 518); +assertToStringEquals("abc", res[261].exec("xyzabc\x0dpqr<cr>"), 519); +assertToStringEquals("abc", res[261].exec("xyzabc\x0d\n<crlf>"), 520); +assertToStringEquals("abc", res[261].exec("xyzabc\x0d\npqr<crlf>"), 521); +assertNull(res[261].exec("** Failers", 522)); +assertToStringEquals("abc", res[261].exec("xyzabc\x0d"), 523); +assertToStringEquals("abc", res[261].exec("xyzabc\x0dpqr"), 524); +assertToStringEquals("abc", res[261].exec("xyzabc\x0d\n"), 525); +assertToStringEquals("abc", res[261].exec("xyzabc\x0d\npqr"), 526); +assertToStringEquals("abc", res[262].exec("xyz\x0dabcdef"), 527); +assertToStringEquals("abc", res[262].exec("xyz\nabcdef<lf>"), 528); +assertNull(res[262].exec("** Failers", 529)); +assertToStringEquals("abc", res[262].exec("xyz\nabcdef"), 530); +assertToStringEquals("abc", res[263].exec("xyz\nabcdef"), 531); +assertToStringEquals("abc", res[263].exec("xyz\x0dabcdef<cr>"), 532); +assertNull(res[263].exec("** Failers", 533)); +assertToStringEquals("abc", res[263].exec("xyz\x0dabcdef"), 534); +assertToStringEquals("abc", res[264].exec("xyz\x0d\nabcdef"), 535); +assertToStringEquals("abc", res[264].exec("xyz\x0dabcdef<cr>"), 536); +assertNull(res[264].exec("** Failers", 537)); +assertToStringEquals("abc", res[264].exec("xyz\x0dabcdef"), 538); +assertToStringEquals("abc", res[266].exec("xyz\x0dabc<bad>"), 539); +assertToStringEquals("abc", res[266].exec("abc"), 540); +assertToStringEquals("abc", res[267].exec("abc\ndef"), 541); +assertToStringEquals("abc", res[267].exec("abc\x0ddef"), 542); +assertToStringEquals("abc", res[267].exec("abc\x0d\ndef"), 543); +assertToStringEquals("<cr>abc", res[267].exec("<cr>abc\ndef"), 544); +assertToStringEquals("<cr>abc", res[267].exec("<cr>abc\x0ddef"), 545); +assertToStringEquals("<cr>abc", res[267].exec("<cr>abc\x0d\ndef"), 546); +assertToStringEquals("<crlf>abc", res[267].exec("<crlf>abc\ndef"), 547); +assertToStringEquals("<crlf>abc", res[267].exec("<crlf>abc\x0ddef"), 548); +assertToStringEquals("<crlf>abc", res[267].exec("<crlf>abc\x0d\ndef"), 549); +assertNull(res[268].exec("abc\ndef", 550)); +assertNull(res[268].exec("abc\x0ddef", 551)); +assertNull(res[268].exec("abc\x0d\ndef", 552)); +assertToStringEquals("XY,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XY,Y", res[269].exec("XYO400"), 553); +assertToStringEquals("aaaA5", res[278].exec("aaaA5"), 554); +assertNull(res[278].exec("** Failers", 555)); +assertNull(res[278].exec("aaaa5", 556)); +assertToStringEquals("aaaA5", res[279].exec("aaaA5"), 557); +assertToStringEquals("aaaa5", res[279].exec("aaaa5"), 558); +assertToStringEquals("x", res[350].exec("xyCabcCxyz"), 559); +assertToStringEquals("x", res[350].exec("xyCabcCxyz"), 560); +assertToStringEquals("b", res[350].exec("bXaX"), 561); +assertToStringEquals("b", res[350].exec("bXbX"), 562); +assertToStringEquals("*", res[350].exec("** Failers"), 563); +assertToStringEquals("aX", res[350].exec("aXaX"), 564); +assertToStringEquals("aX", res[350].exec("aXbX"), 565); +assertToStringEquals("x", res[350].exec("xx"), 566); +assertToStringEquals("x", res[350].exec("xy"), 567); +assertToStringEquals("y", res[350].exec("yy"), 568); +assertToStringEquals("y", res[350].exec("yx"), 569); +assertToStringEquals("x", res[350].exec("xx"), 570); +assertToStringEquals("x", res[350].exec("xy"), 571); +assertToStringEquals("y", res[350].exec("yy"), 572); +assertToStringEquals("y", res[350].exec("yx"), 573); +assertToStringEquals("b", res[350].exec("bxay"), 574); +assertToStringEquals("b", res[350].exec("bxby"), 575); +assertToStringEquals("*", res[350].exec("** Failers"), 576); +assertToStringEquals("ax", res[350].exec("axby"), 577); +assertToStringEquals("X", res[350].exec("XxXxxx"), 578); +assertToStringEquals("X", res[350].exec("XxXyyx"), 579); +assertToStringEquals("X", res[350].exec("XxXyxx"), 580); +assertToStringEquals("*", res[350].exec("** Failers"), 581); +assertToStringEquals("x", res[350].exec("x"), 582); +assertToStringEquals("ab", res[350].exec("abcabc"), 583); +assertToStringEquals("Xaaa,a", res[351].exec("Xaaa"), 584); +assertToStringEquals("Xaba,a", res[351].exec("Xaba"), 585); assertThrows("var re = /^[a-\\Q\\E]/;", 586); -assertEquals(null, res[353].exec("(xy)x", 587)); -assertEquals(null, res[353].exec("1221", 588)); -assertEquals(null, res[353].exec("Satan, oscillate my metallic sonatas!", 589)); -assertEquals(null, res[353].exec("A man, a plan, a canal: Panama!", 590)); -assertEquals(null, res[353].exec("Able was I ere I saw Elba.", 591)); -assertEquals(null, res[353].exec("*** Failers", 592)); -assertEquals(null, res[353].exec("The quick brown fox", 593)); -assertEquals("abcd:,abcd", res[354].exec("abcd:"), 594); -assertEquals("abcd:,abcd", res[354].exec("abcd:"), 595); -assertEquals("a:,a", res[354].exec("a:aaxyz"), 596); -assertEquals("ab:,ab", res[354].exec("ab:ababxyz"), 597); -assertEquals(null, res[354].exec("** Failers", 598)); -assertEquals("a:,a", res[354].exec("a:axyz"), 599); -assertEquals("ab:,ab", res[354].exec("ab:abxyz"), 600); -assertEquals(null, res[354].exec("abd", 601)); -assertEquals(null, res[354].exec("ce", 602)); -assertEquals(null, res[354].exec("abcabc1Xabc2XabcXabcabc", 603)); -assertEquals(null, res[354].exec("abcabc1Xabc2XabcXabcabc", 604)); -assertEquals(null, res[354].exec("abcabc1Xabc2XabcXabcabc", 605)); -assertEquals(null, res[354].exec("abcd", 606)); -assertEquals(null, res[354].exec("metcalfe 33", 607)); -assertEquals(null, res[356].exec("a\x0db", 608)); -assertEquals(null, res[356].exec("a\nb<cr>", 609)); -assertEquals("a\x85b", res[356].exec("a\x85b<anycrlf> "), 610); -assertEquals(null, res[356].exec("** Failers", 611)); -assertEquals(null, res[356].exec("a\nb", 612)); -assertEquals(null, res[356].exec("a\nb<any>", 613)); -assertEquals(null, res[356].exec("a\x0db<cr>", 614)); -assertEquals(null, res[356].exec("a\x0db<any>", 615)); -assertEquals("a\x85b", res[356].exec("a\x85b<any> "), 616); -assertEquals(null, res[356].exec("a\x0db<anycrlf>", 617)); -assertEquals("abc1", res[357].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 618); -assertEquals("abc1", res[358].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc7 abc9"), 619); -assertEquals(null, res[361].exec("a\nb", 620)); -assertEquals(null, res[361].exec("a\x0db", 621)); -assertEquals(null, res[361].exec("a\x0d\nb", 622)); -assertEquals(null, res[361].exec("a\x0bb", 623)); -assertEquals(null, res[361].exec("a\x0cb", 624)); -assertEquals(null, res[361].exec("a\x85b", 625)); -assertEquals(null, res[361].exec("** Failers", 626)); -assertEquals(null, res[361].exec("a\n\x0db", 627)); -assertEquals("ab", res[362].exec("ab"), 628); -assertEquals(null, res[362].exec("a\nb", 629)); -assertEquals(null, res[362].exec("a\x0db", 630)); -assertEquals(null, res[362].exec("a\x0d\nb", 631)); -assertEquals(null, res[362].exec("a\x0bb", 632)); -assertEquals(null, res[362].exec("a\x0cb", 633)); -assertEquals(null, res[362].exec("a\x85b", 634)); -assertEquals(null, res[362].exec("a\n\x0db", 635)); -assertEquals(null, res[362].exec("a\n\x0d\x85\x0cb", 636)); -assertEquals(null, res[363].exec("a\nb", 637)); -assertEquals(null, res[363].exec("a\x0db", 638)); -assertEquals(null, res[363].exec("a\x0d\nb", 639)); -assertEquals(null, res[363].exec("a\x0bb", 640)); -assertEquals(null, res[363].exec("a\x0cb", 641)); -assertEquals(null, res[363].exec("a\x85b", 642)); -assertEquals(null, res[363].exec("a\n\x0db", 643)); -assertEquals(null, res[363].exec("a\n\x0d\x85\x0cb", 644)); -assertEquals(null, res[363].exec("** Failers", 645)); -assertEquals(null, res[363].exec("ab", 646)); -assertEquals(null, res[364].exec("a\nb", 647)); -assertEquals(null, res[364].exec("a\n\x0db", 648)); -assertEquals(null, res[364].exec("a\n\x0d\x85b", 649)); -assertEquals(null, res[364].exec("a\x0d\n\x0d\nb", 650)); -assertEquals(null, res[364].exec("a\x0d\n\x0d\n\x0d\nb", 651)); -assertEquals(null, res[364].exec("a\n\x0d\n\x0db", 652)); -assertEquals(null, res[364].exec("a\n\n\x0d\nb", 653)); -assertEquals(null, res[364].exec("** Failers", 654)); -assertEquals(null, res[364].exec("a\n\n\n\x0db", 655)); -assertEquals(null, res[364].exec("a\x0d", 656)); -assertEquals("aRb", res[365].exec("aRb"), 657); -assertEquals(null, res[365].exec("** Failers", 658)); -assertEquals(null, res[365].exec("a\nb", 659)); -assertEquals(null, res[365].exec("abcPXP123", 660)); -assertEquals(null, res[365].exec("abcPXP123", 661)); -assertEquals(null, res[365].exec("1.2.3.4", 662)); -assertEquals(null, res[365].exec("131.111.10.206", 663)); -assertEquals(null, res[365].exec("10.0.0.0", 664)); -assertEquals(null, res[365].exec("** Failers", 665)); -assertEquals(null, res[365].exec("10.6", 666)); -assertEquals(null, res[365].exec("455.3.4.5", 667)); -assertEquals(null, res[365].exec("1.2.3.4", 668)); -assertEquals(null, res[365].exec("131.111.10.206", 669)); -assertEquals(null, res[365].exec("10.0.0.0", 670)); -assertEquals(null, res[365].exec("** Failers", 671)); -assertEquals(null, res[365].exec("10.6", 672)); -assertEquals(null, res[365].exec("455.3.4.5", 673)); -assertEquals(null, res[365].exec("123axbaxbaxbx456", 674)); -assertEquals(null, res[365].exec("123axbaxbaxb456", 675)); -assertEquals(null, res[365].exec("123axbaxbaxbx456", 676)); -assertEquals(null, res[365].exec("123axbaxbaxbx456", 677)); -assertEquals(null, res[365].exec("123axbaxbaxbx456", 678)); -assertEquals(null, res[366].exec("ababababbbabZXXXX", 679)); -assertEquals(null, res[372].exec("a\x0db", 680)); -assertEquals(null, res[372].exec("*** Failers", 681)); -assertEquals(null, res[372].exec("a\nb", 682)); -assertEquals("afoo", res[373].exec("afoo"), 683); -assertEquals(null, res[373].exec("** Failers", 684)); -assertEquals(null, res[373].exec("\x0d\nfoo", 685)); -assertEquals(null, res[373].exec("\nfoo", 686)); -assertEquals("afoo", res[374].exec("afoo"), 687); -assertEquals(null, res[374].exec("\nfoo", 688)); -assertEquals(null, res[374].exec("** Failers", 689)); -assertEquals(null, res[374].exec("\x0d\nfoo", 690)); -assertEquals("afoo", res[375].exec("afoo"), 691); -assertEquals(null, res[375].exec("** Failers", 692)); -assertEquals(null, res[375].exec("\nfoo", 693)); -assertEquals(null, res[375].exec("\x0d\nfoo", 694)); -assertEquals("afoo", res[376].exec("afoo"), 695); -assertEquals(null, res[376].exec("\x0d\nfoo", 696)); -assertEquals(null, res[376].exec("\nfoo", 697)); -assertEquals("", res[377].exec("abc\x0d\x0dxyz"), 698); -assertEquals("", res[377].exec("abc\n\x0dxyz "), 699); -assertEquals(null, res[377].exec("** Failers ", 700)); -assertEquals("", res[377].exec("abc\x0d\nxyz"), 701); -assertEquals("", res[377].exec("abc\x0d\n\x0d\n"), 702); -assertEquals("", res[377].exec("abc\x0d\n\x0d\n"), 703); -assertEquals("", res[377].exec("abc\x0d\n\x0d\n"), 704); -assertEquals("abc1", res[378].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 705); -assertEquals("X", res[379].exec("XABC"), 706); -assertEquals(null, res[379].exec("** Failers ", 707)); -assertEquals("X", res[379].exec("XABCB"), 708); +assertNull(res[353].exec("(xy)x", 587)); +assertNull(res[353].exec("1221", 588)); +assertNull(res[353].exec("Satan, oscillate my metallic sonatas!", 589)); +assertNull(res[353].exec("A man, a plan, a canal: Panama!", 590)); +assertNull(res[353].exec("Able was I ere I saw Elba.", 591)); +assertNull(res[353].exec("*** Failers", 592)); +assertNull(res[353].exec("The quick brown fox", 593)); +assertToStringEquals("abcd:,abcd", res[354].exec("abcd:"), 594); +assertToStringEquals("abcd:,abcd", res[354].exec("abcd:"), 595); +assertToStringEquals("a:,a", res[354].exec("a:aaxyz"), 596); +assertToStringEquals("ab:,ab", res[354].exec("ab:ababxyz"), 597); +assertNull(res[354].exec("** Failers", 598)); +assertToStringEquals("a:,a", res[354].exec("a:axyz"), 599); +assertToStringEquals("ab:,ab", res[354].exec("ab:abxyz"), 600); +assertNull(res[354].exec("abd", 601)); +assertNull(res[354].exec("ce", 602)); +assertNull(res[354].exec("abcabc1Xabc2XabcXabcabc", 603)); +assertNull(res[354].exec("abcabc1Xabc2XabcXabcabc", 604)); +assertNull(res[354].exec("abcabc1Xabc2XabcXabcabc", 605)); +assertNull(res[354].exec("abcd", 606)); +assertNull(res[354].exec("metcalfe 33", 607)); +assertNull(res[356].exec("a\x0db", 608)); +assertNull(res[356].exec("a\nb<cr>", 609)); +assertToStringEquals("a\x85b", res[356].exec("a\x85b<anycrlf> "), 610); +assertNull(res[356].exec("** Failers", 611)); +assertNull(res[356].exec("a\nb", 612)); +assertNull(res[356].exec("a\nb<any>", 613)); +assertNull(res[356].exec("a\x0db<cr>", 614)); +assertNull(res[356].exec("a\x0db<any>", 615)); +assertToStringEquals("a\x85b", res[356].exec("a\x85b<any> "), 616); +assertNull(res[356].exec("a\x0db<anycrlf>", 617)); +assertToStringEquals("abc1", res[357].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 618); +assertToStringEquals("abc1", res[358].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc7 abc9"), 619); +assertNull(res[361].exec("a\nb", 620)); +assertNull(res[361].exec("a\x0db", 621)); +assertNull(res[361].exec("a\x0d\nb", 622)); +assertNull(res[361].exec("a\x0bb", 623)); +assertNull(res[361].exec("a\x0cb", 624)); +assertNull(res[361].exec("a\x85b", 625)); +assertNull(res[361].exec("** Failers", 626)); +assertNull(res[361].exec("a\n\x0db", 627)); +assertToStringEquals("ab", res[362].exec("ab"), 628); +assertNull(res[362].exec("a\nb", 629)); +assertNull(res[362].exec("a\x0db", 630)); +assertNull(res[362].exec("a\x0d\nb", 631)); +assertNull(res[362].exec("a\x0bb", 632)); +assertNull(res[362].exec("a\x0cb", 633)); +assertNull(res[362].exec("a\x85b", 634)); +assertNull(res[362].exec("a\n\x0db", 635)); +assertNull(res[362].exec("a\n\x0d\x85\x0cb", 636)); +assertNull(res[363].exec("a\nb", 637)); +assertNull(res[363].exec("a\x0db", 638)); +assertNull(res[363].exec("a\x0d\nb", 639)); +assertNull(res[363].exec("a\x0bb", 640)); +assertNull(res[363].exec("a\x0cb", 641)); +assertNull(res[363].exec("a\x85b", 642)); +assertNull(res[363].exec("a\n\x0db", 643)); +assertNull(res[363].exec("a\n\x0d\x85\x0cb", 644)); +assertNull(res[363].exec("** Failers", 645)); +assertNull(res[363].exec("ab", 646)); +assertNull(res[364].exec("a\nb", 647)); +assertNull(res[364].exec("a\n\x0db", 648)); +assertNull(res[364].exec("a\n\x0d\x85b", 649)); +assertNull(res[364].exec("a\x0d\n\x0d\nb", 650)); +assertNull(res[364].exec("a\x0d\n\x0d\n\x0d\nb", 651)); +assertNull(res[364].exec("a\n\x0d\n\x0db", 652)); +assertNull(res[364].exec("a\n\n\x0d\nb", 653)); +assertNull(res[364].exec("** Failers", 654)); +assertNull(res[364].exec("a\n\n\n\x0db", 655)); +assertNull(res[364].exec("a\x0d", 656)); +assertToStringEquals("aRb", res[365].exec("aRb"), 657); +assertNull(res[365].exec("** Failers", 658)); +assertNull(res[365].exec("a\nb", 659)); +assertNull(res[365].exec("abcPXP123", 660)); +assertNull(res[365].exec("abcPXP123", 661)); +assertNull(res[365].exec("1.2.3.4", 662)); +assertNull(res[365].exec("131.111.10.206", 663)); +assertNull(res[365].exec("10.0.0.0", 664)); +assertNull(res[365].exec("** Failers", 665)); +assertNull(res[365].exec("10.6", 666)); +assertNull(res[365].exec("455.3.4.5", 667)); +assertNull(res[365].exec("1.2.3.4", 668)); +assertNull(res[365].exec("131.111.10.206", 669)); +assertNull(res[365].exec("10.0.0.0", 670)); +assertNull(res[365].exec("** Failers", 671)); +assertNull(res[365].exec("10.6", 672)); +assertNull(res[365].exec("455.3.4.5", 673)); +assertNull(res[365].exec("123axbaxbaxbx456", 674)); +assertNull(res[365].exec("123axbaxbaxb456", 675)); +assertNull(res[365].exec("123axbaxbaxbx456", 676)); +assertNull(res[365].exec("123axbaxbaxbx456", 677)); +assertNull(res[365].exec("123axbaxbaxbx456", 678)); +assertNull(res[366].exec("ababababbbabZXXXX", 679)); +assertNull(res[372].exec("a\x0db", 680)); +assertNull(res[372].exec("*** Failers", 681)); +assertNull(res[372].exec("a\nb", 682)); +assertToStringEquals("afoo", res[373].exec("afoo"), 683); +assertNull(res[373].exec("** Failers", 684)); +assertNull(res[373].exec("\x0d\nfoo", 685)); +assertNull(res[373].exec("\nfoo", 686)); +assertToStringEquals("afoo", res[374].exec("afoo"), 687); +assertNull(res[374].exec("\nfoo", 688)); +assertNull(res[374].exec("** Failers", 689)); +assertNull(res[374].exec("\x0d\nfoo", 690)); +assertToStringEquals("afoo", res[375].exec("afoo"), 691); +assertNull(res[375].exec("** Failers", 692)); +assertNull(res[375].exec("\nfoo", 693)); +assertNull(res[375].exec("\x0d\nfoo", 694)); +assertToStringEquals("afoo", res[376].exec("afoo"), 695); +assertNull(res[376].exec("\x0d\nfoo", 696)); +assertNull(res[376].exec("\nfoo", 697)); +assertToStringEquals("", res[377].exec("abc\x0d\x0dxyz"), 698); +assertToStringEquals("", res[377].exec("abc\n\x0dxyz "), 699); +assertNull(res[377].exec("** Failers ", 700)); +assertToStringEquals("", res[377].exec("abc\x0d\nxyz"), 701); +assertToStringEquals("", res[377].exec("abc\x0d\n\x0d\n"), 702); +assertToStringEquals("", res[377].exec("abc\x0d\n\x0d\n"), 703); +assertToStringEquals("", res[377].exec("abc\x0d\n\x0d\n"), 704); +assertToStringEquals("abc1", res[378].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 705); +assertToStringEquals("X", res[379].exec("XABC"), 706); +assertNull(res[379].exec("** Failers ", 707)); +assertToStringEquals("X", res[379].exec("XABCB"), 708); assertThrows("var re = /(ab|c)(?-1)/;", 709); -assertEquals(null, res[379].exec("abc", 710)); -assertEquals(null, res[379].exec("xyabcabc", 711)); -assertEquals(null, res[379].exec("** Failers", 712)); -assertEquals(null, res[379].exec("xyabc ", 713)); +assertNull(res[379].exec("abc", 710)); +assertNull(res[379].exec("xyabcabc", 711)); +assertNull(res[379].exec("** Failers", 712)); +assertNull(res[379].exec("xyabc ", 713)); assertThrows("var re = /x(?-0)y/;", 714); assertThrows("var re = /x(?-1)y/;", 715); -assertEquals(null, res[379].exec("abcX", 716)); -assertEquals(null, res[379].exec("Y", 717)); -assertEquals(null, res[379].exec("** Failers", 718)); -assertEquals(null, res[379].exec("abcY ", 719)); -assertEquals(null, res[379].exec("YabcXabc", 720)); -assertEquals(null, res[379].exec("YabcXabcXabc", 721)); -assertEquals(null, res[379].exec("** Failers", 722)); -assertEquals("X", res[379].exec("XabcXabc "), 723); -assertEquals(null, res[379].exec("Y!", 724)); -assertEquals(null, res[380].exec("foobar", 725)); -assertEquals(null, res[381].exec("foobar", 726)); -assertEquals("foobaz,foo,baz", res[381].exec("foobaz "), 727); -assertEquals(null, res[382].exec("foobarbaz", 728)); -assertEquals(null, res[382].exec("tom-tom", 729)); -assertEquals(null, res[382].exec("bon-bon ", 730)); -assertEquals(null, res[382].exec("** Failers", 731)); -assertEquals(null, res[382].exec("tom-bon ", 732)); -assertEquals(null, res[382].exec("tom-tom", 733)); -assertEquals(null, res[382].exec("bon-bon ", 734)); +assertNull(res[379].exec("abcX", 716)); +assertNull(res[379].exec("Y", 717)); +assertNull(res[379].exec("** Failers", 718)); +assertNull(res[379].exec("abcY ", 719)); +assertNull(res[379].exec("YabcXabc", 720)); +assertNull(res[379].exec("YabcXabcXabc", 721)); +assertNull(res[379].exec("** Failers", 722)); +assertToStringEquals("X", res[379].exec("XabcXabc "), 723); +assertNull(res[379].exec("Y!", 724)); +assertNull(res[380].exec("foobar", 725)); +assertNull(res[381].exec("foobar", 726)); +assertToStringEquals("foobaz,foo,baz", res[381].exec("foobaz "), 727); +assertNull(res[382].exec("foobarbaz", 728)); +assertNull(res[382].exec("tom-tom", 729)); +assertNull(res[382].exec("bon-bon ", 730)); +assertNull(res[382].exec("** Failers", 731)); +assertNull(res[382].exec("tom-bon ", 732)); +assertNull(res[382].exec("tom-tom", 733)); +assertNull(res[382].exec("bon-bon ", 734)); assertThrows("var re = /(?|(abc)|(xyz))/;", 735); assertThrows("var re = /(x)(?|(abc)|(xyz))(x)/;", 736); -assertEquals(null, res[383].exec("xabcx", 737)); -assertEquals(null, res[383].exec("xxyzx ", 738)); +assertNull(res[383].exec("xabcx", 737)); +assertNull(res[383].exec("xxyzx ", 738)); assertThrows("var re = /(x)(?|(abc)(pqr)|(xyz))(x)/;", 739); -assertEquals(null, res[383].exec("xabcpqrx", 740)); -assertEquals(null, res[383].exec("xxyzx ", 741)); +assertNull(res[383].exec("xabcpqrx", 740)); +assertNull(res[383].exec("xxyzx ", 741)); assertThrows("var re = /(?|(abc)|(xyz))\\1/;", 742); -assertEquals(null, res[383].exec("abcabc", 743)); -assertEquals(null, res[383].exec("xyzxyz ", 744)); -assertEquals(null, res[383].exec("** Failers", 745)); -assertEquals(null, res[383].exec("abcxyz", 746)); -assertEquals(null, res[383].exec("xyzabc ", 747)); -assertEquals(null, res[383].exec("abcabc", 748)); -assertEquals(null, res[383].exec("xyzabc ", 749)); -assertEquals(null, res[383].exec("** Failers ", 750)); -assertEquals(null, res[383].exec("xyzxyz ", 751)); -assertEquals(null, res[384].exec("X X\n", 752)); -assertEquals(null, res[384].exec("X\x09X\x0b", 753)); -assertEquals(null, res[384].exec("** Failers", 754)); -assertEquals(null, res[384].exec("\xa0 X\n ", 755)); -assertEquals(null, res[385].exec("\x09 \xa0X\n\x0b\x0c\x0d\n", 756)); -assertEquals(null, res[385].exec("\x09 \xa0\n\x0b\x0c\x0d\n", 757)); -assertEquals(null, res[385].exec("\x09 \xa0\n\x0b\x0c", 758)); -assertEquals(null, res[385].exec("** Failers ", 759)); -assertEquals(null, res[385].exec("\x09 \xa0\n\x0b", 760)); -assertEquals(null, res[385].exec(" ", 761)); -assertEquals(null, res[386].exec("XY ABCDE", 762)); -assertEquals(null, res[386].exec("XY PQR ST ", 763)); -assertEquals(null, res[387].exec("XY AB PQRS", 764)); -assertEquals(null, res[388].exec(">XNNNYZ", 765)); -assertEquals(null, res[388].exec("> X NYQZ", 766)); -assertEquals(null, res[388].exec("** Failers", 767)); -assertEquals(null, res[388].exec(">XYZ ", 768)); -assertEquals(null, res[388].exec("> X NY Z", 769)); -assertEquals(null, res[389].exec(">XY\nZ\nA\x0bNN\x0c", 770)); -assertEquals(null, res[389].exec(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c", 771)); -assertEquals(null, res[390].exec(">\x09<", 772)); -assertEquals(null, res[391].exec(">\x09 \xa0<", 773)); -assertEquals(null, res[396].exec("** Failers", 774)); -assertEquals(null, res[396].exec("XXXX", 775)); -assertEquals(null, res[397].exec("XXXX Y ", 776)); -assertEquals(null, res[419].exec("aaaaaa", 777)); -assertEquals(null, res[419].exec("aaabccc", 778)); -assertEquals(null, res[419].exec("aaabccc", 779)); -assertEquals(null, res[419].exec("aaabccc", 780)); -assertEquals(null, res[419].exec("aaabcccaaabccc", 781)); -assertEquals(null, res[419].exec("aaaxxxxxx", 782)); -assertEquals(null, res[419].exec("aaa++++++ ", 783)); -assertEquals(null, res[419].exec("bbbxxxxx", 784)); -assertEquals(null, res[419].exec("bbb+++++ ", 785)); -assertEquals(null, res[419].exec("cccxxxx", 786)); -assertEquals(null, res[419].exec("ccc++++ ", 787)); -assertEquals(null, res[419].exec("dddddddd ", 788)); -assertEquals(null, res[419].exec("aaaxxxxxx", 789)); -assertEquals(null, res[419].exec("aaa++++++ ", 790)); -assertEquals(null, res[419].exec("bbbxxxxx", 791)); -assertEquals(null, res[419].exec("bbb+++++ ", 792)); -assertEquals(null, res[419].exec("cccxxxx", 793)); -assertEquals(null, res[419].exec("ccc++++ ", 794)); -assertEquals(null, res[419].exec("dddddddd ", 795)); -assertEquals(null, res[419].exec("aaabccc", 796)); -assertEquals(null, res[419].exec("ABX", 797)); -assertEquals(null, res[419].exec("AADE", 798)); -assertEquals(null, res[419].exec("ACDE", 799)); -assertEquals(null, res[419].exec("** Failers", 800)); -assertEquals(null, res[419].exec("AD ", 801)); -assertEquals(null, res[419].exec(" ", 802)); -assertEquals(null, res[419].exec("aaaaaa", 803)); -assertEquals(null, res[419].exec("aaabccc", 804)); -assertEquals(null, res[419].exec("aaabccc", 805)); -assertEquals(null, res[419].exec("aaabccc", 806)); -assertEquals(null, res[419].exec("aaabcccaaabccc", 807)); -assertEquals(null, res[419].exec("aaabccc", 808)); -assertEquals(null, res[422].exec("\x0d\nA", 809)); -assertEquals("\nA", res[423].exec("\x0d\nA "), 810); -assertEquals("\nA", res[424].exec("\x0d\nA "), 811); -assertEquals("\nA,\n", res[425].exec("\x0d\nA "), 812); -assertEquals(null, res[425].exec("a\nb", 813)); -assertEquals(null, res[425].exec("** Failers", 814)); -assertEquals(null, res[425].exec("a\x0db ", 815)); -assertEquals(null, res[425].exec("a\nb", 816)); -assertEquals(null, res[425].exec("** Failers", 817)); -assertEquals(null, res[425].exec("a\x0db ", 818)); -assertEquals(null, res[425].exec("a\x0db", 819)); -assertEquals(null, res[425].exec("** Failers", 820)); -assertEquals(null, res[425].exec("a\nb ", 821)); -assertEquals(null, res[425].exec("a\x0db", 822)); -assertEquals(null, res[425].exec("a\nb ", 823)); -assertEquals(null, res[425].exec("** Failers", 824)); -assertEquals(null, res[425].exec("a\x0d\nb ", 825)); -assertEquals(null, res[425].exec("** Failers", 826)); -assertEquals(null, res[425].exec("a\x0db", 827)); -assertEquals(null, res[425].exec("a\nb ", 828)); -assertEquals(null, res[425].exec("a\x0d\nb ", 829)); -assertEquals(null, res[425].exec("** Failers", 830)); -assertEquals(null, res[425].exec("a\x0db", 831)); -assertEquals(null, res[425].exec("a\nb ", 832)); -assertEquals(null, res[425].exec("a\x0d\nb ", 833)); -assertEquals(null, res[425].exec("a\x85b ", 834)); -assertEquals(null, res[426].exec("a\x0db", 835)); -assertEquals(null, res[426].exec("a\nb", 836)); -assertEquals(null, res[426].exec("a\x0d\nb", 837)); -assertEquals(null, res[426].exec("** Failers", 838)); -assertEquals(null, res[426].exec("a\x85b", 839)); -assertEquals(null, res[426].exec("a\x0bb ", 840)); -assertEquals(null, res[427].exec("a\x0db", 841)); -assertEquals(null, res[427].exec("a\nb", 842)); -assertEquals(null, res[427].exec("a\x0d\nb", 843)); -assertEquals(null, res[427].exec("a\x85b", 844)); -assertEquals(null, res[427].exec("a\x0bb ", 845)); -assertEquals(null, res[427].exec("** Failers ", 846)); -assertEquals(null, res[427].exec("a\x85b<bsr_anycrlf>", 847)); -assertEquals(null, res[427].exec("a\x0bb<bsr_anycrlf>", 848)); -assertEquals(null, res[428].exec("a\x0db", 849)); -assertEquals(null, res[428].exec("a\nb", 850)); -assertEquals(null, res[428].exec("a\x0d\nb", 851)); -assertEquals(null, res[428].exec("** Failers", 852)); -assertEquals(null, res[428].exec("a\x85b", 853)); -assertEquals(null, res[428].exec("a\x0bb ", 854)); -assertEquals(null, res[429].exec("a\x0db", 855)); -assertEquals(null, res[429].exec("a\nb", 856)); -assertEquals(null, res[429].exec("a\x0d\nb", 857)); -assertEquals(null, res[429].exec("a\x85b", 858)); -assertEquals(null, res[429].exec("a\x0bb ", 859)); -assertEquals(null, res[429].exec("** Failers ", 860)); -assertEquals(null, res[429].exec("a\x85b<bsr_anycrlf>", 861)); -assertEquals(null, res[429].exec("a\x0bb<bsr_anycrlf>", 862)); -assertEquals(null, res[430].exec("a\x0d\n\nb", 863)); -assertEquals(null, res[430].exec("a\n\x0d\x0db", 864)); -assertEquals(null, res[430].exec("a\x0d\n\x0d\n\x0d\n\x0d\nb", 865)); -assertEquals(null, res[430].exec("** Failers", 866)); -assertEquals(null, res[430].exec("a\x8585b", 867)); -assertEquals(null, res[430].exec("a\x0b\x00bb ", 868)); -assertEquals(null, res[431].exec("a\x0d\x0db", 869)); -assertEquals(null, res[431].exec("a\n\n\nb", 870)); -assertEquals(null, res[431].exec("a\x0d\n\n\x0d\x0db", 871)); -assertEquals(null, res[431].exec("a\x8585b", 872)); -assertEquals(null, res[431].exec("a\x0b\x00bb ", 873)); -assertEquals(null, res[431].exec("** Failers ", 874)); -assertEquals(null, res[431].exec("a\x0d\x0d\x0d\x0d\x0db ", 875)); -assertEquals(null, res[431].exec("a\x8585b<bsr_anycrlf>", 876)); -assertEquals(null, res[431].exec("a\x0b\x00bb<bsr_anycrlf>", 877)); -assertEquals(null, res[431].exec("a\nb", 878)); -assertEquals(null, res[431].exec("a\x0db ", 879)); -assertEquals(null, res[431].exec("a\x85b", 880)); -assertEquals(null, res[431].exec("a\nb", 881)); -assertEquals(null, res[431].exec("a\x0db ", 882)); -assertEquals(null, res[431].exec("a\x85b", 883)); +assertNull(res[383].exec("abcabc", 743)); +assertNull(res[383].exec("xyzxyz ", 744)); +assertNull(res[383].exec("** Failers", 745)); +assertNull(res[383].exec("abcxyz", 746)); +assertNull(res[383].exec("xyzabc ", 747)); +assertNull(res[383].exec("abcabc", 748)); +assertNull(res[383].exec("xyzabc ", 749)); +assertNull(res[383].exec("** Failers ", 750)); +assertNull(res[383].exec("xyzxyz ", 751)); +assertNull(res[384].exec("X X\n", 752)); +assertNull(res[384].exec("X\x09X\x0b", 753)); +assertNull(res[384].exec("** Failers", 754)); +assertNull(res[384].exec("\xa0 X\n ", 755)); +assertNull(res[385].exec("\x09 \xa0X\n\x0b\x0c\x0d\n", 756)); +assertNull(res[385].exec("\x09 \xa0\n\x0b\x0c\x0d\n", 757)); +assertNull(res[385].exec("\x09 \xa0\n\x0b\x0c", 758)); +assertNull(res[385].exec("** Failers ", 759)); +assertNull(res[385].exec("\x09 \xa0\n\x0b", 760)); +assertNull(res[385].exec(" ", 761)); +assertNull(res[386].exec("XY ABCDE", 762)); +assertNull(res[386].exec("XY PQR ST ", 763)); +assertNull(res[387].exec("XY AB PQRS", 764)); +assertNull(res[388].exec(">XNNNYZ", 765)); +assertNull(res[388].exec("> X NYQZ", 766)); +assertNull(res[388].exec("** Failers", 767)); +assertNull(res[388].exec(">XYZ ", 768)); +assertNull(res[388].exec("> X NY Z", 769)); +assertNull(res[389].exec(">XY\nZ\nA\x0bNN\x0c", 770)); +assertNull(res[389].exec(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c", 771)); +assertNull(res[390].exec(">\x09<", 772)); +assertNull(res[391].exec(">\x09 \xa0<", 773)); +assertNull(res[396].exec("** Failers", 774)); +assertNull(res[396].exec("XXXX", 775)); +assertNull(res[397].exec("XXXX Y ", 776)); +assertNull(res[419].exec("aaaaaa", 777)); +assertNull(res[419].exec("aaabccc", 778)); +assertNull(res[419].exec("aaabccc", 779)); +assertNull(res[419].exec("aaabccc", 780)); +assertNull(res[419].exec("aaabcccaaabccc", 781)); +assertNull(res[419].exec("aaaxxxxxx", 782)); +assertNull(res[419].exec("aaa++++++ ", 783)); +assertNull(res[419].exec("bbbxxxxx", 784)); +assertNull(res[419].exec("bbb+++++ ", 785)); +assertNull(res[419].exec("cccxxxx", 786)); +assertNull(res[419].exec("ccc++++ ", 787)); +assertNull(res[419].exec("dddddddd ", 788)); +assertNull(res[419].exec("aaaxxxxxx", 789)); +assertNull(res[419].exec("aaa++++++ ", 790)); +assertNull(res[419].exec("bbbxxxxx", 791)); +assertNull(res[419].exec("bbb+++++ ", 792)); +assertNull(res[419].exec("cccxxxx", 793)); +assertNull(res[419].exec("ccc++++ ", 794)); +assertNull(res[419].exec("dddddddd ", 795)); +assertNull(res[419].exec("aaabccc", 796)); +assertNull(res[419].exec("ABX", 797)); +assertNull(res[419].exec("AADE", 798)); +assertNull(res[419].exec("ACDE", 799)); +assertNull(res[419].exec("** Failers", 800)); +assertNull(res[419].exec("AD ", 801)); +assertNull(res[419].exec(" ", 802)); +assertNull(res[419].exec("aaaaaa", 803)); +assertNull(res[419].exec("aaabccc", 804)); +assertNull(res[419].exec("aaabccc", 805)); +assertNull(res[419].exec("aaabccc", 806)); +assertNull(res[419].exec("aaabcccaaabccc", 807)); +assertNull(res[419].exec("aaabccc", 808)); +assertNull(res[422].exec("\x0d\nA", 809)); +assertToStringEquals("\nA", res[423].exec("\x0d\nA "), 810); +assertToStringEquals("\nA", res[424].exec("\x0d\nA "), 811); +assertToStringEquals("\nA,\n", res[425].exec("\x0d\nA "), 812); +assertNull(res[425].exec("a\nb", 813)); +assertNull(res[425].exec("** Failers", 814)); +assertNull(res[425].exec("a\x0db ", 815)); +assertNull(res[425].exec("a\nb", 816)); +assertNull(res[425].exec("** Failers", 817)); +assertNull(res[425].exec("a\x0db ", 818)); +assertNull(res[425].exec("a\x0db", 819)); +assertNull(res[425].exec("** Failers", 820)); +assertNull(res[425].exec("a\nb ", 821)); +assertNull(res[425].exec("a\x0db", 822)); +assertNull(res[425].exec("a\nb ", 823)); +assertNull(res[425].exec("** Failers", 824)); +assertNull(res[425].exec("a\x0d\nb ", 825)); +assertNull(res[425].exec("** Failers", 826)); +assertNull(res[425].exec("a\x0db", 827)); +assertNull(res[425].exec("a\nb ", 828)); +assertNull(res[425].exec("a\x0d\nb ", 829)); +assertNull(res[425].exec("** Failers", 830)); +assertNull(res[425].exec("a\x0db", 831)); +assertNull(res[425].exec("a\nb ", 832)); +assertNull(res[425].exec("a\x0d\nb ", 833)); +assertNull(res[425].exec("a\x85b ", 834)); +assertNull(res[426].exec("a\x0db", 835)); +assertNull(res[426].exec("a\nb", 836)); +assertNull(res[426].exec("a\x0d\nb", 837)); +assertNull(res[426].exec("** Failers", 838)); +assertNull(res[426].exec("a\x85b", 839)); +assertNull(res[426].exec("a\x0bb ", 840)); +assertNull(res[427].exec("a\x0db", 841)); +assertNull(res[427].exec("a\nb", 842)); +assertNull(res[427].exec("a\x0d\nb", 843)); +assertNull(res[427].exec("a\x85b", 844)); +assertNull(res[427].exec("a\x0bb ", 845)); +assertNull(res[427].exec("** Failers ", 846)); +assertNull(res[427].exec("a\x85b<bsr_anycrlf>", 847)); +assertNull(res[427].exec("a\x0bb<bsr_anycrlf>", 848)); +assertNull(res[428].exec("a\x0db", 849)); +assertNull(res[428].exec("a\nb", 850)); +assertNull(res[428].exec("a\x0d\nb", 851)); +assertNull(res[428].exec("** Failers", 852)); +assertNull(res[428].exec("a\x85b", 853)); +assertNull(res[428].exec("a\x0bb ", 854)); +assertNull(res[429].exec("a\x0db", 855)); +assertNull(res[429].exec("a\nb", 856)); +assertNull(res[429].exec("a\x0d\nb", 857)); +assertNull(res[429].exec("a\x85b", 858)); +assertNull(res[429].exec("a\x0bb ", 859)); +assertNull(res[429].exec("** Failers ", 860)); +assertNull(res[429].exec("a\x85b<bsr_anycrlf>", 861)); +assertNull(res[429].exec("a\x0bb<bsr_anycrlf>", 862)); +assertNull(res[430].exec("a\x0d\n\nb", 863)); +assertNull(res[430].exec("a\n\x0d\x0db", 864)); +assertNull(res[430].exec("a\x0d\n\x0d\n\x0d\n\x0d\nb", 865)); +assertNull(res[430].exec("** Failers", 866)); +assertNull(res[430].exec("a\x8585b", 867)); +assertNull(res[430].exec("a\x0b\x00bb ", 868)); +assertNull(res[431].exec("a\x0d\x0db", 869)); +assertNull(res[431].exec("a\n\n\nb", 870)); +assertNull(res[431].exec("a\x0d\n\n\x0d\x0db", 871)); +assertNull(res[431].exec("a\x8585b", 872)); +assertNull(res[431].exec("a\x0b\x00bb ", 873)); +assertNull(res[431].exec("** Failers ", 874)); +assertNull(res[431].exec("a\x0d\x0d\x0d\x0d\x0db ", 875)); +assertNull(res[431].exec("a\x8585b<bsr_anycrlf>", 876)); +assertNull(res[431].exec("a\x0b\x00bb<bsr_anycrlf>", 877)); +assertNull(res[431].exec("a\nb", 878)); +assertNull(res[431].exec("a\x0db ", 879)); +assertNull(res[431].exec("a\x85b", 880)); +assertNull(res[431].exec("a\nb", 881)); +assertNull(res[431].exec("a\x0db ", 882)); +assertNull(res[431].exec("a\x85b", 883)); assertThrows("var re = /(?-+a)/;", 884); -assertEquals(null, res[443].exec("aaaa", 885)); -assertEquals(null, res[443].exec("bacxxx", 886)); -assertEquals(null, res[443].exec("bbaccxxx ", 887)); -assertEquals(null, res[443].exec("bbbacccxx", 888)); -assertEquals(null, res[443].exec("aaaa", 889)); -assertEquals(null, res[443].exec("bacxxx", 890)); -assertEquals(null, res[443].exec("bbaccxxx ", 891)); -assertEquals(null, res[443].exec("bbbacccxx", 892)); -assertEquals("a,a", res[444].exec("aaaa"), 893); -assertEquals(null, res[444].exec("bacxxx", 894)); -assertEquals(null, res[444].exec("bbaccxxx ", 895)); -assertEquals(null, res[444].exec("bbbacccxx", 896)); -assertEquals("a,a", res[445].exec("aaaa"), 897); -assertEquals(null, res[445].exec("bacxxx", 898)); -assertEquals(null, res[445].exec("bbaccxxx ", 899)); -assertEquals(null, res[445].exec("bbbacccxx", 900)); -assertEquals("a,a", res[446].exec("aaaa"), 901); -assertEquals(null, res[446].exec("bacxxx", 902)); -assertEquals(null, res[446].exec("bbaccxxx ", 903)); -assertEquals(null, res[446].exec("bbbacccxx", 904)); -assertEquals("a,a,a", res[447].exec("aaaa"), 905); -assertEquals(null, res[447].exec("bacxxx", 906)); -assertEquals(null, res[447].exec("bbaccxxx ", 907)); -assertEquals(null, res[447].exec("bbbacccxx", 908)); -assertEquals(null, res[449].exec("bacxxx", 909)); -assertEquals(null, res[449].exec("XaaX", 910)); -assertEquals(null, res[449].exec("XAAX ", 911)); -assertEquals(null, res[449].exec("XaaX", 912)); -assertEquals(null, res[449].exec("** Failers ", 913)); -assertEquals(null, res[449].exec("XAAX ", 914)); -assertEquals(null, res[449].exec("XaaX", 915)); -assertEquals(null, res[449].exec("XAAX ", 916)); -assertEquals(null, res[449].exec("xzxx", 917)); -assertEquals(null, res[449].exec("yzyy ", 918)); -assertEquals(null, res[449].exec("** Failers", 919)); -assertEquals(null, res[449].exec("xxz ", 920)); -assertEquals("a,,,a", res[450].exec("cat"), 921); -assertEquals("a,,,a", res[451].exec("cat"), 922); -assertEquals("TA]", res[452].exec("The ACTA] comes "), 923); -assertEquals("TA]", res[453].exec("The ACTA] comes "), 924); -assertEquals(null, res[453].exec("abcbabc", 925)); -assertEquals(null, res[453].exec("abcbabc", 926)); -assertEquals(null, res[453].exec("abcbabc", 927)); -assertEquals(null, res[453].exec("** Failers ", 928)); -assertEquals(null, res[453].exec("abcXabc", 929)); -assertEquals(null, res[453].exec("abcXabc", 930)); -assertEquals(null, res[453].exec("** Failers ", 931)); -assertEquals(null, res[453].exec("abcbabc", 932)); -assertEquals(null, res[453].exec("xyzbabcxyz", 933)); -assertEquals(null, res[456].exec("** Failers", 934)); -assertEquals(null, res[456].exec("ab", 935)); -assertEquals(null, res[457].exec("** Failers", 936)); -assertEquals(null, res[457].exec("ab ", 937)); -assertEquals(null, res[457].exec("** Failers", 938)); -assertEquals(null, res[457].exec("ab ", 939)); -assertEquals("aXb", res[458].exec("aXb"), 940); -assertEquals("a\nb", res[458].exec("a\nb "), 941); -assertEquals(null, res[458].exec("** Failers", 942)); -assertEquals(null, res[458].exec("ab ", 943)); -assertEquals("aXb", res[459].exec("aXb"), 944); -assertEquals("a\nX\nXb", res[459].exec("a\nX\nXb "), 945); -assertEquals(null, res[459].exec("** Failers", 946)); -assertEquals(null, res[459].exec("ab ", 947)); -assertEquals("acb", res[463].exec("acb"), 948); -assertEquals("ab", res[463].exec("ab"), 949); -assertEquals(null, res[463].exec("ax{100}b ", 950)); -assertEquals(null, res[463].exec("*** Failers", 951)); -assertEquals(null, res[463].exec("a\nb ", 952)); -assertEquals(null, res[464].exec("ax{4000}xyb ", 953)); -assertEquals(null, res[464].exec("ax{4000}yb ", 954)); -assertEquals(null, res[464].exec("ax{4000}x{100}yb ", 955)); -assertEquals(null, res[464].exec("*** Failers", 956)); -assertEquals(null, res[464].exec("ax{4000}b ", 957)); -assertEquals(null, res[464].exec("ac\ncb ", 958)); -assertEquals("a\xc0,,\xc0", res[465].exec("a\xc0\x88b"), 959); -assertEquals("ax,,x", res[466].exec("ax{100}b"), 960); -assertEquals("a\xc0\x88b,\xc0\x88,b", res[467].exec("a\xc0\x88b"), 961); -assertEquals("ax{100}b,x{100},b", res[468].exec("ax{100}b"), 962); -assertEquals("a\xc0\x92,\xc0,\x92", res[469].exec("a\xc0\x92bcd"), 963); -assertEquals("ax{,x,{", res[470].exec("ax{240}bcd"), 964); -assertEquals("a\xc0\x92,\xc0,\x92", res[471].exec("a\xc0\x92bcd"), 965); -assertEquals("ax{,x,{", res[472].exec("ax{240}bcd"), 966); -assertEquals("a\xc0,,\xc0", res[473].exec("a\xc0\x92bcd"), 967); -assertEquals("ax,,x", res[474].exec("ax{240}bcd"), 968); -assertEquals(null, res[475].exec("ax{1234}xyb ", 969)); -assertEquals(null, res[475].exec("ax{1234}x{4321}yb ", 970)); -assertEquals(null, res[475].exec("ax{1234}x{4321}x{3412}b ", 971)); -assertEquals(null, res[475].exec("*** Failers", 972)); -assertEquals(null, res[475].exec("ax{1234}b ", 973)); -assertEquals(null, res[475].exec("ac\ncb ", 974)); -assertEquals("ax{1234}xyb,x{1234}xy", res[476].exec("ax{1234}xyb "), 975); -assertEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[476].exec("ax{1234}x{4321}yb "), 976); -assertEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[476].exec("ax{1234}x{4321}x{3412}b "), 977); -assertEquals("axxxxbcdefghijb,xxxxbcdefghij", res[476].exec("axxxxbcdefghijb "), 978); -assertEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[476].exec("ax{1234}x{4321}x{3412}x{3421}b "), 979); -assertEquals(null, res[476].exec("*** Failers", 980)); -assertEquals("ax{1234}b,x{1234}", res[476].exec("ax{1234}b "), 981); -assertEquals("ax{1234}xyb,x{1234}xy", res[477].exec("ax{1234}xyb "), 982); -assertEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[477].exec("ax{1234}x{4321}yb "), 983); -assertEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[477].exec("ax{1234}x{4321}x{3412}b "), 984); -assertEquals("axxxxb,xxxx", res[477].exec("axxxxbcdefghijb "), 985); -assertEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[477].exec("ax{1234}x{4321}x{3412}x{3421}b "), 986); -assertEquals(null, res[477].exec("*** Failers", 987)); -assertEquals("ax{1234}b,x{1234}", res[477].exec("ax{1234}b "), 988); -assertEquals(null, res[478].exec("ax{1234}xyb ", 989)); -assertEquals(null, res[478].exec("ax{1234}x{4321}yb ", 990)); -assertEquals(null, res[478].exec("ax{1234}x{4321}x{3412}b ", 991)); -assertEquals("axxxxb,xxxx", res[478].exec("axxxxbcdefghijb "), 992); -assertEquals(null, res[478].exec("ax{1234}x{4321}x{3412}x{3421}b ", 993)); -assertEquals("axbxxb,xbxx", res[478].exec("axbxxbcdefghijb "), 994); -assertEquals("axxxxxb,xxxxx", res[478].exec("axxxxxbcdefghijb "), 995); -assertEquals(null, res[478].exec("*** Failers", 996)); -assertEquals(null, res[478].exec("ax{1234}b ", 997)); -assertEquals(null, res[478].exec("axxxxxxbcdefghijb ", 998)); -assertEquals(null, res[479].exec("ax{1234}xyb ", 999)); -assertEquals(null, res[479].exec("ax{1234}x{4321}yb ", 1000)); -assertEquals(null, res[479].exec("ax{1234}x{4321}x{3412}b ", 1001)); -assertEquals("axxxxb,xxxx", res[479].exec("axxxxbcdefghijb "), 1002); -assertEquals(null, res[479].exec("ax{1234}x{4321}x{3412}x{3421}b ", 1003)); -assertEquals("axbxxb,xbxx", res[479].exec("axbxxbcdefghijb "), 1004); -assertEquals("axxxxxb,xxxxx", res[479].exec("axxxxxbcdefghijb "), 1005); -assertEquals(null, res[479].exec("*** Failers", 1006)); -assertEquals(null, res[479].exec("ax{1234}b ", 1007)); -assertEquals(null, res[479].exec("axxxxxxbcdefghijb ", 1008)); -assertEquals(null, res[479].exec("*** Failers", 1009)); -assertEquals(null, res[479].exec("x{100}", 1010)); -assertEquals(null, res[479].exec("aXbcd", 1011)); -assertEquals(null, res[479].exec("ax{100}bcd", 1012)); -assertEquals(null, res[479].exec("ax{100000}bcd", 1013)); -assertEquals(null, res[479].exec("x{100}x{100}x{100}b", 1014)); -assertEquals(null, res[479].exec("*** Failers ", 1015)); -assertEquals(null, res[479].exec("x{100}x{100}b", 1016)); -assertEquals(null, res[479].exec("x{ab} ", 1017)); -assertEquals(null, res[479].exec("\xc2\xab", 1018)); -assertEquals(null, res[479].exec("*** Failers ", 1019)); -assertEquals(null, res[479].exec("\x00{ab}", 1020)); -assertEquals(null, res[479].exec("WXYZ", 1021)); -assertEquals(null, res[479].exec("x{256}XYZ ", 1022)); -assertEquals(null, res[479].exec("*** Failers", 1023)); -assertEquals(null, res[479].exec("XYZ ", 1024)); -assertEquals(null, res[480].exec("Xx{1234}", 1025)); -assertEquals(null, res[481].exec("Xx{1234}YZ", 1026)); -assertEquals("X", res[482].exec("XYZabcdce"), 1027); -assertEquals("X", res[483].exec("XYZabcde"), 1028); -assertEquals(null, res[484].exec("Xabcdefg ", 1029)); -assertEquals(null, res[484].exec("Xx{1234} ", 1030)); -assertEquals(null, res[484].exec("Xx{1234}YZ", 1031)); -assertEquals(null, res[484].exec("Xx{1234}x{512} ", 1032)); -assertEquals(null, res[484].exec("Xx{1234}x{512}YZ", 1033)); -assertEquals(null, res[485].exec("Xabcdefg ", 1034)); -assertEquals(null, res[485].exec("Xx{1234} ", 1035)); -assertEquals(null, res[485].exec("Xx{1234}YZ", 1036)); -assertEquals(null, res[485].exec("Xx{1234}x{512} ", 1037)); -assertEquals("bcd", res[486].exec("bcd"), 1038); -assertEquals("00}", res[486].exec("x{100}aYx{256}Z "), 1039); -assertEquals("x{", res[487].exec("x{100}bc"), 1040); -assertEquals("x{100}bcA", res[488].exec("x{100}bcAa"), 1041); -assertEquals("x{", res[489].exec("x{100}bca"), 1042); -assertEquals("bcd", res[490].exec("bcd"), 1043); -assertEquals("00}", res[490].exec("x{100}aYx{256}Z "), 1044); -assertEquals("x{", res[491].exec("x{100}bc"), 1045); -assertEquals("x{100}bc", res[492].exec("x{100}bcAa"), 1046); -assertEquals("x{", res[493].exec("x{100}bca"), 1047); -assertEquals(null, res[493].exec("abcd", 1048)); -assertEquals(null, res[493].exec("abcd", 1049)); -assertEquals("x{", res[493].exec("x{100}x{100} "), 1050); -assertEquals("x{", res[493].exec("x{100}x{100} "), 1051); -assertEquals("x{", res[493].exec("x{100}x{100}x{100}x{100} "), 1052); -assertEquals(null, res[493].exec("abce", 1053)); -assertEquals("x{", res[493].exec("x{100}x{100}x{100}x{100} "), 1054); -assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1055)); -assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1056)); -assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1057)); -assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}XX", 1058)); -assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 1059)); -assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 1060)); -assertEquals("Xy", res[493].exec("Xyyyax{100}x{100}bXzzz"), 1061); -assertEquals("X", res[496].exec("1X2"), 1062); -assertEquals("x", res[496].exec("1x{100}2 "), 1063); -assertEquals(">X", res[497].exec("> >X Y"), 1064); -assertEquals(">x", res[497].exec("> >x{100} Y"), 1065); -assertEquals("1", res[498].exec("x{100}3"), 1066); -assertEquals(" ", res[499].exec("x{100} X"), 1067); -assertEquals("abcd", res[500].exec("12abcd34"), 1068); -assertEquals("*** Failers", res[500].exec("*** Failers"), 1069); -assertEquals(" ", res[500].exec("1234 "), 1070); -assertEquals("abc", res[501].exec("12abcd34"), 1071); -assertEquals("ab", res[501].exec("12ab34"), 1072); -assertEquals("***", res[501].exec("*** Failers "), 1073); -assertEquals(null, res[501].exec("1234", 1074)); -assertEquals(" ", res[501].exec("12a34 "), 1075); -assertEquals("ab", res[502].exec("12abcd34"), 1076); -assertEquals("ab", res[502].exec("12ab34"), 1077); -assertEquals("**", res[502].exec("*** Failers "), 1078); -assertEquals(null, res[502].exec("1234", 1079)); -assertEquals(" ", res[502].exec("12a34 "), 1080); -assertEquals("12", res[503].exec("12abcd34"), 1081); -assertEquals(null, res[503].exec("*** Failers", 1082)); -assertEquals("12", res[504].exec("12abcd34"), 1083); -assertEquals("123", res[504].exec("1234abcd"), 1084); -assertEquals(null, res[504].exec("*** Failers ", 1085)); -assertEquals(null, res[504].exec("1.4 ", 1086)); -assertEquals("12", res[505].exec("12abcd34"), 1087); -assertEquals("12", res[505].exec("1234abcd"), 1088); -assertEquals(null, res[505].exec("*** Failers ", 1089)); -assertEquals(null, res[505].exec("1.4 ", 1090)); -assertEquals("12abcd34", res[506].exec("12abcd34"), 1091); -assertEquals("***", res[506].exec("*** Failers"), 1092); -assertEquals(null, res[506].exec(" ", 1093)); -assertEquals("12a", res[507].exec("12abcd34"), 1094); -assertEquals("123", res[507].exec("1234abcd"), 1095); -assertEquals("***", res[507].exec("*** Failers"), 1096); -assertEquals(null, res[507].exec(" ", 1097)); -assertEquals("12", res[508].exec("12abcd34"), 1098); -assertEquals("12", res[508].exec("1234abcd"), 1099); -assertEquals("**", res[508].exec("*** Failers"), 1100); -assertEquals(null, res[508].exec(" ", 1101)); -assertEquals("> <", res[509].exec("12> <34"), 1102); -assertEquals(null, res[509].exec("*** Failers", 1103)); -assertEquals("> <", res[510].exec("ab> <cd"), 1104); -assertEquals("> <", res[510].exec("ab> <ce"), 1105); -assertEquals(null, res[510].exec("*** Failers", 1106)); -assertEquals(null, res[510].exec("ab> <cd ", 1107)); -assertEquals("> <", res[511].exec("ab> <cd"), 1108); -assertEquals("> <", res[511].exec("ab> <ce"), 1109); -assertEquals(null, res[511].exec("*** Failers", 1110)); -assertEquals(null, res[511].exec("ab> <cd ", 1111)); -assertEquals("12", res[512].exec("12 34"), 1112); -assertEquals("Failers", res[512].exec("*** Failers"), 1113); -assertEquals(null, res[512].exec("+++=*! ", 1114)); -assertEquals("ab", res[513].exec("ab cd"), 1115); -assertEquals("abc", res[513].exec("abcd ce"), 1116); -assertEquals("Fai", res[513].exec("*** Failers"), 1117); -assertEquals(null, res[513].exec("a.b.c", 1118)); -assertEquals("ab", res[514].exec("ab cd"), 1119); -assertEquals("ab", res[514].exec("abcd ce"), 1120); -assertEquals("Fa", res[514].exec("*** Failers"), 1121); -assertEquals(null, res[514].exec("a.b.c", 1122)); -assertEquals("====", res[515].exec("12====34"), 1123); -assertEquals("*** ", res[515].exec("*** Failers"), 1124); -assertEquals(" ", res[515].exec("abcd "), 1125); -assertEquals("===", res[516].exec("ab====cd"), 1126); -assertEquals("==", res[516].exec("ab==cd"), 1127); -assertEquals("***", res[516].exec("*** Failers"), 1128); -assertEquals(null, res[516].exec("a.b.c", 1129)); -assertEquals("==", res[517].exec("ab====cd"), 1130); -assertEquals("==", res[517].exec("ab==cd"), 1131); -assertEquals("**", res[517].exec("*** Failers"), 1132); -assertEquals(null, res[517].exec("a.b.c", 1133)); -assertEquals(null, res[517].exec("x{100}", 1134)); -assertEquals(null, res[517].exec("Zx{100}", 1135)); -assertEquals(null, res[517].exec("x{100}Z", 1136)); -assertEquals("**", res[517].exec("*** Failers "), 1137); -assertEquals(null, res[517].exec("Zx{100}", 1138)); -assertEquals(null, res[517].exec("x{100}", 1139)); -assertEquals(null, res[517].exec("x{100}Z", 1140)); -assertEquals("**", res[517].exec("*** Failers "), 1141); -assertEquals(null, res[517].exec("abcx{200}X", 1142)); -assertEquals(null, res[517].exec("abcx{100}X ", 1143)); -assertEquals("**", res[517].exec("*** Failers"), 1144); -assertEquals(" ", res[517].exec("X "), 1145); -assertEquals(null, res[517].exec("abcx{200}X", 1146)); -assertEquals(null, res[517].exec("abcx{100}X ", 1147)); -assertEquals(null, res[517].exec("abQX ", 1148)); -assertEquals("**", res[517].exec("*** Failers"), 1149); -assertEquals(" ", res[517].exec("X "), 1150); -assertEquals(null, res[517].exec("abcx{100}x{200}x{100}X", 1151)); -assertEquals("**", res[517].exec("*** Failers"), 1152); -assertEquals(null, res[517].exec("abcx{200}X", 1153)); -assertEquals(" ", res[517].exec("X "), 1154); -assertEquals(null, res[517].exec("AX", 1155)); -assertEquals(null, res[517].exec("x{150}X", 1156)); -assertEquals(null, res[517].exec("x{500}X ", 1157)); -assertEquals("**", res[517].exec("*** Failers"), 1158); -assertEquals(null, res[517].exec("x{100}X", 1159)); -assertEquals(" ", res[517].exec("x{200}X "), 1160); -assertEquals(null, res[517].exec("AX", 1161)); -assertEquals(null, res[517].exec("x{150}X", 1162)); -assertEquals(null, res[517].exec("x{500}X ", 1163)); -assertEquals("**", res[517].exec("*** Failers"), 1164); -assertEquals(null, res[517].exec("x{100}X", 1165)); -assertEquals(" ", res[517].exec("x{200}X "), 1166); -assertEquals(null, res[517].exec("QX ", 1167)); -assertEquals(null, res[517].exec("AX", 1168)); -assertEquals(null, res[517].exec("x{500}X ", 1169)); -assertEquals("**", res[517].exec("*** Failers"), 1170); -assertEquals(null, res[517].exec("x{100}X", 1171)); -assertEquals(null, res[517].exec("x{150}X", 1172)); -assertEquals(" ", res[517].exec("x{200}X "), 1173); -assertEquals(null, res[518].exec("aXb", 1174)); -assertEquals(null, res[518].exec("a\nb", 1175)); -assertEquals(null, res[519].exec("aXb", 1176)); -assertEquals(null, res[519].exec("a\nb", 1177)); -assertEquals(null, res[519].exec("*** Failers ", 1178)); -assertEquals(null, res[519].exec("ax{100}b ", 1179)); -assertEquals(null, res[519].exec("z", 1180)); -assertEquals(null, res[519].exec("Z ", 1181)); -assertEquals(null, res[519].exec("x{100}", 1182)); -assertEquals(null, res[519].exec("*** Failers", 1183)); -assertEquals(null, res[519].exec("x{102}", 1184)); -assertEquals(null, res[519].exec("y ", 1185)); -assertEquals("\xff", res[520].exec(">\xff<"), 1186); -assertEquals(null, res[521].exec(">x{ff}<", 1187)); -assertEquals("X", res[522].exec("XYZ"), 1188); -assertEquals("X", res[523].exec("XYZ"), 1189); -assertEquals("x", res[523].exec("x{123} "), 1190); -assertEquals(",", res[528].exec("catac"), 1191); -assertEquals(",", res[528].exec("ax{256}a "), 1192); -assertEquals(",", res[528].exec("x{85}"), 1193); -assertEquals(",", res[528].exec("\u1234 "), 1194); -assertEquals(",", res[528].exec("\u1234 "), 1195); -assertEquals(",", res[528].exec("abcdefg"), 1196); -assertEquals(",", res[528].exec("ab"), 1197); -assertEquals(",", res[528].exec("a "), 1198); -assertEquals("Ax", res[529].exec("Ax{a3}BC"), 1199); -assertEquals("Ax", res[530].exec("Ax{a3}BC"), 1200); -assertEquals("}=", res[531].exec("+x{a3}== "), 1201); -assertEquals("}=", res[532].exec("+x{a3}== "), 1202); -assertEquals("x", res[533].exec("x{442}x{435}x{441}x{442}"), 1203); -assertEquals("x", res[534].exec("x{442}x{435}x{441}x{442}"), 1204); -assertEquals("x", res[535].exec("x{442}x{435}x{441}x{442}"), 1205); -assertEquals("x", res[536].exec("x{442}x{435}x{441}x{442}"), 1206); -assertEquals("{", res[537].exec("x{2442}x{2435}x{2441}x{2442}"), 1207); -assertEquals("{", res[538].exec("x{2442}x{2435}x{2441}x{2442}"), 1208); -assertEquals("abc\n\x0dx{442}x{435}x{441}x{442}xyz ", res[539].exec("abc\n\x0dx{442}x{435}x{441}x{442}xyz "), 1209); -assertEquals("x{442}x{435}x{441}x{442}", res[539].exec("x{442}x{435}x{441}x{442}"), 1210); -assertEquals("c d", res[540].exec("abc defx{442}x{443}xyz\npqr"), 1211); -assertEquals("c d", res[541].exec("abc defx{442}x{443}xyz\npqr"), 1212); -assertEquals(null, res[542].exec("+x{2442}", 1213)); -assertEquals(null, res[543].exec("+x{2442}", 1214)); -assertEquals(null, res[544].exec("Ax{442}", 1215)); -assertEquals(null, res[545].exec("Ax{442}", 1216)); -assertEquals(null, res[546].exec("Ax{442}", 1217)); -assertEquals(null, res[547].exec("Ax{442}", 1218)); -assertEquals(null, res[548].exec("\x19x{e01ff}", 1219)); -assertEquals(null, res[549].exec("Ax{422}", 1220)); -assertEquals(null, res[550].exec("x{19}x{e01ff}", 1221)); -assertEquals(null, res[551].exec("Ax{442}", 1222)); -assertEquals(null, res[552].exec("Ax{442}", 1223)); -assertEquals(null, res[553].exec("ax{442}", 1224)); -assertEquals(null, res[554].exec("+x{2442}", 1225)); -assertEquals(null, res[555].exec("Mx{442}", 1226)); -assertEquals("abc", res[556].exec("abc"), 1227); -assertEquals("abc", res[557].exec("abc"), 1228); -assertEquals("abc", res[558].exec("abc"), 1229); -assertEquals("abc", res[559].exec("abc"), 1230); -assertEquals(null, res[560].exec("x{100}ax{1234}bcd", 1231)); -assertEquals(null, res[562].exec("x{0041}x{2262}x{0391}x{002e}", 1232)); -assertEquals(null, res[562].exec("x{D55c}x{ad6d}x{C5B4} ", 1233)); -assertEquals(null, res[562].exec("x{65e5}x{672c}x{8a9e}", 1234)); -assertEquals("{861}X", res[563].exec("x{212ab}x{212ab}x{212ab}x{861}X"), 1235); -assertEquals("x{2", res[564].exec("x{212ab}x{212ab}x{212ab}x{861}"), 1236); -assertEquals("x{c", res[564].exec("x{c0}b"), 1237); -assertEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1238); -assertEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1239); -assertEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1240); -assertEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1241); -assertEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1242); -assertEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1243); -assertEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1244); -assertEquals("Sho", res[564].exec("Should produce an error diagnostic"), 1245); -assertEquals(null, res[565].exec("Xx{1234}", 1246)); -assertEquals(null, res[565].exec("X\nabc ", 1247)); -assertEquals("b", res[566].exec("bar"), 1248); -assertEquals(null, res[566].exec("*** Failers", 1249)); -assertEquals(null, res[566].exec("c", 1250)); -assertEquals(null, res[566].exec("x{ff}", 1251)); -assertEquals(null, res[566].exec("x{100} ", 1252)); -assertEquals("c", res[567].exec("c"), 1253); -assertEquals("x", res[567].exec("x{ff}"), 1254); -assertEquals("x", res[567].exec("x{100} "), 1255); -assertEquals("*", res[567].exec("*** Failers "), 1256); -assertEquals(null, res[567].exec("aaa", 1257)); -assertEquals("x", res[568].exec("x{f1}"), 1258); -assertEquals("x", res[568].exec("x{bf}"), 1259); -assertEquals("x", res[568].exec("x{100}"), 1260); -assertEquals("x", res[568].exec("x{1000} "), 1261); -assertEquals("*", res[568].exec("*** Failers"), 1262); -assertEquals("x", res[568].exec("x{c0} "), 1263); -assertEquals("x", res[568].exec("x{f0} "), 1264); -assertEquals("1", res[568].exec("1234"), 1265); -assertEquals("\"", res[568].exec("\"1234\" "), 1266); -assertEquals("x", res[568].exec("x{100}1234"), 1267); -assertEquals("\"", res[568].exec("\"x{100}1234\" "), 1268); -assertEquals("x", res[568].exec("x{100}x{100}12ab "), 1269); -assertEquals("x", res[568].exec("x{100}x{100}\"12\" "), 1270); -assertEquals("*", res[568].exec("*** Failers "), 1271); -assertEquals("x", res[568].exec("x{100}x{100}abcd"), 1272); -assertEquals("A", res[568].exec("A"), 1273); -assertEquals("x", res[568].exec("x{100}"), 1274); -assertEquals("Z", res[568].exec("Zx{100}"), 1275); -assertEquals("x", res[568].exec("x{100}Z"), 1276); -assertEquals("*", res[568].exec("*** Failers "), 1277); -assertEquals("Z", res[568].exec("Zx{100}"), 1278); -assertEquals("x", res[568].exec("x{100}"), 1279); -assertEquals("x", res[568].exec("x{100}Z"), 1280); -assertEquals("*", res[568].exec("*** Failers "), 1281); -assertEquals("x", res[568].exec("x{100}"), 1282); -assertEquals("x", res[568].exec("x{104}"), 1283); -assertEquals("*", res[568].exec("*** Failers"), 1284); -assertEquals("x", res[568].exec("x{105}"), 1285); -assertEquals("x", res[568].exec("x{ff} "), 1286); -assertEquals("x", res[568].exec("x{100}"), 1287); -assertEquals("\u0100", res[568].exec("\u0100 "), 1288); -assertEquals("\xff", res[569].exec(">\xff<"), 1289); -assertEquals(null, res[570].exec(">x{ff}<", 1290)); -assertEquals("\xd6", res[572].exec("\xd6 # Matches without Study"), 1291); -assertEquals("x", res[572].exec("x{d6}"), 1292); -assertEquals("\xd6", res[572].exec("\xd6 <-- Same with Study"), 1293); -assertEquals("x", res[572].exec("x{d6}"), 1294); -assertEquals("\xd6", res[572].exec("\xd6 # Matches without Study"), 1295); -assertEquals("x", res[572].exec("x{d6} "), 1296); -assertEquals("\xd6", res[572].exec("\xd6 <-- Same with Study"), 1297); -assertEquals("x", res[572].exec("x{d6} "), 1298); -assertEquals("\ufffd", res[572].exec("\ufffd]"), 1299); -assertEquals("\ufffd", res[572].exec("\ufffd"), 1300); -assertEquals("\ufffd", res[572].exec("\ufffd\ufffd\ufffd"), 1301); -assertEquals("\ufffd", res[572].exec("\ufffd\ufffd\ufffd?"), 1302); -assertEquals(null, res[573].exec("\xc0\x80", 1303)); -assertEquals(null, res[573].exec("\xc1\x8f ", 1304)); -assertEquals(null, res[573].exec("\xe0\x9f\x80", 1305)); -assertEquals(null, res[573].exec("\xf0\x8f\x80\x80 ", 1306)); -assertEquals(null, res[573].exec("\xf8\x87\x80\x80\x80 ", 1307)); -assertEquals(null, res[573].exec("\xfc\x83\x80\x80\x80\x80", 1308)); -assertEquals(null, res[573].exec("\xfe\x80\x80\x80\x80\x80 ", 1309)); -assertEquals(null, res[573].exec("\xff\x80\x80\x80\x80\x80 ", 1310)); -assertEquals(null, res[573].exec("\xc3\x8f", 1311)); -assertEquals(null, res[573].exec("\xe0\xaf\x80", 1312)); -assertEquals(null, res[573].exec("\xe1\x80\x80", 1313)); -assertEquals(null, res[573].exec("\xf0\x9f\x80\x80 ", 1314)); -assertEquals(null, res[573].exec("\xf1\x8f\x80\x80 ", 1315)); -assertEquals(null, res[573].exec("\xf8\x88\x80\x80\x80 ", 1316)); -assertEquals(null, res[573].exec("\xf9\x87\x80\x80\x80 ", 1317)); -assertEquals(null, res[573].exec("\xfc\x84\x80\x80\x80\x80", 1318)); -assertEquals(null, res[573].exec("\xfd\x83\x80\x80\x80\x80", 1319)); -assertEquals(null, res[573].exec("?\xf8\x88\x80\x80\x80 ", 1320)); -assertEquals(null, res[573].exec("?\xf9\x87\x80\x80\x80 ", 1321)); -assertEquals(null, res[573].exec("?\xfc\x84\x80\x80\x80\x80", 1322)); -assertEquals(null, res[573].exec("?\xfd\x83\x80\x80\x80\x80", 1323)); -assertEquals(".", res[574].exec("A.B"), 1324); -assertEquals("{", res[574].exec("Ax{100}B "), 1325); -assertEquals("x", res[575].exec("x{100}X "), 1326); -assertEquals("a", res[575].exec("ax{1234}b"), 1327); -assertEquals(null, res[577].exec("AxxB ", 1328)); -assertEquals("abc1", res[578].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 1329); -assertEquals("abc1", res[579].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 1330); -assertEquals(null, res[580].exec("a\nb", 1331)); -assertEquals(null, res[580].exec("a\x0db", 1332)); -assertEquals(null, res[580].exec("a\x0d\nb", 1333)); -assertEquals(null, res[580].exec("a\x0bb", 1334)); -assertEquals(null, res[580].exec("a\x0cb", 1335)); -assertEquals(null, res[580].exec("ax{85}b ", 1336)); -assertEquals(null, res[580].exec("ax{2028}b ", 1337)); -assertEquals(null, res[580].exec("ax{2029}b ", 1338)); -assertEquals(null, res[580].exec("** Failers", 1339)); -assertEquals(null, res[580].exec("a\n\x0db ", 1340)); -assertEquals("ab", res[581].exec("ab"), 1341); -assertEquals(null, res[581].exec("a\nb", 1342)); -assertEquals(null, res[581].exec("a\x0db", 1343)); -assertEquals(null, res[581].exec("a\x0d\nb", 1344)); -assertEquals(null, res[581].exec("a\x0bb", 1345)); -assertEquals(null, res[581].exec("a\x0cx{2028}x{2029}b", 1346)); -assertEquals(null, res[581].exec("ax{85}b ", 1347)); -assertEquals(null, res[581].exec("a\n\x0db ", 1348)); -assertEquals(null, res[581].exec("a\n\x0dx{85}\x0cb ", 1349)); -assertEquals(null, res[582].exec("a\nb", 1350)); -assertEquals(null, res[582].exec("a\x0db", 1351)); -assertEquals(null, res[582].exec("a\x0d\nb", 1352)); -assertEquals(null, res[582].exec("a\x0bb", 1353)); -assertEquals(null, res[582].exec("a\x0cx{2028}x{2029}b", 1354)); -assertEquals(null, res[582].exec("ax{85}b ", 1355)); -assertEquals(null, res[582].exec("a\n\x0db ", 1356)); -assertEquals(null, res[582].exec("a\n\x0dx{85}\x0cb ", 1357)); -assertEquals(null, res[582].exec("** Failers", 1358)); -assertEquals(null, res[582].exec("ab ", 1359)); -assertEquals(null, res[583].exec("a\nb", 1360)); -assertEquals(null, res[583].exec("a\n\x0db", 1361)); -assertEquals(null, res[583].exec("a\n\x0dx{85}b", 1362)); -assertEquals(null, res[583].exec("a\x0d\n\x0d\nb ", 1363)); -assertEquals(null, res[583].exec("a\x0d\n\x0d\n\x0d\nb ", 1364)); -assertEquals(null, res[583].exec("a\n\x0d\n\x0db", 1365)); -assertEquals(null, res[583].exec("a\n\n\x0d\nb ", 1366)); -assertEquals(null, res[583].exec("** Failers", 1367)); -assertEquals(null, res[583].exec("a\n\n\n\x0db", 1368)); -assertEquals(null, res[583].exec("a\x0d", 1369)); -assertEquals(null, res[584].exec("X X\n", 1370)); -assertEquals(null, res[584].exec("X\x09X\x0b", 1371)); -assertEquals(null, res[584].exec("** Failers", 1372)); -assertEquals(null, res[584].exec("x{a0} X\n ", 1373)); -assertEquals(null, res[585].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 1374)); -assertEquals(null, res[585].exec("\x09 x{a0}\n\x0b\x0c\x0d\n", 1375)); -assertEquals(null, res[585].exec("\x09 x{a0}\n\x0b\x0c", 1376)); -assertEquals(null, res[585].exec("** Failers ", 1377)); -assertEquals(null, res[585].exec("\x09 x{a0}\n\x0b", 1378)); -assertEquals(null, res[585].exec(" ", 1379)); -assertEquals(null, res[586].exec("x{3001}x{3000}x{2030}x{2028}", 1380)); -assertEquals(null, res[586].exec("Xx{180e}Xx{85}", 1381)); -assertEquals(null, res[586].exec("** Failers", 1382)); -assertEquals(null, res[586].exec("x{2009} X\n ", 1383)); -assertEquals(null, res[587].exec("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n", 1384)); -assertEquals(null, res[587].exec("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n", 1385)); -assertEquals(null, res[587].exec("\x09 x{202f}\n\x0b\x0c", 1386)); -assertEquals(null, res[587].exec("** Failers ", 1387)); -assertEquals(null, res[587].exec("\x09x{200a}x{a0}x{2028}\x0b", 1388)); -assertEquals(null, res[587].exec(" ", 1389)); -assertEquals(null, res[588].exec(">x{1680}", 1390)); -assertEquals(null, res[589].exec(">x{1680}x{180e}x{2000}x{2003}x{200a}x{202f}x{205f}x{3000}<", 1391)); -assertEquals("x{1ec5} ", res[593].exec("x{1ec5} "), 1392); -assertEquals(null, res[594].exec("x{0}x{d7ff}x{e000}x{10ffff}", 1393)); -assertEquals(null, res[594].exec("x{d800}", 1394)); -assertEquals(null, res[594].exec("x{d800}?", 1395)); -assertEquals(null, res[594].exec("x{da00}", 1396)); -assertEquals(null, res[594].exec("x{da00}?", 1397)); -assertEquals(null, res[594].exec("x{dfff}", 1398)); -assertEquals(null, res[594].exec("x{dfff}?", 1399)); -assertEquals(null, res[594].exec("x{110000} ", 1400)); -assertEquals(null, res[594].exec("x{110000}? ", 1401)); -assertEquals(null, res[594].exec("x{2000000} ", 1402)); -assertEquals(null, res[594].exec("x{2000000}? ", 1403)); -assertEquals(null, res[594].exec("x{7fffffff} ", 1404)); -assertEquals(null, res[594].exec("x{7fffffff}? ", 1405)); -assertEquals(null, res[595].exec("a\x0db", 1406)); -assertEquals(null, res[595].exec("a\nb", 1407)); -assertEquals(null, res[595].exec("a\x0d\nb", 1408)); -assertEquals(null, res[595].exec("** Failers", 1409)); -assertEquals(null, res[595].exec("ax{85}b", 1410)); -assertEquals(null, res[595].exec("a\x0bb ", 1411)); -assertEquals(null, res[596].exec("a\x0db", 1412)); -assertEquals(null, res[596].exec("a\nb", 1413)); -assertEquals(null, res[596].exec("a\x0d\nb", 1414)); -assertEquals(null, res[596].exec("ax{85}b", 1415)); -assertEquals(null, res[596].exec("a\x0bb ", 1416)); -assertEquals(null, res[596].exec("** Failers ", 1417)); -assertEquals(null, res[596].exec("ax{85}b<bsr_anycrlf>", 1418)); -assertEquals(null, res[596].exec("a\x0bb<bsr_anycrlf>", 1419)); -assertEquals(null, res[597].exec("a\x0db", 1420)); -assertEquals(null, res[597].exec("a\nb", 1421)); -assertEquals(null, res[597].exec("a\x0d\nb", 1422)); -assertEquals(null, res[597].exec("** Failers", 1423)); -assertEquals(null, res[597].exec("ax{85}b", 1424)); -assertEquals(null, res[597].exec("a\x0bb ", 1425)); -assertEquals(null, res[598].exec("a\x0db", 1426)); -assertEquals(null, res[598].exec("a\nb", 1427)); -assertEquals(null, res[598].exec("a\x0d\nb", 1428)); -assertEquals(null, res[598].exec("ax{85}b", 1429)); -assertEquals(null, res[598].exec("a\x0bb ", 1430)); -assertEquals(null, res[598].exec("** Failers ", 1431)); -assertEquals(null, res[598].exec("ax{85}b<bsr_anycrlf>", 1432)); -assertEquals(null, res[598].exec("a\x0bb<bsr_anycrlf>", 1433)); -assertEquals("QQQx{2029}ABCaXYZ=!bPQR", res[599].exec("QQQx{2029}ABCaXYZ=!bPQR"), 1434); -assertEquals(null, res[599].exec("** Failers", 1435)); -assertEquals(null, res[599].exec("ax{2029}b", 1436)); -assertEquals(null, res[599].exec("a\xe2\x80\xa9b ", 1437)); -assertEquals(null, res[600].exec("ax{1234}b", 1438)); -assertEquals("a\nb", res[600].exec("a\nb "), 1439); -assertEquals(null, res[600].exec("** Failers", 1440)); -assertEquals(null, res[600].exec("ab ", 1441)); -assertEquals("aXb", res[601].exec("aXb"), 1442); -assertEquals("a\nX\nXx{1234}b", res[601].exec("a\nX\nXx{1234}b "), 1443); -assertEquals(null, res[601].exec("** Failers", 1444)); -assertEquals(null, res[601].exec("ab ", 1445)); -assertEquals(null, res[601].exec("x{de}x{de}", 1446)); -assertEquals(null, res[601].exec("x{123} ", 1447)); -assertEquals("X", res[602].exec("Ax{1ec5}ABCXYZ"), 1448); -assertEquals(null, res[604].exec("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<", 1449)); -assertEquals(null, res[604].exec("\npx{300}9!$ < ", 1450)); -assertEquals(null, res[604].exec("** Failers ", 1451)); -assertEquals(null, res[604].exec("apx{300}9!$ < ", 1452)); -assertEquals(null, res[605].exec("X", 1453)); -assertEquals(null, res[605].exec("** Failers ", 1454)); -assertEquals(null, res[605].exec("", 1455)); -assertEquals(null, res[606].exec("9", 1456)); -assertEquals(null, res[606].exec("** Failers ", 1457)); -assertEquals(null, res[606].exec("x{c0}", 1458)); -assertEquals(null, res[607].exec("X", 1459)); -assertEquals(null, res[607].exec("** Failers ", 1460)); -assertEquals(null, res[607].exec("x{30f}", 1461)); -assertEquals(null, res[608].exec("X", 1462)); -assertEquals(null, res[608].exec("** Failers ", 1463)); -assertEquals(null, res[608].exec("x{660}", 1464)); -assertEquals(null, res[609].exec("X", 1465)); -assertEquals(null, res[609].exec("** Failers ", 1466)); -assertEquals(null, res[609].exec("x{66c}", 1467)); -assertEquals(null, res[610].exec("X", 1468)); -assertEquals(null, res[610].exec("** Failers ", 1469)); -assertEquals(null, res[610].exec("x{f01}", 1470)); -assertEquals(null, res[611].exec("X", 1471)); -assertEquals(null, res[611].exec("** Failers ", 1472)); -assertEquals(null, res[611].exec("x{1680}", 1473)); -assertEquals(null, res[612].exec("x{017}", 1474)); -assertEquals(null, res[612].exec("x{09f} ", 1475)); -assertEquals(null, res[612].exec("** Failers", 1476)); -assertEquals(null, res[612].exec("x{0600} ", 1477)); -assertEquals(null, res[613].exec("x{601}", 1478)); -assertEquals(null, res[613].exec("** Failers", 1479)); -assertEquals(null, res[613].exec("x{09f} ", 1480)); -assertEquals(null, res[614].exec("x{e0000}", 1481)); -assertEquals(null, res[614].exec("** Failers", 1482)); -assertEquals(null, res[614].exec("x{09f} ", 1483)); -assertEquals(null, res[615].exec("x{f8ff}", 1484)); -assertEquals(null, res[615].exec("** Failers", 1485)); -assertEquals(null, res[615].exec("x{09f} ", 1486)); -assertEquals(null, res[616].exec("?x{dfff}", 1487)); -assertEquals(null, res[616].exec("** Failers", 1488)); -assertEquals(null, res[616].exec("x{09f} ", 1489)); -assertEquals(null, res[617].exec("a", 1490)); -assertEquals(null, res[617].exec("** Failers ", 1491)); -assertEquals(null, res[617].exec("Z", 1492)); -assertEquals(null, res[617].exec("x{e000} ", 1493)); -assertEquals(null, res[618].exec("x{2b0}", 1494)); -assertEquals(null, res[618].exec("** Failers", 1495)); -assertEquals(null, res[618].exec("a ", 1496)); -assertEquals(null, res[619].exec("x{1bb}", 1497)); -assertEquals(null, res[619].exec("x{3400}", 1498)); -assertEquals(null, res[619].exec("x{3401}", 1499)); -assertEquals(null, res[619].exec("x{4d00}", 1500)); -assertEquals(null, res[619].exec("x{4db4}", 1501)); -assertEquals(null, res[619].exec("x{4db5} ", 1502)); -assertEquals(null, res[619].exec("** Failers", 1503)); -assertEquals(null, res[619].exec("a ", 1504)); -assertEquals(null, res[619].exec("x{2b0}", 1505)); -assertEquals(null, res[619].exec("x{4db6} ", 1506)); -assertEquals(null, res[620].exec("x{1c5}", 1507)); -assertEquals(null, res[620].exec("** Failers", 1508)); -assertEquals(null, res[620].exec("a ", 1509)); -assertEquals(null, res[620].exec("x{2b0}", 1510)); -assertEquals(null, res[621].exec("A", 1511)); -assertEquals(null, res[621].exec("** Failers", 1512)); -assertEquals(null, res[621].exec("x{2b0}", 1513)); -assertEquals(null, res[622].exec("x{903}", 1514)); -assertEquals(null, res[622].exec("** Failers", 1515)); -assertEquals(null, res[622].exec("X", 1516)); -assertEquals(null, res[622].exec("x{300}", 1517)); -assertEquals(null, res[622].exec(" ", 1518)); -assertEquals(null, res[623].exec("x{488}", 1519)); -assertEquals(null, res[623].exec("** Failers", 1520)); -assertEquals(null, res[623].exec("X", 1521)); -assertEquals(null, res[623].exec("x{903}", 1522)); -assertEquals(null, res[623].exec("x{300}", 1523)); -assertEquals(null, res[624].exec("x{300}", 1524)); -assertEquals(null, res[624].exec("** Failers", 1525)); -assertEquals(null, res[624].exec("X", 1526)); -assertEquals(null, res[624].exec("x{903}", 1527)); -assertEquals(null, res[624].exec("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}", 1528)); -assertEquals(null, res[624].exec("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}", 1529)); -assertEquals(null, res[624].exec("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}", 1530)); -assertEquals(null, res[624].exec("** Failers", 1531)); -assertEquals(null, res[624].exec("X", 1532)); -assertEquals(null, res[625].exec("x{16ee}", 1533)); -assertEquals(null, res[625].exec("** Failers", 1534)); -assertEquals(null, res[625].exec("X", 1535)); -assertEquals(null, res[625].exec("x{966}", 1536)); -assertEquals(null, res[626].exec("x{b2}", 1537)); -assertEquals(null, res[626].exec("x{b3}", 1538)); -assertEquals(null, res[626].exec("** Failers", 1539)); -assertEquals(null, res[626].exec("X", 1540)); -assertEquals(null, res[626].exec("x{16ee}", 1541)); -assertEquals(null, res[627].exec("_", 1542)); -assertEquals(null, res[627].exec("x{203f}", 1543)); -assertEquals(null, res[627].exec("** Failers", 1544)); -assertEquals(null, res[627].exec("X", 1545)); -assertEquals(null, res[627].exec("-", 1546)); -assertEquals(null, res[627].exec("x{58a}", 1547)); -assertEquals(null, res[628].exec("-", 1548)); -assertEquals(null, res[628].exec("x{58a}", 1549)); -assertEquals(null, res[628].exec("** Failers", 1550)); -assertEquals(null, res[628].exec("X", 1551)); -assertEquals(null, res[628].exec("x{203f}", 1552)); -assertEquals(null, res[629].exec(")", 1553)); -assertEquals(null, res[629].exec("]", 1554)); -assertEquals(null, res[629].exec("}", 1555)); -assertEquals(null, res[629].exec("x{f3b}", 1556)); -assertEquals(null, res[629].exec("** Failers", 1557)); -assertEquals(null, res[629].exec("X", 1558)); -assertEquals(null, res[629].exec("x{203f}", 1559)); -assertEquals(null, res[629].exec("(", 1560)); -assertEquals(null, res[629].exec("[", 1561)); -assertEquals(null, res[629].exec("{", 1562)); -assertEquals(null, res[629].exec("x{f3c}", 1563)); -assertEquals(null, res[630].exec("x{bb}", 1564)); -assertEquals(null, res[630].exec("x{2019}", 1565)); -assertEquals(null, res[630].exec("** Failers", 1566)); -assertEquals(null, res[630].exec("X", 1567)); -assertEquals(null, res[630].exec("x{203f}", 1568)); -assertEquals(null, res[631].exec("x{ab}", 1569)); -assertEquals(null, res[631].exec("x{2018}", 1570)); -assertEquals(null, res[631].exec("** Failers", 1571)); -assertEquals(null, res[631].exec("X", 1572)); -assertEquals(null, res[631].exec("x{203f}", 1573)); -assertEquals(null, res[632].exec("!", 1574)); -assertEquals(null, res[632].exec("x{37e}", 1575)); -assertEquals(null, res[632].exec("** Failers", 1576)); -assertEquals(null, res[632].exec("X", 1577)); -assertEquals(null, res[632].exec("x{203f}", 1578)); -assertEquals(null, res[633].exec("(", 1579)); -assertEquals(null, res[633].exec("[", 1580)); -assertEquals(null, res[633].exec("{", 1581)); -assertEquals(null, res[633].exec("x{f3c}", 1582)); -assertEquals(null, res[633].exec("** Failers", 1583)); -assertEquals(null, res[633].exec("X", 1584)); -assertEquals(null, res[633].exec(")", 1585)); -assertEquals(null, res[633].exec("]", 1586)); -assertEquals(null, res[633].exec("}", 1587)); -assertEquals(null, res[633].exec("x{f3b}", 1588)); -assertEquals(null, res[633].exec("$x{a2}x{a3}x{a4}x{a5}x{a6}", 1589)); -assertEquals(null, res[633].exec("x{9f2}", 1590)); -assertEquals(null, res[633].exec("** Failers", 1591)); -assertEquals(null, res[633].exec("X", 1592)); -assertEquals(null, res[633].exec("x{2c2}", 1593)); -assertEquals(null, res[634].exec("x{2c2}", 1594)); -assertEquals(null, res[634].exec("** Failers", 1595)); -assertEquals(null, res[634].exec("X", 1596)); -assertEquals(null, res[634].exec("x{9f2}", 1597)); -assertEquals(null, res[634].exec("+<|~x{ac}x{2044}", 1598)); -assertEquals(null, res[634].exec("** Failers", 1599)); -assertEquals(null, res[634].exec("X", 1600)); -assertEquals(null, res[634].exec("x{9f2}", 1601)); -assertEquals(null, res[635].exec("x{a6}", 1602)); -assertEquals(null, res[635].exec("x{482} ", 1603)); -assertEquals(null, res[635].exec("** Failers", 1604)); -assertEquals(null, res[635].exec("X", 1605)); -assertEquals(null, res[635].exec("x{9f2}", 1606)); -assertEquals(null, res[636].exec("x{2028}", 1607)); -assertEquals(null, res[636].exec("** Failers", 1608)); -assertEquals(null, res[636].exec("X", 1609)); -assertEquals(null, res[636].exec("x{2029}", 1610)); -assertEquals(null, res[637].exec("x{2029}", 1611)); -assertEquals(null, res[637].exec("** Failers", 1612)); -assertEquals(null, res[637].exec("X", 1613)); -assertEquals(null, res[637].exec("x{2028}", 1614)); -assertEquals(null, res[638].exec("\\ \\", 1615)); -assertEquals(null, res[638].exec("x{a0}", 1616)); -assertEquals(null, res[638].exec("x{1680}", 1617)); -assertEquals(null, res[638].exec("x{180e}", 1618)); -assertEquals(null, res[638].exec("x{2000}", 1619)); -assertEquals(null, res[638].exec("x{2001} ", 1620)); -assertEquals(null, res[638].exec("** Failers", 1621)); -assertEquals(null, res[638].exec("x{2028}", 1622)); -assertEquals(null, res[638].exec("x{200d} ", 1623)); -assertEquals(null, res[638].exec(" x{660}x{661}x{662}ABC", 1624)); -assertEquals(null, res[638].exec(" x{660}x{661}x{662}ABC", 1625)); -assertEquals(null, res[639].exec(" x{660}x{661}x{662}ABC", 1626)); -assertEquals(null, res[640].exec(" x{660}x{661}x{662}ABC", 1627)); -assertEquals(null, res[641].exec(" x{660}x{661}x{662}ABC", 1628)); -assertEquals(null, res[642].exec(" x{660}x{661}x{662}ABC", 1629)); -assertEquals(null, res[643].exec(" x{660}x{661}x{662}ABC", 1630)); -assertEquals(null, res[644].exec(" x{660}x{661}x{662}ABC", 1631)); -assertEquals(null, res[645].exec(" x{660}x{661}x{662}ABC", 1632)); -assertEquals(null, res[646].exec(" x{660}x{661}x{662}ABC", 1633)); -assertEquals(null, res[647].exec(" x{660}x{661}x{662}ABC", 1634)); -assertEquals(null, res[647].exec(" x{660}x{661}x{662}ABC", 1635)); -assertEquals(null, res[647].exec(" x{660}x{661}x{662}ABC", 1636)); -assertEquals(null, res[647].exec(" ** Failers", 1637)); -assertEquals(null, res[647].exec(" x{660}x{661}x{662}ABC", 1638)); -assertEquals(null, res[648].exec("A", 1639)); -assertEquals(null, res[648].exec("ax{10a0}B ", 1640)); -assertEquals(null, res[648].exec("** Failers ", 1641)); -assertEquals(null, res[648].exec("a", 1642)); -assertEquals(null, res[648].exec("x{1d00} ", 1643)); -assertEquals(null, res[649].exec("1234", 1644)); -assertEquals(null, res[649].exec("** Failers", 1645)); -assertEquals(null, res[649].exec("ABC ", 1646)); -assertEquals(null, res[650].exec("1234", 1647)); -assertEquals(null, res[650].exec("** Failers", 1648)); -assertEquals(null, res[650].exec("ABC ", 1649)); -assertEquals(null, res[650].exec("A2XYZ", 1650)); -assertEquals(null, res[650].exec("123A5XYZPQR", 1651)); -assertEquals(null, res[650].exec("ABAx{660}XYZpqr", 1652)); -assertEquals(null, res[650].exec("** Failers", 1653)); -assertEquals(null, res[650].exec("AXYZ", 1654)); -assertEquals(null, res[650].exec("XYZ ", 1655)); -assertEquals(null, res[650].exec("1XYZ", 1656)); -assertEquals(null, res[650].exec("AB=XYZ.. ", 1657)); -assertEquals(null, res[650].exec("XYZ ", 1658)); -assertEquals(null, res[650].exec("** Failers", 1659)); -assertEquals(null, res[650].exec("WXYZ ", 1660)); -assertEquals(null, res[655].exec("1234", 1661)); -assertEquals(null, res[655].exec("1234", 1662)); -assertEquals(null, res[655].exec("12-34", 1663)); -assertEquals("{", res[655].exec("12+x{661}-34 "), 1664); -assertEquals(null, res[655].exec("** Failers", 1665)); -assertEquals("d", res[655].exec("abcd "), 1666); -assertEquals("d", res[656].exec("abcd"), 1667); -assertEquals(null, res[656].exec("** Failers", 1668)); -assertEquals(null, res[656].exec("1234", 1669)); -assertEquals(null, res[657].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1670)); -assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1671); -assertEquals(" ", res[657].exec(" "), 1672); -assertEquals(null, res[657].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1673)); -assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1674); -assertEquals(null, res[658].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1675)); -assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[658].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1676); -assertEquals(null, res[659].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1677)); -assertEquals(null, res[659].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 1678)); -assertEquals(null, res[660].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1679)); -assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[660].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1680); -assertEquals(null, res[661].exec("a", 1681)); -assertEquals(null, res[661].exec("A ", 1682)); -assertEquals(null, res[662].exec("a", 1683)); -assertEquals(null, res[662].exec("A ", 1684)); -assertEquals(null, res[663].exec("A", 1685)); -assertEquals(null, res[663].exec("aZ", 1686)); -assertEquals(null, res[663].exec("** Failers", 1687)); -assertEquals(null, res[663].exec("abc ", 1688)); -assertEquals(null, res[664].exec("A", 1689)); -assertEquals(null, res[664].exec("aZ", 1690)); -assertEquals(null, res[664].exec("** Failers", 1691)); -assertEquals(null, res[664].exec("abc ", 1692)); -assertEquals(null, res[665].exec("a", 1693)); -assertEquals(null, res[665].exec("Az", 1694)); -assertEquals(null, res[665].exec("** Failers", 1695)); -assertEquals(null, res[665].exec("ABC ", 1696)); -assertEquals(null, res[666].exec("a", 1697)); -assertEquals(null, res[666].exec("Az", 1698)); -assertEquals(null, res[666].exec("** Failers", 1699)); -assertEquals(null, res[666].exec("ABC ", 1700)); -assertEquals(null, res[666].exec("x{c0}", 1701)); -assertEquals(null, res[666].exec("x{e0} ", 1702)); -assertEquals(null, res[666].exec("x{c0}", 1703)); -assertEquals(null, res[666].exec("x{e0} ", 1704)); -assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 1705)); -assertEquals(null, res[666].exec("** Failers", 1706)); -assertEquals(null, res[666].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 1707)); -assertEquals(null, res[666].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 1708)); -assertEquals(null, res[666].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 1709)); -assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 1710)); -assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 1711)); -assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 1712)); -assertEquals(null, res[666].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 1713)); -assertEquals(null, res[666].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 1714)); -assertEquals(null, res[666].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 1715)); -assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 1716)); -assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 1717)); -assertEquals(null, res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}", 1718)); -assertEquals(null, res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 1719)); -assertEquals(null, res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 1720)); -assertEquals(null, res[666].exec("x{391}", 1721)); -assertEquals(null, res[666].exec("x{ff3a}", 1722)); -assertEquals(null, res[666].exec("x{3b1}", 1723)); -assertEquals(null, res[666].exec("x{ff5a} ", 1724)); -assertEquals(null, res[666].exec("x{c0}", 1725)); -assertEquals(null, res[666].exec("x{e0} ", 1726)); -assertEquals(null, res[666].exec("x{104}", 1727)); -assertEquals(null, res[666].exec("x{105}", 1728)); -assertEquals(null, res[666].exec("x{109} ", 1729)); -assertEquals(null, res[666].exec("** Failers", 1730)); -assertEquals(null, res[666].exec("x{100}", 1731)); -assertEquals(null, res[666].exec("x{10a} ", 1732)); -assertEquals(null, res[666].exec("Z", 1733)); -assertEquals(null, res[666].exec("z", 1734)); -assertEquals(null, res[666].exec("x{39c}", 1735)); -assertEquals(null, res[666].exec("x{178}", 1736)); -assertEquals(null, res[666].exec("|", 1737)); -assertEquals(null, res[666].exec("x{80}", 1738)); -assertEquals(null, res[666].exec("x{ff}", 1739)); -assertEquals(null, res[666].exec("x{100}", 1740)); -assertEquals(null, res[666].exec("x{101} ", 1741)); -assertEquals(null, res[666].exec("** Failers", 1742)); -assertEquals(null, res[666].exec("x{102}", 1743)); -assertEquals(null, res[666].exec("Y", 1744)); -assertEquals(null, res[666].exec("y ", 1745)); -assertEquals(null, res[667].exec("A", 1746)); -assertEquals(null, res[667].exec("Ax{300}BC ", 1747)); -assertEquals(null, res[667].exec("Ax{300}x{301}x{302}BC ", 1748)); -assertEquals(null, res[667].exec("*** Failers", 1749)); -assertEquals(null, res[667].exec("x{300} ", 1750)); -assertEquals("X", res[668].exec("X123"), 1751); -assertEquals(null, res[668].exec("*** Failers", 1752)); -assertEquals(null, res[668].exec("AXYZ", 1753)); -assertEquals(null, res[669].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 1754)); -assertEquals(null, res[669].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 1755)); -assertEquals(null, res[670].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 1756)); -assertEquals(null, res[670].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 1757)); -assertEquals("A,,A", res[671].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1758); -assertEquals("A,,A", res[671].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1759); -assertEquals("A,,A", res[672].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1760); -assertEquals("A,,A", res[672].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1761); -assertEquals(null, res[673].exec("*** Failers", 1762)); -assertEquals(null, res[673].exec("Ax{300}x{301}x{302}", 1763)); -assertEquals(null, res[674].exec("Ax{300}x{301}Bx{300}X", 1764)); -assertEquals(null, res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 1765)); -assertEquals(null, res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 1766)); -assertEquals(null, res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 1767)); -assertEquals(null, res[675].exec("Ax{300}x{301}Bx{300}X", 1768)); -assertEquals(null, res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 1769)); -assertEquals(null, res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 1770)); -assertEquals(null, res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 1771)); -assertEquals(null, res[675].exec("x{2e81}x{3007}x{2f804}x{31a0}", 1772)); -assertEquals(null, res[675].exec("** Failers", 1773)); -assertEquals(null, res[675].exec("x{2e7f} ", 1774)); -assertEquals(null, res[675].exec("x{3105}", 1775)); -assertEquals(null, res[675].exec("** Failers", 1776)); -assertEquals(null, res[675].exec("x{30ff} ", 1777)); -assertEquals(null, res[676].exec("x{06e9}", 1778)); -assertEquals(null, res[676].exec("x{060b}", 1779)); -assertEquals(null, res[676].exec("** Failers", 1780)); -assertEquals(null, res[676].exec("Xx{06e9} ", 1781)); -assertEquals(null, res[677].exec("x{2f800}", 1782)); -assertEquals(null, res[677].exec("** Failers", 1783)); -assertEquals(null, res[677].exec("x{a014}", 1784)); -assertEquals(null, res[677].exec("x{a4c6} ", 1785)); -assertEquals(null, res[678].exec("AXYZ", 1786)); -assertEquals(null, res[678].exec("x{1234}XYZ ", 1787)); -assertEquals(null, res[678].exec("** Failers", 1788)); -assertEquals(null, res[678].exec("X ", 1789)); -assertEquals(null, res[679].exec("** Failers", 1790)); -assertEquals(null, res[679].exec("AX", 1791)); -assertEquals(null, res[680].exec("XYZ", 1792)); -assertEquals(null, res[680].exec("AXYZ", 1793)); -assertEquals(null, res[680].exec("x{1234}XYZ ", 1794)); -assertEquals(null, res[680].exec("** Failers", 1795)); -assertEquals(null, res[680].exec("ABXYZ ", 1796)); -assertEquals(null, res[681].exec("XYZ", 1797)); -assertEquals(null, res[681].exec("** Failers", 1798)); -assertEquals(null, res[681].exec("AXYZ", 1799)); -assertEquals(null, res[681].exec("x{1234}XYZ ", 1800)); -assertEquals(null, res[681].exec("ABXYZ ", 1801)); -assertEquals(null, res[681].exec("AXYZ", 1802)); -assertEquals(null, res[681].exec("x{1234}XYZ", 1803)); -assertEquals(null, res[681].exec("Ax{1234}XYZ", 1804)); -assertEquals(null, res[681].exec("** Failers", 1805)); -assertEquals(null, res[681].exec("XYZ", 1806)); -assertEquals(null, res[681].exec("** Failers", 1807)); -assertEquals(null, res[681].exec("AXYZ", 1808)); -assertEquals(null, res[681].exec("x{1234}XYZ", 1809)); -assertEquals(null, res[681].exec("Ax{1234}XYZ", 1810)); -assertEquals(null, res[681].exec("XYZ", 1811)); -assertEquals(null, res[682].exec("XYZ", 1812)); -assertEquals(null, res[682].exec("AXYZ", 1813)); -assertEquals(null, res[682].exec("x{1234}XYZ", 1814)); -assertEquals(null, res[682].exec("Ax{1234}XYZ", 1815)); -assertEquals(null, res[682].exec("** Failers", 1816)); -assertEquals(null, res[683].exec("XYZ", 1817)); -assertEquals(null, res[683].exec("** Failers", 1818)); -assertEquals(null, res[683].exec("AXYZ", 1819)); -assertEquals(null, res[683].exec("x{1234}XYZ", 1820)); -assertEquals(null, res[683].exec("Ax{1234}XYZ", 1821)); -assertEquals("AX", res[684].exec("AXYZ"), 1822); -assertEquals(null, res[684].exec("x{1234}XYZ ", 1823)); -assertEquals(null, res[684].exec("** Failers", 1824)); -assertEquals(null, res[684].exec("X ", 1825)); -assertEquals(null, res[685].exec("** Failers", 1826)); -assertEquals("AX", res[685].exec("AX"), 1827); -assertEquals("X", res[686].exec("XYZ"), 1828); -assertEquals("AX", res[686].exec("AXYZ"), 1829); -assertEquals(null, res[686].exec("x{1234}XYZ ", 1830)); -assertEquals(null, res[686].exec("** Failers", 1831)); -assertEquals(null, res[686].exec("ABXYZ ", 1832)); -assertEquals("X", res[687].exec("XYZ"), 1833); -assertEquals(null, res[687].exec("** Failers", 1834)); -assertEquals("AX", res[687].exec("AXYZ"), 1835); -assertEquals(null, res[687].exec("x{1234}XYZ ", 1836)); -assertEquals(null, res[687].exec("ABXYZ ", 1837)); -assertEquals("AX", res[688].exec("AXYZ"), 1838); -assertEquals(null, res[688].exec("x{1234}XYZ", 1839)); -assertEquals(null, res[688].exec("Ax{1234}XYZ", 1840)); -assertEquals(null, res[688].exec("** Failers", 1841)); -assertEquals(null, res[688].exec("XYZ", 1842)); -assertEquals(null, res[689].exec("** Failers", 1843)); -assertEquals("AX", res[689].exec("AXYZ"), 1844); -assertEquals(null, res[689].exec("x{1234}XYZ", 1845)); -assertEquals(null, res[689].exec("Ax{1234}XYZ", 1846)); -assertEquals(null, res[689].exec("XYZ", 1847)); -assertEquals("X", res[690].exec("XYZ"), 1848); -assertEquals("AX", res[690].exec("AXYZ"), 1849); -assertEquals(null, res[690].exec("x{1234}XYZ", 1850)); -assertEquals(null, res[690].exec("Ax{1234}XYZ", 1851)); -assertEquals(null, res[690].exec("** Failers", 1852)); -assertEquals("X", res[691].exec("XYZ"), 1853); -assertEquals(null, res[691].exec("** Failers", 1854)); -assertEquals("AX", res[691].exec("AXYZ"), 1855); -assertEquals(null, res[691].exec("x{1234}XYZ", 1856)); -assertEquals(null, res[691].exec("Ax{1234}XYZ", 1857)); -assertEquals(null, res[692].exec("abcdefgh", 1858)); -assertEquals(null, res[692].exec("x{1234}\n\x0dx{3456}xyz ", 1859)); -assertEquals(null, res[693].exec("abcdefgh", 1860)); -assertEquals(null, res[693].exec("x{1234}\n\x0dx{3456}xyz ", 1861)); -assertEquals(null, res[694].exec("** Failers", 1862)); -assertEquals(null, res[694].exec("abcdefgh", 1863)); -assertEquals(null, res[694].exec("x{1234}\n\x0dx{3456}xyz ", 1864)); -assertEquals(null, res[695].exec(" AXY", 1865)); -assertEquals(null, res[695].exec(" aXY", 1866)); -assertEquals(null, res[695].exec(" x{1c5}XY", 1867)); -assertEquals(null, res[695].exec(" ** Failers", 1868)); -assertEquals(null, res[695].exec(" x{1bb}XY", 1869)); -assertEquals(null, res[695].exec(" x{2b0}XY", 1870)); -assertEquals(null, res[695].exec(" !XY ", 1871)); -assertEquals(null, res[696].exec(" AXY", 1872)); -assertEquals(null, res[696].exec(" aXY", 1873)); -assertEquals(null, res[696].exec(" x{1c5}XY", 1874)); -assertEquals(null, res[696].exec(" ** Failers", 1875)); -assertEquals(null, res[696].exec(" x{1bb}XY", 1876)); -assertEquals(null, res[696].exec(" x{2b0}XY", 1877)); -assertEquals(null, res[696].exec(" !XY ", 1878)); -assertEquals(null, res[696].exec(" AXY", 1879)); -assertEquals(null, res[696].exec(" aXY", 1880)); -assertEquals(null, res[696].exec(" AbcdeXyz ", 1881)); -assertEquals(null, res[696].exec(" x{1c5}AbXY", 1882)); -assertEquals(null, res[696].exec(" abcDEXypqreXlmn ", 1883)); -assertEquals(null, res[696].exec(" ** Failers", 1884)); -assertEquals(null, res[696].exec(" x{1bb}XY", 1885)); -assertEquals(null, res[696].exec(" x{2b0}XY", 1886)); -assertEquals(null, res[696].exec(" !XY ", 1887)); -assertEquals(null, res[697].exec(" AXY", 1888)); -assertEquals(null, res[697].exec(" aXY", 1889)); -assertEquals(null, res[697].exec(" AbcdeXyz ", 1890)); -assertEquals(null, res[697].exec(" x{1c5}AbXY", 1891)); -assertEquals(null, res[697].exec(" abcDEXypqreXlmn ", 1892)); -assertEquals(null, res[697].exec(" ** Failers", 1893)); -assertEquals(null, res[697].exec(" x{1bb}XY", 1894)); -assertEquals(null, res[697].exec(" x{2b0}XY", 1895)); -assertEquals(null, res[697].exec(" !XY ", 1896)); -assertEquals(null, res[697].exec(" AXY", 1897)); -assertEquals(null, res[697].exec(" aXY", 1898)); -assertEquals(null, res[697].exec(" AbcdeXyz ", 1899)); -assertEquals(null, res[697].exec(" x{1c5}AbXY", 1900)); -assertEquals(null, res[697].exec(" abcDEXypqreXlmn ", 1901)); -assertEquals(null, res[697].exec(" ** Failers", 1902)); -assertEquals(null, res[697].exec(" x{1bb}XY", 1903)); -assertEquals(null, res[697].exec(" x{2b0}XY", 1904)); -assertEquals(null, res[697].exec(" !XY ", 1905)); -assertEquals(null, res[698].exec(" AXY", 1906)); -assertEquals(null, res[698].exec(" aXY", 1907)); -assertEquals(null, res[698].exec(" AbcdeXyz ", 1908)); -assertEquals(null, res[698].exec(" x{1c5}AbXY", 1909)); -assertEquals(null, res[698].exec(" abcDEXypqreXlmn ", 1910)); -assertEquals(null, res[698].exec(" ** Failers", 1911)); -assertEquals(null, res[698].exec(" x{1bb}XY", 1912)); -assertEquals(null, res[698].exec(" x{2b0}XY", 1913)); -assertEquals(null, res[698].exec(" !XY ", 1914)); -assertEquals(null, res[699].exec(" !XY", 1915)); -assertEquals(null, res[699].exec(" x{1bb}XY", 1916)); -assertEquals(null, res[699].exec(" x{2b0}XY", 1917)); -assertEquals(null, res[699].exec(" ** Failers", 1918)); -assertEquals(null, res[699].exec(" x{1c5}XY", 1919)); -assertEquals(null, res[699].exec(" AXY ", 1920)); -assertEquals(null, res[700].exec(" !XY", 1921)); -assertEquals(null, res[700].exec(" x{1bb}XY", 1922)); -assertEquals(null, res[700].exec(" x{2b0}XY", 1923)); -assertEquals(null, res[700].exec(" ** Failers", 1924)); -assertEquals(null, res[700].exec(" x{1c5}XY", 1925)); -assertEquals(null, res[700].exec(" AXY ", 1926)); -assertEquals(null, res[701].exec("\xa0!", 1927)); -assertEquals(null, res[701].exec("AabcabcYZ ", 1928)); -assertEquals("L=abcX,L=abc,abc", res[702].exec("L=abcX"), 1929); -assertEquals(null, res[702].exec("x{c0}", 1930)); -assertEquals(null, res[702].exec("x{e0} ", 1931)); -assertEquals(null, res[702].exec("x{c0}", 1932)); -assertEquals(null, res[702].exec("x{e0} ", 1933)); -assertEquals(null, res[703].exec("x{1b00}x{12000}x{7c0}x{a840}x{10900}", 1934)); -assertEquals(null, res[706].exec("123abcdefg", 1935)); -assertEquals(null, res[706].exec("123abc\xc4\xc5zz", 1936)); -assertEquals(null, res[710].exec("A\x80", 1937)); -assertEquals(null, res[725].exec("x{60e} ", 1938)); -assertEquals(null, res[725].exec("x{656} ", 1939)); -assertEquals(null, res[725].exec("x{657} ", 1940)); -assertEquals(null, res[725].exec("x{658} ", 1941)); -assertEquals(null, res[725].exec("x{659} ", 1942)); -assertEquals(null, res[725].exec("x{65a} ", 1943)); -assertEquals(null, res[725].exec("x{65b} ", 1944)); -assertEquals(null, res[725].exec("x{65c} ", 1945)); -assertEquals(null, res[725].exec("x{65d} ", 1946)); -assertEquals(null, res[725].exec("x{65e} ", 1947)); -assertEquals(null, res[725].exec("x{66a} ", 1948)); -assertEquals(null, res[725].exec("x{6e9} ", 1949)); -assertEquals(null, res[725].exec("x{6ef}", 1950)); -assertEquals(null, res[725].exec("x{6fa} ", 1951)); -assertEquals(null, res[725].exec("** Failers", 1952)); -assertEquals(null, res[725].exec("x{600}", 1953)); -assertEquals(null, res[725].exec("x{650}", 1954)); -assertEquals(null, res[725].exec("x{651} ", 1955)); -assertEquals(null, res[725].exec("x{652} ", 1956)); -assertEquals(null, res[725].exec("x{653} ", 1957)); -assertEquals(null, res[725].exec("x{654} ", 1958)); -assertEquals(null, res[725].exec("x{655} ", 1959)); -assertEquals(null, res[725].exec("x{65f} ", 1960)); -assertEquals(null, res[726].exec("x{1d2b} ", 1961)); -assertEquals(null, res[727].exec("x{589}", 1962)); -assertEquals(null, res[727].exec("x{60c}", 1963)); -assertEquals(null, res[727].exec("x{61f} ", 1964)); -assertEquals(null, res[727].exec("x{964}", 1965)); -assertEquals(null, res[727].exec("x{965} ", 1966)); -assertEquals(null, res[727].exec("x{970} ", 1967)); -assertEquals(null, res[728].exec("x{64b}", 1968)); -assertEquals(null, res[728].exec("x{654}", 1969)); -assertEquals(null, res[728].exec("x{655}", 1970)); -assertEquals(null, res[728].exec("x{200c} ", 1971)); -assertEquals(null, res[728].exec("** Failers", 1972)); -assertEquals(null, res[728].exec("x{64a}", 1973)); -assertEquals(null, res[728].exec("x{656} ", 1974)); -assertEquals(null, res[729].exec("x{10450}", 1975)); -assertEquals(null, res[729].exec("x{1047f}", 1976)); -assertEquals(null, res[730].exec("x{10400}", 1977)); -assertEquals(null, res[730].exec("x{1044f}", 1978)); -assertEquals(null, res[731].exec("x{10480}", 1979)); -assertEquals(null, res[731].exec("x{1049d}", 1980)); -assertEquals(null, res[731].exec("x{104a0}", 1981)); -assertEquals(null, res[731].exec("x{104a9}", 1982)); -assertEquals(null, res[731].exec("** Failers", 1983)); -assertEquals(null, res[731].exec("x{1049e}", 1984)); -assertEquals(null, res[731].exec("x{1049f}", 1985)); -assertEquals(null, res[731].exec("x{104aa} ", 1986)); -assertEquals(null, res[731].exec("\xe2\x80\xa8\xe2\x80\xa8", 1987)); -assertEquals(null, res[731].exec("x{2028}x{2028}x{2028}", 1988)); -assertEquals(null, res[732].exec("x{c0}x{e0}x{116}x{117}", 1989)); -assertEquals(null, res[732].exec("x{c0}x{e0}x{116}x{117}", 1990)); -assertEquals(null, res[733].exec("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}====", 1991)); -assertEquals(null, res[733].exec("x{a77d}x{1d79}", 1992)); -assertEquals(null, res[733].exec("x{1d79}x{a77d} ", 1993)); -assertEquals(null, res[733].exec("x{a77d}x{1d79}", 1994)); -assertEquals(null, res[733].exec("** Failers ", 1995)); -assertEquals(null, res[733].exec("x{1d79}x{a77d} ", 1996)); -assertEquals("AA,A", res[734].exec("AA"), 1997); -assertEquals("Aa,A", res[734].exec("Aa"), 1998); -assertEquals("aa,a", res[734].exec("aa"), 1999); -assertEquals("aA,a", res[734].exec("aA"), 2000); -assertEquals(null, res[734].exec("x{de}x{de}", 2001)); -assertEquals(null, res[734].exec("x{de}x{fe}", 2002)); -assertEquals(null, res[734].exec("x{fe}x{fe}", 2003)); -assertEquals(null, res[734].exec("x{fe}x{de}", 2004)); -assertEquals(null, res[734].exec("x{10a}x{10a}", 2005)); -assertEquals(null, res[734].exec("x{10a}x{10b}", 2006)); -assertEquals(null, res[734].exec("x{10b}x{10b}", 2007)); -assertEquals(null, res[734].exec("x{10b}x{10a}", 2008)); -assertEquals("abc", res[736].exec("abc"), 2009); -assertEquals("abc", res[737].exec("abc"), 2010); -assertEquals("abbbbc", res[737].exec("abbbbc"), 2011); -assertEquals("ac", res[737].exec("ac"), 2012); -assertEquals("abc", res[738].exec("abc"), 2013); -assertEquals("abbbbbbc", res[738].exec("abbbbbbc"), 2014); -assertEquals(null, res[738].exec("*** Failers ", 2015)); -assertEquals(null, res[738].exec("ac", 2016)); -assertEquals(null, res[738].exec("ab", 2017)); -assertEquals("a", res[739].exec("a"), 2018); -assertEquals("aaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaa"), 2019); -assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "), 2020); -assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaF "), 2021); -assertEquals("a,a", res[740].exec("a"), 2022); -assertEquals("a,a", res[740].exec("abcd"), 2023); -assertEquals("a,a", res[740].exec("african"), 2024); -assertEquals("abc", res[741].exec("abcdef"), 2025); -assertEquals(null, res[741].exec("*** Failers", 2026)); -assertEquals(null, res[741].exec("xyzabc", 2027)); -assertEquals(null, res[741].exec("xyz\nabc ", 2028)); -assertEquals("abc", res[742].exec("abcdef"), 2029); -assertEquals("abc", res[742].exec("xyz\nabc "), 2030); -assertEquals(null, res[742].exec("*** Failers", 2031)); -assertEquals(null, res[742].exec("xyzabc", 2032)); -assertEquals(null, res[743].exec("abcdef", 2033)); -assertEquals(null, res[743].exec("*** Failers", 2034)); -assertEquals(null, res[743].exec("xyzabc", 2035)); -assertEquals(null, res[743].exec("xyz\nabc ", 2036)); -assertEquals(null, res[744].exec("abcdef", 2037)); -assertEquals(null, res[744].exec("*** Failers", 2038)); -assertEquals(null, res[744].exec("xyzabc", 2039)); -assertEquals(null, res[744].exec("xyz\nabc ", 2040)); -assertEquals(null, res[745].exec("abcdef", 2041)); -assertEquals(null, res[745].exec("xyzabc>3", 2042)); -assertEquals(null, res[745].exec("*** Failers", 2043)); -assertEquals(null, res[745].exec("xyzabc ", 2044)); -assertEquals(null, res[745].exec("xyzabc>2 ", 2045)); -assertEquals("x9yzz", res[746].exec("x9yzz"), 2046); -assertEquals("x0y+z", res[746].exec("x0y+z"), 2047); -assertEquals(null, res[746].exec("*** Failers", 2048)); -assertEquals(null, res[746].exec("xyz", 2049)); -assertEquals(null, res[746].exec("xxy0z ", 2050)); -assertEquals("x yzz", res[747].exec("x yzz"), 2051); -assertEquals("x y+z", res[747].exec("x y+z"), 2052); -assertEquals(null, res[747].exec("*** Failers", 2053)); -assertEquals(null, res[747].exec("xyz", 2054)); -assertEquals(null, res[747].exec("xxyyz", 2055)); -assertEquals("xxy+z", res[748].exec("xxy+z"), 2056); -assertEquals(null, res[748].exec("*** Failers", 2057)); -assertEquals(null, res[748].exec("xxy0z", 2058)); -assertEquals(null, res[748].exec("x+y+z ", 2059)); -assertEquals("x+y", res[749].exec("x+y"), 2060); -assertEquals("x-y", res[749].exec("x-y"), 2061); -assertEquals(null, res[749].exec("*** Failers", 2062)); -assertEquals(null, res[749].exec("x\ny", 2063)); -assertEquals("x+y", res[750].exec("x+y"), 2064); -assertEquals("x-y", res[750].exec("x-y"), 2065); -assertEquals(null, res[750].exec("x\ny", 2066)); -assertEquals(null, res[750].exec("a+bc+dp+q", 2067)); -assertEquals(null, res[750].exec("a+bc\ndp+q", 2068)); -assertEquals(null, res[750].exec("x\nyp+q ", 2069)); -assertEquals(null, res[750].exec("*** Failers ", 2070)); -assertEquals(null, res[750].exec("a\nbc\ndp+q", 2071)); -assertEquals(null, res[750].exec("a+bc\ndp\nq", 2072)); -assertEquals(null, res[750].exec("x\nyp\nq ", 2073)); -assertEquals(null, res[751].exec("ba0", 2074)); -assertEquals(null, res[751].exec("*** Failers", 2075)); -assertEquals(null, res[751].exec("ba0\n", 2076)); -assertEquals(null, res[751].exec("ba0\ncd ", 2077)); -assertEquals(null, res[752].exec("ba0", 2078)); -assertEquals(null, res[752].exec("*** Failers", 2079)); -assertEquals(null, res[752].exec("ba0\n", 2080)); -assertEquals(null, res[752].exec("ba0\ncd ", 2081)); -assertEquals(null, res[753].exec("ba0", 2082)); -assertEquals(null, res[753].exec("ba0\n", 2083)); -assertEquals(null, res[753].exec("*** Failers", 2084)); -assertEquals(null, res[753].exec("ba0\ncd ", 2085)); -assertEquals(null, res[754].exec("ba0", 2086)); -assertEquals(null, res[754].exec("ba0\n", 2087)); -assertEquals(null, res[754].exec("*** Failers", 2088)); -assertEquals(null, res[754].exec("ba0\ncd ", 2089)); -assertEquals("a0", res[755].exec("ba0"), 2090); -assertEquals(null, res[755].exec("ba0\n", 2091)); -assertEquals(null, res[755].exec("*** Failers", 2092)); -assertEquals(null, res[755].exec("ba0\ncd ", 2093)); -assertEquals("a0", res[756].exec("ba0"), 2094); -assertEquals("a0", res[756].exec("ba0\n"), 2095); -assertEquals("a0", res[756].exec("ba0\ncd "), 2096); -assertEquals(null, res[756].exec("*** Failers", 2097)); -assertEquals("abc", res[757].exec("abc"), 2098); -assertEquals("aBc", res[757].exec("aBc"), 2099); -assertEquals("ABC", res[757].exec("ABC"), 2100); -assertEquals("b", res[758].exec("abcd"), 2101); -assertEquals("abz", res[759].exec("abz"), 2102); -assertEquals("abb", res[759].exec("abbz"), 2103); -assertEquals("az", res[759].exec("azz "), 2104); -assertEquals("yz", res[760].exec("ayzq"), 2105); -assertEquals("xyz", res[760].exec("axyzq"), 2106); -assertEquals("xxyz", res[760].exec("axxyz"), 2107); -assertEquals("xxxyz", res[760].exec("axxxyzq"), 2108); -assertEquals("xxxyz", res[760].exec("axxxxyzq"), 2109); -assertEquals(null, res[760].exec("*** Failers", 2110)); -assertEquals(null, res[760].exec("ax", 2111)); -assertEquals(null, res[760].exec("axx ", 2112)); -assertEquals(null, res[760].exec(" ", 2113)); -assertEquals("xxxyz", res[761].exec("axxxyzq"), 2114); -assertEquals("xxxyz", res[761].exec("axxxxyzq"), 2115); -assertEquals(null, res[761].exec("*** Failers", 2116)); -assertEquals(null, res[761].exec("ax", 2117)); -assertEquals(null, res[761].exec("axx ", 2118)); -assertEquals(null, res[761].exec("ayzq", 2119)); -assertEquals(null, res[761].exec("axyzq", 2120)); -assertEquals(null, res[761].exec("axxyz", 2121)); -assertEquals(null, res[761].exec(" ", 2122)); -assertEquals("xxyz", res[762].exec("axxyz"), 2123); -assertEquals("xxxyz", res[762].exec("axxxyzq"), 2124); -assertEquals("xxxyz", res[762].exec("axxxxyzq"), 2125); -assertEquals(null, res[762].exec("*** Failers", 2126)); -assertEquals(null, res[762].exec("ax", 2127)); -assertEquals(null, res[762].exec("axx ", 2128)); -assertEquals(null, res[762].exec("ayzq", 2129)); -assertEquals(null, res[762].exec("axyzq", 2130)); -assertEquals(null, res[762].exec(" ", 2131)); -assertEquals("b", res[763].exec("bac"), 2132); -assertEquals("bcdef", res[763].exec("bcdefax"), 2133); -assertEquals("*** F", res[763].exec("*** Failers"), 2134); -assertEquals(" ", res[763].exec("aaaaa "), 2135); -assertEquals("b", res[764].exec("bac"), 2136); -assertEquals("bcdef", res[764].exec("bcdefax"), 2137); -assertEquals("*** F", res[764].exec("*** Failers"), 2138); -assertEquals("", res[764].exec("aaaaa "), 2139); -assertEquals("xyz", res[765].exec("xyz"), 2140); -assertEquals("wxyz", res[765].exec("awxyza"), 2141); -assertEquals("bcdef", res[765].exec("abcdefa"), 2142); -assertEquals("bcdef", res[765].exec("abcdefghijk"), 2143); -assertEquals("*** F", res[765].exec("*** Failers"), 2144); -assertEquals(null, res[765].exec("axya", 2145)); -assertEquals(null, res[765].exec("axa", 2146)); -assertEquals(" ", res[765].exec("aaaaa "), 2147); -assertEquals("1234", res[766].exec("1234b567"), 2148); -assertEquals("", res[766].exec("xyz"), 2149); -assertEquals("a", res[767].exec("a1234b567"), 2150); -assertEquals("xyz", res[767].exec("xyz"), 2151); -assertEquals(" ", res[767].exec(" "), 2152); -assertEquals("1234", res[768].exec("ab1234c56"), 2153); -assertEquals(null, res[768].exec("*** Failers", 2154)); -assertEquals(null, res[768].exec("xyz", 2155)); -assertEquals("ab", res[769].exec("ab123c56"), 2156); -assertEquals("*** Failers", res[769].exec("*** Failers"), 2157); -assertEquals(null, res[769].exec("789", 2158)); -assertEquals("5A", res[770].exec("045ABC"), 2159); -assertEquals("A", res[770].exec("ABC"), 2160); -assertEquals(null, res[770].exec("*** Failers", 2161)); -assertEquals(null, res[770].exec("XYZ", 2162)); -assertEquals("A", res[771].exec("ABC"), 2163); -assertEquals("BA", res[771].exec("BAC"), 2164); -assertEquals("A", res[771].exec("9ABC "), 2165); -assertEquals(null, res[771].exec("*** Failers", 2166)); -assertEquals("aaaa", res[772].exec("aaaa"), 2167); -assertEquals("xyz", res[773].exec("xyz"), 2168); -assertEquals("ggggggggxyz", res[773].exec("ggggggggxyz"), 2169); -assertEquals("abcdxyz", res[774].exec("abcdxyz"), 2170); -assertEquals("axyz", res[774].exec("axyz"), 2171); -assertEquals(null, res[774].exec("*** Failers", 2172)); -assertEquals(null, res[774].exec("xyz", 2173)); -assertEquals("xyz", res[775].exec("xyz"), 2174); -assertEquals("cxyz", res[775].exec("cxyz "), 2175); -assertEquals("12X", res[776].exec("12X"), 2176); -assertEquals("123X", res[776].exec("123X"), 2177); -assertEquals(null, res[776].exec("*** Failers", 2178)); -assertEquals(null, res[776].exec("X", 2179)); -assertEquals(null, res[776].exec("1X", 2180)); -assertEquals(null, res[776].exec("1234X ", 2181)); -assertEquals("a4", res[777].exec("a45"), 2182); -assertEquals("b9", res[777].exec("b93"), 2183); -assertEquals("c9", res[777].exec("c99z"), 2184); -assertEquals("d0", res[777].exec("d04"), 2185); -assertEquals(null, res[777].exec("*** Failers", 2186)); -assertEquals(null, res[777].exec("e45", 2187)); -assertEquals(null, res[777].exec("abcd ", 2188)); -assertEquals(null, res[777].exec("abcd1234", 2189)); -assertEquals(null, res[777].exec("1234 ", 2190)); -assertEquals("a4", res[778].exec("a45"), 2191); -assertEquals("b9", res[778].exec("b93"), 2192); -assertEquals("c9", res[778].exec("c99z"), 2193); -assertEquals("d0", res[778].exec("d04"), 2194); -assertEquals("abcd1", res[778].exec("abcd1234"), 2195); -assertEquals("1", res[778].exec("1234 "), 2196); -assertEquals(null, res[778].exec("*** Failers", 2197)); -assertEquals(null, res[778].exec("e45", 2198)); -assertEquals(null, res[778].exec("abcd ", 2199)); -assertEquals("a4", res[779].exec("a45"), 2200); -assertEquals("b9", res[779].exec("b93"), 2201); -assertEquals("c9", res[779].exec("c99z"), 2202); -assertEquals("d0", res[779].exec("d04"), 2203); -assertEquals("abcd1", res[779].exec("abcd1234"), 2204); -assertEquals(null, res[779].exec("*** Failers", 2205)); -assertEquals(null, res[779].exec("1234 ", 2206)); -assertEquals(null, res[779].exec("e45", 2207)); -assertEquals(null, res[779].exec("abcd ", 2208)); -assertEquals("aX", res[780].exec("aX"), 2209); -assertEquals("aaX", res[780].exec("aaX "), 2210); -assertEquals("a4", res[781].exec("a45"), 2211); -assertEquals("b9", res[781].exec("b93"), 2212); -assertEquals("c9", res[781].exec("c99z"), 2213); -assertEquals("d0", res[781].exec("d04"), 2214); -assertEquals("1", res[781].exec("1234 "), 2215); -assertEquals(null, res[781].exec("*** Failers", 2216)); -assertEquals(null, res[781].exec("abcd1234", 2217)); -assertEquals(null, res[781].exec("e45", 2218)); -assertEquals("ab4", res[782].exec("ab45"), 2219); -assertEquals("bcd9", res[782].exec("bcd93"), 2220); -assertEquals(null, res[782].exec("*** Failers", 2221)); -assertEquals(null, res[782].exec("1234 ", 2222)); -assertEquals(null, res[782].exec("a36 ", 2223)); -assertEquals(null, res[782].exec("abcd1234", 2224)); -assertEquals(null, res[782].exec("ee45", 2225)); -assertEquals("abc4,abc", res[783].exec("abc45"), 2226); -assertEquals("abcabcabc4,abc", res[783].exec("abcabcabc45"), 2227); -assertEquals("4,", res[783].exec("42xyz "), 2228); -assertEquals(null, res[783].exec("*** Failers", 2229)); -assertEquals("abc4,abc", res[784].exec("abc45"), 2230); -assertEquals("abcabcabc4,abc", res[784].exec("abcabcabc45"), 2231); -assertEquals(null, res[784].exec("*** Failers", 2232)); -assertEquals(null, res[784].exec("42xyz ", 2233)); -assertEquals("abc4,abc", res[785].exec("abc45"), 2234); -assertEquals("4,", res[785].exec("42xyz "), 2235); -assertEquals(null, res[785].exec("*** Failers", 2236)); -assertEquals(null, res[785].exec("abcabcabc45", 2237)); -assertEquals("abcabc4,abc", res[786].exec("abcabc45"), 2238); -assertEquals("abcabcabc4,abc", res[786].exec("abcabcabc45"), 2239); -assertEquals(null, res[786].exec("*** Failers", 2240)); -assertEquals(null, res[786].exec("abcabcabcabc45", 2241)); -assertEquals(null, res[786].exec("abc45", 2242)); -assertEquals(null, res[786].exec("42xyz ", 2243)); -assertEquals(null, res[786].exec("1abc2abc3456", 2244)); -assertEquals(null, res[786].exec("1abc2xyz3456 ", 2245)); -assertEquals("ab=ab,ab,ab", res[787].exec("ab=ab"), 2246); -assertEquals("ab=ab,ab,ab", res[787].exec("ab=ab"), 2247); -assertEquals(null, res[787].exec("abc", 2248)); -assertEquals(null, res[787].exec("a(b)c", 2249)); -assertEquals(null, res[787].exec("a(b(c))d ", 2250)); -assertEquals(null, res[787].exec("*** Failers)", 2251)); -assertEquals(null, res[787].exec("a(b(c)d ", 2252)); -assertEquals(null, res[787].exec(">abc>123<xyz<", 2253)); -assertEquals(null, res[787].exec(">abc>1(2)3<xyz<", 2254)); -assertEquals(null, res[787].exec(">abc>(1(2)3)<xyz<", 2255)); -assertEquals(null, res[787].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876", 2256)); -assertEquals(null, res[787].exec("*** Failers ", 2257)); -assertEquals(null, res[787].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 2258)); -assertEquals(null, res[787].exec("<>", 2259)); -assertEquals(null, res[787].exec("<abcd>", 2260)); -assertEquals(null, res[787].exec("<abc <123> hij>", 2261)); -assertEquals(null, res[787].exec("<abc <def> hij>", 2262)); -assertEquals(null, res[787].exec("<abc<>def> ", 2263)); -assertEquals(null, res[787].exec("<abc<> ", 2264)); -assertEquals(null, res[787].exec("*** Failers", 2265)); -assertEquals(null, res[787].exec("<abc", 2266)); -assertEquals(null, res[787].exec("abc: ", 2267)); -assertEquals(null, res[787].exec("12 ", 2268)); -assertEquals(null, res[787].exec("*** Failers ", 2269)); -assertEquals(null, res[787].exec("123 ", 2270)); -assertEquals(null, res[787].exec("xyz ", 2271)); -assertEquals(null, res[787].exec(" ", 2272)); -assertEquals(null, res[787].exec("abc: ", 2273)); -assertEquals(null, res[787].exec("12 ", 2274)); -assertEquals(null, res[787].exec("*** Failers", 2275)); -assertEquals(null, res[787].exec("123", 2276)); -assertEquals(null, res[787].exec("xyz ", 2277)); -assertEquals(null, res[788].exec("abcde: ", 2278)); -assertEquals(null, res[788].exec("*** Failers ", 2279)); -assertEquals(null, res[788].exec("abc.. ", 2280)); -assertEquals(null, res[788].exec("123 ", 2281)); -assertEquals(null, res[788].exec("vwxyz ", 2282)); -assertEquals(null, res[788].exec(" ", 2283)); -assertEquals(null, res[789].exec("12 ", 2284)); -assertEquals(null, res[789].exec("*** Failers", 2285)); -assertEquals(null, res[789].exec("abcde:", 2286)); -assertEquals(null, res[789].exec("abc.. ", 2287)); -assertEquals(null, res[789].exec("123", 2288)); -assertEquals(null, res[789].exec("vwxyz ", 2289)); -assertEquals(null, res[789].exec("abc12345", 2290)); -assertEquals(null, res[789].exec("wxy123z", 2291)); -assertEquals(null, res[789].exec("*** Failers", 2292)); -assertEquals(null, res[789].exec("123abc", 2293)); -assertEquals(null, res[789].exec("123abc", 2294)); -assertEquals(null, res[789].exec("mno123456 ", 2295)); -assertEquals(null, res[789].exec("*** Failers", 2296)); -assertEquals(null, res[789].exec("abc12345", 2297)); -assertEquals(null, res[789].exec("wxy123z", 2298)); -assertEquals(null, res[789].exec("abcxyz", 2299)); -assertEquals(null, res[789].exec("123abcxyz999 ", 2300)); -assertEquals("abc", res[791].exec("abcdef"), 2301); -assertEquals(null, res[791].exec("*** Failers", 2302)); -assertEquals("abc", res[791].exec("abcdefB "), 2303); -assertEquals(",", res[792].exec("bcd"), 2304); -assertEquals("aaa,aaa", res[792].exec("aaabcd"), 2305); -assertEquals(",", res[792].exec("xyz"), 2306); -assertEquals(",", res[792].exec("xyzN "), 2307); -assertEquals(",", res[792].exec("*** Failers"), 2308); -assertEquals(",", res[792].exec("bcdN "), 2309); -assertEquals("xyz", res[793].exec("xyz"), 2310); -assertEquals(null, res[793].exec("xyz\n", 2311)); -assertEquals(null, res[793].exec("*** Failers", 2312)); -assertEquals(null, res[793].exec("xyzZ", 2313)); -assertEquals(null, res[793].exec("xyz\nZ ", 2314)); -assertEquals("xyz", res[794].exec("xyz"), 2315); -assertEquals("xyz", res[794].exec("xyz\n "), 2316); -assertEquals("xyz", res[794].exec("abcxyz\npqr "), 2317); -assertEquals("xyz", res[794].exec("abcxyz\npqrZ "), 2318); -assertEquals("xyz", res[794].exec("xyz\nZ "), 2319); -assertEquals(null, res[794].exec("*** Failers", 2320)); -assertEquals(null, res[794].exec("xyzZ", 2321)); -assertEquals(null, res[795].exec("abcdef", 2322)); -assertEquals(null, res[795].exec("defabcxyz>3 ", 2323)); -assertEquals(null, res[795].exec("*** Failers ", 2324)); -assertEquals(null, res[795].exec("defabcxyz", 2325)); -assertEquals(null, res[796].exec("abP", 2326)); -assertEquals(null, res[796].exec("abcdeP", 2327)); -assertEquals("abcdef", res[796].exec("abcdefP"), 2328); -assertEquals(null, res[796].exec("*** Failers", 2329)); -assertEquals(null, res[796].exec("abxP ", 2330)); -assertEquals(null, res[797].exec("aP", 2331)); -assertEquals(null, res[797].exec("aaP", 2332)); -assertEquals(null, res[797].exec("aa2P ", 2333)); -assertEquals(null, res[797].exec("aaaP", 2334)); -assertEquals(null, res[797].exec("aaa23P ", 2335)); -assertEquals(null, res[797].exec("aaaa12345P", 2336)); -assertEquals("aa0z", res[797].exec("aa0zP"), 2337); -assertEquals("aaaa4444444444444z", res[797].exec("aaaa4444444444444zP "), 2338); -assertEquals(null, res[797].exec("*** Failers", 2339)); -assertEquals(null, res[797].exec("azP ", 2340)); -assertEquals(null, res[797].exec("aaaaaP ", 2341)); -assertEquals(null, res[797].exec("a56P ", 2342)); -assertEquals(null, res[799].exec("adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkjPZ", 2343)); -assertEquals(null, res[799].exec("lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefaPBZ", 2344)); -assertEquals(null, res[799].exec("cdabbbbbbbbPRBZ", 2345)); -assertEquals(null, res[799].exec("efabbbbbbbbbbbbbbbbPRBZ", 2346)); -assertEquals(null, res[799].exec("bbbbbbbbbbbbcdXyasdfadfPRBZ ", 2347)); -assertEquals(null, res[799].exec("abc", 2348)); -assertEquals(null, res[799].exec("** Failers", 2349)); -assertEquals(null, res[799].exec("def ", 2350)); -assertEquals("the quick brown fox", res[800].exec("the quick brown fox"), 2351); -assertEquals(null, res[800].exec("The quick brown FOX", 2352)); -assertEquals("the quick brown fox", res[800].exec("What do you know about the quick brown fox?"), 2353); -assertEquals(null, res[800].exec("What do you know about THE QUICK BROWN FOX?", 2354)); -assertEquals("the quick brown fox", res[801].exec("the quick brown fox"), 2355); -assertEquals("The quick brown FOX", res[801].exec("The quick brown FOX"), 2356); -assertEquals("the quick brown fox", res[801].exec("What do you know about the quick brown fox?"), 2357); -assertEquals("THE QUICK BROWN FOX", res[801].exec("What do you know about THE QUICK BROWN FOX?"), 2358); -assertEquals("abcd\x09\n\x0d\x0cae9;$\\?caxyz", res[802].exec("abcd\x09\n\x0d\x0cae9;$\\?caxyz"), 2359); -assertEquals("abxyzpqrrrabbxyyyypqAzz", res[803].exec("abxyzpqrrrabbxyyyypqAzz"), 2360); -assertEquals("abxyzpqrrrabbxyyyypqAzz", res[803].exec("abxyzpqrrrabbxyyyypqAzz"), 2361); -assertEquals("aabxyzpqrrrabbxyyyypqAzz", res[803].exec("aabxyzpqrrrabbxyyyypqAzz"), 2362); -assertEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].exec("aaabxyzpqrrrabbxyyyypqAzz"), 2363); -assertEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].exec("aaaabxyzpqrrrabbxyyyypqAzz"), 2364); -assertEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].exec("abcxyzpqrrrabbxyyyypqAzz"), 2365); -assertEquals("aabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aabcxyzpqrrrabbxyyyypqAzz"), 2366); -assertEquals("aaabcxyzpqrrrabbxyyyypAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypAzz"), 2367); -assertEquals("aaabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqAzz"), 2368); -assertEquals("aaabcxyzpqrrrabbxyyyypqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqAzz"), 2369); -assertEquals("aaabcxyzpqrrrabbxyyyypqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqAzz"), 2370); -assertEquals("aaabcxyzpqrrrabbxyyyypqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqAzz"), 2371); -assertEquals("aaabcxyzpqrrrabbxyyyypqqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqAzz"), 2372); -assertEquals("aaabcxyzpqrrrabbxyyyypqqqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqqAzz"), 2373); -assertEquals("aaaabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aaaabcxyzpqrrrabbxyyyypqAzz"), 2374); -assertEquals("abxyzzpqrrrabbxyyyypqAzz", res[803].exec("abxyzzpqrrrabbxyyyypqAzz"), 2375); -assertEquals("aabxyzzzpqrrrabbxyyyypqAzz", res[803].exec("aabxyzzzpqrrrabbxyyyypqAzz"), 2376); -assertEquals("aaabxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaabxyzzzzpqrrrabbxyyyypqAzz"), 2377); -assertEquals("aaaabxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaaabxyzzzzpqrrrabbxyyyypqAzz"), 2378); -assertEquals("abcxyzzpqrrrabbxyyyypqAzz", res[803].exec("abcxyzzpqrrrabbxyyyypqAzz"), 2379); -assertEquals("aabcxyzzzpqrrrabbxyyyypqAzz", res[803].exec("aabcxyzzzpqrrrabbxyyyypqAzz"), 2380); -assertEquals("aaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaabcxyzzzzpqrrrabbxyyyypqAzz"), 2381); -assertEquals("aaaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbxyyyypqAzz"), 2382); -assertEquals("aaaabcxyzzzzpqrrrabbbxyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyypqAzz"), 2383); -assertEquals("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz"), 2384); -assertEquals("aaabcxyzpqrrrabbxyyyypABzz", res[803].exec("aaabcxyzpqrrrabbxyyyypABzz"), 2385); -assertEquals("aaabcxyzpqrrrabbxyyyypABBzz", res[803].exec("aaabcxyzpqrrrabbxyyyypABBzz"), 2386); -assertEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].exec(">>>aaabxyzpqrrrabbxyyyypqAzz"), 2387); -assertEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].exec(">aaaabxyzpqrrrabbxyyyypqAzz"), 2388); -assertEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].exec(">>>>abcxyzpqrrrabbxyyyypqAzz"), 2389); -assertEquals(null, res[803].exec("*** Failers", 2390)); -assertEquals(null, res[803].exec("abxyzpqrrabbxyyyypqAzz", 2391)); -assertEquals(null, res[803].exec("abxyzpqrrrrabbxyyyypqAzz", 2392)); -assertEquals(null, res[803].exec("abxyzpqrrrabxyyyypqAzz", 2393)); -assertEquals(null, res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz", 2394)); -assertEquals(null, res[803].exec("aaaabcxyzzzzpqrrrabbbxyyypqAzz", 2395)); -assertEquals(null, res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqqqAzz", 2396)); -assertEquals("abczz,abc", res[804].exec("abczz"), 2397); -assertEquals("abcabczz,abc", res[804].exec("abcabczz"), 2398); -assertEquals(null, res[804].exec("*** Failers", 2399)); -assertEquals(null, res[804].exec("zz", 2400)); -assertEquals(null, res[804].exec("abcabcabczz", 2401)); -assertEquals(null, res[804].exec(">>abczz", 2402)); -assertEquals("bc,b", res[805].exec("bc"), 2403); -assertEquals("bbc,b", res[805].exec("bbc"), 2404); -assertEquals("bbbc,bb", res[805].exec("bbbc"), 2405); -assertEquals("bac,a", res[805].exec("bac"), 2406); -assertEquals("bbac,a", res[805].exec("bbac"), 2407); -assertEquals("aac,a", res[805].exec("aac"), 2408); -assertEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[805].exec("abbbbbbbbbbbc"), 2409); -assertEquals("bbbbbbbbbbbac,a", res[805].exec("bbbbbbbbbbbac"), 2410); -assertEquals(null, res[805].exec("*** Failers", 2411)); -assertEquals(null, res[805].exec("aaac", 2412)); -assertEquals(null, res[805].exec("abbbbbbbbbbbac", 2413)); -assertEquals("bc,b", res[806].exec("bc"), 2414); -assertEquals("bbc,bb", res[806].exec("bbc"), 2415); -assertEquals("bbbc,bbb", res[806].exec("bbbc"), 2416); -assertEquals("bac,a", res[806].exec("bac"), 2417); -assertEquals("bbac,a", res[806].exec("bbac"), 2418); -assertEquals("aac,a", res[806].exec("aac"), 2419); -assertEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[806].exec("abbbbbbbbbbbc"), 2420); -assertEquals("bbbbbbbbbbbac,a", res[806].exec("bbbbbbbbbbbac"), 2421); -assertEquals(null, res[806].exec("*** Failers", 2422)); -assertEquals(null, res[806].exec("aaac", 2423)); -assertEquals(null, res[806].exec("abbbbbbbbbbbac", 2424)); -assertEquals("bbc,bb", res[806].exec("bbc"), 2425); -assertEquals("babc,ba", res[807].exec("babc"), 2426); -assertEquals("bbabc,ba", res[807].exec("bbabc"), 2427); -assertEquals("bababc,ba", res[807].exec("bababc"), 2428); -assertEquals(null, res[807].exec("*** Failers", 2429)); -assertEquals(null, res[807].exec("bababbc", 2430)); -assertEquals(null, res[807].exec("babababc", 2431)); -assertEquals("babc,ba", res[808].exec("babc"), 2432); -assertEquals("bbabc,ba", res[808].exec("bbabc"), 2433); -assertEquals("bababc,ba", res[808].exec("bababc"), 2434); -assertEquals(null, res[808].exec("*** Failers", 2435)); -assertEquals(null, res[808].exec("bababbc", 2436)); -assertEquals(null, res[808].exec("babababc", 2437)); +assertNull(res[443].exec("aaaa", 885)); +assertNull(res[443].exec("bacxxx", 886)); +assertNull(res[443].exec("bbaccxxx ", 887)); +assertNull(res[443].exec("bbbacccxx", 888)); +assertNull(res[443].exec("aaaa", 889)); +assertNull(res[443].exec("bacxxx", 890)); +assertNull(res[443].exec("bbaccxxx ", 891)); +assertNull(res[443].exec("bbbacccxx", 892)); +assertToStringEquals("a,a", res[444].exec("aaaa"), 893); +assertNull(res[444].exec("bacxxx", 894)); +assertNull(res[444].exec("bbaccxxx ", 895)); +assertNull(res[444].exec("bbbacccxx", 896)); +assertToStringEquals("a,a", res[445].exec("aaaa"), 897); +assertNull(res[445].exec("bacxxx", 898)); +assertNull(res[445].exec("bbaccxxx ", 899)); +assertNull(res[445].exec("bbbacccxx", 900)); +assertToStringEquals("a,a", res[446].exec("aaaa"), 901); +assertNull(res[446].exec("bacxxx", 902)); +assertNull(res[446].exec("bbaccxxx ", 903)); +assertNull(res[446].exec("bbbacccxx", 904)); +assertToStringEquals("a,a,a", res[447].exec("aaaa"), 905); +assertNull(res[447].exec("bacxxx", 906)); +assertNull(res[447].exec("bbaccxxx ", 907)); +assertNull(res[447].exec("bbbacccxx", 908)); +assertNull(res[449].exec("bacxxx", 909)); +assertNull(res[449].exec("XaaX", 910)); +assertNull(res[449].exec("XAAX ", 911)); +assertNull(res[449].exec("XaaX", 912)); +assertNull(res[449].exec("** Failers ", 913)); +assertNull(res[449].exec("XAAX ", 914)); +assertNull(res[449].exec("XaaX", 915)); +assertNull(res[449].exec("XAAX ", 916)); +assertNull(res[449].exec("xzxx", 917)); +assertNull(res[449].exec("yzyy ", 918)); +assertNull(res[449].exec("** Failers", 919)); +assertNull(res[449].exec("xxz ", 920)); +assertToStringEquals("a,,,a", res[450].exec("cat"), 921); +assertToStringEquals("a,,,a", res[451].exec("cat"), 922); +assertToStringEquals("TA]", res[452].exec("The ACTA] comes "), 923); +assertToStringEquals("TA]", res[453].exec("The ACTA] comes "), 924); +assertNull(res[453].exec("abcbabc", 925)); +assertNull(res[453].exec("abcbabc", 926)); +assertNull(res[453].exec("abcbabc", 927)); +assertNull(res[453].exec("** Failers ", 928)); +assertNull(res[453].exec("abcXabc", 929)); +assertNull(res[453].exec("abcXabc", 930)); +assertNull(res[453].exec("** Failers ", 931)); +assertNull(res[453].exec("abcbabc", 932)); +assertNull(res[453].exec("xyzbabcxyz", 933)); +assertNull(res[456].exec("** Failers", 934)); +assertNull(res[456].exec("ab", 935)); +assertNull(res[457].exec("** Failers", 936)); +assertNull(res[457].exec("ab ", 937)); +assertNull(res[457].exec("** Failers", 938)); +assertNull(res[457].exec("ab ", 939)); +assertToStringEquals("aXb", res[458].exec("aXb"), 940); +assertToStringEquals("a\nb", res[458].exec("a\nb "), 941); +assertNull(res[458].exec("** Failers", 942)); +assertNull(res[458].exec("ab ", 943)); +assertToStringEquals("aXb", res[459].exec("aXb"), 944); +assertToStringEquals("a\nX\nXb", res[459].exec("a\nX\nXb "), 945); +assertNull(res[459].exec("** Failers", 946)); +assertNull(res[459].exec("ab ", 947)); +assertToStringEquals("acb", res[463].exec("acb"), 948); +assertToStringEquals("ab", res[463].exec("ab"), 949); +assertNull(res[463].exec("ax{100}b ", 950)); +assertNull(res[463].exec("*** Failers", 951)); +assertNull(res[463].exec("a\nb ", 952)); +assertNull(res[464].exec("ax{4000}xyb ", 953)); +assertNull(res[464].exec("ax{4000}yb ", 954)); +assertNull(res[464].exec("ax{4000}x{100}yb ", 955)); +assertNull(res[464].exec("*** Failers", 956)); +assertNull(res[464].exec("ax{4000}b ", 957)); +assertNull(res[464].exec("ac\ncb ", 958)); +assertToStringEquals("a\xc0,,\xc0", res[465].exec("a\xc0\x88b"), 959); +assertToStringEquals("ax,,x", res[466].exec("ax{100}b"), 960); +assertToStringEquals("a\xc0\x88b,\xc0\x88,b", res[467].exec("a\xc0\x88b"), 961); +assertToStringEquals("ax{100}b,x{100},b", res[468].exec("ax{100}b"), 962); +assertToStringEquals("a\xc0\x92,\xc0,\x92", res[469].exec("a\xc0\x92bcd"), 963); +assertToStringEquals("ax{,x,{", res[470].exec("ax{240}bcd"), 964); +assertToStringEquals("a\xc0\x92,\xc0,\x92", res[471].exec("a\xc0\x92bcd"), 965); +assertToStringEquals("ax{,x,{", res[472].exec("ax{240}bcd"), 966); +assertToStringEquals("a\xc0,,\xc0", res[473].exec("a\xc0\x92bcd"), 967); +assertToStringEquals("ax,,x", res[474].exec("ax{240}bcd"), 968); +assertNull(res[475].exec("ax{1234}xyb ", 969)); +assertNull(res[475].exec("ax{1234}x{4321}yb ", 970)); +assertNull(res[475].exec("ax{1234}x{4321}x{3412}b ", 971)); +assertNull(res[475].exec("*** Failers", 972)); +assertNull(res[475].exec("ax{1234}b ", 973)); +assertNull(res[475].exec("ac\ncb ", 974)); +assertToStringEquals("ax{1234}xyb,x{1234}xy", res[476].exec("ax{1234}xyb "), 975); +assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[476].exec("ax{1234}x{4321}yb "), 976); +assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[476].exec("ax{1234}x{4321}x{3412}b "), 977); +assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij", res[476].exec("axxxxbcdefghijb "), 978); +assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[476].exec("ax{1234}x{4321}x{3412}x{3421}b "), 979); +assertNull(res[476].exec("*** Failers", 980)); +assertToStringEquals("ax{1234}b,x{1234}", res[476].exec("ax{1234}b "), 981); +assertToStringEquals("ax{1234}xyb,x{1234}xy", res[477].exec("ax{1234}xyb "), 982); +assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[477].exec("ax{1234}x{4321}yb "), 983); +assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[477].exec("ax{1234}x{4321}x{3412}b "), 984); +assertToStringEquals("axxxxb,xxxx", res[477].exec("axxxxbcdefghijb "), 985); +assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[477].exec("ax{1234}x{4321}x{3412}x{3421}b "), 986); +assertNull(res[477].exec("*** Failers", 987)); +assertToStringEquals("ax{1234}b,x{1234}", res[477].exec("ax{1234}b "), 988); +assertNull(res[478].exec("ax{1234}xyb ", 989)); +assertNull(res[478].exec("ax{1234}x{4321}yb ", 990)); +assertNull(res[478].exec("ax{1234}x{4321}x{3412}b ", 991)); +assertToStringEquals("axxxxb,xxxx", res[478].exec("axxxxbcdefghijb "), 992); +assertNull(res[478].exec("ax{1234}x{4321}x{3412}x{3421}b ", 993)); +assertToStringEquals("axbxxb,xbxx", res[478].exec("axbxxbcdefghijb "), 994); +assertToStringEquals("axxxxxb,xxxxx", res[478].exec("axxxxxbcdefghijb "), 995); +assertNull(res[478].exec("*** Failers", 996)); +assertNull(res[478].exec("ax{1234}b ", 997)); +assertNull(res[478].exec("axxxxxxbcdefghijb ", 998)); +assertNull(res[479].exec("ax{1234}xyb ", 999)); +assertNull(res[479].exec("ax{1234}x{4321}yb ", 1000)); +assertNull(res[479].exec("ax{1234}x{4321}x{3412}b ", 1001)); +assertToStringEquals("axxxxb,xxxx", res[479].exec("axxxxbcdefghijb "), 1002); +assertNull(res[479].exec("ax{1234}x{4321}x{3412}x{3421}b ", 1003)); +assertToStringEquals("axbxxb,xbxx", res[479].exec("axbxxbcdefghijb "), 1004); +assertToStringEquals("axxxxxb,xxxxx", res[479].exec("axxxxxbcdefghijb "), 1005); +assertNull(res[479].exec("*** Failers", 1006)); +assertNull(res[479].exec("ax{1234}b ", 1007)); +assertNull(res[479].exec("axxxxxxbcdefghijb ", 1008)); +assertNull(res[479].exec("*** Failers", 1009)); +assertNull(res[479].exec("x{100}", 1010)); +assertNull(res[479].exec("aXbcd", 1011)); +assertNull(res[479].exec("ax{100}bcd", 1012)); +assertNull(res[479].exec("ax{100000}bcd", 1013)); +assertNull(res[479].exec("x{100}x{100}x{100}b", 1014)); +assertNull(res[479].exec("*** Failers ", 1015)); +assertNull(res[479].exec("x{100}x{100}b", 1016)); +assertNull(res[479].exec("x{ab} ", 1017)); +assertNull(res[479].exec("\xc2\xab", 1018)); +assertNull(res[479].exec("*** Failers ", 1019)); +assertNull(res[479].exec("\x00{ab}", 1020)); +assertNull(res[479].exec("WXYZ", 1021)); +assertNull(res[479].exec("x{256}XYZ ", 1022)); +assertNull(res[479].exec("*** Failers", 1023)); +assertNull(res[479].exec("XYZ ", 1024)); +assertNull(res[480].exec("Xx{1234}", 1025)); +assertNull(res[481].exec("Xx{1234}YZ", 1026)); +assertToStringEquals("X", res[482].exec("XYZabcdce"), 1027); +assertToStringEquals("X", res[483].exec("XYZabcde"), 1028); +assertNull(res[484].exec("Xabcdefg ", 1029)); +assertNull(res[484].exec("Xx{1234} ", 1030)); +assertNull(res[484].exec("Xx{1234}YZ", 1031)); +assertNull(res[484].exec("Xx{1234}x{512} ", 1032)); +assertNull(res[484].exec("Xx{1234}x{512}YZ", 1033)); +assertNull(res[485].exec("Xabcdefg ", 1034)); +assertNull(res[485].exec("Xx{1234} ", 1035)); +assertNull(res[485].exec("Xx{1234}YZ", 1036)); +assertNull(res[485].exec("Xx{1234}x{512} ", 1037)); +assertToStringEquals("bcd", res[486].exec("bcd"), 1038); +assertToStringEquals("00}", res[486].exec("x{100}aYx{256}Z "), 1039); +assertToStringEquals("x{", res[487].exec("x{100}bc"), 1040); +assertToStringEquals("x{100}bcA", res[488].exec("x{100}bcAa"), 1041); +assertToStringEquals("x{", res[489].exec("x{100}bca"), 1042); +assertToStringEquals("bcd", res[490].exec("bcd"), 1043); +assertToStringEquals("00}", res[490].exec("x{100}aYx{256}Z "), 1044); +assertToStringEquals("x{", res[491].exec("x{100}bc"), 1045); +assertToStringEquals("x{100}bc", res[492].exec("x{100}bcAa"), 1046); +assertToStringEquals("x{", res[493].exec("x{100}bca"), 1047); +assertNull(res[493].exec("abcd", 1048)); +assertNull(res[493].exec("abcd", 1049)); +assertToStringEquals("x{", res[493].exec("x{100}x{100} "), 1050); +assertToStringEquals("x{", res[493].exec("x{100}x{100} "), 1051); +assertToStringEquals("x{", res[493].exec("x{100}x{100}x{100}x{100} "), 1052); +assertNull(res[493].exec("abce", 1053)); +assertToStringEquals("x{", res[493].exec("x{100}x{100}x{100}x{100} "), 1054); +assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1055)); +assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1056)); +assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1057)); +assertNull(res[493].exec("abcdx{100}x{100}x{100}XX", 1058)); +assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 1059)); +assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 1060)); +assertToStringEquals("Xy", res[493].exec("Xyyyax{100}x{100}bXzzz"), 1061); +assertToStringEquals("X", res[496].exec("1X2"), 1062); +assertToStringEquals("x", res[496].exec("1x{100}2 "), 1063); +assertToStringEquals(">X", res[497].exec("> >X Y"), 1064); +assertToStringEquals(">x", res[497].exec("> >x{100} Y"), 1065); +assertToStringEquals("1", res[498].exec("x{100}3"), 1066); +assertToStringEquals(" ", res[499].exec("x{100} X"), 1067); +assertToStringEquals("abcd", res[500].exec("12abcd34"), 1068); +assertToStringEquals("*** Failers", res[500].exec("*** Failers"), 1069); +assertToStringEquals(" ", res[500].exec("1234 "), 1070); +assertToStringEquals("abc", res[501].exec("12abcd34"), 1071); +assertToStringEquals("ab", res[501].exec("12ab34"), 1072); +assertToStringEquals("***", res[501].exec("*** Failers "), 1073); +assertNull(res[501].exec("1234", 1074)); +assertToStringEquals(" ", res[501].exec("12a34 "), 1075); +assertToStringEquals("ab", res[502].exec("12abcd34"), 1076); +assertToStringEquals("ab", res[502].exec("12ab34"), 1077); +assertToStringEquals("**", res[502].exec("*** Failers "), 1078); +assertNull(res[502].exec("1234", 1079)); +assertToStringEquals(" ", res[502].exec("12a34 "), 1080); +assertToStringEquals("12", res[503].exec("12abcd34"), 1081); +assertNull(res[503].exec("*** Failers", 1082)); +assertToStringEquals("12", res[504].exec("12abcd34"), 1083); +assertToStringEquals("123", res[504].exec("1234abcd"), 1084); +assertNull(res[504].exec("*** Failers ", 1085)); +assertNull(res[504].exec("1.4 ", 1086)); +assertToStringEquals("12", res[505].exec("12abcd34"), 1087); +assertToStringEquals("12", res[505].exec("1234abcd"), 1088); +assertNull(res[505].exec("*** Failers ", 1089)); +assertNull(res[505].exec("1.4 ", 1090)); +assertToStringEquals("12abcd34", res[506].exec("12abcd34"), 1091); +assertToStringEquals("***", res[506].exec("*** Failers"), 1092); +assertNull(res[506].exec(" ", 1093)); +assertToStringEquals("12a", res[507].exec("12abcd34"), 1094); +assertToStringEquals("123", res[507].exec("1234abcd"), 1095); +assertToStringEquals("***", res[507].exec("*** Failers"), 1096); +assertNull(res[507].exec(" ", 1097)); +assertToStringEquals("12", res[508].exec("12abcd34"), 1098); +assertToStringEquals("12", res[508].exec("1234abcd"), 1099); +assertToStringEquals("**", res[508].exec("*** Failers"), 1100); +assertNull(res[508].exec(" ", 1101)); +assertToStringEquals("> <", res[509].exec("12> <34"), 1102); +assertNull(res[509].exec("*** Failers", 1103)); +assertToStringEquals("> <", res[510].exec("ab> <cd"), 1104); +assertToStringEquals("> <", res[510].exec("ab> <ce"), 1105); +assertNull(res[510].exec("*** Failers", 1106)); +assertNull(res[510].exec("ab> <cd ", 1107)); +assertToStringEquals("> <", res[511].exec("ab> <cd"), 1108); +assertToStringEquals("> <", res[511].exec("ab> <ce"), 1109); +assertNull(res[511].exec("*** Failers", 1110)); +assertNull(res[511].exec("ab> <cd ", 1111)); +assertToStringEquals("12", res[512].exec("12 34"), 1112); +assertToStringEquals("Failers", res[512].exec("*** Failers"), 1113); +assertNull(res[512].exec("+++=*! ", 1114)); +assertToStringEquals("ab", res[513].exec("ab cd"), 1115); +assertToStringEquals("abc", res[513].exec("abcd ce"), 1116); +assertToStringEquals("Fai", res[513].exec("*** Failers"), 1117); +assertNull(res[513].exec("a.b.c", 1118)); +assertToStringEquals("ab", res[514].exec("ab cd"), 1119); +assertToStringEquals("ab", res[514].exec("abcd ce"), 1120); +assertToStringEquals("Fa", res[514].exec("*** Failers"), 1121); +assertNull(res[514].exec("a.b.c", 1122)); +assertToStringEquals("====", res[515].exec("12====34"), 1123); +assertToStringEquals("*** ", res[515].exec("*** Failers"), 1124); +assertToStringEquals(" ", res[515].exec("abcd "), 1125); +assertToStringEquals("===", res[516].exec("ab====cd"), 1126); +assertToStringEquals("==", res[516].exec("ab==cd"), 1127); +assertToStringEquals("***", res[516].exec("*** Failers"), 1128); +assertNull(res[516].exec("a.b.c", 1129)); +assertToStringEquals("==", res[517].exec("ab====cd"), 1130); +assertToStringEquals("==", res[517].exec("ab==cd"), 1131); +assertToStringEquals("**", res[517].exec("*** Failers"), 1132); +assertNull(res[517].exec("a.b.c", 1133)); +assertNull(res[517].exec("x{100}", 1134)); +assertNull(res[517].exec("Zx{100}", 1135)); +assertNull(res[517].exec("x{100}Z", 1136)); +assertToStringEquals("**", res[517].exec("*** Failers "), 1137); +assertNull(res[517].exec("Zx{100}", 1138)); +assertNull(res[517].exec("x{100}", 1139)); +assertNull(res[517].exec("x{100}Z", 1140)); +assertToStringEquals("**", res[517].exec("*** Failers "), 1141); +assertNull(res[517].exec("abcx{200}X", 1142)); +assertNull(res[517].exec("abcx{100}X ", 1143)); +assertToStringEquals("**", res[517].exec("*** Failers"), 1144); +assertToStringEquals(" ", res[517].exec("X "), 1145); +assertNull(res[517].exec("abcx{200}X", 1146)); +assertNull(res[517].exec("abcx{100}X ", 1147)); +assertNull(res[517].exec("abQX ", 1148)); +assertToStringEquals("**", res[517].exec("*** Failers"), 1149); +assertToStringEquals(" ", res[517].exec("X "), 1150); +assertNull(res[517].exec("abcx{100}x{200}x{100}X", 1151)); +assertToStringEquals("**", res[517].exec("*** Failers"), 1152); +assertNull(res[517].exec("abcx{200}X", 1153)); +assertToStringEquals(" ", res[517].exec("X "), 1154); +assertNull(res[517].exec("AX", 1155)); +assertNull(res[517].exec("x{150}X", 1156)); +assertNull(res[517].exec("x{500}X ", 1157)); +assertToStringEquals("**", res[517].exec("*** Failers"), 1158); +assertNull(res[517].exec("x{100}X", 1159)); +assertToStringEquals(" ", res[517].exec("x{200}X "), 1160); +assertNull(res[517].exec("AX", 1161)); +assertNull(res[517].exec("x{150}X", 1162)); +assertNull(res[517].exec("x{500}X ", 1163)); +assertToStringEquals("**", res[517].exec("*** Failers"), 1164); +assertNull(res[517].exec("x{100}X", 1165)); +assertToStringEquals(" ", res[517].exec("x{200}X "), 1166); +assertNull(res[517].exec("QX ", 1167)); +assertNull(res[517].exec("AX", 1168)); +assertNull(res[517].exec("x{500}X ", 1169)); +assertToStringEquals("**", res[517].exec("*** Failers"), 1170); +assertNull(res[517].exec("x{100}X", 1171)); +assertNull(res[517].exec("x{150}X", 1172)); +assertToStringEquals(" ", res[517].exec("x{200}X "), 1173); +assertNull(res[518].exec("aXb", 1174)); +assertNull(res[518].exec("a\nb", 1175)); +assertNull(res[519].exec("aXb", 1176)); +assertNull(res[519].exec("a\nb", 1177)); +assertNull(res[519].exec("*** Failers ", 1178)); +assertNull(res[519].exec("ax{100}b ", 1179)); +assertNull(res[519].exec("z", 1180)); +assertNull(res[519].exec("Z ", 1181)); +assertNull(res[519].exec("x{100}", 1182)); +assertNull(res[519].exec("*** Failers", 1183)); +assertNull(res[519].exec("x{102}", 1184)); +assertNull(res[519].exec("y ", 1185)); +assertToStringEquals("\xff", res[520].exec(">\xff<"), 1186); +assertNull(res[521].exec(">x{ff}<", 1187)); +assertToStringEquals("X", res[522].exec("XYZ"), 1188); +assertToStringEquals("X", res[523].exec("XYZ"), 1189); +assertToStringEquals("x", res[523].exec("x{123} "), 1190); +assertToStringEquals(",", res[528].exec("catac"), 1191); +assertToStringEquals(",", res[528].exec("ax{256}a "), 1192); +assertToStringEquals(",", res[528].exec("x{85}"), 1193); +assertToStringEquals(",", res[528].exec("\u1234 "), 1194); +assertToStringEquals(",", res[528].exec("\u1234 "), 1195); +assertToStringEquals(",", res[528].exec("abcdefg"), 1196); +assertToStringEquals(",", res[528].exec("ab"), 1197); +assertToStringEquals(",", res[528].exec("a "), 1198); +assertToStringEquals("Ax", res[529].exec("Ax{a3}BC"), 1199); +assertToStringEquals("Ax", res[530].exec("Ax{a3}BC"), 1200); +assertToStringEquals("}=", res[531].exec("+x{a3}== "), 1201); +assertToStringEquals("}=", res[532].exec("+x{a3}== "), 1202); +assertToStringEquals("x", res[533].exec("x{442}x{435}x{441}x{442}"), 1203); +assertToStringEquals("x", res[534].exec("x{442}x{435}x{441}x{442}"), 1204); +assertToStringEquals("x", res[535].exec("x{442}x{435}x{441}x{442}"), 1205); +assertToStringEquals("x", res[536].exec("x{442}x{435}x{441}x{442}"), 1206); +assertToStringEquals("{", res[537].exec("x{2442}x{2435}x{2441}x{2442}"), 1207); +assertToStringEquals("{", res[538].exec("x{2442}x{2435}x{2441}x{2442}"), 1208); +assertToStringEquals("abc\n\x0dx{442}x{435}x{441}x{442}xyz ", res[539].exec("abc\n\x0dx{442}x{435}x{441}x{442}xyz "), 1209); +assertToStringEquals("x{442}x{435}x{441}x{442}", res[539].exec("x{442}x{435}x{441}x{442}"), 1210); +assertToStringEquals("c d", res[540].exec("abc defx{442}x{443}xyz\npqr"), 1211); +assertToStringEquals("c d", res[541].exec("abc defx{442}x{443}xyz\npqr"), 1212); +assertNull(res[542].exec("+x{2442}", 1213)); +assertNull(res[543].exec("+x{2442}", 1214)); +assertNull(res[544].exec("Ax{442}", 1215)); +assertNull(res[545].exec("Ax{442}", 1216)); +assertNull(res[546].exec("Ax{442}", 1217)); +assertNull(res[547].exec("Ax{442}", 1218)); +assertNull(res[548].exec("\x19x{e01ff}", 1219)); +assertNull(res[549].exec("Ax{422}", 1220)); +assertNull(res[550].exec("x{19}x{e01ff}", 1221)); +assertNull(res[551].exec("Ax{442}", 1222)); +assertNull(res[552].exec("Ax{442}", 1223)); +assertNull(res[553].exec("ax{442}", 1224)); +assertNull(res[554].exec("+x{2442}", 1225)); +assertNull(res[555].exec("Mx{442}", 1226)); +assertToStringEquals("abc", res[556].exec("abc"), 1227); +assertToStringEquals("abc", res[557].exec("abc"), 1228); +assertToStringEquals("abc", res[558].exec("abc"), 1229); +assertToStringEquals("abc", res[559].exec("abc"), 1230); +assertNull(res[560].exec("x{100}ax{1234}bcd", 1231)); +assertNull(res[562].exec("x{0041}x{2262}x{0391}x{002e}", 1232)); +assertNull(res[562].exec("x{D55c}x{ad6d}x{C5B4} ", 1233)); +assertNull(res[562].exec("x{65e5}x{672c}x{8a9e}", 1234)); +assertToStringEquals("{861}X", res[563].exec("x{212ab}x{212ab}x{212ab}x{861}X"), 1235); +assertToStringEquals("x{2", res[564].exec("x{212ab}x{212ab}x{212ab}x{861}"), 1236); +assertToStringEquals("x{c", res[564].exec("x{c0}b"), 1237); +assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1238); +assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1239); +assertToStringEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1240); +assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1241); +assertToStringEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1242); +assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1243); +assertToStringEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1244); +assertToStringEquals("Sho", res[564].exec("Should produce an error diagnostic"), 1245); +assertNull(res[565].exec("Xx{1234}", 1246)); +assertNull(res[565].exec("X\nabc ", 1247)); +assertToStringEquals("b", res[566].exec("bar"), 1248); +assertNull(res[566].exec("*** Failers", 1249)); +assertNull(res[566].exec("c", 1250)); +assertNull(res[566].exec("x{ff}", 1251)); +assertNull(res[566].exec("x{100} ", 1252)); +assertToStringEquals("c", res[567].exec("c"), 1253); +assertToStringEquals("x", res[567].exec("x{ff}"), 1254); +assertToStringEquals("x", res[567].exec("x{100} "), 1255); +assertToStringEquals("*", res[567].exec("*** Failers "), 1256); +assertNull(res[567].exec("aaa", 1257)); +assertToStringEquals("x", res[568].exec("x{f1}"), 1258); +assertToStringEquals("x", res[568].exec("x{bf}"), 1259); +assertToStringEquals("x", res[568].exec("x{100}"), 1260); +assertToStringEquals("x", res[568].exec("x{1000} "), 1261); +assertToStringEquals("*", res[568].exec("*** Failers"), 1262); +assertToStringEquals("x", res[568].exec("x{c0} "), 1263); +assertToStringEquals("x", res[568].exec("x{f0} "), 1264); +assertToStringEquals("1", res[568].exec("1234"), 1265); +assertToStringEquals("\"", res[568].exec("\"1234\" "), 1266); +assertToStringEquals("x", res[568].exec("x{100}1234"), 1267); +assertToStringEquals("\"", res[568].exec("\"x{100}1234\" "), 1268); +assertToStringEquals("x", res[568].exec("x{100}x{100}12ab "), 1269); +assertToStringEquals("x", res[568].exec("x{100}x{100}\"12\" "), 1270); +assertToStringEquals("*", res[568].exec("*** Failers "), 1271); +assertToStringEquals("x", res[568].exec("x{100}x{100}abcd"), 1272); +assertToStringEquals("A", res[568].exec("A"), 1273); +assertToStringEquals("x", res[568].exec("x{100}"), 1274); +assertToStringEquals("Z", res[568].exec("Zx{100}"), 1275); +assertToStringEquals("x", res[568].exec("x{100}Z"), 1276); +assertToStringEquals("*", res[568].exec("*** Failers "), 1277); +assertToStringEquals("Z", res[568].exec("Zx{100}"), 1278); +assertToStringEquals("x", res[568].exec("x{100}"), 1279); +assertToStringEquals("x", res[568].exec("x{100}Z"), 1280); +assertToStringEquals("*", res[568].exec("*** Failers "), 1281); +assertToStringEquals("x", res[568].exec("x{100}"), 1282); +assertToStringEquals("x", res[568].exec("x{104}"), 1283); +assertToStringEquals("*", res[568].exec("*** Failers"), 1284); +assertToStringEquals("x", res[568].exec("x{105}"), 1285); +assertToStringEquals("x", res[568].exec("x{ff} "), 1286); +assertToStringEquals("x", res[568].exec("x{100}"), 1287); +assertToStringEquals("\u0100", res[568].exec("\u0100 "), 1288); +assertToStringEquals("\xff", res[569].exec(">\xff<"), 1289); +assertNull(res[570].exec(">x{ff}<", 1290)); +assertToStringEquals("\xd6", res[572].exec("\xd6 # Matches without Study"), 1291); +assertToStringEquals("x", res[572].exec("x{d6}"), 1292); +assertToStringEquals("\xd6", res[572].exec("\xd6 <-- Same with Study"), 1293); +assertToStringEquals("x", res[572].exec("x{d6}"), 1294); +assertToStringEquals("\xd6", res[572].exec("\xd6 # Matches without Study"), 1295); +assertToStringEquals("x", res[572].exec("x{d6} "), 1296); +assertToStringEquals("\xd6", res[572].exec("\xd6 <-- Same with Study"), 1297); +assertToStringEquals("x", res[572].exec("x{d6} "), 1298); +assertToStringEquals("\ufffd", res[572].exec("\ufffd]"), 1299); +assertToStringEquals("\ufffd", res[572].exec("\ufffd"), 1300); +assertToStringEquals("\ufffd", res[572].exec("\ufffd\ufffd\ufffd"), 1301); +assertToStringEquals("\ufffd", res[572].exec("\ufffd\ufffd\ufffd?"), 1302); +assertNull(res[573].exec("\xc0\x80", 1303)); +assertNull(res[573].exec("\xc1\x8f ", 1304)); +assertNull(res[573].exec("\xe0\x9f\x80", 1305)); +assertNull(res[573].exec("\xf0\x8f\x80\x80 ", 1306)); +assertNull(res[573].exec("\xf8\x87\x80\x80\x80 ", 1307)); +assertNull(res[573].exec("\xfc\x83\x80\x80\x80\x80", 1308)); +assertNull(res[573].exec("\xfe\x80\x80\x80\x80\x80 ", 1309)); +assertNull(res[573].exec("\xff\x80\x80\x80\x80\x80 ", 1310)); +assertNull(res[573].exec("\xc3\x8f", 1311)); +assertNull(res[573].exec("\xe0\xaf\x80", 1312)); +assertNull(res[573].exec("\xe1\x80\x80", 1313)); +assertNull(res[573].exec("\xf0\x9f\x80\x80 ", 1314)); +assertNull(res[573].exec("\xf1\x8f\x80\x80 ", 1315)); +assertNull(res[573].exec("\xf8\x88\x80\x80\x80 ", 1316)); +assertNull(res[573].exec("\xf9\x87\x80\x80\x80 ", 1317)); +assertNull(res[573].exec("\xfc\x84\x80\x80\x80\x80", 1318)); +assertNull(res[573].exec("\xfd\x83\x80\x80\x80\x80", 1319)); +assertNull(res[573].exec("?\xf8\x88\x80\x80\x80 ", 1320)); +assertNull(res[573].exec("?\xf9\x87\x80\x80\x80 ", 1321)); +assertNull(res[573].exec("?\xfc\x84\x80\x80\x80\x80", 1322)); +assertNull(res[573].exec("?\xfd\x83\x80\x80\x80\x80", 1323)); +assertToStringEquals(".", res[574].exec("A.B"), 1324); +assertToStringEquals("{", res[574].exec("Ax{100}B "), 1325); +assertToStringEquals("x", res[575].exec("x{100}X "), 1326); +assertToStringEquals("a", res[575].exec("ax{1234}b"), 1327); +assertNull(res[577].exec("AxxB ", 1328)); +assertToStringEquals("abc1", res[578].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 1329); +assertToStringEquals("abc1", res[579].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 1330); +assertNull(res[580].exec("a\nb", 1331)); +assertNull(res[580].exec("a\x0db", 1332)); +assertNull(res[580].exec("a\x0d\nb", 1333)); +assertNull(res[580].exec("a\x0bb", 1334)); +assertNull(res[580].exec("a\x0cb", 1335)); +assertNull(res[580].exec("ax{85}b ", 1336)); +assertNull(res[580].exec("ax{2028}b ", 1337)); +assertNull(res[580].exec("ax{2029}b ", 1338)); +assertNull(res[580].exec("** Failers", 1339)); +assertNull(res[580].exec("a\n\x0db ", 1340)); +assertToStringEquals("ab", res[581].exec("ab"), 1341); +assertNull(res[581].exec("a\nb", 1342)); +assertNull(res[581].exec("a\x0db", 1343)); +assertNull(res[581].exec("a\x0d\nb", 1344)); +assertNull(res[581].exec("a\x0bb", 1345)); +assertNull(res[581].exec("a\x0cx{2028}x{2029}b", 1346)); +assertNull(res[581].exec("ax{85}b ", 1347)); +assertNull(res[581].exec("a\n\x0db ", 1348)); +assertNull(res[581].exec("a\n\x0dx{85}\x0cb ", 1349)); +assertNull(res[582].exec("a\nb", 1350)); +assertNull(res[582].exec("a\x0db", 1351)); +assertNull(res[582].exec("a\x0d\nb", 1352)); +assertNull(res[582].exec("a\x0bb", 1353)); +assertNull(res[582].exec("a\x0cx{2028}x{2029}b", 1354)); +assertNull(res[582].exec("ax{85}b ", 1355)); +assertNull(res[582].exec("a\n\x0db ", 1356)); +assertNull(res[582].exec("a\n\x0dx{85}\x0cb ", 1357)); +assertNull(res[582].exec("** Failers", 1358)); +assertNull(res[582].exec("ab ", 1359)); +assertNull(res[583].exec("a\nb", 1360)); +assertNull(res[583].exec("a\n\x0db", 1361)); +assertNull(res[583].exec("a\n\x0dx{85}b", 1362)); +assertNull(res[583].exec("a\x0d\n\x0d\nb ", 1363)); +assertNull(res[583].exec("a\x0d\n\x0d\n\x0d\nb ", 1364)); +assertNull(res[583].exec("a\n\x0d\n\x0db", 1365)); +assertNull(res[583].exec("a\n\n\x0d\nb ", 1366)); +assertNull(res[583].exec("** Failers", 1367)); +assertNull(res[583].exec("a\n\n\n\x0db", 1368)); +assertNull(res[583].exec("a\x0d", 1369)); +assertNull(res[584].exec("X X\n", 1370)); +assertNull(res[584].exec("X\x09X\x0b", 1371)); +assertNull(res[584].exec("** Failers", 1372)); +assertNull(res[584].exec("x{a0} X\n ", 1373)); +assertNull(res[585].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 1374)); +assertNull(res[585].exec("\x09 x{a0}\n\x0b\x0c\x0d\n", 1375)); +assertNull(res[585].exec("\x09 x{a0}\n\x0b\x0c", 1376)); +assertNull(res[585].exec("** Failers ", 1377)); +assertNull(res[585].exec("\x09 x{a0}\n\x0b", 1378)); +assertNull(res[585].exec(" ", 1379)); +assertNull(res[586].exec("x{3001}x{3000}x{2030}x{2028}", 1380)); +assertNull(res[586].exec("Xx{180e}Xx{85}", 1381)); +assertNull(res[586].exec("** Failers", 1382)); +assertNull(res[586].exec("x{2009} X\n ", 1383)); +assertNull(res[587].exec("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n", 1384)); +assertNull(res[587].exec("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n", 1385)); +assertNull(res[587].exec("\x09 x{202f}\n\x0b\x0c", 1386)); +assertNull(res[587].exec("** Failers ", 1387)); +assertNull(res[587].exec("\x09x{200a}x{a0}x{2028}\x0b", 1388)); +assertNull(res[587].exec(" ", 1389)); +assertNull(res[588].exec(">x{1680}", 1390)); +assertNull(res[589].exec(">x{1680}x{180e}x{2000}x{2003}x{200a}x{202f}x{205f}x{3000}<", 1391)); +assertToStringEquals("x{1ec5} ", res[593].exec("x{1ec5} "), 1392); +assertNull(res[594].exec("x{0}x{d7ff}x{e000}x{10ffff}", 1393)); +assertNull(res[594].exec("x{d800}", 1394)); +assertNull(res[594].exec("x{d800}?", 1395)); +assertNull(res[594].exec("x{da00}", 1396)); +assertNull(res[594].exec("x{da00}?", 1397)); +assertNull(res[594].exec("x{dfff}", 1398)); +assertNull(res[594].exec("x{dfff}?", 1399)); +assertNull(res[594].exec("x{110000} ", 1400)); +assertNull(res[594].exec("x{110000}? ", 1401)); +assertNull(res[594].exec("x{2000000} ", 1402)); +assertNull(res[594].exec("x{2000000}? ", 1403)); +assertNull(res[594].exec("x{7fffffff} ", 1404)); +assertNull(res[594].exec("x{7fffffff}? ", 1405)); +assertNull(res[595].exec("a\x0db", 1406)); +assertNull(res[595].exec("a\nb", 1407)); +assertNull(res[595].exec("a\x0d\nb", 1408)); +assertNull(res[595].exec("** Failers", 1409)); +assertNull(res[595].exec("ax{85}b", 1410)); +assertNull(res[595].exec("a\x0bb ", 1411)); +assertNull(res[596].exec("a\x0db", 1412)); +assertNull(res[596].exec("a\nb", 1413)); +assertNull(res[596].exec("a\x0d\nb", 1414)); +assertNull(res[596].exec("ax{85}b", 1415)); +assertNull(res[596].exec("a\x0bb ", 1416)); +assertNull(res[596].exec("** Failers ", 1417)); +assertNull(res[596].exec("ax{85}b<bsr_anycrlf>", 1418)); +assertNull(res[596].exec("a\x0bb<bsr_anycrlf>", 1419)); +assertNull(res[597].exec("a\x0db", 1420)); +assertNull(res[597].exec("a\nb", 1421)); +assertNull(res[597].exec("a\x0d\nb", 1422)); +assertNull(res[597].exec("** Failers", 1423)); +assertNull(res[597].exec("ax{85}b", 1424)); +assertNull(res[597].exec("a\x0bb ", 1425)); +assertNull(res[598].exec("a\x0db", 1426)); +assertNull(res[598].exec("a\nb", 1427)); +assertNull(res[598].exec("a\x0d\nb", 1428)); +assertNull(res[598].exec("ax{85}b", 1429)); +assertNull(res[598].exec("a\x0bb ", 1430)); +assertNull(res[598].exec("** Failers ", 1431)); +assertNull(res[598].exec("ax{85}b<bsr_anycrlf>", 1432)); +assertNull(res[598].exec("a\x0bb<bsr_anycrlf>", 1433)); +assertToStringEquals("QQQx{2029}ABCaXYZ=!bPQR", res[599].exec("QQQx{2029}ABCaXYZ=!bPQR"), 1434); +assertNull(res[599].exec("** Failers", 1435)); +assertNull(res[599].exec("ax{2029}b", 1436)); +assertNull(res[599].exec("a\xe2\x80\xa9b ", 1437)); +assertNull(res[600].exec("ax{1234}b", 1438)); +assertToStringEquals("a\nb", res[600].exec("a\nb "), 1439); +assertNull(res[600].exec("** Failers", 1440)); +assertNull(res[600].exec("ab ", 1441)); +assertToStringEquals("aXb", res[601].exec("aXb"), 1442); +assertToStringEquals("a\nX\nXx{1234}b", res[601].exec("a\nX\nXx{1234}b "), 1443); +assertNull(res[601].exec("** Failers", 1444)); +assertNull(res[601].exec("ab ", 1445)); +assertNull(res[601].exec("x{de}x{de}", 1446)); +assertNull(res[601].exec("x{123} ", 1447)); +assertToStringEquals("X", res[602].exec("Ax{1ec5}ABCXYZ"), 1448); +assertNull(res[604].exec("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<", 1449)); +assertNull(res[604].exec("\npx{300}9!$ < ", 1450)); +assertNull(res[604].exec("** Failers ", 1451)); +assertNull(res[604].exec("apx{300}9!$ < ", 1452)); +assertNull(res[605].exec("X", 1453)); +assertNull(res[605].exec("** Failers ", 1454)); +assertNull(res[605].exec("", 1455)); +assertNull(res[606].exec("9", 1456)); +assertNull(res[606].exec("** Failers ", 1457)); +assertNull(res[606].exec("x{c0}", 1458)); +assertNull(res[607].exec("X", 1459)); +assertNull(res[607].exec("** Failers ", 1460)); +assertNull(res[607].exec("x{30f}", 1461)); +assertNull(res[608].exec("X", 1462)); +assertNull(res[608].exec("** Failers ", 1463)); +assertNull(res[608].exec("x{660}", 1464)); +assertNull(res[609].exec("X", 1465)); +assertNull(res[609].exec("** Failers ", 1466)); +assertNull(res[609].exec("x{66c}", 1467)); +assertNull(res[610].exec("X", 1468)); +assertNull(res[610].exec("** Failers ", 1469)); +assertNull(res[610].exec("x{f01}", 1470)); +assertNull(res[611].exec("X", 1471)); +assertNull(res[611].exec("** Failers ", 1472)); +assertNull(res[611].exec("x{1680}", 1473)); +assertNull(res[612].exec("x{017}", 1474)); +assertNull(res[612].exec("x{09f} ", 1475)); +assertNull(res[612].exec("** Failers", 1476)); +assertNull(res[612].exec("x{0600} ", 1477)); +assertNull(res[613].exec("x{601}", 1478)); +assertNull(res[613].exec("** Failers", 1479)); +assertNull(res[613].exec("x{09f} ", 1480)); +assertNull(res[614].exec("x{e0000}", 1481)); +assertNull(res[614].exec("** Failers", 1482)); +assertNull(res[614].exec("x{09f} ", 1483)); +assertNull(res[615].exec("x{f8ff}", 1484)); +assertNull(res[615].exec("** Failers", 1485)); +assertNull(res[615].exec("x{09f} ", 1486)); +assertNull(res[616].exec("?x{dfff}", 1487)); +assertNull(res[616].exec("** Failers", 1488)); +assertNull(res[616].exec("x{09f} ", 1489)); +assertNull(res[617].exec("a", 1490)); +assertNull(res[617].exec("** Failers ", 1491)); +assertNull(res[617].exec("Z", 1492)); +assertNull(res[617].exec("x{e000} ", 1493)); +assertNull(res[618].exec("x{2b0}", 1494)); +assertNull(res[618].exec("** Failers", 1495)); +assertNull(res[618].exec("a ", 1496)); +assertNull(res[619].exec("x{1bb}", 1497)); +assertNull(res[619].exec("x{3400}", 1498)); +assertNull(res[619].exec("x{3401}", 1499)); +assertNull(res[619].exec("x{4d00}", 1500)); +assertNull(res[619].exec("x{4db4}", 1501)); +assertNull(res[619].exec("x{4db5} ", 1502)); +assertNull(res[619].exec("** Failers", 1503)); +assertNull(res[619].exec("a ", 1504)); +assertNull(res[619].exec("x{2b0}", 1505)); +assertNull(res[619].exec("x{4db6} ", 1506)); +assertNull(res[620].exec("x{1c5}", 1507)); +assertNull(res[620].exec("** Failers", 1508)); +assertNull(res[620].exec("a ", 1509)); +assertNull(res[620].exec("x{2b0}", 1510)); +assertNull(res[621].exec("A", 1511)); +assertNull(res[621].exec("** Failers", 1512)); +assertNull(res[621].exec("x{2b0}", 1513)); +assertNull(res[622].exec("x{903}", 1514)); +assertNull(res[622].exec("** Failers", 1515)); +assertNull(res[622].exec("X", 1516)); +assertNull(res[622].exec("x{300}", 1517)); +assertNull(res[622].exec(" ", 1518)); +assertNull(res[623].exec("x{488}", 1519)); +assertNull(res[623].exec("** Failers", 1520)); +assertNull(res[623].exec("X", 1521)); +assertNull(res[623].exec("x{903}", 1522)); +assertNull(res[623].exec("x{300}", 1523)); +assertNull(res[624].exec("x{300}", 1524)); +assertNull(res[624].exec("** Failers", 1525)); +assertNull(res[624].exec("X", 1526)); +assertNull(res[624].exec("x{903}", 1527)); +assertNull(res[624].exec("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}", 1528)); +assertNull(res[624].exec("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}", 1529)); +assertNull(res[624].exec("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}", 1530)); +assertNull(res[624].exec("** Failers", 1531)); +assertNull(res[624].exec("X", 1532)); +assertNull(res[625].exec("x{16ee}", 1533)); +assertNull(res[625].exec("** Failers", 1534)); +assertNull(res[625].exec("X", 1535)); +assertNull(res[625].exec("x{966}", 1536)); +assertNull(res[626].exec("x{b2}", 1537)); +assertNull(res[626].exec("x{b3}", 1538)); +assertNull(res[626].exec("** Failers", 1539)); +assertNull(res[626].exec("X", 1540)); +assertNull(res[626].exec("x{16ee}", 1541)); +assertNull(res[627].exec("_", 1542)); +assertNull(res[627].exec("x{203f}", 1543)); +assertNull(res[627].exec("** Failers", 1544)); +assertNull(res[627].exec("X", 1545)); +assertNull(res[627].exec("-", 1546)); +assertNull(res[627].exec("x{58a}", 1547)); +assertNull(res[628].exec("-", 1548)); +assertNull(res[628].exec("x{58a}", 1549)); +assertNull(res[628].exec("** Failers", 1550)); +assertNull(res[628].exec("X", 1551)); +assertNull(res[628].exec("x{203f}", 1552)); +assertNull(res[629].exec(")", 1553)); +assertNull(res[629].exec("]", 1554)); +assertNull(res[629].exec("}", 1555)); +assertNull(res[629].exec("x{f3b}", 1556)); +assertNull(res[629].exec("** Failers", 1557)); +assertNull(res[629].exec("X", 1558)); +assertNull(res[629].exec("x{203f}", 1559)); +assertNull(res[629].exec("(", 1560)); +assertNull(res[629].exec("[", 1561)); +assertNull(res[629].exec("{", 1562)); +assertNull(res[629].exec("x{f3c}", 1563)); +assertNull(res[630].exec("x{bb}", 1564)); +assertNull(res[630].exec("x{2019}", 1565)); +assertNull(res[630].exec("** Failers", 1566)); +assertNull(res[630].exec("X", 1567)); +assertNull(res[630].exec("x{203f}", 1568)); +assertNull(res[631].exec("x{ab}", 1569)); +assertNull(res[631].exec("x{2018}", 1570)); +assertNull(res[631].exec("** Failers", 1571)); +assertNull(res[631].exec("X", 1572)); +assertNull(res[631].exec("x{203f}", 1573)); +assertNull(res[632].exec("!", 1574)); +assertNull(res[632].exec("x{37e}", 1575)); +assertNull(res[632].exec("** Failers", 1576)); +assertNull(res[632].exec("X", 1577)); +assertNull(res[632].exec("x{203f}", 1578)); +assertNull(res[633].exec("(", 1579)); +assertNull(res[633].exec("[", 1580)); +assertNull(res[633].exec("{", 1581)); +assertNull(res[633].exec("x{f3c}", 1582)); +assertNull(res[633].exec("** Failers", 1583)); +assertNull(res[633].exec("X", 1584)); +assertNull(res[633].exec(")", 1585)); +assertNull(res[633].exec("]", 1586)); +assertNull(res[633].exec("}", 1587)); +assertNull(res[633].exec("x{f3b}", 1588)); +assertNull(res[633].exec("$x{a2}x{a3}x{a4}x{a5}x{a6}", 1589)); +assertNull(res[633].exec("x{9f2}", 1590)); +assertNull(res[633].exec("** Failers", 1591)); +assertNull(res[633].exec("X", 1592)); +assertNull(res[633].exec("x{2c2}", 1593)); +assertNull(res[634].exec("x{2c2}", 1594)); +assertNull(res[634].exec("** Failers", 1595)); +assertNull(res[634].exec("X", 1596)); +assertNull(res[634].exec("x{9f2}", 1597)); +assertNull(res[634].exec("+<|~x{ac}x{2044}", 1598)); +assertNull(res[634].exec("** Failers", 1599)); +assertNull(res[634].exec("X", 1600)); +assertNull(res[634].exec("x{9f2}", 1601)); +assertNull(res[635].exec("x{a6}", 1602)); +assertNull(res[635].exec("x{482} ", 1603)); +assertNull(res[635].exec("** Failers", 1604)); +assertNull(res[635].exec("X", 1605)); +assertNull(res[635].exec("x{9f2}", 1606)); +assertNull(res[636].exec("x{2028}", 1607)); +assertNull(res[636].exec("** Failers", 1608)); +assertNull(res[636].exec("X", 1609)); +assertNull(res[636].exec("x{2029}", 1610)); +assertNull(res[637].exec("x{2029}", 1611)); +assertNull(res[637].exec("** Failers", 1612)); +assertNull(res[637].exec("X", 1613)); +assertNull(res[637].exec("x{2028}", 1614)); +assertNull(res[638].exec("\\ \\", 1615)); +assertNull(res[638].exec("x{a0}", 1616)); +assertNull(res[638].exec("x{1680}", 1617)); +assertNull(res[638].exec("x{180e}", 1618)); +assertNull(res[638].exec("x{2000}", 1619)); +assertNull(res[638].exec("x{2001} ", 1620)); +assertNull(res[638].exec("** Failers", 1621)); +assertNull(res[638].exec("x{2028}", 1622)); +assertNull(res[638].exec("x{200d} ", 1623)); +assertNull(res[638].exec(" x{660}x{661}x{662}ABC", 1624)); +assertNull(res[638].exec(" x{660}x{661}x{662}ABC", 1625)); +assertNull(res[639].exec(" x{660}x{661}x{662}ABC", 1626)); +assertNull(res[640].exec(" x{660}x{661}x{662}ABC", 1627)); +assertNull(res[641].exec(" x{660}x{661}x{662}ABC", 1628)); +assertNull(res[642].exec(" x{660}x{661}x{662}ABC", 1629)); +assertNull(res[643].exec(" x{660}x{661}x{662}ABC", 1630)); +assertNull(res[644].exec(" x{660}x{661}x{662}ABC", 1631)); +assertNull(res[645].exec(" x{660}x{661}x{662}ABC", 1632)); +assertNull(res[646].exec(" x{660}x{661}x{662}ABC", 1633)); +assertNull(res[647].exec(" x{660}x{661}x{662}ABC", 1634)); +assertNull(res[647].exec(" x{660}x{661}x{662}ABC", 1635)); +assertNull(res[647].exec(" x{660}x{661}x{662}ABC", 1636)); +assertNull(res[647].exec(" ** Failers", 1637)); +assertNull(res[647].exec(" x{660}x{661}x{662}ABC", 1638)); +assertNull(res[648].exec("A", 1639)); +assertNull(res[648].exec("ax{10a0}B ", 1640)); +assertNull(res[648].exec("** Failers ", 1641)); +assertNull(res[648].exec("a", 1642)); +assertNull(res[648].exec("x{1d00} ", 1643)); +assertNull(res[649].exec("1234", 1644)); +assertNull(res[649].exec("** Failers", 1645)); +assertNull(res[649].exec("ABC ", 1646)); +assertNull(res[650].exec("1234", 1647)); +assertNull(res[650].exec("** Failers", 1648)); +assertNull(res[650].exec("ABC ", 1649)); +assertNull(res[650].exec("A2XYZ", 1650)); +assertNull(res[650].exec("123A5XYZPQR", 1651)); +assertNull(res[650].exec("ABAx{660}XYZpqr", 1652)); +assertNull(res[650].exec("** Failers", 1653)); +assertNull(res[650].exec("AXYZ", 1654)); +assertNull(res[650].exec("XYZ ", 1655)); +assertNull(res[650].exec("1XYZ", 1656)); +assertNull(res[650].exec("AB=XYZ.. ", 1657)); +assertNull(res[650].exec("XYZ ", 1658)); +assertNull(res[650].exec("** Failers", 1659)); +assertNull(res[650].exec("WXYZ ", 1660)); +assertNull(res[655].exec("1234", 1661)); +assertNull(res[655].exec("1234", 1662)); +assertNull(res[655].exec("12-34", 1663)); +assertToStringEquals("{", res[655].exec("12+x{661}-34 "), 1664); +assertNull(res[655].exec("** Failers", 1665)); +assertToStringEquals("d", res[655].exec("abcd "), 1666); +assertToStringEquals("d", res[656].exec("abcd"), 1667); +assertNull(res[656].exec("** Failers", 1668)); +assertNull(res[656].exec("1234", 1669)); +assertNull(res[657].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1670)); +assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1671); +assertToStringEquals(" ", res[657].exec(" "), 1672); +assertNull(res[657].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1673)); +assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1674); +assertNull(res[658].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1675)); +assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[658].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1676); +assertNull(res[659].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1677)); +assertNull(res[659].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 1678)); +assertNull(res[660].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1679)); +assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[660].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1680); +assertNull(res[661].exec("a", 1681)); +assertNull(res[661].exec("A ", 1682)); +assertNull(res[662].exec("a", 1683)); +assertNull(res[662].exec("A ", 1684)); +assertNull(res[663].exec("A", 1685)); +assertNull(res[663].exec("aZ", 1686)); +assertNull(res[663].exec("** Failers", 1687)); +assertNull(res[663].exec("abc ", 1688)); +assertNull(res[664].exec("A", 1689)); +assertNull(res[664].exec("aZ", 1690)); +assertNull(res[664].exec("** Failers", 1691)); +assertNull(res[664].exec("abc ", 1692)); +assertNull(res[665].exec("a", 1693)); +assertNull(res[665].exec("Az", 1694)); +assertNull(res[665].exec("** Failers", 1695)); +assertNull(res[665].exec("ABC ", 1696)); +assertNull(res[666].exec("a", 1697)); +assertNull(res[666].exec("Az", 1698)); +assertNull(res[666].exec("** Failers", 1699)); +assertNull(res[666].exec("ABC ", 1700)); +assertNull(res[666].exec("x{c0}", 1701)); +assertNull(res[666].exec("x{e0} ", 1702)); +assertNull(res[666].exec("x{c0}", 1703)); +assertNull(res[666].exec("x{e0} ", 1704)); +assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 1705)); +assertNull(res[666].exec("** Failers", 1706)); +assertNull(res[666].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 1707)); +assertNull(res[666].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 1708)); +assertNull(res[666].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 1709)); +assertNull(res[666].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 1710)); +assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 1711)); +assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 1712)); +assertNull(res[666].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 1713)); +assertNull(res[666].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 1714)); +assertNull(res[666].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 1715)); +assertNull(res[666].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 1716)); +assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 1717)); +assertNull(res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}", 1718)); +assertNull(res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 1719)); +assertNull(res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 1720)); +assertNull(res[666].exec("x{391}", 1721)); +assertNull(res[666].exec("x{ff3a}", 1722)); +assertNull(res[666].exec("x{3b1}", 1723)); +assertNull(res[666].exec("x{ff5a} ", 1724)); +assertNull(res[666].exec("x{c0}", 1725)); +assertNull(res[666].exec("x{e0} ", 1726)); +assertNull(res[666].exec("x{104}", 1727)); +assertNull(res[666].exec("x{105}", 1728)); +assertNull(res[666].exec("x{109} ", 1729)); +assertNull(res[666].exec("** Failers", 1730)); +assertNull(res[666].exec("x{100}", 1731)); +assertNull(res[666].exec("x{10a} ", 1732)); +assertNull(res[666].exec("Z", 1733)); +assertNull(res[666].exec("z", 1734)); +assertNull(res[666].exec("x{39c}", 1735)); +assertNull(res[666].exec("x{178}", 1736)); +assertNull(res[666].exec("|", 1737)); +assertNull(res[666].exec("x{80}", 1738)); +assertNull(res[666].exec("x{ff}", 1739)); +assertNull(res[666].exec("x{100}", 1740)); +assertNull(res[666].exec("x{101} ", 1741)); +assertNull(res[666].exec("** Failers", 1742)); +assertNull(res[666].exec("x{102}", 1743)); +assertNull(res[666].exec("Y", 1744)); +assertNull(res[666].exec("y ", 1745)); +assertNull(res[667].exec("A", 1746)); +assertNull(res[667].exec("Ax{300}BC ", 1747)); +assertNull(res[667].exec("Ax{300}x{301}x{302}BC ", 1748)); +assertNull(res[667].exec("*** Failers", 1749)); +assertNull(res[667].exec("x{300} ", 1750)); +assertToStringEquals("X", res[668].exec("X123"), 1751); +assertNull(res[668].exec("*** Failers", 1752)); +assertNull(res[668].exec("AXYZ", 1753)); +assertNull(res[669].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 1754)); +assertNull(res[669].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 1755)); +assertNull(res[670].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 1756)); +assertNull(res[670].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 1757)); +assertToStringEquals("A,,A", res[671].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1758); +assertToStringEquals("A,,A", res[671].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1759); +assertToStringEquals("A,,A", res[672].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1760); +assertToStringEquals("A,,A", res[672].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1761); +assertNull(res[673].exec("*** Failers", 1762)); +assertNull(res[673].exec("Ax{300}x{301}x{302}", 1763)); +assertNull(res[674].exec("Ax{300}x{301}Bx{300}X", 1764)); +assertNull(res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 1765)); +assertNull(res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 1766)); +assertNull(res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 1767)); +assertNull(res[675].exec("Ax{300}x{301}Bx{300}X", 1768)); +assertNull(res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 1769)); +assertNull(res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 1770)); +assertNull(res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 1771)); +assertNull(res[675].exec("x{2e81}x{3007}x{2f804}x{31a0}", 1772)); +assertNull(res[675].exec("** Failers", 1773)); +assertNull(res[675].exec("x{2e7f} ", 1774)); +assertNull(res[675].exec("x{3105}", 1775)); +assertNull(res[675].exec("** Failers", 1776)); +assertNull(res[675].exec("x{30ff} ", 1777)); +assertNull(res[676].exec("x{06e9}", 1778)); +assertNull(res[676].exec("x{060b}", 1779)); +assertNull(res[676].exec("** Failers", 1780)); +assertNull(res[676].exec("Xx{06e9} ", 1781)); +assertNull(res[677].exec("x{2f800}", 1782)); +assertNull(res[677].exec("** Failers", 1783)); +assertNull(res[677].exec("x{a014}", 1784)); +assertNull(res[677].exec("x{a4c6} ", 1785)); +assertNull(res[678].exec("AXYZ", 1786)); +assertNull(res[678].exec("x{1234}XYZ ", 1787)); +assertNull(res[678].exec("** Failers", 1788)); +assertNull(res[678].exec("X ", 1789)); +assertNull(res[679].exec("** Failers", 1790)); +assertNull(res[679].exec("AX", 1791)); +assertNull(res[680].exec("XYZ", 1792)); +assertNull(res[680].exec("AXYZ", 1793)); +assertNull(res[680].exec("x{1234}XYZ ", 1794)); +assertNull(res[680].exec("** Failers", 1795)); +assertNull(res[680].exec("ABXYZ ", 1796)); +assertNull(res[681].exec("XYZ", 1797)); +assertNull(res[681].exec("** Failers", 1798)); +assertNull(res[681].exec("AXYZ", 1799)); +assertNull(res[681].exec("x{1234}XYZ ", 1800)); +assertNull(res[681].exec("ABXYZ ", 1801)); +assertNull(res[681].exec("AXYZ", 1802)); +assertNull(res[681].exec("x{1234}XYZ", 1803)); +assertNull(res[681].exec("Ax{1234}XYZ", 1804)); +assertNull(res[681].exec("** Failers", 1805)); +assertNull(res[681].exec("XYZ", 1806)); +assertNull(res[681].exec("** Failers", 1807)); +assertNull(res[681].exec("AXYZ", 1808)); +assertNull(res[681].exec("x{1234}XYZ", 1809)); +assertNull(res[681].exec("Ax{1234}XYZ", 1810)); +assertNull(res[681].exec("XYZ", 1811)); +assertNull(res[682].exec("XYZ", 1812)); +assertNull(res[682].exec("AXYZ", 1813)); +assertNull(res[682].exec("x{1234}XYZ", 1814)); +assertNull(res[682].exec("Ax{1234}XYZ", 1815)); +assertNull(res[682].exec("** Failers", 1816)); +assertNull(res[683].exec("XYZ", 1817)); +assertNull(res[683].exec("** Failers", 1818)); +assertNull(res[683].exec("AXYZ", 1819)); +assertNull(res[683].exec("x{1234}XYZ", 1820)); +assertNull(res[683].exec("Ax{1234}XYZ", 1821)); +assertToStringEquals("AX", res[684].exec("AXYZ"), 1822); +assertNull(res[684].exec("x{1234}XYZ ", 1823)); +assertNull(res[684].exec("** Failers", 1824)); +assertNull(res[684].exec("X ", 1825)); +assertNull(res[685].exec("** Failers", 1826)); +assertToStringEquals("AX", res[685].exec("AX"), 1827); +assertToStringEquals("X", res[686].exec("XYZ"), 1828); +assertToStringEquals("AX", res[686].exec("AXYZ"), 1829); +assertNull(res[686].exec("x{1234}XYZ ", 1830)); +assertNull(res[686].exec("** Failers", 1831)); +assertNull(res[686].exec("ABXYZ ", 1832)); +assertToStringEquals("X", res[687].exec("XYZ"), 1833); +assertNull(res[687].exec("** Failers", 1834)); +assertToStringEquals("AX", res[687].exec("AXYZ"), 1835); +assertNull(res[687].exec("x{1234}XYZ ", 1836)); +assertNull(res[687].exec("ABXYZ ", 1837)); +assertToStringEquals("AX", res[688].exec("AXYZ"), 1838); +assertNull(res[688].exec("x{1234}XYZ", 1839)); +assertNull(res[688].exec("Ax{1234}XYZ", 1840)); +assertNull(res[688].exec("** Failers", 1841)); +assertNull(res[688].exec("XYZ", 1842)); +assertNull(res[689].exec("** Failers", 1843)); +assertToStringEquals("AX", res[689].exec("AXYZ"), 1844); +assertNull(res[689].exec("x{1234}XYZ", 1845)); +assertNull(res[689].exec("Ax{1234}XYZ", 1846)); +assertNull(res[689].exec("XYZ", 1847)); +assertToStringEquals("X", res[690].exec("XYZ"), 1848); +assertToStringEquals("AX", res[690].exec("AXYZ"), 1849); +assertNull(res[690].exec("x{1234}XYZ", 1850)); +assertNull(res[690].exec("Ax{1234}XYZ", 1851)); +assertNull(res[690].exec("** Failers", 1852)); +assertToStringEquals("X", res[691].exec("XYZ"), 1853); +assertNull(res[691].exec("** Failers", 1854)); +assertToStringEquals("AX", res[691].exec("AXYZ"), 1855); +assertNull(res[691].exec("x{1234}XYZ", 1856)); +assertNull(res[691].exec("Ax{1234}XYZ", 1857)); +assertNull(res[692].exec("abcdefgh", 1858)); +assertNull(res[692].exec("x{1234}\n\x0dx{3456}xyz ", 1859)); +assertNull(res[693].exec("abcdefgh", 1860)); +assertNull(res[693].exec("x{1234}\n\x0dx{3456}xyz ", 1861)); +assertNull(res[694].exec("** Failers", 1862)); +assertNull(res[694].exec("abcdefgh", 1863)); +assertNull(res[694].exec("x{1234}\n\x0dx{3456}xyz ", 1864)); +assertNull(res[695].exec(" AXY", 1865)); +assertNull(res[695].exec(" aXY", 1866)); +assertNull(res[695].exec(" x{1c5}XY", 1867)); +assertNull(res[695].exec(" ** Failers", 1868)); +assertNull(res[695].exec(" x{1bb}XY", 1869)); +assertNull(res[695].exec(" x{2b0}XY", 1870)); +assertNull(res[695].exec(" !XY ", 1871)); +assertNull(res[696].exec(" AXY", 1872)); +assertNull(res[696].exec(" aXY", 1873)); +assertNull(res[696].exec(" x{1c5}XY", 1874)); +assertNull(res[696].exec(" ** Failers", 1875)); +assertNull(res[696].exec(" x{1bb}XY", 1876)); +assertNull(res[696].exec(" x{2b0}XY", 1877)); +assertNull(res[696].exec(" !XY ", 1878)); +assertNull(res[696].exec(" AXY", 1879)); +assertNull(res[696].exec(" aXY", 1880)); +assertNull(res[696].exec(" AbcdeXyz ", 1881)); +assertNull(res[696].exec(" x{1c5}AbXY", 1882)); +assertNull(res[696].exec(" abcDEXypqreXlmn ", 1883)); +assertNull(res[696].exec(" ** Failers", 1884)); +assertNull(res[696].exec(" x{1bb}XY", 1885)); +assertNull(res[696].exec(" x{2b0}XY", 1886)); +assertNull(res[696].exec(" !XY ", 1887)); +assertNull(res[697].exec(" AXY", 1888)); +assertNull(res[697].exec(" aXY", 1889)); +assertNull(res[697].exec(" AbcdeXyz ", 1890)); +assertNull(res[697].exec(" x{1c5}AbXY", 1891)); +assertNull(res[697].exec(" abcDEXypqreXlmn ", 1892)); +assertNull(res[697].exec(" ** Failers", 1893)); +assertNull(res[697].exec(" x{1bb}XY", 1894)); +assertNull(res[697].exec(" x{2b0}XY", 1895)); +assertNull(res[697].exec(" !XY ", 1896)); +assertNull(res[697].exec(" AXY", 1897)); +assertNull(res[697].exec(" aXY", 1898)); +assertNull(res[697].exec(" AbcdeXyz ", 1899)); +assertNull(res[697].exec(" x{1c5}AbXY", 1900)); +assertNull(res[697].exec(" abcDEXypqreXlmn ", 1901)); +assertNull(res[697].exec(" ** Failers", 1902)); +assertNull(res[697].exec(" x{1bb}XY", 1903)); +assertNull(res[697].exec(" x{2b0}XY", 1904)); +assertNull(res[697].exec(" !XY ", 1905)); +assertNull(res[698].exec(" AXY", 1906)); +assertNull(res[698].exec(" aXY", 1907)); +assertNull(res[698].exec(" AbcdeXyz ", 1908)); +assertNull(res[698].exec(" x{1c5}AbXY", 1909)); +assertNull(res[698].exec(" abcDEXypqreXlmn ", 1910)); +assertNull(res[698].exec(" ** Failers", 1911)); +assertNull(res[698].exec(" x{1bb}XY", 1912)); +assertNull(res[698].exec(" x{2b0}XY", 1913)); +assertNull(res[698].exec(" !XY ", 1914)); +assertNull(res[699].exec(" !XY", 1915)); +assertNull(res[699].exec(" x{1bb}XY", 1916)); +assertNull(res[699].exec(" x{2b0}XY", 1917)); +assertNull(res[699].exec(" ** Failers", 1918)); +assertNull(res[699].exec(" x{1c5}XY", 1919)); +assertNull(res[699].exec(" AXY ", 1920)); +assertNull(res[700].exec(" !XY", 1921)); +assertNull(res[700].exec(" x{1bb}XY", 1922)); +assertNull(res[700].exec(" x{2b0}XY", 1923)); +assertNull(res[700].exec(" ** Failers", 1924)); +assertNull(res[700].exec(" x{1c5}XY", 1925)); +assertNull(res[700].exec(" AXY ", 1926)); +assertNull(res[701].exec("\xa0!", 1927)); +assertNull(res[701].exec("AabcabcYZ ", 1928)); +assertToStringEquals("L=abcX,L=abc,abc", res[702].exec("L=abcX"), 1929); +assertNull(res[702].exec("x{c0}", 1930)); +assertNull(res[702].exec("x{e0} ", 1931)); +assertNull(res[702].exec("x{c0}", 1932)); +assertNull(res[702].exec("x{e0} ", 1933)); +assertNull(res[703].exec("x{1b00}x{12000}x{7c0}x{a840}x{10900}", 1934)); +assertNull(res[706].exec("123abcdefg", 1935)); +assertNull(res[706].exec("123abc\xc4\xc5zz", 1936)); +assertNull(res[710].exec("A\x80", 1937)); +assertNull(res[725].exec("x{60e} ", 1938)); +assertNull(res[725].exec("x{656} ", 1939)); +assertNull(res[725].exec("x{657} ", 1940)); +assertNull(res[725].exec("x{658} ", 1941)); +assertNull(res[725].exec("x{659} ", 1942)); +assertNull(res[725].exec("x{65a} ", 1943)); +assertNull(res[725].exec("x{65b} ", 1944)); +assertNull(res[725].exec("x{65c} ", 1945)); +assertNull(res[725].exec("x{65d} ", 1946)); +assertNull(res[725].exec("x{65e} ", 1947)); +assertNull(res[725].exec("x{66a} ", 1948)); +assertNull(res[725].exec("x{6e9} ", 1949)); +assertNull(res[725].exec("x{6ef}", 1950)); +assertNull(res[725].exec("x{6fa} ", 1951)); +assertNull(res[725].exec("** Failers", 1952)); +assertNull(res[725].exec("x{600}", 1953)); +assertNull(res[725].exec("x{650}", 1954)); +assertNull(res[725].exec("x{651} ", 1955)); +assertNull(res[725].exec("x{652} ", 1956)); +assertNull(res[725].exec("x{653} ", 1957)); +assertNull(res[725].exec("x{654} ", 1958)); +assertNull(res[725].exec("x{655} ", 1959)); +assertNull(res[725].exec("x{65f} ", 1960)); +assertNull(res[726].exec("x{1d2b} ", 1961)); +assertNull(res[727].exec("x{589}", 1962)); +assertNull(res[727].exec("x{60c}", 1963)); +assertNull(res[727].exec("x{61f} ", 1964)); +assertNull(res[727].exec("x{964}", 1965)); +assertNull(res[727].exec("x{965} ", 1966)); +assertNull(res[727].exec("x{970} ", 1967)); +assertNull(res[728].exec("x{64b}", 1968)); +assertNull(res[728].exec("x{654}", 1969)); +assertNull(res[728].exec("x{655}", 1970)); +assertNull(res[728].exec("x{200c} ", 1971)); +assertNull(res[728].exec("** Failers", 1972)); +assertNull(res[728].exec("x{64a}", 1973)); +assertNull(res[728].exec("x{656} ", 1974)); +assertNull(res[729].exec("x{10450}", 1975)); +assertNull(res[729].exec("x{1047f}", 1976)); +assertNull(res[730].exec("x{10400}", 1977)); +assertNull(res[730].exec("x{1044f}", 1978)); +assertNull(res[731].exec("x{10480}", 1979)); +assertNull(res[731].exec("x{1049d}", 1980)); +assertNull(res[731].exec("x{104a0}", 1981)); +assertNull(res[731].exec("x{104a9}", 1982)); +assertNull(res[731].exec("** Failers", 1983)); +assertNull(res[731].exec("x{1049e}", 1984)); +assertNull(res[731].exec("x{1049f}", 1985)); +assertNull(res[731].exec("x{104aa} ", 1986)); +assertNull(res[731].exec("\xe2\x80\xa8\xe2\x80\xa8", 1987)); +assertNull(res[731].exec("x{2028}x{2028}x{2028}", 1988)); +assertNull(res[732].exec("x{c0}x{e0}x{116}x{117}", 1989)); +assertNull(res[732].exec("x{c0}x{e0}x{116}x{117}", 1990)); +assertNull(res[733].exec("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}====", 1991)); +assertNull(res[733].exec("x{a77d}x{1d79}", 1992)); +assertNull(res[733].exec("x{1d79}x{a77d} ", 1993)); +assertNull(res[733].exec("x{a77d}x{1d79}", 1994)); +assertNull(res[733].exec("** Failers ", 1995)); +assertNull(res[733].exec("x{1d79}x{a77d} ", 1996)); +assertToStringEquals("AA,A", res[734].exec("AA"), 1997); +assertToStringEquals("Aa,A", res[734].exec("Aa"), 1998); +assertToStringEquals("aa,a", res[734].exec("aa"), 1999); +assertToStringEquals("aA,a", res[734].exec("aA"), 2000); +assertNull(res[734].exec("x{de}x{de}", 2001)); +assertNull(res[734].exec("x{de}x{fe}", 2002)); +assertNull(res[734].exec("x{fe}x{fe}", 2003)); +assertNull(res[734].exec("x{fe}x{de}", 2004)); +assertNull(res[734].exec("x{10a}x{10a}", 2005)); +assertNull(res[734].exec("x{10a}x{10b}", 2006)); +assertNull(res[734].exec("x{10b}x{10b}", 2007)); +assertNull(res[734].exec("x{10b}x{10a}", 2008)); +assertToStringEquals("abc", res[736].exec("abc"), 2009); +assertToStringEquals("abc", res[737].exec("abc"), 2010); +assertToStringEquals("abbbbc", res[737].exec("abbbbc"), 2011); +assertToStringEquals("ac", res[737].exec("ac"), 2012); +assertToStringEquals("abc", res[738].exec("abc"), 2013); +assertToStringEquals("abbbbbbc", res[738].exec("abbbbbbc"), 2014); +assertNull(res[738].exec("*** Failers ", 2015)); +assertNull(res[738].exec("ac", 2016)); +assertNull(res[738].exec("ab", 2017)); +assertToStringEquals("a", res[739].exec("a"), 2018); +assertToStringEquals("aaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaa"), 2019); +assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "), 2020); +assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaF "), 2021); +assertToStringEquals("a,a", res[740].exec("a"), 2022); +assertToStringEquals("a,a", res[740].exec("abcd"), 2023); +assertToStringEquals("a,a", res[740].exec("african"), 2024); +assertToStringEquals("abc", res[741].exec("abcdef"), 2025); +assertNull(res[741].exec("*** Failers", 2026)); +assertNull(res[741].exec("xyzabc", 2027)); +assertNull(res[741].exec("xyz\nabc ", 2028)); +assertToStringEquals("abc", res[742].exec("abcdef"), 2029); +assertToStringEquals("abc", res[742].exec("xyz\nabc "), 2030); +assertNull(res[742].exec("*** Failers", 2031)); +assertNull(res[742].exec("xyzabc", 2032)); +assertNull(res[743].exec("abcdef", 2033)); +assertNull(res[743].exec("*** Failers", 2034)); +assertNull(res[743].exec("xyzabc", 2035)); +assertNull(res[743].exec("xyz\nabc ", 2036)); +assertNull(res[744].exec("abcdef", 2037)); +assertNull(res[744].exec("*** Failers", 2038)); +assertNull(res[744].exec("xyzabc", 2039)); +assertNull(res[744].exec("xyz\nabc ", 2040)); +assertNull(res[745].exec("abcdef", 2041)); +assertNull(res[745].exec("xyzabc>3", 2042)); +assertNull(res[745].exec("*** Failers", 2043)); +assertNull(res[745].exec("xyzabc ", 2044)); +assertNull(res[745].exec("xyzabc>2 ", 2045)); +assertToStringEquals("x9yzz", res[746].exec("x9yzz"), 2046); +assertToStringEquals("x0y+z", res[746].exec("x0y+z"), 2047); +assertNull(res[746].exec("*** Failers", 2048)); +assertNull(res[746].exec("xyz", 2049)); +assertNull(res[746].exec("xxy0z ", 2050)); +assertToStringEquals("x yzz", res[747].exec("x yzz"), 2051); +assertToStringEquals("x y+z", res[747].exec("x y+z"), 2052); +assertNull(res[747].exec("*** Failers", 2053)); +assertNull(res[747].exec("xyz", 2054)); +assertNull(res[747].exec("xxyyz", 2055)); +assertToStringEquals("xxy+z", res[748].exec("xxy+z"), 2056); +assertNull(res[748].exec("*** Failers", 2057)); +assertNull(res[748].exec("xxy0z", 2058)); +assertNull(res[748].exec("x+y+z ", 2059)); +assertToStringEquals("x+y", res[749].exec("x+y"), 2060); +assertToStringEquals("x-y", res[749].exec("x-y"), 2061); +assertNull(res[749].exec("*** Failers", 2062)); +assertNull(res[749].exec("x\ny", 2063)); +assertToStringEquals("x+y", res[750].exec("x+y"), 2064); +assertToStringEquals("x-y", res[750].exec("x-y"), 2065); +assertNull(res[750].exec("x\ny", 2066)); +assertNull(res[750].exec("a+bc+dp+q", 2067)); +assertNull(res[750].exec("a+bc\ndp+q", 2068)); +assertNull(res[750].exec("x\nyp+q ", 2069)); +assertNull(res[750].exec("*** Failers ", 2070)); +assertNull(res[750].exec("a\nbc\ndp+q", 2071)); +assertNull(res[750].exec("a+bc\ndp\nq", 2072)); +assertNull(res[750].exec("x\nyp\nq ", 2073)); +assertNull(res[751].exec("ba0", 2074)); +assertNull(res[751].exec("*** Failers", 2075)); +assertNull(res[751].exec("ba0\n", 2076)); +assertNull(res[751].exec("ba0\ncd ", 2077)); +assertNull(res[752].exec("ba0", 2078)); +assertNull(res[752].exec("*** Failers", 2079)); +assertNull(res[752].exec("ba0\n", 2080)); +assertNull(res[752].exec("ba0\ncd ", 2081)); +assertNull(res[753].exec("ba0", 2082)); +assertNull(res[753].exec("ba0\n", 2083)); +assertNull(res[753].exec("*** Failers", 2084)); +assertNull(res[753].exec("ba0\ncd ", 2085)); +assertNull(res[754].exec("ba0", 2086)); +assertNull(res[754].exec("ba0\n", 2087)); +assertNull(res[754].exec("*** Failers", 2088)); +assertNull(res[754].exec("ba0\ncd ", 2089)); +assertToStringEquals("a0", res[755].exec("ba0"), 2090); +assertNull(res[755].exec("ba0\n", 2091)); +assertNull(res[755].exec("*** Failers", 2092)); +assertNull(res[755].exec("ba0\ncd ", 2093)); +assertToStringEquals("a0", res[756].exec("ba0"), 2094); +assertToStringEquals("a0", res[756].exec("ba0\n"), 2095); +assertToStringEquals("a0", res[756].exec("ba0\ncd "), 2096); +assertNull(res[756].exec("*** Failers", 2097)); +assertToStringEquals("abc", res[757].exec("abc"), 2098); +assertToStringEquals("aBc", res[757].exec("aBc"), 2099); +assertToStringEquals("ABC", res[757].exec("ABC"), 2100); +assertToStringEquals("b", res[758].exec("abcd"), 2101); +assertToStringEquals("abz", res[759].exec("abz"), 2102); +assertToStringEquals("abb", res[759].exec("abbz"), 2103); +assertToStringEquals("az", res[759].exec("azz "), 2104); +assertToStringEquals("yz", res[760].exec("ayzq"), 2105); +assertToStringEquals("xyz", res[760].exec("axyzq"), 2106); +assertToStringEquals("xxyz", res[760].exec("axxyz"), 2107); +assertToStringEquals("xxxyz", res[760].exec("axxxyzq"), 2108); +assertToStringEquals("xxxyz", res[760].exec("axxxxyzq"), 2109); +assertNull(res[760].exec("*** Failers", 2110)); +assertNull(res[760].exec("ax", 2111)); +assertNull(res[760].exec("axx ", 2112)); +assertNull(res[760].exec(" ", 2113)); +assertToStringEquals("xxxyz", res[761].exec("axxxyzq"), 2114); +assertToStringEquals("xxxyz", res[761].exec("axxxxyzq"), 2115); +assertNull(res[761].exec("*** Failers", 2116)); +assertNull(res[761].exec("ax", 2117)); +assertNull(res[761].exec("axx ", 2118)); +assertNull(res[761].exec("ayzq", 2119)); +assertNull(res[761].exec("axyzq", 2120)); +assertNull(res[761].exec("axxyz", 2121)); +assertNull(res[761].exec(" ", 2122)); +assertToStringEquals("xxyz", res[762].exec("axxyz"), 2123); +assertToStringEquals("xxxyz", res[762].exec("axxxyzq"), 2124); +assertToStringEquals("xxxyz", res[762].exec("axxxxyzq"), 2125); +assertNull(res[762].exec("*** Failers", 2126)); +assertNull(res[762].exec("ax", 2127)); +assertNull(res[762].exec("axx ", 2128)); +assertNull(res[762].exec("ayzq", 2129)); +assertNull(res[762].exec("axyzq", 2130)); +assertNull(res[762].exec(" ", 2131)); +assertToStringEquals("b", res[763].exec("bac"), 2132); +assertToStringEquals("bcdef", res[763].exec("bcdefax"), 2133); +assertToStringEquals("*** F", res[763].exec("*** Failers"), 2134); +assertToStringEquals(" ", res[763].exec("aaaaa "), 2135); +assertToStringEquals("b", res[764].exec("bac"), 2136); +assertToStringEquals("bcdef", res[764].exec("bcdefax"), 2137); +assertToStringEquals("*** F", res[764].exec("*** Failers"), 2138); +assertToStringEquals("", res[764].exec("aaaaa "), 2139); +assertToStringEquals("xyz", res[765].exec("xyz"), 2140); +assertToStringEquals("wxyz", res[765].exec("awxyza"), 2141); +assertToStringEquals("bcdef", res[765].exec("abcdefa"), 2142); +assertToStringEquals("bcdef", res[765].exec("abcdefghijk"), 2143); +assertToStringEquals("*** F", res[765].exec("*** Failers"), 2144); +assertNull(res[765].exec("axya", 2145)); +assertNull(res[765].exec("axa", 2146)); +assertToStringEquals(" ", res[765].exec("aaaaa "), 2147); +assertToStringEquals("1234", res[766].exec("1234b567"), 2148); +assertToStringEquals("", res[766].exec("xyz"), 2149); +assertToStringEquals("a", res[767].exec("a1234b567"), 2150); +assertToStringEquals("xyz", res[767].exec("xyz"), 2151); +assertToStringEquals(" ", res[767].exec(" "), 2152); +assertToStringEquals("1234", res[768].exec("ab1234c56"), 2153); +assertNull(res[768].exec("*** Failers", 2154)); +assertNull(res[768].exec("xyz", 2155)); +assertToStringEquals("ab", res[769].exec("ab123c56"), 2156); +assertToStringEquals("*** Failers", res[769].exec("*** Failers"), 2157); +assertNull(res[769].exec("789", 2158)); +assertToStringEquals("5A", res[770].exec("045ABC"), 2159); +assertToStringEquals("A", res[770].exec("ABC"), 2160); +assertNull(res[770].exec("*** Failers", 2161)); +assertNull(res[770].exec("XYZ", 2162)); +assertToStringEquals("A", res[771].exec("ABC"), 2163); +assertToStringEquals("BA", res[771].exec("BAC"), 2164); +assertToStringEquals("A", res[771].exec("9ABC "), 2165); +assertNull(res[771].exec("*** Failers", 2166)); +assertToStringEquals("aaaa", res[772].exec("aaaa"), 2167); +assertToStringEquals("xyz", res[773].exec("xyz"), 2168); +assertToStringEquals("ggggggggxyz", res[773].exec("ggggggggxyz"), 2169); +assertToStringEquals("abcdxyz", res[774].exec("abcdxyz"), 2170); +assertToStringEquals("axyz", res[774].exec("axyz"), 2171); +assertNull(res[774].exec("*** Failers", 2172)); +assertNull(res[774].exec("xyz", 2173)); +assertToStringEquals("xyz", res[775].exec("xyz"), 2174); +assertToStringEquals("cxyz", res[775].exec("cxyz "), 2175); +assertToStringEquals("12X", res[776].exec("12X"), 2176); +assertToStringEquals("123X", res[776].exec("123X"), 2177); +assertNull(res[776].exec("*** Failers", 2178)); +assertNull(res[776].exec("X", 2179)); +assertNull(res[776].exec("1X", 2180)); +assertNull(res[776].exec("1234X ", 2181)); +assertToStringEquals("a4", res[777].exec("a45"), 2182); +assertToStringEquals("b9", res[777].exec("b93"), 2183); +assertToStringEquals("c9", res[777].exec("c99z"), 2184); +assertToStringEquals("d0", res[777].exec("d04"), 2185); +assertNull(res[777].exec("*** Failers", 2186)); +assertNull(res[777].exec("e45", 2187)); +assertNull(res[777].exec("abcd ", 2188)); +assertNull(res[777].exec("abcd1234", 2189)); +assertNull(res[777].exec("1234 ", 2190)); +assertToStringEquals("a4", res[778].exec("a45"), 2191); +assertToStringEquals("b9", res[778].exec("b93"), 2192); +assertToStringEquals("c9", res[778].exec("c99z"), 2193); +assertToStringEquals("d0", res[778].exec("d04"), 2194); +assertToStringEquals("abcd1", res[778].exec("abcd1234"), 2195); +assertToStringEquals("1", res[778].exec("1234 "), 2196); +assertNull(res[778].exec("*** Failers", 2197)); +assertNull(res[778].exec("e45", 2198)); +assertNull(res[778].exec("abcd ", 2199)); +assertToStringEquals("a4", res[779].exec("a45"), 2200); +assertToStringEquals("b9", res[779].exec("b93"), 2201); +assertToStringEquals("c9", res[779].exec("c99z"), 2202); +assertToStringEquals("d0", res[779].exec("d04"), 2203); +assertToStringEquals("abcd1", res[779].exec("abcd1234"), 2204); +assertNull(res[779].exec("*** Failers", 2205)); +assertNull(res[779].exec("1234 ", 2206)); +assertNull(res[779].exec("e45", 2207)); +assertNull(res[779].exec("abcd ", 2208)); +assertToStringEquals("aX", res[780].exec("aX"), 2209); +assertToStringEquals("aaX", res[780].exec("aaX "), 2210); +assertToStringEquals("a4", res[781].exec("a45"), 2211); +assertToStringEquals("b9", res[781].exec("b93"), 2212); +assertToStringEquals("c9", res[781].exec("c99z"), 2213); +assertToStringEquals("d0", res[781].exec("d04"), 2214); +assertToStringEquals("1", res[781].exec("1234 "), 2215); +assertNull(res[781].exec("*** Failers", 2216)); +assertNull(res[781].exec("abcd1234", 2217)); +assertNull(res[781].exec("e45", 2218)); +assertToStringEquals("ab4", res[782].exec("ab45"), 2219); +assertToStringEquals("bcd9", res[782].exec("bcd93"), 2220); +assertNull(res[782].exec("*** Failers", 2221)); +assertNull(res[782].exec("1234 ", 2222)); +assertNull(res[782].exec("a36 ", 2223)); +assertNull(res[782].exec("abcd1234", 2224)); +assertNull(res[782].exec("ee45", 2225)); +assertToStringEquals("abc4,abc", res[783].exec("abc45"), 2226); +assertToStringEquals("abcabcabc4,abc", res[783].exec("abcabcabc45"), 2227); +assertToStringEquals("4,", res[783].exec("42xyz "), 2228); +assertNull(res[783].exec("*** Failers", 2229)); +assertToStringEquals("abc4,abc", res[784].exec("abc45"), 2230); +assertToStringEquals("abcabcabc4,abc", res[784].exec("abcabcabc45"), 2231); +assertNull(res[784].exec("*** Failers", 2232)); +assertNull(res[784].exec("42xyz ", 2233)); +assertToStringEquals("abc4,abc", res[785].exec("abc45"), 2234); +assertToStringEquals("4,", res[785].exec("42xyz "), 2235); +assertNull(res[785].exec("*** Failers", 2236)); +assertNull(res[785].exec("abcabcabc45", 2237)); +assertToStringEquals("abcabc4,abc", res[786].exec("abcabc45"), 2238); +assertToStringEquals("abcabcabc4,abc", res[786].exec("abcabcabc45"), 2239); +assertNull(res[786].exec("*** Failers", 2240)); +assertNull(res[786].exec("abcabcabcabc45", 2241)); +assertNull(res[786].exec("abc45", 2242)); +assertNull(res[786].exec("42xyz ", 2243)); +assertNull(res[786].exec("1abc2abc3456", 2244)); +assertNull(res[786].exec("1abc2xyz3456 ", 2245)); +assertToStringEquals("ab=ab,ab,ab", res[787].exec("ab=ab"), 2246); +assertToStringEquals("ab=ab,ab,ab", res[787].exec("ab=ab"), 2247); +assertNull(res[787].exec("abc", 2248)); +assertNull(res[787].exec("a(b)c", 2249)); +assertNull(res[787].exec("a(b(c))d ", 2250)); +assertNull(res[787].exec("*** Failers)", 2251)); +assertNull(res[787].exec("a(b(c)d ", 2252)); +assertNull(res[787].exec(">abc>123<xyz<", 2253)); +assertNull(res[787].exec(">abc>1(2)3<xyz<", 2254)); +assertNull(res[787].exec(">abc>(1(2)3)<xyz<", 2255)); +assertNull(res[787].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876", 2256)); +assertNull(res[787].exec("*** Failers ", 2257)); +assertNull(res[787].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 2258)); +assertNull(res[787].exec("<>", 2259)); +assertNull(res[787].exec("<abcd>", 2260)); +assertNull(res[787].exec("<abc <123> hij>", 2261)); +assertNull(res[787].exec("<abc <def> hij>", 2262)); +assertNull(res[787].exec("<abc<>def> ", 2263)); +assertNull(res[787].exec("<abc<> ", 2264)); +assertNull(res[787].exec("*** Failers", 2265)); +assertNull(res[787].exec("<abc", 2266)); +assertNull(res[787].exec("abc: ", 2267)); +assertNull(res[787].exec("12 ", 2268)); +assertNull(res[787].exec("*** Failers ", 2269)); +assertNull(res[787].exec("123 ", 2270)); +assertNull(res[787].exec("xyz ", 2271)); +assertNull(res[787].exec(" ", 2272)); +assertNull(res[787].exec("abc: ", 2273)); +assertNull(res[787].exec("12 ", 2274)); +assertNull(res[787].exec("*** Failers", 2275)); +assertNull(res[787].exec("123", 2276)); +assertNull(res[787].exec("xyz ", 2277)); +assertNull(res[788].exec("abcde: ", 2278)); +assertNull(res[788].exec("*** Failers ", 2279)); +assertNull(res[788].exec("abc.. ", 2280)); +assertNull(res[788].exec("123 ", 2281)); +assertNull(res[788].exec("vwxyz ", 2282)); +assertNull(res[788].exec(" ", 2283)); +assertNull(res[789].exec("12 ", 2284)); +assertNull(res[789].exec("*** Failers", 2285)); +assertNull(res[789].exec("abcde:", 2286)); +assertNull(res[789].exec("abc.. ", 2287)); +assertNull(res[789].exec("123", 2288)); +assertNull(res[789].exec("vwxyz ", 2289)); +assertNull(res[789].exec("abc12345", 2290)); +assertNull(res[789].exec("wxy123z", 2291)); +assertNull(res[789].exec("*** Failers", 2292)); +assertNull(res[789].exec("123abc", 2293)); +assertNull(res[789].exec("123abc", 2294)); +assertNull(res[789].exec("mno123456 ", 2295)); +assertNull(res[789].exec("*** Failers", 2296)); +assertNull(res[789].exec("abc12345", 2297)); +assertNull(res[789].exec("wxy123z", 2298)); +assertNull(res[789].exec("abcxyz", 2299)); +assertNull(res[789].exec("123abcxyz999 ", 2300)); +assertToStringEquals("abc", res[791].exec("abcdef"), 2301); +assertNull(res[791].exec("*** Failers", 2302)); +assertToStringEquals("abc", res[791].exec("abcdefB "), 2303); +assertToStringEquals(",", res[792].exec("bcd"), 2304); +assertToStringEquals("aaa,aaa", res[792].exec("aaabcd"), 2305); +assertToStringEquals(",", res[792].exec("xyz"), 2306); +assertToStringEquals(",", res[792].exec("xyzN "), 2307); +assertToStringEquals(",", res[792].exec("*** Failers"), 2308); +assertToStringEquals(",", res[792].exec("bcdN "), 2309); +assertToStringEquals("xyz", res[793].exec("xyz"), 2310); +assertNull(res[793].exec("xyz\n", 2311)); +assertNull(res[793].exec("*** Failers", 2312)); +assertNull(res[793].exec("xyzZ", 2313)); +assertNull(res[793].exec("xyz\nZ ", 2314)); +assertToStringEquals("xyz", res[794].exec("xyz"), 2315); +assertToStringEquals("xyz", res[794].exec("xyz\n "), 2316); +assertToStringEquals("xyz", res[794].exec("abcxyz\npqr "), 2317); +assertToStringEquals("xyz", res[794].exec("abcxyz\npqrZ "), 2318); +assertToStringEquals("xyz", res[794].exec("xyz\nZ "), 2319); +assertNull(res[794].exec("*** Failers", 2320)); +assertNull(res[794].exec("xyzZ", 2321)); +assertNull(res[795].exec("abcdef", 2322)); +assertNull(res[795].exec("defabcxyz>3 ", 2323)); +assertNull(res[795].exec("*** Failers ", 2324)); +assertNull(res[795].exec("defabcxyz", 2325)); +assertNull(res[796].exec("abP", 2326)); +assertNull(res[796].exec("abcdeP", 2327)); +assertToStringEquals("abcdef", res[796].exec("abcdefP"), 2328); +assertNull(res[796].exec("*** Failers", 2329)); +assertNull(res[796].exec("abxP ", 2330)); +assertNull(res[797].exec("aP", 2331)); +assertNull(res[797].exec("aaP", 2332)); +assertNull(res[797].exec("aa2P ", 2333)); +assertNull(res[797].exec("aaaP", 2334)); +assertNull(res[797].exec("aaa23P ", 2335)); +assertNull(res[797].exec("aaaa12345P", 2336)); +assertToStringEquals("aa0z", res[797].exec("aa0zP"), 2337); +assertToStringEquals("aaaa4444444444444z", res[797].exec("aaaa4444444444444zP "), 2338); +assertNull(res[797].exec("*** Failers", 2339)); +assertNull(res[797].exec("azP ", 2340)); +assertNull(res[797].exec("aaaaaP ", 2341)); +assertNull(res[797].exec("a56P ", 2342)); +assertNull(res[799].exec("adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkjPZ", 2343)); +assertNull(res[799].exec("lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefaPBZ", 2344)); +assertNull(res[799].exec("cdabbbbbbbbPRBZ", 2345)); +assertNull(res[799].exec("efabbbbbbbbbbbbbbbbPRBZ", 2346)); +assertNull(res[799].exec("bbbbbbbbbbbbcdXyasdfadfPRBZ ", 2347)); +assertNull(res[799].exec("abc", 2348)); +assertNull(res[799].exec("** Failers", 2349)); +assertNull(res[799].exec("def ", 2350)); +assertToStringEquals("the quick brown fox", res[800].exec("the quick brown fox"), 2351); +assertNull(res[800].exec("The quick brown FOX", 2352)); +assertToStringEquals("the quick brown fox", res[800].exec("What do you know about the quick brown fox?"), 2353); +assertNull(res[800].exec("What do you know about THE QUICK BROWN FOX?", 2354)); +assertToStringEquals("the quick brown fox", res[801].exec("the quick brown fox"), 2355); +assertToStringEquals("The quick brown FOX", res[801].exec("The quick brown FOX"), 2356); +assertToStringEquals("the quick brown fox", res[801].exec("What do you know about the quick brown fox?"), 2357); +assertToStringEquals("THE QUICK BROWN FOX", res[801].exec("What do you know about THE QUICK BROWN FOX?"), 2358); +assertToStringEquals("abcd\x09\n\x0d\x0cae9;$\\?caxyz", res[802].exec("abcd\x09\n\x0d\x0cae9;$\\?caxyz"), 2359); +assertToStringEquals("abxyzpqrrrabbxyyyypqAzz", res[803].exec("abxyzpqrrrabbxyyyypqAzz"), 2360); +assertToStringEquals("abxyzpqrrrabbxyyyypqAzz", res[803].exec("abxyzpqrrrabbxyyyypqAzz"), 2361); +assertToStringEquals("aabxyzpqrrrabbxyyyypqAzz", res[803].exec("aabxyzpqrrrabbxyyyypqAzz"), 2362); +assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].exec("aaabxyzpqrrrabbxyyyypqAzz"), 2363); +assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].exec("aaaabxyzpqrrrabbxyyyypqAzz"), 2364); +assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].exec("abcxyzpqrrrabbxyyyypqAzz"), 2365); +assertToStringEquals("aabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aabcxyzpqrrrabbxyyyypqAzz"), 2366); +assertToStringEquals("aaabcxyzpqrrrabbxyyyypAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypAzz"), 2367); +assertToStringEquals("aaabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqAzz"), 2368); +assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqAzz"), 2369); +assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqAzz"), 2370); +assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqAzz"), 2371); +assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqAzz"), 2372); +assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqqAzz"), 2373); +assertToStringEquals("aaaabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aaaabcxyzpqrrrabbxyyyypqAzz"), 2374); +assertToStringEquals("abxyzzpqrrrabbxyyyypqAzz", res[803].exec("abxyzzpqrrrabbxyyyypqAzz"), 2375); +assertToStringEquals("aabxyzzzpqrrrabbxyyyypqAzz", res[803].exec("aabxyzzzpqrrrabbxyyyypqAzz"), 2376); +assertToStringEquals("aaabxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaabxyzzzzpqrrrabbxyyyypqAzz"), 2377); +assertToStringEquals("aaaabxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaaabxyzzzzpqrrrabbxyyyypqAzz"), 2378); +assertToStringEquals("abcxyzzpqrrrabbxyyyypqAzz", res[803].exec("abcxyzzpqrrrabbxyyyypqAzz"), 2379); +assertToStringEquals("aabcxyzzzpqrrrabbxyyyypqAzz", res[803].exec("aabcxyzzzpqrrrabbxyyyypqAzz"), 2380); +assertToStringEquals("aaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaabcxyzzzzpqrrrabbxyyyypqAzz"), 2381); +assertToStringEquals("aaaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbxyyyypqAzz"), 2382); +assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyypqAzz"), 2383); +assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz"), 2384); +assertToStringEquals("aaabcxyzpqrrrabbxyyyypABzz", res[803].exec("aaabcxyzpqrrrabbxyyyypABzz"), 2385); +assertToStringEquals("aaabcxyzpqrrrabbxyyyypABBzz", res[803].exec("aaabcxyzpqrrrabbxyyyypABBzz"), 2386); +assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].exec(">>>aaabxyzpqrrrabbxyyyypqAzz"), 2387); +assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].exec(">aaaabxyzpqrrrabbxyyyypqAzz"), 2388); +assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].exec(">>>>abcxyzpqrrrabbxyyyypqAzz"), 2389); +assertNull(res[803].exec("*** Failers", 2390)); +assertNull(res[803].exec("abxyzpqrrabbxyyyypqAzz", 2391)); +assertNull(res[803].exec("abxyzpqrrrrabbxyyyypqAzz", 2392)); +assertNull(res[803].exec("abxyzpqrrrabxyyyypqAzz", 2393)); +assertNull(res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz", 2394)); +assertNull(res[803].exec("aaaabcxyzzzzpqrrrabbbxyyypqAzz", 2395)); +assertNull(res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqqqAzz", 2396)); +assertToStringEquals("abczz,abc", res[804].exec("abczz"), 2397); +assertToStringEquals("abcabczz,abc", res[804].exec("abcabczz"), 2398); +assertNull(res[804].exec("*** Failers", 2399)); +assertNull(res[804].exec("zz", 2400)); +assertNull(res[804].exec("abcabcabczz", 2401)); +assertNull(res[804].exec(">>abczz", 2402)); +assertToStringEquals("bc,b", res[805].exec("bc"), 2403); +assertToStringEquals("bbc,b", res[805].exec("bbc"), 2404); +assertToStringEquals("bbbc,bb", res[805].exec("bbbc"), 2405); +assertToStringEquals("bac,a", res[805].exec("bac"), 2406); +assertToStringEquals("bbac,a", res[805].exec("bbac"), 2407); +assertToStringEquals("aac,a", res[805].exec("aac"), 2408); +assertToStringEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[805].exec("abbbbbbbbbbbc"), 2409); +assertToStringEquals("bbbbbbbbbbbac,a", res[805].exec("bbbbbbbbbbbac"), 2410); +assertNull(res[805].exec("*** Failers", 2411)); +assertNull(res[805].exec("aaac", 2412)); +assertNull(res[805].exec("abbbbbbbbbbbac", 2413)); +assertToStringEquals("bc,b", res[806].exec("bc"), 2414); +assertToStringEquals("bbc,bb", res[806].exec("bbc"), 2415); +assertToStringEquals("bbbc,bbb", res[806].exec("bbbc"), 2416); +assertToStringEquals("bac,a", res[806].exec("bac"), 2417); +assertToStringEquals("bbac,a", res[806].exec("bbac"), 2418); +assertToStringEquals("aac,a", res[806].exec("aac"), 2419); +assertToStringEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[806].exec("abbbbbbbbbbbc"), 2420); +assertToStringEquals("bbbbbbbbbbbac,a", res[806].exec("bbbbbbbbbbbac"), 2421); +assertNull(res[806].exec("*** Failers", 2422)); +assertNull(res[806].exec("aaac", 2423)); +assertNull(res[806].exec("abbbbbbbbbbbac", 2424)); +assertToStringEquals("bbc,bb", res[806].exec("bbc"), 2425); +assertToStringEquals("babc,ba", res[807].exec("babc"), 2426); +assertToStringEquals("bbabc,ba", res[807].exec("bbabc"), 2427); +assertToStringEquals("bababc,ba", res[807].exec("bababc"), 2428); +assertNull(res[807].exec("*** Failers", 2429)); +assertNull(res[807].exec("bababbc", 2430)); +assertNull(res[807].exec("babababc", 2431)); +assertToStringEquals("babc,ba", res[808].exec("babc"), 2432); +assertToStringEquals("bbabc,ba", res[808].exec("bbabc"), 2433); +assertToStringEquals("bababc,ba", res[808].exec("bababc"), 2434); +assertNull(res[808].exec("*** Failers", 2435)); +assertNull(res[808].exec("bababbc", 2436)); +assertNull(res[808].exec("babababc", 2437)); assertThrows("var re = /^\\ca\\cA\\c[\\c{\\c:/;", 2438); -assertEquals(null, res[808].exec("\x01\x01e;z", 2439)); -assertEquals("a", res[809].exec("athing"), 2440); -assertEquals("b", res[809].exec("bthing"), 2441); -assertEquals("]", res[809].exec("]thing"), 2442); -assertEquals("c", res[809].exec("cthing"), 2443); -assertEquals("d", res[809].exec("dthing"), 2444); -assertEquals("e", res[809].exec("ething"), 2445); -assertEquals(null, res[809].exec("*** Failers", 2446)); -assertEquals(null, res[809].exec("fthing", 2447)); -assertEquals(null, res[809].exec("[thing", 2448)); -assertEquals(null, res[809].exec("\\thing", 2449)); -assertEquals(null, res[810].exec("]thing", 2450)); -assertEquals(null, res[810].exec("cthing", 2451)); -assertEquals(null, res[810].exec("dthing", 2452)); -assertEquals(null, res[810].exec("ething", 2453)); -assertEquals(null, res[810].exec("*** Failers", 2454)); -assertEquals(null, res[810].exec("athing", 2455)); -assertEquals(null, res[810].exec("fthing", 2456)); -assertEquals("f", res[811].exec("fthing"), 2457); -assertEquals("[", res[811].exec("[thing"), 2458); -assertEquals("\\", res[811].exec("\\thing"), 2459); -assertEquals("*", res[811].exec("*** Failers"), 2460); -assertEquals(null, res[811].exec("athing", 2461)); -assertEquals(null, res[811].exec("bthing", 2462)); -assertEquals(null, res[811].exec("]thing", 2463)); -assertEquals(null, res[811].exec("cthing", 2464)); -assertEquals(null, res[811].exec("dthing", 2465)); -assertEquals(null, res[811].exec("ething", 2466)); -assertEquals(null, res[812].exec("athing", 2467)); -assertEquals(null, res[812].exec("fthing", 2468)); -assertEquals(null, res[812].exec("*** Failers", 2469)); -assertEquals(null, res[812].exec("]thing", 2470)); -assertEquals(null, res[812].exec("cthing", 2471)); -assertEquals(null, res[812].exec("dthing", 2472)); -assertEquals(null, res[812].exec("ething", 2473)); -assertEquals(null, res[812].exec("\ufffd", 2474)); -assertEquals(null, res[812].exec("\ufffd", 2475)); -assertEquals("0", res[813].exec("0"), 2476); -assertEquals("1", res[813].exec("1"), 2477); -assertEquals("2", res[813].exec("2"), 2478); -assertEquals("3", res[813].exec("3"), 2479); -assertEquals("4", res[813].exec("4"), 2480); -assertEquals("5", res[813].exec("5"), 2481); -assertEquals("6", res[813].exec("6"), 2482); -assertEquals("7", res[813].exec("7"), 2483); -assertEquals("8", res[813].exec("8"), 2484); -assertEquals("9", res[813].exec("9"), 2485); -assertEquals("10", res[813].exec("10"), 2486); -assertEquals("100", res[813].exec("100"), 2487); -assertEquals(null, res[813].exec("*** Failers", 2488)); -assertEquals(null, res[813].exec("abc", 2489)); -assertEquals("enter", res[814].exec("enter"), 2490); -assertEquals("inter", res[814].exec("inter"), 2491); -assertEquals("uponter", res[814].exec("uponter"), 2492); -assertEquals("xxx0", res[815].exec("xxx0"), 2493); -assertEquals("xxx1234", res[815].exec("xxx1234"), 2494); -assertEquals(null, res[815].exec("*** Failers", 2495)); -assertEquals(null, res[815].exec("xxx", 2496)); -assertEquals("x123", res[816].exec("x123"), 2497); -assertEquals("xx123", res[816].exec("xx123"), 2498); -assertEquals("123456", res[816].exec("123456"), 2499); -assertEquals(null, res[816].exec("*** Failers", 2500)); -assertEquals(null, res[816].exec("123", 2501)); -assertEquals("x1234", res[816].exec("x1234"), 2502); -assertEquals("x123", res[817].exec("x123"), 2503); -assertEquals("xx123", res[817].exec("xx123"), 2504); -assertEquals("123456", res[817].exec("123456"), 2505); -assertEquals(null, res[817].exec("*** Failers", 2506)); -assertEquals(null, res[817].exec("123", 2507)); -assertEquals("x1234", res[817].exec("x1234"), 2508); -assertEquals("abc!pqr=apquxz.ixr.zzz.ac.uk,abc,pqr", res[818].exec("abc!pqr=apquxz.ixr.zzz.ac.uk"), 2509); -assertEquals(null, res[818].exec("*** Failers", 2510)); -assertEquals(null, res[818].exec("!pqr=apquxz.ixr.zzz.ac.uk", 2511)); -assertEquals(null, res[818].exec("abc!=apquxz.ixr.zzz.ac.uk", 2512)); -assertEquals(null, res[818].exec("abc!pqr=apquxz:ixr.zzz.ac.uk", 2513)); -assertEquals(null, res[818].exec("abc!pqr=apquxz.ixr.zzz.ac.ukk", 2514)); -assertEquals(":", res[819].exec("Well, we need a colon: somewhere"), 2515); -assertEquals(null, res[819].exec("*** Fail if we don't", 2516)); -assertEquals("0abc,0abc", res[820].exec("0abc"), 2517); -assertEquals("abc,abc", res[820].exec("abc"), 2518); -assertEquals("fed,fed", res[820].exec("fed"), 2519); -assertEquals("E,E", res[820].exec("E"), 2520); -assertEquals("::,::", res[820].exec("::"), 2521); -assertEquals("5f03:12C0::932e,5f03:12C0::932e", res[820].exec("5f03:12C0::932e"), 2522); -assertEquals("def,def", res[820].exec("fed def"), 2523); -assertEquals("ff,ff", res[820].exec("Any old stuff"), 2524); -assertEquals(null, res[820].exec("*** Failers", 2525)); -assertEquals(null, res[820].exec("0zzz", 2526)); -assertEquals(null, res[820].exec("gzzz", 2527)); -assertEquals(null, res[820].exec("fed ", 2528)); -assertEquals(null, res[820].exec("Any old rubbish", 2529)); -assertEquals(".1.2.3,1,2,3", res[821].exec(".1.2.3"), 2530); -assertEquals("A.12.123.0,12,123,0", res[821].exec("A.12.123.0"), 2531); -assertEquals(null, res[821].exec("*** Failers", 2532)); -assertEquals(null, res[821].exec(".1.2.3333", 2533)); -assertEquals(null, res[821].exec("1.2.3", 2534)); -assertEquals(null, res[821].exec("1234.2.3", 2535)); -assertEquals("1 IN SOA non-sp1 non-sp2(,1,non-sp1,non-sp2", res[822].exec("1 IN SOA non-sp1 non-sp2("), 2536); -assertEquals("1 IN SOA non-sp1 non-sp2 (,1,non-sp1,non-sp2", res[822].exec("1 IN SOA non-sp1 non-sp2 ("), 2537); -assertEquals(null, res[822].exec("*** Failers", 2538)); -assertEquals(null, res[822].exec("1IN SOA non-sp1 non-sp2(", 2539)); -assertEquals("a.,", res[823].exec("a."), 2540); -assertEquals("Z.,", res[823].exec("Z."), 2541); -assertEquals("2.,", res[823].exec("2."), 2542); -assertEquals("ab-c.pq-r.,.pq-r", res[823].exec("ab-c.pq-r."), 2543); -assertEquals("sxk.zzz.ac.uk.,.uk", res[823].exec("sxk.zzz.ac.uk."), 2544); -assertEquals("x-.y-.,.y-", res[823].exec("x-.y-."), 2545); -assertEquals(null, res[823].exec("*** Failers", 2546)); -assertEquals(null, res[823].exec("-abc.peq.", 2547)); -assertEquals("*.a,,,", res[824].exec("*.a"), 2548); -assertEquals("*.b0-a,0-a,,", res[824].exec("*.b0-a"), 2549); -assertEquals("*.c3-b.c,3-b,.c,", res[824].exec("*.c3-b.c"), 2550); -assertEquals("*.c-a.b-c,-a,.b-c,-c", res[824].exec("*.c-a.b-c"), 2551); -assertEquals(null, res[824].exec("*** Failers", 2552)); -assertEquals(null, res[824].exec("*.0", 2553)); -assertEquals(null, res[824].exec("*.a-", 2554)); -assertEquals(null, res[824].exec("*.a-b.c-", 2555)); -assertEquals(null, res[824].exec("*.c-a.0-c", 2556)); -assertEquals("abde,de,abd,e", res[825].exec("abde"), 2557); -assertEquals("abdf,,abd,f", res[826].exec("abdf"), 2558); -assertEquals("ab,abcd,cd,ab", res[827].exec("abcd"), 2559); -assertEquals("a.b.c.d,.d", res[828].exec("a.b.c.d"), 2560); -assertEquals("A.B.C.D,.D", res[828].exec("A.B.C.D"), 2561); -assertEquals("a.b.c.1.2.3.C,.C", res[828].exec("a.b.c.1.2.3.C"), 2562); -assertEquals("\"1234\",", res[829].exec("\"1234\""), 2563); -assertEquals("\"abcd\" ;,;", res[829].exec("\"abcd\" ;"), 2564); -assertEquals("\"\" ; rhubarb,; rhubarb", res[829].exec("\"\" ; rhubarb"), 2565); -assertEquals(null, res[829].exec("*** Failers", 2566)); -assertEquals(null, res[829].exec("\"1234\" : things", 2567)); -assertEquals(null, res[830].exec("\\", 2568)); -assertEquals(null, res[830].exec("*** Failers", 2569)); -assertEquals("ab c", res[831].exec("ab c"), 2570); -assertEquals(null, res[831].exec("*** Failers", 2571)); -assertEquals(null, res[831].exec("abc", 2572)); -assertEquals(null, res[831].exec("ab cde", 2573)); -assertEquals("ab c", res[831].exec("ab c"), 2574); -assertEquals(null, res[831].exec("*** Failers", 2575)); -assertEquals(null, res[831].exec("abc", 2576)); -assertEquals(null, res[831].exec("ab cde", 2577)); -assertEquals("a bcd", res[832].exec("a bcd"), 2578); -assertEquals(null, res[832].exec("a b d", 2579)); -assertEquals(null, res[832].exec("*** Failers", 2580)); -assertEquals(null, res[832].exec("abcd", 2581)); -assertEquals(null, res[832].exec("ab d", 2582)); -assertEquals("abcdefhijklm,abc,bc,c,def,ef,f,hij,ij,j,klm,lm,m", res[833].exec("abcdefhijklm"), 2583); -assertEquals("abcdefhijklm,bc,c,ef,f,ij,j,lm,m", res[834].exec("abcdefhijklm"), 2584); -assertEquals(null, res[835].exec("a+ Z0+\x08\n\x1d\x12", 2585)); -assertEquals(null, res[835].exec(".^$(*+)|{?,?}", 2586)); -assertEquals("z", res[836].exec("z"), 2587); -assertEquals("az", res[836].exec("az"), 2588); -assertEquals("aaaz", res[836].exec("aaaz"), 2589); -assertEquals("a", res[836].exec("a"), 2590); -assertEquals("aa", res[836].exec("aa"), 2591); -assertEquals("aaaa", res[836].exec("aaaa"), 2592); -assertEquals("a", res[836].exec("a+"), 2593); -assertEquals("aa", res[836].exec("aa+"), 2594); -assertEquals("z", res[837].exec("z"), 2595); -assertEquals("a", res[837].exec("az"), 2596); -assertEquals("a", res[837].exec("aaaz"), 2597); -assertEquals("a", res[837].exec("a"), 2598); -assertEquals("a", res[837].exec("aa"), 2599); -assertEquals("a", res[837].exec("aaaa"), 2600); -assertEquals("a", res[837].exec("a+"), 2601); -assertEquals("a", res[837].exec("aa+"), 2602); -assertEquals("az", res[838].exec("az"), 2603); -assertEquals("aaaz", res[838].exec("aaaz"), 2604); -assertEquals("aa", res[838].exec("aa"), 2605); -assertEquals("aaaa", res[838].exec("aaaa"), 2606); -assertEquals("aa", res[838].exec("aa+"), 2607); -assertEquals("az", res[839].exec("az"), 2608); -assertEquals("aa", res[839].exec("aaaz"), 2609); -assertEquals("aa", res[839].exec("aa"), 2610); -assertEquals("aa", res[839].exec("aaaa"), 2611); -assertEquals("aa", res[839].exec("aa+"), 2612); -assertEquals("1234567890", res[840].exec("1234567890"), 2613); -assertEquals("12345678ab", res[840].exec("12345678ab"), 2614); -assertEquals("12345678__", res[840].exec("12345678__"), 2615); -assertEquals(null, res[840].exec("*** Failers", 2616)); -assertEquals(null, res[840].exec("1234567", 2617)); -assertEquals("uoie", res[841].exec("uoie"), 2618); -assertEquals("1234", res[841].exec("1234"), 2619); -assertEquals("12345", res[841].exec("12345"), 2620); -assertEquals("aaaaa", res[841].exec("aaaaa"), 2621); -assertEquals(null, res[841].exec("*** Failers", 2622)); -assertEquals(null, res[841].exec("123456", 2623)); -assertEquals("uoie", res[842].exec("uoie"), 2624); -assertEquals("1234", res[842].exec("1234"), 2625); -assertEquals("1234", res[842].exec("12345"), 2626); -assertEquals("aaaa", res[842].exec("aaaaa"), 2627); -assertEquals("1234", res[842].exec("123456"), 2628); -assertEquals("From abcd Mon Sep 01 12:33,abcd", res[843].exec("From abcd Mon Sep 01 12:33:02 1997"), 2629); -assertEquals("From abcd Mon Sep 01 12:33,Sep ", res[844].exec("From abcd Mon Sep 01 12:33:02 1997"), 2630); -assertEquals("From abcd Mon Sep 1 12:33,Sep ", res[844].exec("From abcd Mon Sep 1 12:33:02 1997"), 2631); -assertEquals(null, res[844].exec("*** Failers", 2632)); -assertEquals(null, res[844].exec("From abcd Sep 01 12:33:02 1997", 2633)); -assertEquals(null, res[845].exec("12\n34", 2634)); -assertEquals(null, res[845].exec("12\x0d34", 2635)); -assertEquals("brown", res[846].exec("the quick brown\x09 fox"), 2636); -assertEquals("foolish see?,lish see?", res[847].exec("foobar is foolish see?"), 2637); -assertEquals("rowbar etc, etc", res[848].exec("foobar crowbar etc"), 2638); -assertEquals("barrel,rel", res[848].exec("barrel"), 2639); -assertEquals("2barrel,rel", res[848].exec("2barrel"), 2640); -assertEquals("A barrel,rel", res[848].exec("A barrel"), 2641); -assertEquals("abc,abc", res[849].exec("abc456"), 2642); -assertEquals(null, res[849].exec("*** Failers", 2643)); -assertEquals(null, res[849].exec("abc123", 2644)); -assertEquals("1234", res[850].exec("1234"), 2645); -assertEquals("1234", res[851].exec("1234"), 2646); -assertEquals("abcd", res[852].exec("abcd"), 2647); -assertEquals("abcd", res[853].exec("abcd"), 2648); -assertEquals("abc", res[854].exec("the abc"), 2649); -assertEquals(null, res[854].exec("*** Failers", 2650)); -assertEquals(null, res[854].exec("abc", 2651)); -assertEquals("abc", res[855].exec("abc"), 2652); -assertEquals(null, res[855].exec("*** Failers", 2653)); -assertEquals(null, res[855].exec("the abc", 2654)); -assertEquals("aabb,b", res[856].exec("aabbbbb"), 2655); -assertEquals("aabbbbb,abbbbb", res[857].exec("aabbbbb"), 2656); -assertEquals("aa,a", res[858].exec("aabbbbb"), 2657); -assertEquals("aabb,b", res[859].exec("aabbbbb"), 2658); -assertEquals("Alan Other <user@dom.ain>", res[860].exec("Alan Other <user@dom.ain>"), 2659); -assertEquals("user@dom.ain", res[860].exec("<user@dom.ain>"), 2660); -assertEquals("user@dom.ain", res[860].exec("user@dom.ain"), 2661); -assertEquals("\"A. Other\" <user.1234@dom.ain> (a comment)", res[860].exec("\"A. Other\" <user.1234@dom.ain> (a comment)"), 2662); -assertEquals(" Other <user.1234@dom.ain> (a comment)", res[860].exec("A. Other <user.1234@dom.ain> (a comment)"), 2663); -assertEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[860].exec("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2664); -assertEquals("user@some.where", res[860].exec("A missing angle <user@some.where"), 2665); -assertEquals(null, res[860].exec("*** Failers", 2666)); -assertEquals(null, res[860].exec("The quick brown fox", 2667)); -assertEquals("Alan Other <user@dom.ain>", res[861].exec("Alan Other <user@dom.ain>"), 2668); -assertEquals("user@dom.ain", res[861].exec("<user@dom.ain>"), 2669); -assertEquals("user@dom.ain", res[861].exec("user@dom.ain"), 2670); -assertEquals("\"A. Other\" <user.1234@dom.ain>", res[861].exec("\"A. Other\" <user.1234@dom.ain> (a comment)"), 2671); -assertEquals(" Other <user.1234@dom.ain>", res[861].exec("A. Other <user.1234@dom.ain> (a comment)"), 2672); -assertEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[861].exec("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2673); -assertEquals("user@some.where", res[861].exec("A missing angle <user@some.where"), 2674); -assertEquals(null, res[861].exec("*** Failers", 2675)); -assertEquals(null, res[861].exec("The quick brown fox", 2676)); -assertEquals(null, res[861].exec("abc\x00def\x00pqr\x00xyz\x000AB", 2677)); -assertEquals(null, res[861].exec("abc456 abc\x00def\x00pqr\x00xyz\x000ABCDE", 2678)); -assertEquals("abc\x0def\x00pqr\x000xyz\x0000AB", res[862].exec("abc\x0def\x00pqr\x000xyz\x0000AB"), 2679); -assertEquals("abc\x0def\x00pqr\x000xyz\x0000AB", res[862].exec("abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE"), 2680); -assertEquals("\x00", res[863].exec("\x00A"), 2681); -assertEquals("\x01", res[863].exec("\x01B"), 2682); -assertEquals("\x1f", res[863].exec("\x1fC"), 2683); -assertEquals("\x00\x00\x00\x00", res[864].exec("\x00\x00\x00\x00"), 2684); -assertEquals(null, res[865].exec("The Ax0x0Z", 2685)); -assertEquals(null, res[865].exec("An A\x00x0\x00Z", 2686)); -assertEquals(null, res[865].exec("*** Failers", 2687)); -assertEquals(null, res[865].exec("A\x00Z", 2688)); -assertEquals(null, res[865].exec("A\x00x0\x00x0Z", 2689)); -assertEquals(" ", res[866].exec(" abc"), 2690); -assertEquals("\x0c", res[866].exec("\x0cabc"), 2691); -assertEquals("\n", res[866].exec("\nabc"), 2692); -assertEquals("\x0d", res[866].exec("\x0dabc"), 2693); -assertEquals("\x09", res[866].exec("\x09abc"), 2694); -assertEquals(null, res[866].exec("*** Failers", 2695)); -assertEquals(null, res[866].exec("abc", 2696)); -assertEquals("abc", res[867].exec("abc"), 2697); -assertEquals("abbbbc", res[868].exec("abbbbc"), 2698); -assertEquals("abbbc", res[868].exec("abbbc"), 2699); -assertEquals("abbc", res[868].exec("abbc"), 2700); -assertEquals(null, res[868].exec("*** Failers", 2701)); -assertEquals(null, res[868].exec("abc", 2702)); -assertEquals(null, res[868].exec("abbbbbc", 2703)); -assertEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[869].exec("track1.title:TBlah blah blah"), 2704); -assertEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[870].exec("track1.title:TBlah blah blah"), 2705); -assertEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[871].exec("track1.title:TBlah blah blah"), 2706); -assertEquals("WXY_^abc", res[872].exec("WXY_^abc"), 2707); -assertEquals(null, res[872].exec("*** Failers", 2708)); -assertEquals(null, res[872].exec("wxy", 2709)); -assertEquals("WXY_^abc", res[873].exec("WXY_^abc"), 2710); -assertEquals("wxy_^ABC", res[873].exec("wxy_^ABC"), 2711); -assertEquals("WXY_^abc", res[874].exec("WXY_^abc"), 2712); -assertEquals("wxy_^ABC", res[874].exec("wxy_^ABC"), 2713); -assertEquals("abc", res[875].exec("abc"), 2714); -assertEquals("abc", res[875].exec("qqq\nabc"), 2715); -assertEquals("abc", res[875].exec("abc\nzzz"), 2716); -assertEquals("abc", res[875].exec("qqq\nabc\nzzz"), 2717); -assertEquals("abc", res[876].exec("abc"), 2718); -assertEquals(null, res[876].exec("*** Failers", 2719)); -assertEquals(null, res[876].exec("qqq\nabc", 2720)); -assertEquals(null, res[876].exec("abc\nzzz", 2721)); -assertEquals(null, res[876].exec("qqq\nabc\nzzz", 2722)); -assertEquals(null, res[877].exec("abc", 2723)); -assertEquals(null, res[877].exec("abc\n ", 2724)); -assertEquals(null, res[877].exec("*** Failers", 2725)); -assertEquals(null, res[877].exec("qqq\nabc", 2726)); -assertEquals(null, res[877].exec("abc\nzzz", 2727)); -assertEquals(null, res[877].exec("qqq\nabc\nzzz", 2728)); -assertEquals(null, res[878].exec("abc\ndef", 2729)); -assertEquals(null, res[879].exec("*** Failers", 2730)); -assertEquals(null, res[879].exec("abc\ndef", 2731)); -assertEquals("b", res[880].exec("b::c"), 2732); -assertEquals("::", res[880].exec("c::b"), 2733); -assertEquals("az-", res[881].exec("az-"), 2734); -assertEquals("a", res[881].exec("*** Failers"), 2735); -assertEquals(null, res[881].exec("b", 2736)); -assertEquals("za-", res[882].exec("za-"), 2737); -assertEquals("a", res[882].exec("*** Failers"), 2738); -assertEquals(null, res[882].exec("b", 2739)); -assertEquals("a-z", res[883].exec("a-z"), 2740); -assertEquals("a", res[883].exec("*** Failers"), 2741); -assertEquals(null, res[883].exec("b", 2742)); -assertEquals("abcdxyz", res[884].exec("abcdxyz"), 2743); -assertEquals("12-34", res[885].exec("12-34"), 2744); -assertEquals(null, res[885].exec("*** Failers", 2745)); -assertEquals(null, res[885].exec("aaa", 2746)); -assertEquals("12-34z", res[886].exec("12-34z"), 2747); -assertEquals(null, res[886].exec("*** Failers", 2748)); -assertEquals(null, res[886].exec("aaa", 2749)); -assertEquals("\\", res[887].exec("\\\\"), 2750); -assertEquals(" Z", res[888].exec("the Zoo"), 2751); -assertEquals(null, res[888].exec("*** Failers", 2752)); -assertEquals(null, res[888].exec("Zulu", 2753)); -assertEquals("ab{3cd", res[889].exec("ab{3cd"), 2754); -assertEquals("ab{3,cd", res[890].exec("ab{3,cd"), 2755); -assertEquals("ab{3,4a}cd", res[891].exec("ab{3,4a}cd"), 2756); -assertEquals("{4,5a}bc", res[892].exec("{4,5a}bc"), 2757); -assertEquals(null, res[893].exec("a\x0db", 2758)); -assertEquals(null, res[893].exec("*** Failers", 2759)); -assertEquals(null, res[893].exec("a\nb", 2760)); -assertEquals("abc", res[894].exec("abc"), 2761); -assertEquals(null, res[894].exec("abc\n", 2762)); -assertEquals(null, res[894].exec("*** Failers", 2763)); -assertEquals(null, res[894].exec("abc\ndef", 2764)); -assertEquals("abcS,abc", res[895].exec("abcS"), 2765); -assertEquals("abc\x93,abc", res[896].exec("abc\x93"), 2766); -assertEquals("abc\xd3,abc", res[897].exec("abc\xd3"), 2767); -assertEquals("abc@,abc", res[898].exec("abc@"), 2768); -assertEquals("abc@,abc", res[898].exec("abc@"), 2769); -assertEquals("abc@,abc", res[898].exec("abc@0"), 2770); -assertEquals("abc@,abc", res[898].exec("abc@0"), 2771); -assertEquals("abc@,abc", res[898].exec("abc@0"), 2772); -assertEquals("abc@,abc", res[898].exec("abc@0"), 2773); -assertEquals("abc@,abc", res[898].exec("abc@0"), 2774); -assertEquals("abc@,abc", res[898].exec("abc@0"), 2775); -assertEquals(null, res[899].exec("abc\x0081", 2776)); -assertEquals(null, res[899].exec("abc\x0081", 2777)); -assertEquals(null, res[900].exec("abc\x0091", 2778)); -assertEquals(null, res[900].exec("abc\x0091", 2779)); -assertEquals("abcdefghijk\nS,a,b,c,d,e,f,g,h,i,j,k", res[901].exec("abcdefghijk\nS"), 2780); -assertEquals("abidef", res[902].exec("abidef"), 2781); -assertEquals("bc", res[903].exec("bc"), 2782); -assertEquals("xyz,,", res[904].exec("xyz"), 2783); -assertEquals("abc\x08de", res[905].exec("abc\x08de"), 2784); -assertEquals("abc\x01de", res[906].exec("abc\x01de"), 2785); -assertEquals("abc\x01de,abc", res[907].exec("abc\x01de"), 2786); -assertEquals(null, res[907].exec("a\nb", 2787)); -assertEquals("baNOTcccc,b,a,NOT,cccc", res[908].exec("baNOTccccd"), 2788); -assertEquals("baNOTccc,b,a,NOT,ccc", res[908].exec("baNOTcccd"), 2789); -assertEquals("baNOTcc,b,a,NO,Tcc", res[908].exec("baNOTccd"), 2790); -assertEquals("baccc,b,a,,ccc", res[908].exec("bacccd"), 2791); -assertEquals("*** Failers,*,*,* Fail,ers", res[908].exec("*** Failers"), 2792); -assertEquals(null, res[908].exec("anything", 2793)); -assertEquals(null, res[908].exec("b\x08c ", 2794)); -assertEquals(null, res[908].exec("baccd", 2795)); -assertEquals("A", res[909].exec("Abc"), 2796); -assertEquals("b", res[910].exec("Abc "), 2797); -assertEquals("AAA", res[911].exec("AAAaAbc"), 2798); -assertEquals("bc ", res[912].exec("AAAaAbc "), 2799); -assertEquals("bbb\nccc", res[913].exec("bbb\nccc"), 2800); -assertEquals("c", res[914].exec("abc"), 2801); -assertEquals("s", res[914].exec("*** Failers"), 2802); -assertEquals(" ", res[914].exec("abk "), 2803); -assertEquals("abc", res[915].exec("abc"), 2804); -assertEquals("bc", res[915].exec("kbc"), 2805); -assertEquals("bc ", res[915].exec("kabc "), 2806); -assertEquals("ers", res[915].exec("*** Failers"), 2807); -assertEquals(null, res[915].exec("abk", 2808)); -assertEquals(null, res[915].exec("akb", 2809)); -assertEquals(null, res[915].exec("akk ", 2810)); -assertEquals("12345678@a.b.c.d", res[916].exec("12345678@a.b.c.d"), 2811); -assertEquals("123456789@x.y.z", res[916].exec("123456789@x.y.z"), 2812); -assertEquals(null, res[916].exec("*** Failers", 2813)); -assertEquals(null, res[916].exec("12345678@x.y.uk", 2814)); -assertEquals(null, res[916].exec("1234567@a.b.c.d ", 2815)); -assertEquals("b", res[917].exec("aaaabcd"), 2816); -assertEquals("A", res[917].exec("aaAabcd "), 2817); -assertEquals("b", res[918].exec("aaaabcd"), 2818); -assertEquals("b", res[918].exec("aaAabcd "), 2819); -assertEquals("b", res[919].exec("aaaabcd"), 2820); -assertEquals("A", res[919].exec("aaAabcd "), 2821); -assertEquals("b", res[920].exec("aaaabcd"), 2822); -assertEquals("b", res[920].exec("aaAabcd "), 2823); -assertEquals("PSTAIREISLL", res[922].exec("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2824); -assertEquals("PSTAIREISLL", res[923].exec("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2825); -assertEquals(".230003938,.23", res[924].exec("1.230003938"), 2826); -assertEquals(".875000282,.875", res[924].exec("1.875000282 "), 2827); -assertEquals(".235,.23", res[924].exec("1.235 "), 2828); -assertEquals(null, res[924].exec(" ", 2829)); -assertEquals(".23,.23,", res[925].exec("1.230003938 "), 2830); -assertEquals(".875,.875,5", res[925].exec("1.875000282"), 2831); -assertEquals(null, res[925].exec("*** Failers ", 2832)); -assertEquals(null, res[925].exec("1.235 ", 2833)); +assertNull(res[808].exec("\x01\x01e;z", 2439)); +assertToStringEquals("a", res[809].exec("athing"), 2440); +assertToStringEquals("b", res[809].exec("bthing"), 2441); +assertToStringEquals("]", res[809].exec("]thing"), 2442); +assertToStringEquals("c", res[809].exec("cthing"), 2443); +assertToStringEquals("d", res[809].exec("dthing"), 2444); +assertToStringEquals("e", res[809].exec("ething"), 2445); +assertNull(res[809].exec("*** Failers", 2446)); +assertNull(res[809].exec("fthing", 2447)); +assertNull(res[809].exec("[thing", 2448)); +assertNull(res[809].exec("\\thing", 2449)); +assertNull(res[810].exec("]thing", 2450)); +assertNull(res[810].exec("cthing", 2451)); +assertNull(res[810].exec("dthing", 2452)); +assertNull(res[810].exec("ething", 2453)); +assertNull(res[810].exec("*** Failers", 2454)); +assertNull(res[810].exec("athing", 2455)); +assertNull(res[810].exec("fthing", 2456)); +assertToStringEquals("f", res[811].exec("fthing"), 2457); +assertToStringEquals("[", res[811].exec("[thing"), 2458); +assertToStringEquals("\\", res[811].exec("\\thing"), 2459); +assertToStringEquals("*", res[811].exec("*** Failers"), 2460); +assertNull(res[811].exec("athing", 2461)); +assertNull(res[811].exec("bthing", 2462)); +assertNull(res[811].exec("]thing", 2463)); +assertNull(res[811].exec("cthing", 2464)); +assertNull(res[811].exec("dthing", 2465)); +assertNull(res[811].exec("ething", 2466)); +assertNull(res[812].exec("athing", 2467)); +assertNull(res[812].exec("fthing", 2468)); +assertNull(res[812].exec("*** Failers", 2469)); +assertNull(res[812].exec("]thing", 2470)); +assertNull(res[812].exec("cthing", 2471)); +assertNull(res[812].exec("dthing", 2472)); +assertNull(res[812].exec("ething", 2473)); +assertNull(res[812].exec("\ufffd", 2474)); +assertNull(res[812].exec("\ufffd", 2475)); +assertToStringEquals("0", res[813].exec("0"), 2476); +assertToStringEquals("1", res[813].exec("1"), 2477); +assertToStringEquals("2", res[813].exec("2"), 2478); +assertToStringEquals("3", res[813].exec("3"), 2479); +assertToStringEquals("4", res[813].exec("4"), 2480); +assertToStringEquals("5", res[813].exec("5"), 2481); +assertToStringEquals("6", res[813].exec("6"), 2482); +assertToStringEquals("7", res[813].exec("7"), 2483); +assertToStringEquals("8", res[813].exec("8"), 2484); +assertToStringEquals("9", res[813].exec("9"), 2485); +assertToStringEquals("10", res[813].exec("10"), 2486); +assertToStringEquals("100", res[813].exec("100"), 2487); +assertNull(res[813].exec("*** Failers", 2488)); +assertNull(res[813].exec("abc", 2489)); +assertToStringEquals("enter", res[814].exec("enter"), 2490); +assertToStringEquals("inter", res[814].exec("inter"), 2491); +assertToStringEquals("uponter", res[814].exec("uponter"), 2492); +assertToStringEquals("xxx0", res[815].exec("xxx0"), 2493); +assertToStringEquals("xxx1234", res[815].exec("xxx1234"), 2494); +assertNull(res[815].exec("*** Failers", 2495)); +assertNull(res[815].exec("xxx", 2496)); +assertToStringEquals("x123", res[816].exec("x123"), 2497); +assertToStringEquals("xx123", res[816].exec("xx123"), 2498); +assertToStringEquals("123456", res[816].exec("123456"), 2499); +assertNull(res[816].exec("*** Failers", 2500)); +assertNull(res[816].exec("123", 2501)); +assertToStringEquals("x1234", res[816].exec("x1234"), 2502); +assertToStringEquals("x123", res[817].exec("x123"), 2503); +assertToStringEquals("xx123", res[817].exec("xx123"), 2504); +assertToStringEquals("123456", res[817].exec("123456"), 2505); +assertNull(res[817].exec("*** Failers", 2506)); +assertNull(res[817].exec("123", 2507)); +assertToStringEquals("x1234", res[817].exec("x1234"), 2508); +assertToStringEquals("abc!pqr=apquxz.ixr.zzz.ac.uk,abc,pqr", res[818].exec("abc!pqr=apquxz.ixr.zzz.ac.uk"), 2509); +assertNull(res[818].exec("*** Failers", 2510)); +assertNull(res[818].exec("!pqr=apquxz.ixr.zzz.ac.uk", 2511)); +assertNull(res[818].exec("abc!=apquxz.ixr.zzz.ac.uk", 2512)); +assertNull(res[818].exec("abc!pqr=apquxz:ixr.zzz.ac.uk", 2513)); +assertNull(res[818].exec("abc!pqr=apquxz.ixr.zzz.ac.ukk", 2514)); +assertToStringEquals(":", res[819].exec("Well, we need a colon: somewhere"), 2515); +assertNull(res[819].exec("*** Fail if we don't", 2516)); +assertToStringEquals("0abc,0abc", res[820].exec("0abc"), 2517); +assertToStringEquals("abc,abc", res[820].exec("abc"), 2518); +assertToStringEquals("fed,fed", res[820].exec("fed"), 2519); +assertToStringEquals("E,E", res[820].exec("E"), 2520); +assertToStringEquals("::,::", res[820].exec("::"), 2521); +assertToStringEquals("5f03:12C0::932e,5f03:12C0::932e", res[820].exec("5f03:12C0::932e"), 2522); +assertToStringEquals("def,def", res[820].exec("fed def"), 2523); +assertToStringEquals("ff,ff", res[820].exec("Any old stuff"), 2524); +assertNull(res[820].exec("*** Failers", 2525)); +assertNull(res[820].exec("0zzz", 2526)); +assertNull(res[820].exec("gzzz", 2527)); +assertNull(res[820].exec("fed ", 2528)); +assertNull(res[820].exec("Any old rubbish", 2529)); +assertToStringEquals(".1.2.3,1,2,3", res[821].exec(".1.2.3"), 2530); +assertToStringEquals("A.12.123.0,12,123,0", res[821].exec("A.12.123.0"), 2531); +assertNull(res[821].exec("*** Failers", 2532)); +assertNull(res[821].exec(".1.2.3333", 2533)); +assertNull(res[821].exec("1.2.3", 2534)); +assertNull(res[821].exec("1234.2.3", 2535)); +assertToStringEquals("1 IN SOA non-sp1 non-sp2(,1,non-sp1,non-sp2", res[822].exec("1 IN SOA non-sp1 non-sp2("), 2536); +assertToStringEquals("1 IN SOA non-sp1 non-sp2 (,1,non-sp1,non-sp2", res[822].exec("1 IN SOA non-sp1 non-sp2 ("), 2537); +assertNull(res[822].exec("*** Failers", 2538)); +assertNull(res[822].exec("1IN SOA non-sp1 non-sp2(", 2539)); +assertToStringEquals("a.,", res[823].exec("a."), 2540); +assertToStringEquals("Z.,", res[823].exec("Z."), 2541); +assertToStringEquals("2.,", res[823].exec("2."), 2542); +assertToStringEquals("ab-c.pq-r.,.pq-r", res[823].exec("ab-c.pq-r."), 2543); +assertToStringEquals("sxk.zzz.ac.uk.,.uk", res[823].exec("sxk.zzz.ac.uk."), 2544); +assertToStringEquals("x-.y-.,.y-", res[823].exec("x-.y-."), 2545); +assertNull(res[823].exec("*** Failers", 2546)); +assertNull(res[823].exec("-abc.peq.", 2547)); +assertToStringEquals("*.a,,,", res[824].exec("*.a"), 2548); +assertToStringEquals("*.b0-a,0-a,,", res[824].exec("*.b0-a"), 2549); +assertToStringEquals("*.c3-b.c,3-b,.c,", res[824].exec("*.c3-b.c"), 2550); +assertToStringEquals("*.c-a.b-c,-a,.b-c,-c", res[824].exec("*.c-a.b-c"), 2551); +assertNull(res[824].exec("*** Failers", 2552)); +assertNull(res[824].exec("*.0", 2553)); +assertNull(res[824].exec("*.a-", 2554)); +assertNull(res[824].exec("*.a-b.c-", 2555)); +assertNull(res[824].exec("*.c-a.0-c", 2556)); +assertToStringEquals("abde,de,abd,e", res[825].exec("abde"), 2557); +assertToStringEquals("abdf,,abd,f", res[826].exec("abdf"), 2558); +assertToStringEquals("ab,abcd,cd,ab", res[827].exec("abcd"), 2559); +assertToStringEquals("a.b.c.d,.d", res[828].exec("a.b.c.d"), 2560); +assertToStringEquals("A.B.C.D,.D", res[828].exec("A.B.C.D"), 2561); +assertToStringEquals("a.b.c.1.2.3.C,.C", res[828].exec("a.b.c.1.2.3.C"), 2562); +assertToStringEquals("\"1234\",", res[829].exec("\"1234\""), 2563); +assertToStringEquals("\"abcd\" ;,;", res[829].exec("\"abcd\" ;"), 2564); +assertToStringEquals("\"\" ; rhubarb,; rhubarb", res[829].exec("\"\" ; rhubarb"), 2565); +assertNull(res[829].exec("*** Failers", 2566)); +assertNull(res[829].exec("\"1234\" : things", 2567)); +assertNull(res[830].exec("\\", 2568)); +assertNull(res[830].exec("*** Failers", 2569)); +assertToStringEquals("ab c", res[831].exec("ab c"), 2570); +assertNull(res[831].exec("*** Failers", 2571)); +assertNull(res[831].exec("abc", 2572)); +assertNull(res[831].exec("ab cde", 2573)); +assertToStringEquals("ab c", res[831].exec("ab c"), 2574); +assertNull(res[831].exec("*** Failers", 2575)); +assertNull(res[831].exec("abc", 2576)); +assertNull(res[831].exec("ab cde", 2577)); +assertToStringEquals("a bcd", res[832].exec("a bcd"), 2578); +assertNull(res[832].exec("a b d", 2579)); +assertNull(res[832].exec("*** Failers", 2580)); +assertNull(res[832].exec("abcd", 2581)); +assertNull(res[832].exec("ab d", 2582)); +assertToStringEquals("abcdefhijklm,abc,bc,c,def,ef,f,hij,ij,j,klm,lm,m", res[833].exec("abcdefhijklm"), 2583); +assertToStringEquals("abcdefhijklm,bc,c,ef,f,ij,j,lm,m", res[834].exec("abcdefhijklm"), 2584); +assertNull(res[835].exec("a+ Z0+\x08\n\x1d\x12", 2585)); +assertNull(res[835].exec(".^$(*+)|{?,?}", 2586)); +assertToStringEquals("z", res[836].exec("z"), 2587); +assertToStringEquals("az", res[836].exec("az"), 2588); +assertToStringEquals("aaaz", res[836].exec("aaaz"), 2589); +assertToStringEquals("a", res[836].exec("a"), 2590); +assertToStringEquals("aa", res[836].exec("aa"), 2591); +assertToStringEquals("aaaa", res[836].exec("aaaa"), 2592); +assertToStringEquals("a", res[836].exec("a+"), 2593); +assertToStringEquals("aa", res[836].exec("aa+"), 2594); +assertToStringEquals("z", res[837].exec("z"), 2595); +assertToStringEquals("a", res[837].exec("az"), 2596); +assertToStringEquals("a", res[837].exec("aaaz"), 2597); +assertToStringEquals("a", res[837].exec("a"), 2598); +assertToStringEquals("a", res[837].exec("aa"), 2599); +assertToStringEquals("a", res[837].exec("aaaa"), 2600); +assertToStringEquals("a", res[837].exec("a+"), 2601); +assertToStringEquals("a", res[837].exec("aa+"), 2602); +assertToStringEquals("az", res[838].exec("az"), 2603); +assertToStringEquals("aaaz", res[838].exec("aaaz"), 2604); +assertToStringEquals("aa", res[838].exec("aa"), 2605); +assertToStringEquals("aaaa", res[838].exec("aaaa"), 2606); +assertToStringEquals("aa", res[838].exec("aa+"), 2607); +assertToStringEquals("az", res[839].exec("az"), 2608); +assertToStringEquals("aa", res[839].exec("aaaz"), 2609); +assertToStringEquals("aa", res[839].exec("aa"), 2610); +assertToStringEquals("aa", res[839].exec("aaaa"), 2611); +assertToStringEquals("aa", res[839].exec("aa+"), 2612); +assertToStringEquals("1234567890", res[840].exec("1234567890"), 2613); +assertToStringEquals("12345678ab", res[840].exec("12345678ab"), 2614); +assertToStringEquals("12345678__", res[840].exec("12345678__"), 2615); +assertNull(res[840].exec("*** Failers", 2616)); +assertNull(res[840].exec("1234567", 2617)); +assertToStringEquals("uoie", res[841].exec("uoie"), 2618); +assertToStringEquals("1234", res[841].exec("1234"), 2619); +assertToStringEquals("12345", res[841].exec("12345"), 2620); +assertToStringEquals("aaaaa", res[841].exec("aaaaa"), 2621); +assertNull(res[841].exec("*** Failers", 2622)); +assertNull(res[841].exec("123456", 2623)); +assertToStringEquals("uoie", res[842].exec("uoie"), 2624); +assertToStringEquals("1234", res[842].exec("1234"), 2625); +assertToStringEquals("1234", res[842].exec("12345"), 2626); +assertToStringEquals("aaaa", res[842].exec("aaaaa"), 2627); +assertToStringEquals("1234", res[842].exec("123456"), 2628); +assertToStringEquals("From abcd Mon Sep 01 12:33,abcd", res[843].exec("From abcd Mon Sep 01 12:33:02 1997"), 2629); +assertToStringEquals("From abcd Mon Sep 01 12:33,Sep ", res[844].exec("From abcd Mon Sep 01 12:33:02 1997"), 2630); +assertToStringEquals("From abcd Mon Sep 1 12:33,Sep ", res[844].exec("From abcd Mon Sep 1 12:33:02 1997"), 2631); +assertNull(res[844].exec("*** Failers", 2632)); +assertNull(res[844].exec("From abcd Sep 01 12:33:02 1997", 2633)); +assertNull(res[845].exec("12\n34", 2634)); +assertNull(res[845].exec("12\x0d34", 2635)); +assertToStringEquals("brown", res[846].exec("the quick brown\x09 fox"), 2636); +assertToStringEquals("foolish see?,lish see?", res[847].exec("foobar is foolish see?"), 2637); +assertToStringEquals("rowbar etc, etc", res[848].exec("foobar crowbar etc"), 2638); +assertToStringEquals("barrel,rel", res[848].exec("barrel"), 2639); +assertToStringEquals("2barrel,rel", res[848].exec("2barrel"), 2640); +assertToStringEquals("A barrel,rel", res[848].exec("A barrel"), 2641); +assertToStringEquals("abc,abc", res[849].exec("abc456"), 2642); +assertNull(res[849].exec("*** Failers", 2643)); +assertNull(res[849].exec("abc123", 2644)); +assertToStringEquals("1234", res[850].exec("1234"), 2645); +assertToStringEquals("1234", res[851].exec("1234"), 2646); +assertToStringEquals("abcd", res[852].exec("abcd"), 2647); +assertToStringEquals("abcd", res[853].exec("abcd"), 2648); +assertToStringEquals("abc", res[854].exec("the abc"), 2649); +assertNull(res[854].exec("*** Failers", 2650)); +assertNull(res[854].exec("abc", 2651)); +assertToStringEquals("abc", res[855].exec("abc"), 2652); +assertNull(res[855].exec("*** Failers", 2653)); +assertNull(res[855].exec("the abc", 2654)); +assertToStringEquals("aabb,b", res[856].exec("aabbbbb"), 2655); +assertToStringEquals("aabbbbb,abbbbb", res[857].exec("aabbbbb"), 2656); +assertToStringEquals("aa,a", res[858].exec("aabbbbb"), 2657); +assertToStringEquals("aabb,b", res[859].exec("aabbbbb"), 2658); +assertToStringEquals("Alan Other <user@dom.ain>", res[860].exec("Alan Other <user@dom.ain>"), 2659); +assertToStringEquals("user@dom.ain", res[860].exec("<user@dom.ain>"), 2660); +assertToStringEquals("user@dom.ain", res[860].exec("user@dom.ain"), 2661); +assertToStringEquals("\"A. Other\" <user.1234@dom.ain> (a comment)", res[860].exec("\"A. Other\" <user.1234@dom.ain> (a comment)"), 2662); +assertToStringEquals(" Other <user.1234@dom.ain> (a comment)", res[860].exec("A. Other <user.1234@dom.ain> (a comment)"), 2663); +assertToStringEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[860].exec("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2664); +assertToStringEquals("user@some.where", res[860].exec("A missing angle <user@some.where"), 2665); +assertNull(res[860].exec("*** Failers", 2666)); +assertNull(res[860].exec("The quick brown fox", 2667)); +assertToStringEquals("Alan Other <user@dom.ain>", res[861].exec("Alan Other <user@dom.ain>"), 2668); +assertToStringEquals("user@dom.ain", res[861].exec("<user@dom.ain>"), 2669); +assertToStringEquals("user@dom.ain", res[861].exec("user@dom.ain"), 2670); +assertToStringEquals("\"A. Other\" <user.1234@dom.ain>", res[861].exec("\"A. Other\" <user.1234@dom.ain> (a comment)"), 2671); +assertToStringEquals(" Other <user.1234@dom.ain>", res[861].exec("A. Other <user.1234@dom.ain> (a comment)"), 2672); +assertToStringEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[861].exec("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2673); +assertToStringEquals("user@some.where", res[861].exec("A missing angle <user@some.where"), 2674); +assertNull(res[861].exec("*** Failers", 2675)); +assertNull(res[861].exec("The quick brown fox", 2676)); +assertNull(res[861].exec("abc\x00def\x00pqr\x00xyz\x000AB", 2677)); +assertNull(res[861].exec("abc456 abc\x00def\x00pqr\x00xyz\x000ABCDE", 2678)); +assertToStringEquals("abc\x0def\x00pqr\x000xyz\x0000AB", res[862].exec("abc\x0def\x00pqr\x000xyz\x0000AB"), 2679); +assertToStringEquals("abc\x0def\x00pqr\x000xyz\x0000AB", res[862].exec("abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE"), 2680); +assertToStringEquals("\x00", res[863].exec("\x00A"), 2681); +assertToStringEquals("\x01", res[863].exec("\x01B"), 2682); +assertToStringEquals("\x1f", res[863].exec("\x1fC"), 2683); +assertToStringEquals("\x00\x00\x00\x00", res[864].exec("\x00\x00\x00\x00"), 2684); +assertNull(res[865].exec("The Ax0x0Z", 2685)); +assertNull(res[865].exec("An A\x00x0\x00Z", 2686)); +assertNull(res[865].exec("*** Failers", 2687)); +assertNull(res[865].exec("A\x00Z", 2688)); +assertNull(res[865].exec("A\x00x0\x00x0Z", 2689)); +assertToStringEquals(" ", res[866].exec(" abc"), 2690); +assertToStringEquals("\x0c", res[866].exec("\x0cabc"), 2691); +assertToStringEquals("\n", res[866].exec("\nabc"), 2692); +assertToStringEquals("\x0d", res[866].exec("\x0dabc"), 2693); +assertToStringEquals("\x09", res[866].exec("\x09abc"), 2694); +assertNull(res[866].exec("*** Failers", 2695)); +assertNull(res[866].exec("abc", 2696)); +assertToStringEquals("abc", res[867].exec("abc"), 2697); +assertToStringEquals("abbbbc", res[868].exec("abbbbc"), 2698); +assertToStringEquals("abbbc", res[868].exec("abbbc"), 2699); +assertToStringEquals("abbc", res[868].exec("abbc"), 2700); +assertNull(res[868].exec("*** Failers", 2701)); +assertNull(res[868].exec("abc", 2702)); +assertNull(res[868].exec("abbbbbc", 2703)); +assertToStringEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[869].exec("track1.title:TBlah blah blah"), 2704); +assertToStringEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[870].exec("track1.title:TBlah blah blah"), 2705); +assertToStringEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[871].exec("track1.title:TBlah blah blah"), 2706); +assertToStringEquals("WXY_^abc", res[872].exec("WXY_^abc"), 2707); +assertNull(res[872].exec("*** Failers", 2708)); +assertNull(res[872].exec("wxy", 2709)); +assertToStringEquals("WXY_^abc", res[873].exec("WXY_^abc"), 2710); +assertToStringEquals("wxy_^ABC", res[873].exec("wxy_^ABC"), 2711); +assertToStringEquals("WXY_^abc", res[874].exec("WXY_^abc"), 2712); +assertToStringEquals("wxy_^ABC", res[874].exec("wxy_^ABC"), 2713); +assertToStringEquals("abc", res[875].exec("abc"), 2714); +assertToStringEquals("abc", res[875].exec("qqq\nabc"), 2715); +assertToStringEquals("abc", res[875].exec("abc\nzzz"), 2716); +assertToStringEquals("abc", res[875].exec("qqq\nabc\nzzz"), 2717); +assertToStringEquals("abc", res[876].exec("abc"), 2718); +assertNull(res[876].exec("*** Failers", 2719)); +assertNull(res[876].exec("qqq\nabc", 2720)); +assertNull(res[876].exec("abc\nzzz", 2721)); +assertNull(res[876].exec("qqq\nabc\nzzz", 2722)); +assertNull(res[877].exec("abc", 2723)); +assertNull(res[877].exec("abc\n ", 2724)); +assertNull(res[877].exec("*** Failers", 2725)); +assertNull(res[877].exec("qqq\nabc", 2726)); +assertNull(res[877].exec("abc\nzzz", 2727)); +assertNull(res[877].exec("qqq\nabc\nzzz", 2728)); +assertNull(res[878].exec("abc\ndef", 2729)); +assertNull(res[879].exec("*** Failers", 2730)); +assertNull(res[879].exec("abc\ndef", 2731)); +assertToStringEquals("b", res[880].exec("b::c"), 2732); +assertToStringEquals("::", res[880].exec("c::b"), 2733); +assertToStringEquals("az-", res[881].exec("az-"), 2734); +assertToStringEquals("a", res[881].exec("*** Failers"), 2735); +assertNull(res[881].exec("b", 2736)); +assertToStringEquals("za-", res[882].exec("za-"), 2737); +assertToStringEquals("a", res[882].exec("*** Failers"), 2738); +assertNull(res[882].exec("b", 2739)); +assertToStringEquals("a-z", res[883].exec("a-z"), 2740); +assertToStringEquals("a", res[883].exec("*** Failers"), 2741); +assertNull(res[883].exec("b", 2742)); +assertToStringEquals("abcdxyz", res[884].exec("abcdxyz"), 2743); +assertToStringEquals("12-34", res[885].exec("12-34"), 2744); +assertNull(res[885].exec("*** Failers", 2745)); +assertNull(res[885].exec("aaa", 2746)); +assertToStringEquals("12-34z", res[886].exec("12-34z"), 2747); +assertNull(res[886].exec("*** Failers", 2748)); +assertNull(res[886].exec("aaa", 2749)); +assertToStringEquals("\\", res[887].exec("\\\\"), 2750); +assertToStringEquals(" Z", res[888].exec("the Zoo"), 2751); +assertNull(res[888].exec("*** Failers", 2752)); +assertNull(res[888].exec("Zulu", 2753)); +assertToStringEquals("ab{3cd", res[889].exec("ab{3cd"), 2754); +assertToStringEquals("ab{3,cd", res[890].exec("ab{3,cd"), 2755); +assertToStringEquals("ab{3,4a}cd", res[891].exec("ab{3,4a}cd"), 2756); +assertToStringEquals("{4,5a}bc", res[892].exec("{4,5a}bc"), 2757); +assertNull(res[893].exec("a\x0db", 2758)); +assertNull(res[893].exec("*** Failers", 2759)); +assertNull(res[893].exec("a\nb", 2760)); +assertToStringEquals("abc", res[894].exec("abc"), 2761); +assertNull(res[894].exec("abc\n", 2762)); +assertNull(res[894].exec("*** Failers", 2763)); +assertNull(res[894].exec("abc\ndef", 2764)); +assertToStringEquals("abcS,abc", res[895].exec("abcS"), 2765); +assertToStringEquals("abc\x93,abc", res[896].exec("abc\x93"), 2766); +assertToStringEquals("abc\xd3,abc", res[897].exec("abc\xd3"), 2767); +assertToStringEquals("abc@,abc", res[898].exec("abc@"), 2768); +assertToStringEquals("abc@,abc", res[898].exec("abc@"), 2769); +assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2770); +assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2771); +assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2772); +assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2773); +assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2774); +assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2775); +assertNull(res[899].exec("abc\x0081", 2776)); +assertNull(res[899].exec("abc\x0081", 2777)); +assertNull(res[900].exec("abc\x0091", 2778)); +assertNull(res[900].exec("abc\x0091", 2779)); +assertToStringEquals("abcdefghijk\nS,a,b,c,d,e,f,g,h,i,j,k", res[901].exec("abcdefghijk\nS"), 2780); +assertToStringEquals("abidef", res[902].exec("abidef"), 2781); +assertToStringEquals("bc", res[903].exec("bc"), 2782); +assertToStringEquals("xyz,,", res[904].exec("xyz"), 2783); +assertToStringEquals("abc\x08de", res[905].exec("abc\x08de"), 2784); +assertToStringEquals("abc\x01de", res[906].exec("abc\x01de"), 2785); +assertToStringEquals("abc\x01de,abc", res[907].exec("abc\x01de"), 2786); +assertNull(res[907].exec("a\nb", 2787)); +assertToStringEquals("baNOTcccc,b,a,NOT,cccc", res[908].exec("baNOTccccd"), 2788); +assertToStringEquals("baNOTccc,b,a,NOT,ccc", res[908].exec("baNOTcccd"), 2789); +assertToStringEquals("baNOTcc,b,a,NO,Tcc", res[908].exec("baNOTccd"), 2790); +assertToStringEquals("baccc,b,a,,ccc", res[908].exec("bacccd"), 2791); +assertToStringEquals("*** Failers,*,*,* Fail,ers", res[908].exec("*** Failers"), 2792); +assertNull(res[908].exec("anything", 2793)); +assertNull(res[908].exec("b\x08c ", 2794)); +assertNull(res[908].exec("baccd", 2795)); +assertToStringEquals("A", res[909].exec("Abc"), 2796); +assertToStringEquals("b", res[910].exec("Abc "), 2797); +assertToStringEquals("AAA", res[911].exec("AAAaAbc"), 2798); +assertToStringEquals("bc ", res[912].exec("AAAaAbc "), 2799); +assertToStringEquals("bbb\nccc", res[913].exec("bbb\nccc"), 2800); +assertToStringEquals("c", res[914].exec("abc"), 2801); +assertToStringEquals("s", res[914].exec("*** Failers"), 2802); +assertToStringEquals(" ", res[914].exec("abk "), 2803); +assertToStringEquals("abc", res[915].exec("abc"), 2804); +assertToStringEquals("bc", res[915].exec("kbc"), 2805); +assertToStringEquals("bc ", res[915].exec("kabc "), 2806); +assertToStringEquals("ers", res[915].exec("*** Failers"), 2807); +assertNull(res[915].exec("abk", 2808)); +assertNull(res[915].exec("akb", 2809)); +assertNull(res[915].exec("akk ", 2810)); +assertToStringEquals("12345678@a.b.c.d", res[916].exec("12345678@a.b.c.d"), 2811); +assertToStringEquals("123456789@x.y.z", res[916].exec("123456789@x.y.z"), 2812); +assertNull(res[916].exec("*** Failers", 2813)); +assertNull(res[916].exec("12345678@x.y.uk", 2814)); +assertNull(res[916].exec("1234567@a.b.c.d ", 2815)); +assertToStringEquals("b", res[917].exec("aaaabcd"), 2816); +assertToStringEquals("A", res[917].exec("aaAabcd "), 2817); +assertToStringEquals("b", res[918].exec("aaaabcd"), 2818); +assertToStringEquals("b", res[918].exec("aaAabcd "), 2819); +assertToStringEquals("b", res[919].exec("aaaabcd"), 2820); +assertToStringEquals("A", res[919].exec("aaAabcd "), 2821); +assertToStringEquals("b", res[920].exec("aaaabcd"), 2822); +assertToStringEquals("b", res[920].exec("aaAabcd "), 2823); +assertToStringEquals("PSTAIREISLL", res[922].exec("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2824); +assertToStringEquals("PSTAIREISLL", res[923].exec("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2825); +assertToStringEquals(".230003938,.23", res[924].exec("1.230003938"), 2826); +assertToStringEquals(".875000282,.875", res[924].exec("1.875000282 "), 2827); +assertToStringEquals(".235,.23", res[924].exec("1.235 "), 2828); +assertNull(res[924].exec(" ", 2829)); +assertToStringEquals(".23,.23,", res[925].exec("1.230003938 "), 2830); +assertToStringEquals(".875,.875,5", res[925].exec("1.875000282"), 2831); +assertNull(res[925].exec("*** Failers ", 2832)); +assertNull(res[925].exec("1.235 ", 2833)); assertThrows("var re = /a(?)b/;", 2834); -assertEquals(null, res[925].exec("ab ", 2835)); -assertEquals("foo table,foo,table", res[926].exec("Food is on the foo table"), 2836); -assertEquals("food is under the bar in the bar,d is under the bar in the ", res[927].exec("The food is under the bar in the barn."), 2837); -assertEquals("food is under the bar,d is under the ", res[928].exec("The food is under the bar in the barn."), 2838); -assertEquals("I have 2 numbers: 53147,I have 2 numbers: 53147,", res[929].exec("I have 2 numbers: 53147"), 2839); -assertEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7", res[930].exec("I have 2 numbers: 53147"), 2840); -assertEquals(",,", res[931].exec("I have 2 numbers: 53147"), 2841); -assertEquals("I have 2,I have ,2", res[932].exec("I have 2 numbers: 53147"), 2842); -assertEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7", res[933].exec("I have 2 numbers: 53147"), 2843); -assertEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[934].exec("I have 2 numbers: 53147"), 2844); -assertEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[935].exec("I have 2 numbers: 53147"), 2845); -assertEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[936].exec("I have 2 numbers: 53147"), 2846); -assertEquals("AB", res[937].exec("ABC123"), 2847); -assertEquals(" ", res[937].exec(" "), 2848); -assertEquals("ABC,ABC", res[938].exec("ABC445"), 2849); -assertEquals(null, res[938].exec("*** Failers", 2850)); -assertEquals(null, res[938].exec("ABC123", 2851)); -assertEquals("W46]", res[939].exec("W46]789 "), 2852); -assertEquals("-46]", res[939].exec("-46]789"), 2853); -assertEquals(null, res[939].exec("*** Failers", 2854)); -assertEquals(null, res[939].exec("Wall", 2855)); -assertEquals(null, res[939].exec("Zebra", 2856)); -assertEquals(null, res[939].exec("42", 2857)); -assertEquals(null, res[939].exec("[abcd] ", 2858)); -assertEquals(null, res[939].exec("]abcd[", 2859)); -assertEquals(null, res[939].exec(" ", 2860)); -assertEquals("W", res[940].exec("W46]789 "), 2861); -assertEquals("W", res[940].exec("Wall"), 2862); -assertEquals("Z", res[940].exec("Zebra"), 2863); -assertEquals("X", res[940].exec("Xylophone "), 2864); -assertEquals("4", res[940].exec("42"), 2865); -assertEquals("[", res[940].exec("[abcd] "), 2866); -assertEquals("]", res[940].exec("]abcd["), 2867); -assertEquals("\\", res[940].exec("\\backslash "), 2868); -assertEquals(null, res[940].exec("*** Failers", 2869)); -assertEquals(null, res[940].exec("-46]789", 2870)); -assertEquals(null, res[940].exec("well", 2871)); -assertEquals("01/01/2000", res[941].exec("01/01/2000"), 2872); -assertEquals(",", res[944].exec("bcd"), 2873); -assertEquals(",", res[944].exec("abc"), 2874); -assertEquals(",", res[944].exec("aab "), 2875); -assertEquals(",", res[945].exec("bcd"), 2876); -assertEquals("a,a", res[945].exec("abc"), 2877); -assertEquals("a,a", res[945].exec("aab "), 2878); -assertEquals(",", res[946].exec("bcd"), 2879); -assertEquals("a,a", res[946].exec("abc"), 2880); -assertEquals("aa,a", res[946].exec("aab "), 2881); -assertEquals(",", res[947].exec("bcd"), 2882); -assertEquals("a,a", res[947].exec("abc"), 2883); -assertEquals("aa,a", res[947].exec("aab"), 2884); -assertEquals("aaa,a", res[947].exec("aaa "), 2885); -assertEquals(",", res[948].exec("bcd"), 2886); -assertEquals("a,a", res[948].exec("abc"), 2887); -assertEquals("aa,a", res[948].exec("aab"), 2888); -assertEquals("aaa,a", res[948].exec("aaa"), 2889); -assertEquals("aaaaaaaa,a", res[948].exec("aaaaaaaa "), 2890); -assertEquals(null, res[949].exec("bcd", 2891)); -assertEquals("a,a", res[949].exec("abc"), 2892); -assertEquals("a,a", res[949].exec("aab "), 2893); -assertEquals(null, res[950].exec("bcd", 2894)); -assertEquals("a,a", res[950].exec("abc"), 2895); -assertEquals("aa,a", res[950].exec("aab "), 2896); -assertEquals(null, res[951].exec("bcd", 2897)); -assertEquals("a,a", res[951].exec("abc"), 2898); -assertEquals("aa,a", res[951].exec("aab"), 2899); -assertEquals("aaa,a", res[951].exec("aaa "), 2900); -assertEquals(null, res[952].exec("bcd", 2901)); -assertEquals("a,a", res[952].exec("abc"), 2902); -assertEquals("aa,a", res[952].exec("aab"), 2903); -assertEquals("aaa,a", res[952].exec("aaa"), 2904); -assertEquals("aaaaaaaa,a", res[952].exec("aaaaaaaa "), 2905); -assertEquals("bib.gif", res[953].exec("borfle\nbib.gif\nno"), 2906); -assertEquals("bib.gif", res[954].exec("borfle\nbib.gif\nno"), 2907); -assertEquals("bib.gif", res[955].exec("borfle\nbib.gif\nno"), 2908); -assertEquals("bib.gif", res[956].exec("borfle\nbib.gif\nno"), 2909); -assertEquals("bib.gif", res[957].exec("borfle\nbib.gif\nno"), 2910); -assertEquals("no", res[958].exec("borfle\nbib.gif\nno"), 2911); -assertEquals("borfle", res[959].exec("borfle\nbib.gif\nno"), 2912); -assertEquals("no", res[960].exec("borfle\nbib.gif\nno"), 2913); -assertEquals("borfle", res[961].exec("borfle\nbib.gif\nno"), 2914); -assertEquals("", res[962].exec("borfle\nbib.gif\nno\n"), 2915); -assertEquals("borfle", res[963].exec("borfle\nbib.gif\nno\n"), 2916); -assertEquals("", res[964].exec("borfle\nbib.gif\nno\n"), 2917); -assertEquals("borfle", res[965].exec("borfle\nbib.gif\nno\n"), 2918); -assertEquals("1234X,1234X", res[966].exec("abcde\n1234Xyz"), 2919); -assertEquals("B,B", res[966].exec("BarFoo "), 2920); -assertEquals(null, res[966].exec("*** Failers", 2921)); -assertEquals(null, res[966].exec("abcde\nBar ", 2922)); -assertEquals("1234X,1234X", res[967].exec("abcde\n1234Xyz"), 2923); -assertEquals("B,B", res[967].exec("BarFoo "), 2924); -assertEquals("B,B", res[967].exec("abcde\nBar "), 2925); -assertEquals("1234X,1234X", res[968].exec("abcde\n1234Xyz"), 2926); -assertEquals("B,B", res[968].exec("BarFoo "), 2927); -assertEquals(null, res[968].exec("*** Failers", 2928)); -assertEquals(null, res[968].exec("abcde\nBar ", 2929)); -assertEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2930); -assertEquals("B,B", res[969].exec("BarFoo "), 2931); -assertEquals("B,B", res[969].exec("abcde\nBar "), 2932); -assertEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2933); -assertEquals("B,B", res[969].exec("BarFoo "), 2934); -assertEquals(null, res[969].exec("*** Failers ", 2935)); -assertEquals("B,B", res[969].exec("abcde\nBar "), 2936); -assertEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2937); -assertEquals("B,B", res[969].exec("BarFoo "), 2938); -assertEquals(null, res[969].exec("*** Failers ", 2939)); -assertEquals("B,B", res[969].exec("abcde\nBar "), 2940); -assertEquals(null, res[970].exec("**** Failers", 2941)); -assertEquals(null, res[970].exec("abc\nB", 2942)); -assertEquals(null, res[970].exec(" ", 2943)); -assertEquals(null, res[970].exec("abc\nB", 2944)); -assertEquals(null, res[970].exec("abc\nB", 2945)); -assertEquals(null, res[970].exec(" ", 2946)); -assertEquals(null, res[970].exec("abc\nB", 2947)); -assertEquals(null, res[970].exec("abc\nB", 2948)); -assertEquals("B", res[970].exec("B\n"), 2949); -assertEquals("123456654321", res[971].exec("123456654321"), 2950); -assertEquals("123456654321", res[972].exec("123456654321 "), 2951); -assertEquals("123456654321", res[973].exec("123456654321"), 2952); -assertEquals("abcabcabcabc", res[974].exec("abcabcabcabc"), 2953); -assertEquals("abcabcabcabc", res[975].exec("abcabcabcabc"), 2954); -assertEquals("abcabcabcabc,c", res[976].exec("abcabcabcabc "), 2955); -assertEquals("n", res[977].exec("n"), 2956); -assertEquals(null, res[977].exec("*** Failers ", 2957)); -assertEquals(null, res[977].exec("z ", 2958)); -assertEquals("abcd", res[978].exec("abcd"), 2959); -assertEquals(null, res[978].exec("*** Failers", 2960)); -assertEquals(null, res[978].exec("abce ", 2961)); -assertEquals("abe", res[979].exec("abe"), 2962); -assertEquals(null, res[979].exec("*** Failers", 2963)); -assertEquals(null, res[979].exec("abcde ", 2964)); -assertEquals("abd,", res[980].exec("abd"), 2965); -assertEquals(null, res[980].exec("*** Failers", 2966)); -assertEquals(null, res[980].exec("abcd ", 2967)); -assertEquals("a,", res[981].exec("a"), 2968); -assertEquals("ab,b", res[981].exec("ab"), 2969); -assertEquals("abbbb,bbbb", res[981].exec("abbbb"), 2970); -assertEquals("a,", res[981].exec("*** Failers"), 2971); -assertEquals(null, res[981].exec("bbbbb ", 2972)); -assertEquals("abe", res[982].exec("abe"), 2973); -assertEquals(null, res[982].exec("*** Failers", 2974)); -assertEquals(null, res[982].exec("ab1e ", 2975)); -assertEquals("\"quick\",quick", res[983].exec("the \"quick\" brown fox"), 2976); -assertEquals("\"the \\\"quick\\\" brown fox\", brown fox", res[983].exec("\"the \\\"quick\\\" brown fox\" "), 2977); -assertEquals("", res[984].exec("abc"), 2978); -assertEquals("", res[985].exec("abc "), 2979); -assertEquals("", res[986].exec("abc "), 2980); +assertNull(res[925].exec("ab ", 2835)); +assertToStringEquals("foo table,foo,table", res[926].exec("Food is on the foo table"), 2836); +assertToStringEquals("food is under the bar in the bar,d is under the bar in the ", res[927].exec("The food is under the bar in the barn."), 2837); +assertToStringEquals("food is under the bar,d is under the ", res[928].exec("The food is under the bar in the barn."), 2838); +assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 53147,", res[929].exec("I have 2 numbers: 53147"), 2839); +assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7", res[930].exec("I have 2 numbers: 53147"), 2840); +assertToStringEquals(",,", res[931].exec("I have 2 numbers: 53147"), 2841); +assertToStringEquals("I have 2,I have ,2", res[932].exec("I have 2 numbers: 53147"), 2842); +assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7", res[933].exec("I have 2 numbers: 53147"), 2843); +assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[934].exec("I have 2 numbers: 53147"), 2844); +assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[935].exec("I have 2 numbers: 53147"), 2845); +assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[936].exec("I have 2 numbers: 53147"), 2846); +assertToStringEquals("AB", res[937].exec("ABC123"), 2847); +assertToStringEquals(" ", res[937].exec(" "), 2848); +assertToStringEquals("ABC,ABC", res[938].exec("ABC445"), 2849); +assertNull(res[938].exec("*** Failers", 2850)); +assertNull(res[938].exec("ABC123", 2851)); +assertToStringEquals("W46]", res[939].exec("W46]789 "), 2852); +assertToStringEquals("-46]", res[939].exec("-46]789"), 2853); +assertNull(res[939].exec("*** Failers", 2854)); +assertNull(res[939].exec("Wall", 2855)); +assertNull(res[939].exec("Zebra", 2856)); +assertNull(res[939].exec("42", 2857)); +assertNull(res[939].exec("[abcd] ", 2858)); +assertNull(res[939].exec("]abcd[", 2859)); +assertNull(res[939].exec(" ", 2860)); +assertToStringEquals("W", res[940].exec("W46]789 "), 2861); +assertToStringEquals("W", res[940].exec("Wall"), 2862); +assertToStringEquals("Z", res[940].exec("Zebra"), 2863); +assertToStringEquals("X", res[940].exec("Xylophone "), 2864); +assertToStringEquals("4", res[940].exec("42"), 2865); +assertToStringEquals("[", res[940].exec("[abcd] "), 2866); +assertToStringEquals("]", res[940].exec("]abcd["), 2867); +assertToStringEquals("\\", res[940].exec("\\backslash "), 2868); +assertNull(res[940].exec("*** Failers", 2869)); +assertNull(res[940].exec("-46]789", 2870)); +assertNull(res[940].exec("well", 2871)); +assertToStringEquals("01/01/2000", res[941].exec("01/01/2000"), 2872); +assertToStringEquals(",", res[944].exec("bcd"), 2873); +assertToStringEquals(",", res[944].exec("abc"), 2874); +assertToStringEquals(",", res[944].exec("aab "), 2875); +assertToStringEquals(",", res[945].exec("bcd"), 2876); +assertToStringEquals("a,a", res[945].exec("abc"), 2877); +assertToStringEquals("a,a", res[945].exec("aab "), 2878); +assertToStringEquals(",", res[946].exec("bcd"), 2879); +assertToStringEquals("a,a", res[946].exec("abc"), 2880); +assertToStringEquals("aa,a", res[946].exec("aab "), 2881); +assertToStringEquals(",", res[947].exec("bcd"), 2882); +assertToStringEquals("a,a", res[947].exec("abc"), 2883); +assertToStringEquals("aa,a", res[947].exec("aab"), 2884); +assertToStringEquals("aaa,a", res[947].exec("aaa "), 2885); +assertToStringEquals(",", res[948].exec("bcd"), 2886); +assertToStringEquals("a,a", res[948].exec("abc"), 2887); +assertToStringEquals("aa,a", res[948].exec("aab"), 2888); +assertToStringEquals("aaa,a", res[948].exec("aaa"), 2889); +assertToStringEquals("aaaaaaaa,a", res[948].exec("aaaaaaaa "), 2890); +assertNull(res[949].exec("bcd", 2891)); +assertToStringEquals("a,a", res[949].exec("abc"), 2892); +assertToStringEquals("a,a", res[949].exec("aab "), 2893); +assertNull(res[950].exec("bcd", 2894)); +assertToStringEquals("a,a", res[950].exec("abc"), 2895); +assertToStringEquals("aa,a", res[950].exec("aab "), 2896); +assertNull(res[951].exec("bcd", 2897)); +assertToStringEquals("a,a", res[951].exec("abc"), 2898); +assertToStringEquals("aa,a", res[951].exec("aab"), 2899); +assertToStringEquals("aaa,a", res[951].exec("aaa "), 2900); +assertNull(res[952].exec("bcd", 2901)); +assertToStringEquals("a,a", res[952].exec("abc"), 2902); +assertToStringEquals("aa,a", res[952].exec("aab"), 2903); +assertToStringEquals("aaa,a", res[952].exec("aaa"), 2904); +assertToStringEquals("aaaaaaaa,a", res[952].exec("aaaaaaaa "), 2905); +assertToStringEquals("bib.gif", res[953].exec("borfle\nbib.gif\nno"), 2906); +assertToStringEquals("bib.gif", res[954].exec("borfle\nbib.gif\nno"), 2907); +assertToStringEquals("bib.gif", res[955].exec("borfle\nbib.gif\nno"), 2908); +assertToStringEquals("bib.gif", res[956].exec("borfle\nbib.gif\nno"), 2909); +assertToStringEquals("bib.gif", res[957].exec("borfle\nbib.gif\nno"), 2910); +assertToStringEquals("no", res[958].exec("borfle\nbib.gif\nno"), 2911); +assertToStringEquals("borfle", res[959].exec("borfle\nbib.gif\nno"), 2912); +assertToStringEquals("no", res[960].exec("borfle\nbib.gif\nno"), 2913); +assertToStringEquals("borfle", res[961].exec("borfle\nbib.gif\nno"), 2914); +assertToStringEquals("", res[962].exec("borfle\nbib.gif\nno\n"), 2915); +assertToStringEquals("borfle", res[963].exec("borfle\nbib.gif\nno\n"), 2916); +assertToStringEquals("", res[964].exec("borfle\nbib.gif\nno\n"), 2917); +assertToStringEquals("borfle", res[965].exec("borfle\nbib.gif\nno\n"), 2918); +assertToStringEquals("1234X,1234X", res[966].exec("abcde\n1234Xyz"), 2919); +assertToStringEquals("B,B", res[966].exec("BarFoo "), 2920); +assertNull(res[966].exec("*** Failers", 2921)); +assertNull(res[966].exec("abcde\nBar ", 2922)); +assertToStringEquals("1234X,1234X", res[967].exec("abcde\n1234Xyz"), 2923); +assertToStringEquals("B,B", res[967].exec("BarFoo "), 2924); +assertToStringEquals("B,B", res[967].exec("abcde\nBar "), 2925); +assertToStringEquals("1234X,1234X", res[968].exec("abcde\n1234Xyz"), 2926); +assertToStringEquals("B,B", res[968].exec("BarFoo "), 2927); +assertNull(res[968].exec("*** Failers", 2928)); +assertNull(res[968].exec("abcde\nBar ", 2929)); +assertToStringEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2930); +assertToStringEquals("B,B", res[969].exec("BarFoo "), 2931); +assertToStringEquals("B,B", res[969].exec("abcde\nBar "), 2932); +assertToStringEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2933); +assertToStringEquals("B,B", res[969].exec("BarFoo "), 2934); +assertNull(res[969].exec("*** Failers ", 2935)); +assertToStringEquals("B,B", res[969].exec("abcde\nBar "), 2936); +assertToStringEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2937); +assertToStringEquals("B,B", res[969].exec("BarFoo "), 2938); +assertNull(res[969].exec("*** Failers ", 2939)); +assertToStringEquals("B,B", res[969].exec("abcde\nBar "), 2940); +assertNull(res[970].exec("**** Failers", 2941)); +assertNull(res[970].exec("abc\nB", 2942)); +assertNull(res[970].exec(" ", 2943)); +assertNull(res[970].exec("abc\nB", 2944)); +assertNull(res[970].exec("abc\nB", 2945)); +assertNull(res[970].exec(" ", 2946)); +assertNull(res[970].exec("abc\nB", 2947)); +assertNull(res[970].exec("abc\nB", 2948)); +assertToStringEquals("B", res[970].exec("B\n"), 2949); +assertToStringEquals("123456654321", res[971].exec("123456654321"), 2950); +assertToStringEquals("123456654321", res[972].exec("123456654321 "), 2951); +assertToStringEquals("123456654321", res[973].exec("123456654321"), 2952); +assertToStringEquals("abcabcabcabc", res[974].exec("abcabcabcabc"), 2953); +assertToStringEquals("abcabcabcabc", res[975].exec("abcabcabcabc"), 2954); +assertToStringEquals("abcabcabcabc,c", res[976].exec("abcabcabcabc "), 2955); +assertToStringEquals("n", res[977].exec("n"), 2956); +assertNull(res[977].exec("*** Failers ", 2957)); +assertNull(res[977].exec("z ", 2958)); +assertToStringEquals("abcd", res[978].exec("abcd"), 2959); +assertNull(res[978].exec("*** Failers", 2960)); +assertNull(res[978].exec("abce ", 2961)); +assertToStringEquals("abe", res[979].exec("abe"), 2962); +assertNull(res[979].exec("*** Failers", 2963)); +assertNull(res[979].exec("abcde ", 2964)); +assertToStringEquals("abd,", res[980].exec("abd"), 2965); +assertNull(res[980].exec("*** Failers", 2966)); +assertNull(res[980].exec("abcd ", 2967)); +assertToStringEquals("a,", res[981].exec("a"), 2968); +assertToStringEquals("ab,b", res[981].exec("ab"), 2969); +assertToStringEquals("abbbb,bbbb", res[981].exec("abbbb"), 2970); +assertToStringEquals("a,", res[981].exec("*** Failers"), 2971); +assertNull(res[981].exec("bbbbb ", 2972)); +assertToStringEquals("abe", res[982].exec("abe"), 2973); +assertNull(res[982].exec("*** Failers", 2974)); +assertNull(res[982].exec("ab1e ", 2975)); +assertToStringEquals("\"quick\",quick", res[983].exec("the \"quick\" brown fox"), 2976); +assertToStringEquals("\"the \\\"quick\\\" brown fox\", brown fox", res[983].exec("\"the \\\"quick\\\" brown fox\" "), 2977); +assertToStringEquals("", res[984].exec("abc"), 2978); +assertToStringEquals("", res[985].exec("abc "), 2979); +assertToStringEquals("", res[986].exec("abc "), 2980); assertThrows("var re = //;", 2981); -assertEquals("", res[986].exec("abc"), 2982); -assertEquals("acb", res[988].exec("acb"), 2983); -assertEquals("a\nb", res[988].exec("a\nb"), 2984); -assertEquals("acb", res[989].exec("acb"), 2985); -assertEquals(null, res[989].exec("*** Failers ", 2986)); -assertEquals(null, res[989].exec("a\nb ", 2987)); -assertEquals("acb", res[990].exec("acb"), 2988); -assertEquals("a\nb", res[990].exec("a\nb "), 2989); -assertEquals("acb", res[991].exec("acb"), 2990); -assertEquals(null, res[991].exec("a\nb ", 2991)); -assertEquals("bac,a", res[992].exec("bac"), 2992); -assertEquals("bbac,a", res[992].exec("bbac"), 2993); -assertEquals("bbbac,a", res[992].exec("bbbac"), 2994); -assertEquals("bbbbac,a", res[992].exec("bbbbac"), 2995); -assertEquals("bbbbbac,a", res[992].exec("bbbbbac "), 2996); -assertEquals("bac,a", res[993].exec("bac"), 2997); -assertEquals("bbac,a", res[993].exec("bbac"), 2998); -assertEquals("bbbac,a", res[993].exec("bbbac"), 2999); -assertEquals("bbbbac,a", res[993].exec("bbbbac"), 3000); -assertEquals("bbbbbac,a", res[993].exec("bbbbbac "), 3001); -assertEquals("x", res[994].exec("x\nb\n"), 3002); -assertEquals("x", res[994].exec("a\x08x\n "), 3003); -assertEquals(null, res[995].exec("\x00{ab} ", 3004)); -assertEquals("CD,", res[996].exec("CD "), 3005); -assertEquals("CD,", res[997].exec("CD "), 3006); -assertEquals(null, res[997].exec("foo", 3007)); -assertEquals(null, res[997].exec("catfood", 3008)); -assertEquals(null, res[997].exec("arfootle", 3009)); -assertEquals(null, res[997].exec("rfoosh", 3010)); -assertEquals(null, res[997].exec("*** Failers", 3011)); -assertEquals(null, res[997].exec("barfoo", 3012)); -assertEquals(null, res[997].exec("towbarfoo", 3013)); -assertEquals(null, res[997].exec("catfood", 3014)); -assertEquals(null, res[997].exec("*** Failers", 3015)); -assertEquals(null, res[997].exec("foo", 3016)); -assertEquals(null, res[997].exec("barfoo", 3017)); -assertEquals(null, res[997].exec("towbarfoo", 3018)); -assertEquals(null, res[997].exec("fooabar", 3019)); -assertEquals(null, res[997].exec("*** Failers", 3020)); -assertEquals(null, res[997].exec("bar", 3021)); -assertEquals(null, res[997].exec("foobbar", 3022)); -assertEquals(null, res[997].exec(" ", 3023)); -assertEquals(null, res[998].exec("abc", 3024)); -assertEquals(null, res[998].exec("*** Failers", 3025)); -assertEquals(null, res[998].exec("abc\n ", 3026)); -assertEquals(null, res[998].exec("qqq\nabc", 3027)); -assertEquals(null, res[998].exec("abc\nzzz", 3028)); -assertEquals(null, res[998].exec("qqq\nabc\nzzz", 3029)); -assertEquals(null, res[998].exec("/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/", 3030)); -assertEquals(null, res[998].exec("/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo", 3031)); -assertEquals(null, res[998].exec("1.230003938", 3032)); -assertEquals(null, res[998].exec("1.875000282", 3033)); -assertEquals(null, res[998].exec("*** Failers ", 3034)); -assertEquals(null, res[998].exec("1.235 ", 3035)); -assertEquals(null, res[998].exec("now is the time for all good men to come to the aid of the party", 3036)); -assertEquals(null, res[998].exec("*** Failers", 3037)); -assertEquals(null, res[998].exec("this is not a line with only words and spaces!", 3038)); -assertEquals("12345a,12345,a", res[999].exec("12345a"), 3039); -assertEquals("12345,1234,5", res[999].exec("12345+ "), 3040); -assertEquals("12345a,12345,a", res[999].exec("12345a"), 3041); -assertEquals(null, res[999].exec("*** Failers", 3042)); -assertEquals("12345,1234,5", res[999].exec("12345+ "), 3043); -assertEquals(null, res[999].exec("aaab", 3044)); -assertEquals(null, res[999].exec("aaab", 3045)); -assertEquals(null, res[999].exec("aaab", 3046)); -assertEquals(null, res[999].exec("aaabbbccc", 3047)); -assertEquals(null, res[999].exec("aaabbbbccccd", 3048)); -assertEquals("aaabbbbcccc,ccc", res[1000].exec("aaabbbbccccd"), 3049); -assertEquals("abc,b", res[1000].exec("((abc(ade)ufh()()x"), 3050); -assertEquals(null, res[1000].exec("", 3051)); -assertEquals("abc,b", res[1000].exec("(abc)"), 3052); -assertEquals("abc,b", res[1000].exec("(abc(def)xyz)"), 3053); -assertEquals(null, res[1000].exec("*** Failers", 3054)); -assertEquals(null, res[1000].exec("ab", 3055)); -assertEquals(null, res[1000].exec("Ab", 3056)); -assertEquals(null, res[1000].exec("*** Failers ", 3057)); -assertEquals(null, res[1000].exec("aB", 3058)); -assertEquals(null, res[1000].exec("AB", 3059)); -assertEquals(null, res[1000].exec(" ", 3060)); -assertEquals("bc,b", res[1000].exec("a bcd e"), 3061); -assertEquals(null, res[1000].exec("*** Failers", 3062)); -assertEquals("c,", res[1000].exec("a b cd e"), 3063); -assertEquals("abc,b", res[1000].exec("abcd e "), 3064); -assertEquals("bc,b", res[1000].exec("a bcde "), 3065); -assertEquals("bc,b", res[1000].exec("a bcde f"), 3066); -assertEquals(null, res[1000].exec("*** Failers", 3067)); -assertEquals("abc,b", res[1000].exec("abcdef "), 3068); -assertEquals("abc,b", res[1000].exec("abc"), 3069); -assertEquals("c,", res[1000].exec("aBc"), 3070); -assertEquals(null, res[1000].exec("*** Failers", 3071)); -assertEquals(null, res[1000].exec("abC", 3072)); -assertEquals(null, res[1000].exec("aBC ", 3073)); -assertEquals("bc,b", res[1000].exec("Abc"), 3074); -assertEquals("c,", res[1000].exec("ABc"), 3075); -assertEquals(null, res[1000].exec("ABC", 3076)); -assertEquals(null, res[1000].exec("AbC", 3077)); -assertEquals(null, res[1000].exec("", 3078)); -assertEquals("abc,b", res[1000].exec("abc"), 3079); -assertEquals("c,", res[1000].exec("aBc"), 3080); -assertEquals(null, res[1000].exec("*** Failers ", 3081)); -assertEquals(null, res[1000].exec("ABC", 3082)); -assertEquals(null, res[1000].exec("abC", 3083)); -assertEquals(null, res[1000].exec("aBC", 3084)); -assertEquals(null, res[1000].exec("", 3085)); -assertEquals("c,", res[1000].exec("aBc"), 3086); -assertEquals("c,", res[1000].exec("aBBc"), 3087); -assertEquals(null, res[1000].exec("*** Failers ", 3088)); -assertEquals(null, res[1000].exec("aBC", 3089)); -assertEquals(null, res[1000].exec("aBBC", 3090)); -assertEquals(null, res[1000].exec("", 3091)); -assertEquals("abc,b", res[1000].exec("abcd"), 3092); -assertEquals(null, res[1000].exec("abCd", 3093)); -assertEquals(null, res[1000].exec("*** Failers", 3094)); -assertEquals(null, res[1000].exec("aBCd", 3095)); -assertEquals("abc,b", res[1000].exec("abcD "), 3096); -assertEquals(null, res[1000].exec("", 3097)); -assertEquals(null, res[1000].exec("more than million", 3098)); -assertEquals(null, res[1000].exec("more than MILLION", 3099)); -assertEquals(null, res[1000].exec("more \n than Million ", 3100)); -assertEquals(null, res[1000].exec("*** Failers", 3101)); -assertEquals(null, res[1000].exec("MORE THAN MILLION ", 3102)); -assertEquals(null, res[1000].exec("more \n than \n million ", 3103)); -assertEquals(null, res[1000].exec("more than million", 3104)); -assertEquals(null, res[1000].exec("more than MILLION", 3105)); -assertEquals(null, res[1000].exec("more \n than Million ", 3106)); -assertEquals(null, res[1000].exec("*** Failers", 3107)); -assertEquals(null, res[1000].exec("MORE THAN MILLION ", 3108)); -assertEquals(null, res[1000].exec("more \n than \n million ", 3109)); -assertEquals(null, res[1000].exec("", 3110)); -assertEquals("abc,b", res[1000].exec("abc"), 3111); -assertEquals("bc,b", res[1000].exec("aBbc"), 3112); -assertEquals("c,", res[1000].exec("aBBc "), 3113); -assertEquals(null, res[1000].exec("*** Failers", 3114)); -assertEquals("bc,b", res[1000].exec("Abc"), 3115); -assertEquals(null, res[1000].exec("abAb ", 3116)); -assertEquals(null, res[1000].exec("abbC ", 3117)); -assertEquals(null, res[1000].exec("", 3118)); -assertEquals("abc,b", res[1000].exec("abc"), 3119); -assertEquals("c,", res[1000].exec("aBc"), 3120); -assertEquals(null, res[1000].exec("*** Failers", 3121)); -assertEquals(null, res[1000].exec("Ab ", 3122)); -assertEquals(null, res[1000].exec("abC", 3123)); -assertEquals(null, res[1000].exec("aBC ", 3124)); -assertEquals(null, res[1000].exec("", 3125)); -assertEquals("c,", res[1000].exec("abxxc"), 3126); -assertEquals("c,", res[1000].exec("aBxxc"), 3127); -assertEquals(null, res[1000].exec("*** Failers", 3128)); -assertEquals("c,", res[1000].exec("Abxxc"), 3129); -assertEquals("c,", res[1000].exec("ABxxc"), 3130); -assertEquals(null, res[1000].exec("abxxC ", 3131)); -assertEquals("abc,b", res[1000].exec("abc:"), 3132); -assertEquals(null, res[1000].exec("12", 3133)); -assertEquals(null, res[1000].exec("*** Failers", 3134)); -assertEquals(null, res[1000].exec("123", 3135)); -assertEquals(null, res[1000].exec("xyz ", 3136)); -assertEquals("abc,b", res[1000].exec("abc:"), 3137); -assertEquals(null, res[1000].exec("12", 3138)); -assertEquals(null, res[1000].exec("*** Failers", 3139)); -assertEquals(null, res[1000].exec("123", 3140)); -assertEquals(null, res[1000].exec("xyz ", 3141)); -assertEquals(null, res[1000].exec("", 3142)); -assertEquals(null, res[1000].exec("foobar", 3143)); -assertEquals("c,", res[1000].exec("cat"), 3144); -assertEquals("c,", res[1000].exec("fcat"), 3145); -assertEquals("c,", res[1000].exec("focat "), 3146); -assertEquals(null, res[1000].exec("*** Failers", 3147)); -assertEquals("c,", res[1000].exec("foocat "), 3148); -assertEquals(null, res[1000].exec("foobar", 3149)); -assertEquals("c,", res[1000].exec("cat"), 3150); -assertEquals("c,", res[1000].exec("fcat"), 3151); -assertEquals("c,", res[1000].exec("focat "), 3152); -assertEquals(null, res[1000].exec("*** Failers", 3153)); -assertEquals("c,", res[1000].exec("foocat "), 3154); -assertEquals(null, res[1000].exec("a", 3155)); -assertEquals(null, res[1000].exec("aa", 3156)); -assertEquals(null, res[1000].exec("aaaa", 3157)); -assertEquals(null, res[1000].exec("", 3158)); -assertEquals("abc,abc", res[1001].exec("abc"), 3159); -assertEquals("abcabc,abc", res[1001].exec("abcabc"), 3160); -assertEquals("abcabcabc,abc", res[1001].exec("abcabcabc"), 3161); -assertEquals(",", res[1001].exec("xyz "), 3162); -assertEquals("a,a", res[1002].exec("a"), 3163); -assertEquals("aaaaa,aaaaa", res[1002].exec("aaaaa "), 3164); -assertEquals("a,a", res[1003].exec("a"), 3165); -assertEquals("b,b", res[1003].exec("b"), 3166); -assertEquals("ababab,ababab", res[1003].exec("ababab"), 3167); -assertEquals("aaaab,aaaab", res[1003].exec("aaaabcde"), 3168); -assertEquals("bbbb,bbbb", res[1003].exec("bbbb "), 3169); -assertEquals("b,b", res[1004].exec("b"), 3170); -assertEquals("bbbb,bbbb", res[1004].exec("bbbb"), 3171); -assertEquals(",", res[1004].exec("aaa "), 3172); -assertEquals("cccc,cccc", res[1005].exec("cccc"), 3173); -assertEquals(",", res[1005].exec("abab "), 3174); -assertEquals("a,a", res[1006].exec("a"), 3175); -assertEquals("aaaa,a", res[1006].exec("aaaa "), 3176); -assertEquals("a,a", res[1007].exec("a"), 3177); -assertEquals("b,b", res[1007].exec("b"), 3178); -assertEquals("abab,b", res[1007].exec("abab"), 3179); -assertEquals("baba,a", res[1007].exec("baba "), 3180); -assertEquals("b,b", res[1008].exec("b"), 3181); -assertEquals("bbbb,b", res[1008].exec("bbbb"), 3182); -assertEquals(",", res[1008].exec("aaa "), 3183); -assertEquals("c,c", res[1009].exec("c"), 3184); -assertEquals("cccc,c", res[1009].exec("cccc"), 3185); -assertEquals(",", res[1009].exec("baba "), 3186); -assertEquals(",", res[1009].exec("a"), 3187); -assertEquals(",", res[1009].exec("aaabcde "), 3188); -assertEquals(",", res[1009].exec("aaaaa"), 3189); -assertEquals(",", res[1009].exec("aabbaa "), 3190); -assertEquals(",", res[1009].exec("aaaaa"), 3191); -assertEquals(",", res[1009].exec("aabbaa "), 3192); -assertEquals("12-sep-98,8", res[1009].exec("12-sep-98"), 3193); -assertEquals("12-09-98,8", res[1009].exec("12-09-98"), 3194); -assertEquals("*** F,F", res[1009].exec("*** Failers"), 3195); -assertEquals("sep-12-98,8", res[1009].exec("sep-12-98"), 3196); -assertEquals(" , ", res[1009].exec(" "), 3197); -assertEquals("s,s", res[1009].exec("saturday"), 3198); -assertEquals("sund,d", res[1009].exec("sunday"), 3199); -assertEquals("S,S", res[1009].exec("Saturday"), 3200); -assertEquals("Sund,d", res[1009].exec("Sunday"), 3201); -assertEquals("SATURDAY,Y", res[1009].exec("SATURDAY"), 3202); -assertEquals("SUNDAY,Y", res[1009].exec("SUNDAY"), 3203); -assertEquals("SunD,D", res[1009].exec("SunDay"), 3204); -assertEquals(",", res[1009].exec("abcx"), 3205); -assertEquals(",", res[1009].exec("aBCx"), 3206); -assertEquals(",", res[1009].exec("bbx"), 3207); -assertEquals("BBx,x", res[1009].exec("BBx"), 3208); -assertEquals("*** F,F", res[1009].exec("*** Failers"), 3209); -assertEquals(",", res[1009].exec("abcX"), 3210); -assertEquals(",", res[1009].exec("aBCX"), 3211); -assertEquals(",", res[1009].exec("bbX"), 3212); -assertEquals("BBX , ", res[1009].exec("BBX "), 3213); -assertEquals(",", res[1009].exec("ac"), 3214); -assertEquals(",", res[1009].exec("aC"), 3215); -assertEquals(",", res[1009].exec("bD"), 3216); -assertEquals("eleph,h", res[1009].exec("elephant"), 3217); -assertEquals("Europe , ", res[1009].exec("Europe "), 3218); -assertEquals("frog,g", res[1009].exec("frog"), 3219); -assertEquals("Fr,r", res[1009].exec("France"), 3220); -assertEquals("*** F,F", res[1009].exec("*** Failers"), 3221); -assertEquals("Afric,c", res[1009].exec("Africa "), 3222); -assertEquals(",", res[1009].exec("ab"), 3223); -assertEquals(",", res[1009].exec("aBd"), 3224); -assertEquals("xy,y", res[1009].exec("xy"), 3225); -assertEquals("xY,Y", res[1009].exec("xY"), 3226); -assertEquals("ze,e", res[1009].exec("zebra"), 3227); -assertEquals("Z,Z", res[1009].exec("Zambesi"), 3228); -assertEquals("*** F,F", res[1009].exec("*** Failers"), 3229); -assertEquals(",", res[1009].exec("aCD "), 3230); -assertEquals("XY , ", res[1009].exec("XY "), 3231); -assertEquals("foo\n,\n", res[1009].exec("foo\nbar"), 3232); -assertEquals("*** F,F", res[1009].exec("*** Failers"), 3233); -assertEquals(",", res[1009].exec("bar"), 3234); -assertEquals(",", res[1009].exec("baz\nbar "), 3235); -assertEquals(",", res[1009].exec("barbaz"), 3236); -assertEquals(",", res[1009].exec("barbarbaz "), 3237); -assertEquals("koo,o", res[1009].exec("koobarbaz "), 3238); -assertEquals("*** F,F", res[1009].exec("*** Failers"), 3239); -assertEquals(",", res[1009].exec("baz"), 3240); -assertEquals("foo,o", res[1009].exec("foobarbaz "), 3241); -assertEquals("abc", res[1012].exec("abc"), 3242); -assertEquals("abc", res[1012].exec("xabcy"), 3243); -assertEquals("abc", res[1012].exec("ababc"), 3244); -assertEquals(null, res[1012].exec("*** Failers", 3245)); -assertEquals(null, res[1012].exec("xbc", 3246)); -assertEquals(null, res[1012].exec("axc", 3247)); -assertEquals(null, res[1012].exec("abx", 3248)); -assertEquals("abc", res[1013].exec("abc"), 3249); -assertEquals("abc", res[1014].exec("abc"), 3250); -assertEquals("abbc", res[1014].exec("abbc"), 3251); -assertEquals("abbbbc", res[1014].exec("abbbbc"), 3252); -assertEquals("a", res[1015].exec("abbbbc"), 3253); -assertEquals("abbb", res[1016].exec("abbbbc"), 3254); -assertEquals("abbbbc", res[1017].exec("abbbbc"), 3255); -assertEquals("abbc", res[1018].exec("abbc"), 3256); -assertEquals(null, res[1018].exec("*** Failers", 3257)); -assertEquals(null, res[1018].exec("abc", 3258)); -assertEquals(null, res[1018].exec("abq", 3259)); -assertEquals("abbbbc", res[1020].exec("abbbbc"), 3260); -assertEquals("abbbbc", res[1021].exec("abbbbc"), 3261); -assertEquals("abbbbc", res[1022].exec("abbbbc"), 3262); -assertEquals("abbbbc", res[1023].exec("abbbbc"), 3263); -assertEquals(null, res[1024].exec("*** Failers", 3264)); -assertEquals(null, res[1024].exec("abq", 3265)); -assertEquals(null, res[1024].exec("abbbbc", 3266)); -assertEquals("abbc", res[1025].exec("abbc"), 3267); -assertEquals("abc", res[1025].exec("abc"), 3268); -assertEquals("abc", res[1026].exec("abc"), 3269); -assertEquals("abc", res[1028].exec("abc"), 3270); -assertEquals("abc", res[1029].exec("abc"), 3271); -assertEquals("abc", res[1030].exec("abc"), 3272); -assertEquals(null, res[1030].exec("*** Failers", 3273)); -assertEquals(null, res[1030].exec("abbbbc", 3274)); -assertEquals(null, res[1030].exec("abcc", 3275)); -assertEquals("abc", res[1031].exec("abcc"), 3276); -assertEquals("abc", res[1033].exec("aabc"), 3277); -assertEquals(null, res[1033].exec("*** Failers", 3278)); -assertEquals("abc", res[1033].exec("aabc"), 3279); -assertEquals(null, res[1033].exec("aabcd", 3280)); -assertEquals("", res[1034].exec("abc"), 3281); -assertEquals("", res[1035].exec("abc"), 3282); -assertEquals("abc", res[1036].exec("abc"), 3283); -assertEquals("axc", res[1036].exec("axc"), 3284); -assertEquals("axyzc", res[1037].exec("axyzc"), 3285); -assertEquals("abd", res[1038].exec("abd"), 3286); -assertEquals(null, res[1038].exec("*** Failers", 3287)); -assertEquals(null, res[1038].exec("axyzd", 3288)); -assertEquals(null, res[1038].exec("abc", 3289)); -assertEquals("ace", res[1039].exec("ace"), 3290); -assertEquals("ac", res[1040].exec("aac"), 3291); -assertEquals("a-", res[1041].exec("a-"), 3292); -assertEquals("a-", res[1042].exec("a-"), 3293); -assertEquals("a]", res[1043].exec("a]"), 3294); -assertEquals(null, res[1044].exec("a]b", 3295)); -assertEquals("aed", res[1045].exec("aed"), 3296); -assertEquals(null, res[1045].exec("*** Failers", 3297)); -assertEquals(null, res[1045].exec("abd", 3298)); -assertEquals(null, res[1045].exec("abd", 3299)); -assertEquals("adc", res[1046].exec("adc"), 3300); -assertEquals(null, res[1047].exec("adc", 3301)); -assertEquals(null, res[1047].exec("*** Failers", 3302)); -assertEquals(null, res[1047].exec("a-c", 3303)); -assertEquals(null, res[1047].exec("a]c", 3304)); -assertEquals("a", res[1048].exec("a-"), 3305); -assertEquals("a", res[1048].exec("-a"), 3306); -assertEquals("a", res[1048].exec("-a-"), 3307); -assertEquals(null, res[1049].exec("*** Failers", 3308)); -assertEquals(null, res[1049].exec("xy", 3309)); -assertEquals(null, res[1049].exec("yz", 3310)); -assertEquals(null, res[1049].exec("xyz", 3311)); -assertEquals("a", res[1050].exec("*** Failers"), 3312); -assertEquals(null, res[1050].exec("a-", 3313)); -assertEquals(null, res[1050].exec("-a", 3314)); -assertEquals(null, res[1050].exec("-a-", 3315)); -assertEquals("y", res[1051].exec("xy"), 3316); -assertEquals("y", res[1052].exec("yz"), 3317); -assertEquals("y", res[1053].exec("xyz"), 3318); -assertEquals("a", res[1054].exec("a"), 3319); -assertEquals("-", res[1055].exec("-"), 3320); -assertEquals("*", res[1055].exec("*** Failers"), 3321); -assertEquals("-", res[1055].exec("-"), 3322); -assertEquals(null, res[1055].exec("a", 3323)); -assertEquals("a b", res[1056].exec("a b"), 3324); -assertEquals("a-b", res[1057].exec("a-b"), 3325); -assertEquals(null, res[1057].exec("*** Failers", 3326)); -assertEquals("a-b", res[1057].exec("a-b"), 3327); -assertEquals(null, res[1057].exec("a b", 3328)); -assertEquals("1", res[1058].exec("1"), 3329); -assertEquals("-", res[1059].exec("-"), 3330); -assertEquals("*", res[1059].exec("*** Failers"), 3331); -assertEquals("-", res[1059].exec("-"), 3332); -assertEquals(null, res[1059].exec("1", 3333)); -assertEquals("a", res[1060].exec("a"), 3334); -assertEquals("-", res[1061].exec("-"), 3335); -assertEquals("*", res[1061].exec("*** Failers"), 3336); -assertEquals("-", res[1061].exec("-"), 3337); -assertEquals(null, res[1061].exec("a", 3338)); -assertEquals("a b", res[1062].exec("a b"), 3339); -assertEquals("a-b", res[1063].exec("a-b"), 3340); -assertEquals(null, res[1063].exec("*** Failers", 3341)); -assertEquals("a-b", res[1063].exec("a-b"), 3342); -assertEquals(null, res[1063].exec("a b", 3343)); -assertEquals("1", res[1064].exec("1"), 3344); -assertEquals("-", res[1065].exec("-"), 3345); -assertEquals("*", res[1065].exec("*** Failers"), 3346); -assertEquals("-", res[1065].exec("-"), 3347); -assertEquals(null, res[1065].exec("1", 3348)); -assertEquals("ab", res[1066].exec("abc"), 3349); -assertEquals("ab", res[1066].exec("abcd"), 3350); -assertEquals("ef,", res[1067].exec("def"), 3351); -assertEquals("a(b", res[1069].exec("a(b"), 3352); -assertEquals(null, res[1069].exec("ab", 3353)); -assertEquals(null, res[1069].exec("a((b", 3354)); -assertEquals(null, res[1070].exec("a\x08", 3355)); -assertEquals("a,a,a", res[1071].exec("abc"), 3356); -assertEquals("abc,a,c", res[1072].exec("abc"), 3357); -assertEquals("abc", res[1073].exec("aabbabc"), 3358); -assertEquals("abc", res[1074].exec("aabbabc"), 3359); -assertEquals("abc", res[1075].exec("abcabc"), 3360); -assertEquals("ab,b", res[1076].exec("ab"), 3361); -assertEquals("ab,b", res[1077].exec("ab"), 3362); -assertEquals("ab,b", res[1078].exec("ab"), 3363); -assertEquals("ab,b", res[1079].exec("ab"), 3364); -assertEquals("a,a", res[1080].exec("ab"), 3365); -assertEquals("a,a", res[1081].exec("ab"), 3366); -assertEquals("cde", res[1082].exec("cde"), 3367); -assertEquals(null, res[1083].exec("*** Failers", 3368)); -assertEquals(null, res[1083].exec("b", 3369)); -assertEquals("abbbcd,c", res[1085].exec("abbbcd"), 3370); -assertEquals("abcd,a", res[1086].exec("abcd"), 3371); -assertEquals("e", res[1087].exec("e"), 3372); -assertEquals("ef,e", res[1088].exec("ef"), 3373); -assertEquals("abcdefg", res[1089].exec("abcdefg"), 3374); -assertEquals("ab", res[1090].exec("xabyabbbz"), 3375); -assertEquals("a", res[1090].exec("xayabbbz"), 3376); -assertEquals("cde,cd", res[1091].exec("abcde"), 3377); -assertEquals("hij", res[1092].exec("hij"), 3378); -assertEquals("ef,", res[1094].exec("abcdef"), 3379); -assertEquals("bcd,b", res[1095].exec("abcd"), 3380); -assertEquals("abc,a", res[1096].exec("abc"), 3381); -assertEquals("abc,bc", res[1097].exec("abc"), 3382); -assertEquals("abcd,bc,d", res[1098].exec("abcd"), 3383); -assertEquals("abcd,bc,d", res[1099].exec("abcd"), 3384); -assertEquals("abcd,b,cd", res[1100].exec("abcd"), 3385); -assertEquals("adcdcde", res[1101].exec("adcdcde"), 3386); -assertEquals(null, res[1102].exec("*** Failers", 3387)); -assertEquals(null, res[1102].exec("abcde", 3388)); -assertEquals(null, res[1102].exec("adcdcde", 3389)); -assertEquals("abc,ab", res[1103].exec("abc"), 3390); -assertEquals("abcd,abc,a,b,d", res[1104].exec("abcd"), 3391); -assertEquals("alpha", res[1105].exec("alpha"), 3392); -assertEquals("bh,", res[1106].exec("abh"), 3393); -assertEquals("effgz,effgz,", res[1107].exec("effgz"), 3394); -assertEquals("ij,ij,j", res[1107].exec("ij"), 3395); -assertEquals("effgz,effgz,", res[1107].exec("reffgz"), 3396); -assertEquals(null, res[1107].exec("*** Failers", 3397)); -assertEquals(null, res[1107].exec("effg", 3398)); -assertEquals(null, res[1107].exec("bcdd", 3399)); -assertEquals("a,a,a,a,a,a,a,a,a,a,a", res[1108].exec("a"), 3400); -assertEquals("a,a,a,a,a,a,a,a,a,a", res[1109].exec("a"), 3401); -assertEquals(null, res[1110].exec("*** Failers", 3402)); -assertEquals(null, res[1110].exec("aa", 3403)); -assertEquals(null, res[1110].exec("uh-uh", 3404)); -assertEquals("multiple words", res[1111].exec("multiple words, yeah"), 3405); -assertEquals("abcde,ab,de", res[1112].exec("abcde"), 3406); -assertEquals("(a, b),a,b", res[1113].exec("(a, b)"), 3407); -assertEquals("abcd", res[1115].exec("abcd"), 3408); -assertEquals("abcd,bc", res[1116].exec("abcd"), 3409); -assertEquals("ac", res[1117].exec("ac"), 3410); -assertEquals("ABC", res[1118].exec("ABC"), 3411); -assertEquals("ABC", res[1118].exec("XABCY"), 3412); -assertEquals("ABC", res[1118].exec("ABABC"), 3413); -assertEquals(null, res[1118].exec("*** Failers", 3414)); -assertEquals(null, res[1118].exec("aaxabxbaxbbx", 3415)); -assertEquals(null, res[1118].exec("XBC", 3416)); -assertEquals(null, res[1118].exec("AXC", 3417)); -assertEquals(null, res[1118].exec("ABX", 3418)); -assertEquals("ABC", res[1119].exec("ABC"), 3419); -assertEquals("ABC", res[1120].exec("ABC"), 3420); -assertEquals("ABBC", res[1120].exec("ABBC"), 3421); -assertEquals("ABBBBC", res[1121].exec("ABBBBC"), 3422); -assertEquals("ABBBBC", res[1122].exec("ABBBBC"), 3423); -assertEquals("ABBC", res[1123].exec("ABBC"), 3424); -assertEquals(null, res[1124].exec("*** Failers", 3425)); -assertEquals(null, res[1124].exec("ABC", 3426)); -assertEquals(null, res[1124].exec("ABQ", 3427)); -assertEquals("ABBBBC", res[1126].exec("ABBBBC"), 3428); -assertEquals("ABBBBC", res[1127].exec("ABBBBC"), 3429); -assertEquals("ABBBBC", res[1128].exec("ABBBBC"), 3430); -assertEquals("ABBBBC", res[1129].exec("ABBBBC"), 3431); -assertEquals(null, res[1130].exec("*** Failers", 3432)); -assertEquals(null, res[1130].exec("ABQ", 3433)); -assertEquals(null, res[1130].exec("ABBBBC", 3434)); -assertEquals("ABBC", res[1131].exec("ABBC"), 3435); -assertEquals("ABC", res[1131].exec("ABC"), 3436); -assertEquals("ABC", res[1132].exec("ABC"), 3437); -assertEquals("ABC", res[1134].exec("ABC"), 3438); -assertEquals("ABC", res[1135].exec("ABC"), 3439); -assertEquals("ABC", res[1136].exec("ABC"), 3440); -assertEquals(null, res[1136].exec("*** Failers", 3441)); -assertEquals(null, res[1136].exec("ABBBBC", 3442)); -assertEquals(null, res[1136].exec("ABCC", 3443)); -assertEquals("ABC", res[1137].exec("ABCC"), 3444); -assertEquals("ABC", res[1139].exec("AABC"), 3445); -assertEquals("", res[1140].exec("ABC"), 3446); -assertEquals("", res[1141].exec("ABC"), 3447); -assertEquals("ABC", res[1142].exec("ABC"), 3448); -assertEquals("AXC", res[1142].exec("AXC"), 3449); -assertEquals("AXYZC", res[1143].exec("AXYZC"), 3450); -assertEquals(null, res[1144].exec("*** Failers", 3451)); -assertEquals("AABC", res[1144].exec("AABC"), 3452); -assertEquals(null, res[1144].exec("AXYZD", 3453)); -assertEquals("ABD", res[1145].exec("ABD"), 3454); -assertEquals("ACE", res[1146].exec("ACE"), 3455); -assertEquals(null, res[1146].exec("*** Failers", 3456)); -assertEquals(null, res[1146].exec("ABC", 3457)); -assertEquals(null, res[1146].exec("ABD", 3458)); -assertEquals("AC", res[1147].exec("AAC"), 3459); -assertEquals("A-", res[1148].exec("A-"), 3460); -assertEquals("A-", res[1149].exec("A-"), 3461); -assertEquals("A]", res[1150].exec("A]"), 3462); -assertEquals(null, res[1151].exec("A]B", 3463)); -assertEquals("AED", res[1152].exec("AED"), 3464); -assertEquals("ADC", res[1153].exec("ADC"), 3465); -assertEquals(null, res[1153].exec("*** Failers", 3466)); -assertEquals(null, res[1153].exec("ABD", 3467)); -assertEquals(null, res[1153].exec("A-C", 3468)); -assertEquals(null, res[1154].exec("ADC", 3469)); -assertEquals("AB", res[1155].exec("ABC"), 3470); -assertEquals("AB", res[1155].exec("ABCD"), 3471); -assertEquals("EF,", res[1156].exec("DEF"), 3472); -assertEquals(null, res[1157].exec("*** Failers", 3473)); -assertEquals(null, res[1157].exec("A]C", 3474)); -assertEquals(null, res[1157].exec("B", 3475)); -assertEquals("A(B", res[1158].exec("A(B"), 3476); -assertEquals(null, res[1158].exec("AB", 3477)); -assertEquals(null, res[1158].exec("A((B", 3478)); -assertEquals(null, res[1159].exec("AB", 3479)); -assertEquals("A,A,A", res[1160].exec("ABC"), 3480); -assertEquals("ABC,A,C", res[1161].exec("ABC"), 3481); -assertEquals("ABC", res[1162].exec("AABBABC"), 3482); -assertEquals("ABC", res[1163].exec("AABBABC"), 3483); -assertEquals("ABC", res[1164].exec("ABCABC"), 3484); -assertEquals("ABC", res[1165].exec("ABCABC"), 3485); -assertEquals("ABC", res[1166].exec("ABCABC"), 3486); -assertEquals("AB,B", res[1167].exec("AB"), 3487); -assertEquals("AB,B", res[1168].exec("AB"), 3488); -assertEquals("AB,B", res[1169].exec("AB"), 3489); -assertEquals("AB,B", res[1170].exec("AB"), 3490); -assertEquals("A,A", res[1171].exec("AB"), 3491); -assertEquals("A,A", res[1172].exec("AB"), 3492); -assertEquals(",", res[1173].exec("AB"), 3493); -assertEquals("CDE", res[1174].exec("CDE"), 3494); -assertEquals("ABBBCD,C", res[1177].exec("ABBBCD"), 3495); -assertEquals("ABCD,A", res[1178].exec("ABCD"), 3496); -assertEquals("E", res[1179].exec("E"), 3497); -assertEquals("EF,E", res[1180].exec("EF"), 3498); -assertEquals("ABCDEFG", res[1181].exec("ABCDEFG"), 3499); -assertEquals("AB", res[1182].exec("XABYABBBZ"), 3500); -assertEquals("A", res[1182].exec("XAYABBBZ"), 3501); -assertEquals("CDE,CD", res[1183].exec("ABCDE"), 3502); -assertEquals("HIJ", res[1184].exec("HIJ"), 3503); -assertEquals(null, res[1185].exec("ABCDE", 3504)); -assertEquals("EF,", res[1186].exec("ABCDEF"), 3505); -assertEquals("BCD,B", res[1187].exec("ABCD"), 3506); -assertEquals("ABC,A", res[1188].exec("ABC"), 3507); -assertEquals("ABC,BC", res[1189].exec("ABC"), 3508); -assertEquals("ABCD,BC,D", res[1190].exec("ABCD"), 3509); -assertEquals("ABCD,BC,D", res[1191].exec("ABCD"), 3510); -assertEquals("ABCD,B,CD", res[1192].exec("ABCD"), 3511); -assertEquals("ADCDCDE", res[1193].exec("ADCDCDE"), 3512); -assertEquals("ABC,AB", res[1195].exec("ABC"), 3513); -assertEquals("ABCD,ABC,A,B,D", res[1196].exec("ABCD"), 3514); -assertEquals("ALPHA", res[1197].exec("ALPHA"), 3515); -assertEquals("BH,", res[1198].exec("ABH"), 3516); -assertEquals("EFFGZ,EFFGZ,", res[1199].exec("EFFGZ"), 3517); -assertEquals("IJ,IJ,J", res[1199].exec("IJ"), 3518); -assertEquals("EFFGZ,EFFGZ,", res[1199].exec("REFFGZ"), 3519); -assertEquals(null, res[1199].exec("*** Failers", 3520)); -assertEquals(null, res[1199].exec("ADCDCDE", 3521)); -assertEquals(null, res[1199].exec("EFFG", 3522)); -assertEquals(null, res[1199].exec("BCDD", 3523)); -assertEquals("A,A,A,A,A,A,A,A,A,A,A", res[1200].exec("A"), 3524); -assertEquals("A,A,A,A,A,A,A,A,A,A", res[1201].exec("A"), 3525); -assertEquals("A,A", res[1202].exec("A"), 3526); -assertEquals("C,C", res[1203].exec("C"), 3527); -assertEquals(null, res[1204].exec("*** Failers", 3528)); -assertEquals(null, res[1204].exec("AA", 3529)); -assertEquals(null, res[1204].exec("UH-UH", 3530)); -assertEquals("MULTIPLE WORDS", res[1205].exec("MULTIPLE WORDS, YEAH"), 3531); -assertEquals("ABCDE,AB,DE", res[1206].exec("ABCDE"), 3532); -assertEquals("(A, B),A,B", res[1207].exec("(A, B)"), 3533); -assertEquals("ABCD", res[1209].exec("ABCD"), 3534); -assertEquals("ABCD,BC", res[1210].exec("ABCD"), 3535); -assertEquals("AC", res[1211].exec("AC"), 3536); -assertEquals("ad", res[1212].exec("abad"), 3537); -assertEquals("ad", res[1213].exec("abad"), 3538); -assertEquals("ad", res[1214].exec("abad"), 3539); -assertEquals("ace,e", res[1215].exec("ace"), 3540); -assertEquals("ace,e", res[1216].exec("ace"), 3541); -assertEquals("ace,e", res[1217].exec("ace"), 3542); -assertEquals("acd,d", res[1217].exec("acdbcdbe"), 3543); -assertEquals("acdbcdbe,e", res[1218].exec("acdbcdbe"), 3544); -assertEquals("acdb,b", res[1219].exec("acdbcdbe"), 3545); -assertEquals("acdbcdb,b", res[1220].exec("acdbcdbe"), 3546); -assertEquals("acdbcd,d", res[1221].exec("acdbcdbe"), 3547); -assertEquals("foobar,bar,,bar", res[1222].exec("foobar"), 3548); -assertEquals("acdbcdbe,e", res[1223].exec("acdbcdbe"), 3549); -assertEquals("acdbcdbe,e", res[1224].exec("acdbcdbe"), 3550); -assertEquals("acdbcdbe,e", res[1225].exec("acdbcdbe"), 3551); -assertEquals("acdbcdb,b", res[1226].exec("acdbcdbe"), 3552); -assertEquals("acdbcdbe,e", res[1227].exec("acdbcdbe"), 3553); -assertEquals("acdbcdb,b", res[1228].exec("acdbcdbe"), 3554); -assertEquals("ace,c,e", res[1229].exec("ace"), 3555); -assertEquals("AB,A", res[1230].exec("AB"), 3556); -assertEquals(".,.,", res[1231].exec("."), 3557); -assertEquals("<&", res[1232].exec("<&OUT"), 3558); -assertEquals("foobar,,,,b,a,r", res[1233].exec("foobar"), 3559); -assertEquals(",,,,,,", res[1233].exec("ab"), 3560); -assertEquals(",,,,,,", res[1233].exec("*** Failers"), 3561); -assertEquals(",,,,,,", res[1233].exec("cb"), 3562); -assertEquals(",,,,,,", res[1233].exec("b"), 3563); -assertEquals(",,,,,,", res[1233].exec("ab"), 3564); -assertEquals(",,,,,,", res[1233].exec("b"), 3565); -assertEquals(",,,,,,", res[1233].exec("b"), 3566); -assertEquals("aba", res[1234].exec("aba"), 3567); -assertEquals("a", res[1235].exec("aba"), 3568); -assertEquals(",", res[1236].exec("abc"), 3569); -assertEquals("aax,a", res[1237].exec("aax"), 3570); -assertEquals("aax,a,a", res[1238].exec("aax"), 3571); -assertEquals("aax,a,a", res[1239].exec("aax"), 3572); -assertEquals("ab,", res[1240].exec("cab"), 3573); -assertEquals("ab,", res[1241].exec("cab"), 3574); -assertEquals("ab,", res[1241].exec("ab"), 3575); -assertEquals("ab,", res[1241].exec("ab"), 3576); -assertEquals(null, res[1241].exec("Ab", 3577)); -assertEquals(null, res[1241].exec("Ab", 3578)); -assertEquals(null, res[1241].exec("*** Failers", 3579)); -assertEquals(null, res[1241].exec("cb", 3580)); -assertEquals(null, res[1241].exec("aB", 3581)); -assertEquals("ab,", res[1241].exec("ab"), 3582); -assertEquals("ab,", res[1241].exec("ab"), 3583); -assertEquals(null, res[1241].exec("Ab", 3584)); -assertEquals(null, res[1241].exec("Ab", 3585)); -assertEquals(null, res[1241].exec("*** Failers", 3586)); -assertEquals(null, res[1241].exec("aB", 3587)); -assertEquals(null, res[1241].exec("aB", 3588)); -assertEquals("ab,", res[1241].exec("ab"), 3589); -assertEquals("ab,", res[1241].exec("ab"), 3590); -assertEquals(null, res[1241].exec("aB", 3591)); -assertEquals(null, res[1241].exec("aB", 3592)); -assertEquals(null, res[1241].exec("*** Failers", 3593)); -assertEquals(null, res[1241].exec("aB", 3594)); -assertEquals(null, res[1241].exec("Ab", 3595)); -assertEquals(null, res[1241].exec("aB", 3596)); -assertEquals(null, res[1241].exec("aB", 3597)); -assertEquals(null, res[1241].exec("*** Failers", 3598)); -assertEquals(null, res[1241].exec("Ab", 3599)); -assertEquals(null, res[1241].exec("AB", 3600)); -assertEquals("ab,", res[1241].exec("ab"), 3601); -assertEquals("ab,", res[1241].exec("ab"), 3602); -assertEquals(null, res[1241].exec("aB", 3603)); -assertEquals(null, res[1241].exec("aB", 3604)); -assertEquals(null, res[1241].exec("*** Failers", 3605)); -assertEquals(null, res[1241].exec("AB", 3606)); -assertEquals(null, res[1241].exec("Ab", 3607)); -assertEquals(null, res[1241].exec("aB", 3608)); -assertEquals(null, res[1241].exec("aB", 3609)); -assertEquals(null, res[1241].exec("*** Failers", 3610)); -assertEquals(null, res[1241].exec("Ab", 3611)); -assertEquals(null, res[1241].exec("AB", 3612)); -assertEquals(null, res[1241].exec("*** Failers", 3613)); -assertEquals(null, res[1241].exec("AB", 3614)); -assertEquals(null, res[1241].exec("a\nB", 3615)); -assertEquals(null, res[1241].exec("a\nB", 3616)); -assertEquals("cabbbb", res[1242].exec("cabbbb"), 3617); -assertEquals("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", res[1243].exec("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"), 3618); -assertEquals("foobar1234baz", res[1244].exec("foobar1234baz"), 3619); -assertEquals("x~~,~~", res[1245].exec("x~~"), 3620); -assertEquals("aaac", res[1246].exec("aaac"), 3621); -assertEquals("aaac", res[1247].exec("aaac"), 3622); -assertEquals(null, res[1247].exec("*** Failers", 3623)); -assertEquals(null, res[1247].exec("B\nB", 3624)); -assertEquals(null, res[1247].exec("dbcb", 3625)); -assertEquals(null, res[1247].exec("dbaacb", 3626)); -assertEquals(null, res[1247].exec("dbaacb", 3627)); -assertEquals(null, res[1247].exec("cdaccb", 3628)); -assertEquals(null, res[1248].exec("*** Failers", 3629)); -assertEquals(null, res[1248].exec("dbcb", 3630)); -assertEquals(null, res[1248].exec("a--", 3631)); -assertEquals(null, res[1248].exec("a\nb\nc\n", 3632)); -assertEquals(null, res[1248].exec("a\nb\nc\n", 3633)); -assertEquals(null, res[1248].exec("a\nb\n", 3634)); -assertEquals(null, res[1248].exec("a\nb\n", 3635)); -assertEquals(null, res[1248].exec("a\nb\n", 3636)); -assertEquals(null, res[1248].exec("a\nb\n", 3637)); -assertEquals(null, res[1248].exec("a\nb\nc\n", 3638)); -assertEquals(null, res[1248].exec("a\nb\nc\n", 3639)); -assertEquals(null, res[1248].exec("a\nb\nc\n", 3640)); -assertEquals(null, res[1248].exec("a\nb\nc\n", 3641)); -assertEquals(null, res[1250].exec("*** Failers", 3642)); -assertEquals(null, res[1250].exec("a\nb\nc\n", 3643)); -assertEquals(null, res[1250].exec("a\nb\nc\n", 3644)); -assertEquals(null, res[1250].exec("a\nb\nc\n", 3645)); -assertEquals(null, res[1250].exec("a", 3646)); -assertEquals(null, res[1250].exec("*** Failers", 3647)); -assertEquals(null, res[1250].exec("a", 3648)); -assertEquals(null, res[1250].exec("a", 3649)); -assertEquals(null, res[1250].exec("a", 3650)); -assertEquals("one:,one:", res[1251].exec("one:"), 3651); -assertEquals(null, res[1251].exec("a", 3652)); -assertEquals("abcd,,abcd", res[1252].exec("abcd"), 3653); -assertEquals("xy:z:::abcd,xy:z:::,abcd", res[1252].exec("xy:z:::abcd"), 3654); -assertEquals("aexyc,c", res[1253].exec("aexycd"), 3655); -assertEquals("aab,aa", res[1254].exec("caab"), 3656); -assertEquals("abcd,,abcd", res[1255].exec("abcd"), 3657); -assertEquals("xy:z:::abcd,xy:z:::,abcd", res[1255].exec("xy:z:::abcd"), 3658); -assertEquals("Failers,,Failers", res[1255].exec("*** Failers"), 3659); -assertEquals(null, res[1255].exec("abcd:", 3660)); -assertEquals(null, res[1255].exec("abcd:", 3661)); -assertEquals("aexyc,c", res[1256].exec("aexycd"), 3662); -assertEquals(null, res[1257].exec("aaab", 3663)); -assertEquals(":[,:[", res[1258].exec("a:[b]:"), 3664); -assertEquals("=[,=[", res[1259].exec("a=[b]="), 3665); -assertEquals(".[,.[", res[1260].exec("a.[b]."), 3666); -assertEquals(null, res[1260].exec("aaab", 3667)); -assertEquals(null, res[1260].exec("aaab", 3668)); -assertEquals(null, res[1260].exec("((abc(ade)ufh()()x", 3669)); -assertEquals(null, res[1261].exec("*** Failers", 3670)); -assertEquals(null, res[1261].exec("aaab", 3671)); -assertEquals(null, res[1261].exec("a\nb\n", 3672)); -assertEquals(null, res[1262].exec("a\nb\n", 3673)); -assertEquals(null, res[1264].exec("a\nb", 3674)); -assertEquals(null, res[1265].exec("a\nb", 3675)); -assertEquals(null, res[1265].exec("*** Failers", 3676)); -assertEquals(null, res[1265].exec("alphabetabcd", 3677)); -assertEquals(null, res[1265].exec("endingwxyz", 3678)); -assertEquals(null, res[1265].exec("*** Failers", 3679)); -assertEquals(null, res[1265].exec("a rather long string that doesn't end with one of them", 3680)); -assertEquals(null, res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark otherword", 3681)); -assertEquals(null, res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark", 3682)); -assertEquals(null, res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope", 3683)); -assertEquals(null, res[1265].exec("999foo", 3684)); -assertEquals(null, res[1265].exec("123999foo ", 3685)); -assertEquals(null, res[1265].exec("*** Failers", 3686)); -assertEquals(null, res[1265].exec("123abcfoo", 3687)); -assertEquals(null, res[1265].exec("999foo", 3688)); -assertEquals(null, res[1265].exec("123999foo ", 3689)); -assertEquals(null, res[1265].exec("*** Failers", 3690)); -assertEquals(null, res[1265].exec("123abcfoo", 3691)); -assertEquals(null, res[1265].exec("123abcfoo", 3692)); -assertEquals(null, res[1265].exec("123456foo ", 3693)); -assertEquals(null, res[1265].exec("*** Failers", 3694)); -assertEquals(null, res[1265].exec("123999foo ", 3695)); -assertEquals(null, res[1265].exec("123abcfoo ", 3696)); -assertEquals(null, res[1265].exec("123456foo ", 3697)); -assertEquals(null, res[1265].exec("*** Failers", 3698)); -assertEquals(null, res[1265].exec("123999foo ", 3699)); -assertEquals("ZA,A,", res[1266].exec("ZABCDEFG"), 3700); -assertEquals("ZA,A,", res[1267].exec("ZABCDEFG"), 3701); -assertEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3702); -assertEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3703); -assertEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3704); -assertEquals("a", res[1269].exec("abbab"), 3705); -assertEquals("", res[1269].exec("abcde"), 3706); -assertEquals("", res[1269].exec("-things"), 3707); -assertEquals("", res[1269].exec("0digit"), 3708); -assertEquals("", res[1269].exec("*** Failers"), 3709); -assertEquals("", res[1269].exec("bcdef "), 3710); -assertEquals("a", res[1270].exec("abcde"), 3711); -assertEquals("-", res[1270].exec("-things"), 3712); -assertEquals("0", res[1270].exec("0digit"), 3713); -assertEquals(null, res[1270].exec("*** Failers", 3714)); -assertEquals(null, res[1270].exec("bcdef ", 3715)); -assertEquals(null, res[1271].exec("> \x09\n\x0c\x0d\x0b<", 3716)); -assertEquals(null, res[1271].exec(" ", 3717)); -assertEquals(null, res[1272].exec("> \x09\n\x0c\x0d\x0b<", 3718)); -assertEquals(null, res[1272].exec(" ", 3719)); -assertEquals(" \x09\n\x0c\x0d\x0b", res[1273].exec("> \x09\n\x0c\x0d\x0b<"), 3720); -assertEquals(" ", res[1273].exec(" "), 3721); -assertEquals(" \x09\n\x0c\x0d\x0b", res[1274].exec("> \x09\n\x0c\x0d\x0b<"), 3722); -assertEquals(" ", res[1274].exec(" "), 3723); -assertEquals(null, res[1275].exec("ab", 3724)); -assertEquals(null, res[1278].exec("abcabcabc", 3725)); -assertEquals(null, res[1278].exec("abc(*+|abc ", 3726)); -assertEquals(null, res[1279].exec("abc abcabc", 3727)); -assertEquals(null, res[1279].exec("*** Failers", 3728)); -assertEquals(null, res[1279].exec("abcabcabc ", 3729)); -assertEquals(null, res[1280].exec("abc#not comment\n literal ", 3730)); -assertEquals(null, res[1281].exec("abc#not comment\n literal ", 3731)); -assertEquals(null, res[1282].exec("abc#not comment\n literal ", 3732)); -assertEquals(null, res[1283].exec("abc#not comment\n literal ", 3733)); -assertEquals(null, res[1284].exec("abc\\$xyz", 3734)); -assertEquals(null, res[1285].exec("abc$xyz", 3735)); -assertEquals(null, res[1286].exec("abc", 3736)); -assertEquals(null, res[1286].exec("*** Failers", 3737)); -assertEquals(null, res[1286].exec("xyzabc ", 3738)); -assertEquals(null, res[1287].exec("abc1abc2xyzabc3", 3739)); -assertEquals("abc1", res[1288].exec("abc1abc2xyzabc3 "), 3740); -assertEquals(null, res[1288].exec("XabcdY", 3741)); -assertEquals(null, res[1288].exec("*** Failers ", 3742)); -assertEquals(null, res[1288].exec("Xa b c d Y ", 3743)); -assertEquals("abcY", res[1288].exec("XabcY"), 3744); -assertEquals(null, res[1288].exec("AxyzB ", 3745)); -assertEquals(null, res[1288].exec("XabCY", 3746)); -assertEquals(null, res[1288].exec("*** Failers", 3747)); -assertEquals("abcY", res[1288].exec("XabcY "), 3748); -assertEquals(null, res[1288].exec("abCE", 3749)); -assertEquals(null, res[1288].exec("DE", 3750)); -assertEquals(null, res[1288].exec("*** Failers", 3751)); -assertEquals("abcE", res[1288].exec("abcE"), 3752); -assertEquals(null, res[1288].exec("abCe ", 3753)); -assertEquals(null, res[1288].exec("dE", 3754)); -assertEquals(null, res[1288].exec("De ", 3755)); -assertEquals(null, res[1289].exec("z", 3756)); -assertEquals(null, res[1289].exec("a", 3757)); -assertEquals(null, res[1289].exec("-", 3758)); -assertEquals(null, res[1289].exec("d", 3759)); -assertEquals(null, res[1289].exec("] ", 3760)); -assertEquals(null, res[1289].exec("*** Failers", 3761)); -assertEquals(null, res[1289].exec("b ", 3762)); -assertEquals("z", res[1290].exec("z"), 3763); -assertEquals("C", res[1290].exec("C "), 3764); -assertEquals("M", res[1291].exec("M "), 3765); -assertEquals(null, res[1292].exec("", 3766)); -assertEquals(null, res[1292].exec("REGular", 3767)); -assertEquals(null, res[1292].exec("regulaer", 3768)); -assertEquals(null, res[1292].exec("Regex ", 3769)); -assertEquals(null, res[1292].exec("regul\ufffdr ", 3770)); -assertEquals(null, res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3771)); -assertEquals(null, res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3772)); -assertEquals(null, res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3773)); -assertEquals(null, res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3774)); -assertEquals(null, res[1292].exec("\x84XAZXB", 3775)); -assertEquals(null, res[1292].exec("123a", 3776)); -assertEquals(null, res[1292].exec("ac", 3777)); -assertEquals("b,", res[1292].exec("bbbbc"), 3778); -assertEquals("ab,a", res[1292].exec("abc"), 3779); -assertEquals(null, res[1292].exec("*** Failers", 3780)); -assertEquals("b,", res[1292].exec("bca"), 3781); -assertEquals(null, res[1292].exec("", 3782)); -assertEquals("ab,a", res[1292].exec("abc"), 3783); -assertEquals(null, res[1292].exec("*** Failers", 3784)); -assertEquals("b,", res[1292].exec("bca"), 3785); -assertEquals("ab,a", res[1292].exec("abc"), 3786); -assertEquals(null, res[1292].exec("*** Failers", 3787)); -assertEquals(null, res[1292].exec("def ", 3788)); -assertEquals(null, res[1292].exec("", 3789)); -assertEquals("ab,a", res[1292].exec("abc"), 3790); -assertEquals(null, res[1292].exec("*** Failers", 3791)); -assertEquals(null, res[1292].exec("def ", 3792)); -assertEquals(null, res[1292].exec("", 3793)); -assertEquals("line\nbreak", res[1293].exec("this is a line\nbreak"), 3794); -assertEquals("line\nbreak", res[1293].exec("line one\nthis is a line\nbreak in the second line "), 3795); -assertEquals("line\nbreak", res[1294].exec("this is a line\nbreak"), 3796); -assertEquals(null, res[1294].exec("** Failers ", 3797)); -assertEquals("line\nbreak", res[1294].exec("line one\nthis is a line\nbreak in the second line "), 3798); -assertEquals("line\nbreak", res[1295].exec("this is a line\nbreak"), 3799); -assertEquals(null, res[1295].exec("** Failers ", 3800)); -assertEquals("line\nbreak", res[1295].exec("line one\nthis is a line\nbreak in the second line "), 3801); -assertEquals(null, res[1296].exec("123P", 3802)); -assertEquals(null, res[1296].exec("a4PR", 3803)); -assertEquals(null, res[1297].exec("123P", 3804)); -assertEquals(null, res[1297].exec("4PR", 3805)); -assertEquals("", res[1298].exec("a\nb\nc\n"), 3806); -assertEquals("", res[1298].exec(" "), 3807); -assertEquals("", res[1298].exec("A\nC\nC\n "), 3808); -assertEquals("", res[1298].exec("AB"), 3809); -assertEquals("", res[1298].exec("aB "), 3810); -assertEquals("", res[1298].exec("AB"), 3811); -assertEquals("", res[1298].exec("aB "), 3812); -assertEquals("", res[1298].exec("AB"), 3813); -assertEquals("", res[1298].exec("aB "), 3814); -assertEquals("", res[1298].exec("AB"), 3815); -assertEquals("", res[1298].exec("aB "), 3816); -assertEquals("Content-Type:xxxxxyyy ", res[1299].exec("Content-Type:xxxxxyyy "), 3817); -assertEquals("Content-Type:xxxxxyyyz", res[1300].exec("Content-Type:xxxxxyyyz"), 3818); -assertEquals("Content-Type:xxxyyy ", res[1301].exec("Content-Type:xxxyyy "), 3819); -assertEquals("Content-Type:xxxyyyz", res[1302].exec("Content-Type:xxxyyyz"), 3820); -assertEquals("abc", res[1303].exec("xyz\nabc"), 3821); -assertEquals("abc", res[1303].exec("xyz\nabc<lf>"), 3822); -assertEquals("abc", res[1303].exec("xyz\x0d\nabc<lf>"), 3823); -assertEquals("abc", res[1303].exec("xyz\x0dabc<cr>"), 3824); -assertEquals("abc", res[1303].exec("xyz\x0d\nabc<crlf>"), 3825); -assertEquals(null, res[1303].exec("** Failers ", 3826)); -assertEquals("abc", res[1303].exec("xyz\nabc<cr>"), 3827); -assertEquals("abc", res[1303].exec("xyz\x0d\nabc<cr>"), 3828); -assertEquals("abc", res[1303].exec("xyz\nabc<crlf>"), 3829); -assertEquals("abc", res[1303].exec("xyz\x0dabc<crlf>"), 3830); -assertEquals("abc", res[1303].exec("xyz\x0dabc<lf>"), 3831); -assertEquals("abc", res[1304].exec("xyzabc"), 3832); -assertEquals("abc", res[1304].exec("xyzabc\n "), 3833); -assertEquals("abc", res[1304].exec("xyzabc\npqr "), 3834); -assertEquals("abc", res[1304].exec("xyzabc\x0d<cr> "), 3835); -assertEquals("abc", res[1304].exec("xyzabc\x0dpqr<cr> "), 3836); -assertEquals("abc", res[1304].exec("xyzabc\x0d\n<crlf> "), 3837); -assertEquals("abc", res[1304].exec("xyzabc\x0d\npqr<crlf> "), 3838); -assertEquals(null, res[1304].exec("** Failers", 3839)); -assertEquals("abc", res[1304].exec("xyzabc\x0d "), 3840); -assertEquals("abc", res[1304].exec("xyzabc\x0dpqr "), 3841); -assertEquals("abc", res[1304].exec("xyzabc\x0d\n "), 3842); -assertEquals("abc", res[1304].exec("xyzabc\x0d\npqr "), 3843); -assertEquals("abc", res[1305].exec("xyz\x0dabcdef"), 3844); -assertEquals("abc", res[1305].exec("xyz\nabcdef<lf>"), 3845); -assertEquals(null, res[1305].exec("** Failers ", 3846)); -assertEquals("abc", res[1305].exec("xyz\nabcdef"), 3847); -assertEquals(null, res[1305].exec(" ", 3848)); -assertEquals("abc", res[1306].exec("xyz\nabcdef"), 3849); -assertEquals("abc", res[1306].exec("xyz\x0dabcdef<cr>"), 3850); -assertEquals(null, res[1306].exec("** Failers ", 3851)); -assertEquals("abc", res[1306].exec("xyz\x0dabcdef"), 3852); -assertEquals(null, res[1306].exec(" ", 3853)); -assertEquals("abc", res[1307].exec("xyz\x0d\nabcdef"), 3854); -assertEquals("abc", res[1307].exec("xyz\x0dabcdef<cr>"), 3855); -assertEquals(null, res[1307].exec("** Failers ", 3856)); -assertEquals("abc", res[1307].exec("xyz\x0dabcdef"), 3857); -assertEquals("abc", res[1308].exec("abc\ndef"), 3858); -assertEquals("abc", res[1308].exec("abc\x0ddef"), 3859); -assertEquals("abc", res[1308].exec("abc\x0d\ndef"), 3860); -assertEquals("<cr>abc", res[1308].exec("<cr>abc\ndef"), 3861); -assertEquals("<cr>abc", res[1308].exec("<cr>abc\x0ddef"), 3862); -assertEquals("<cr>abc", res[1308].exec("<cr>abc\x0d\ndef"), 3863); -assertEquals("<crlf>abc", res[1308].exec("<crlf>abc\ndef"), 3864); -assertEquals("<crlf>abc", res[1308].exec("<crlf>abc\x0ddef"), 3865); -assertEquals("<crlf>abc", res[1308].exec("<crlf>abc\x0d\ndef"), 3866); -assertEquals(null, res[1309].exec("abc\ndef", 3867)); -assertEquals(null, res[1309].exec("abc\x0ddef", 3868)); -assertEquals(null, res[1309].exec("abc\x0d\ndef", 3869)); -assertEquals("abc=xyz\\,", res[1310].exec("abc=xyz\\\npqr"), 3870); -assertEquals("aaaa,a,", res[1311].exec("aaaa"), 3871); -assertEquals("aaaa", res[1312].exec("aaaa"), 3872); -assertEquals("aaaa,a,", res[1313].exec("aaaa"), 3873); -assertEquals("aaaa", res[1314].exec("aaaa"), 3874); -assertEquals(null, res[1317].exec("a\x0db", 3875)); -assertEquals(null, res[1317].exec("a\nb<cr> ", 3876)); -assertEquals(null, res[1317].exec("** Failers", 3877)); -assertEquals(null, res[1317].exec("a\nb", 3878)); -assertEquals(null, res[1317].exec("a\nb<any>", 3879)); -assertEquals(null, res[1317].exec("a\x0db<cr> ", 3880)); -assertEquals(null, res[1317].exec("a\x0db<any> ", 3881)); -assertEquals("abc1", res[1318].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 3882); -assertEquals("abc1", res[1319].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 3883); -assertEquals(null, res[1320].exec("a\nb", 3884)); -assertEquals(null, res[1320].exec("a\x0db", 3885)); -assertEquals(null, res[1320].exec("a\x0d\nb", 3886)); -assertEquals(null, res[1320].exec("a\x0bb", 3887)); -assertEquals(null, res[1320].exec("a\x0cb", 3888)); -assertEquals(null, res[1320].exec("a\x85b ", 3889)); -assertEquals(null, res[1320].exec("** Failers", 3890)); -assertEquals(null, res[1320].exec("a\n\x0db ", 3891)); -assertEquals("ab", res[1321].exec("ab"), 3892); -assertEquals(null, res[1321].exec("a\nb", 3893)); -assertEquals(null, res[1321].exec("a\x0db", 3894)); -assertEquals(null, res[1321].exec("a\x0d\nb", 3895)); -assertEquals(null, res[1321].exec("a\x0bb", 3896)); -assertEquals(null, res[1321].exec("a\x0cb", 3897)); -assertEquals(null, res[1321].exec("a\x85b ", 3898)); -assertEquals(null, res[1321].exec("a\n\x0db ", 3899)); -assertEquals(null, res[1321].exec("a\n\x0d\x85\x0cb ", 3900)); -assertEquals(null, res[1322].exec("a\nb", 3901)); -assertEquals(null, res[1322].exec("a\x0db", 3902)); -assertEquals(null, res[1322].exec("a\x0d\nb", 3903)); -assertEquals(null, res[1322].exec("a\x0bb", 3904)); -assertEquals(null, res[1322].exec("a\x0cb", 3905)); -assertEquals(null, res[1322].exec("a\x85b ", 3906)); -assertEquals(null, res[1322].exec("a\n\x0db ", 3907)); -assertEquals(null, res[1322].exec("a\n\x0d\x85\x0cb ", 3908)); -assertEquals(null, res[1322].exec("** Failers", 3909)); -assertEquals(null, res[1322].exec("ab ", 3910)); -assertEquals(null, res[1323].exec("a\nb", 3911)); -assertEquals(null, res[1323].exec("a\n\x0db", 3912)); -assertEquals(null, res[1323].exec("a\n\x0d\x85b", 3913)); -assertEquals(null, res[1323].exec("a\x0d\n\x0d\nb ", 3914)); -assertEquals(null, res[1323].exec("a\x0d\n\x0d\n\x0d\nb ", 3915)); -assertEquals(null, res[1323].exec("a\n\x0d\n\x0db", 3916)); -assertEquals(null, res[1323].exec("a\n\n\x0d\nb ", 3917)); -assertEquals(null, res[1323].exec("** Failers", 3918)); -assertEquals(null, res[1323].exec("a\n\n\n\x0db", 3919)); -assertEquals(null, res[1323].exec("a\x0d", 3920)); -assertEquals("aRb", res[1324].exec("aRb"), 3921); -assertEquals(null, res[1324].exec("** Failers", 3922)); -assertEquals(null, res[1324].exec("a\nb ", 3923)); -assertEquals("afoo", res[1325].exec("afoo"), 3924); -assertEquals(null, res[1325].exec("** Failers ", 3925)); -assertEquals(null, res[1325].exec("\x0d\nfoo ", 3926)); -assertEquals(null, res[1325].exec("\nfoo ", 3927)); -assertEquals("afoo", res[1326].exec("afoo"), 3928); -assertEquals(null, res[1326].exec("\nfoo ", 3929)); -assertEquals(null, res[1326].exec("** Failers ", 3930)); -assertEquals(null, res[1326].exec("\x0d\nfoo ", 3931)); -assertEquals("afoo", res[1327].exec("afoo"), 3932); -assertEquals(null, res[1327].exec("** Failers ", 3933)); -assertEquals(null, res[1327].exec("\nfoo ", 3934)); -assertEquals(null, res[1327].exec("\x0d\nfoo ", 3935)); -assertEquals("afoo", res[1328].exec("afoo"), 3936); -assertEquals(null, res[1328].exec("\x0d\nfoo ", 3937)); -assertEquals(null, res[1328].exec("\nfoo ", 3938)); -assertEquals("", res[1329].exec("abc\x0d\x0dxyz"), 3939); -assertEquals("", res[1329].exec("abc\n\x0dxyz "), 3940); -assertEquals(null, res[1329].exec("** Failers ", 3941)); -assertEquals("", res[1329].exec("abc\x0d\nxyz"), 3942); -assertEquals("X", res[1330].exec("XABC"), 3943); -assertEquals(null, res[1330].exec("** Failers ", 3944)); -assertEquals("X", res[1330].exec("XABCB"), 3945); -assertEquals(null, res[1330].exec("abc\x0d\n\x0d\n", 3946)); -assertEquals(null, res[1330].exec("abc\x0d\n\x0d\n", 3947)); -assertEquals(null, res[1330].exec("abc\x0d\n\x0d\n", 3948)); +assertToStringEquals("", res[986].exec("abc"), 2982); +assertToStringEquals("acb", res[988].exec("acb"), 2983); +assertToStringEquals("a\nb", res[988].exec("a\nb"), 2984); +assertToStringEquals("acb", res[989].exec("acb"), 2985); +assertNull(res[989].exec("*** Failers ", 2986)); +assertNull(res[989].exec("a\nb ", 2987)); +assertToStringEquals("acb", res[990].exec("acb"), 2988); +assertToStringEquals("a\nb", res[990].exec("a\nb "), 2989); +assertToStringEquals("acb", res[991].exec("acb"), 2990); +assertNull(res[991].exec("a\nb ", 2991)); +assertToStringEquals("bac,a", res[992].exec("bac"), 2992); +assertToStringEquals("bbac,a", res[992].exec("bbac"), 2993); +assertToStringEquals("bbbac,a", res[992].exec("bbbac"), 2994); +assertToStringEquals("bbbbac,a", res[992].exec("bbbbac"), 2995); +assertToStringEquals("bbbbbac,a", res[992].exec("bbbbbac "), 2996); +assertToStringEquals("bac,a", res[993].exec("bac"), 2997); +assertToStringEquals("bbac,a", res[993].exec("bbac"), 2998); +assertToStringEquals("bbbac,a", res[993].exec("bbbac"), 2999); +assertToStringEquals("bbbbac,a", res[993].exec("bbbbac"), 3000); +assertToStringEquals("bbbbbac,a", res[993].exec("bbbbbac "), 3001); +assertToStringEquals("x", res[994].exec("x\nb\n"), 3002); +assertToStringEquals("x", res[994].exec("a\x08x\n "), 3003); +assertNull(res[995].exec("\x00{ab} ", 3004)); +assertToStringEquals("CD,", res[996].exec("CD "), 3005); +assertToStringEquals("CD,", res[997].exec("CD "), 3006); +assertNull(res[997].exec("foo", 3007)); +assertNull(res[997].exec("catfood", 3008)); +assertNull(res[997].exec("arfootle", 3009)); +assertNull(res[997].exec("rfoosh", 3010)); +assertNull(res[997].exec("*** Failers", 3011)); +assertNull(res[997].exec("barfoo", 3012)); +assertNull(res[997].exec("towbarfoo", 3013)); +assertNull(res[997].exec("catfood", 3014)); +assertNull(res[997].exec("*** Failers", 3015)); +assertNull(res[997].exec("foo", 3016)); +assertNull(res[997].exec("barfoo", 3017)); +assertNull(res[997].exec("towbarfoo", 3018)); +assertNull(res[997].exec("fooabar", 3019)); +assertNull(res[997].exec("*** Failers", 3020)); +assertNull(res[997].exec("bar", 3021)); +assertNull(res[997].exec("foobbar", 3022)); +assertNull(res[997].exec(" ", 3023)); +assertNull(res[998].exec("abc", 3024)); +assertNull(res[998].exec("*** Failers", 3025)); +assertNull(res[998].exec("abc\n ", 3026)); +assertNull(res[998].exec("qqq\nabc", 3027)); +assertNull(res[998].exec("abc\nzzz", 3028)); +assertNull(res[998].exec("qqq\nabc\nzzz", 3029)); +assertNull(res[998].exec("/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/", 3030)); +assertNull(res[998].exec("/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo", 3031)); +assertNull(res[998].exec("1.230003938", 3032)); +assertNull(res[998].exec("1.875000282", 3033)); +assertNull(res[998].exec("*** Failers ", 3034)); +assertNull(res[998].exec("1.235 ", 3035)); +assertNull(res[998].exec("now is the time for all good men to come to the aid of the party", 3036)); +assertNull(res[998].exec("*** Failers", 3037)); +assertNull(res[998].exec("this is not a line with only words and spaces!", 3038)); +assertToStringEquals("12345a,12345,a", res[999].exec("12345a"), 3039); +assertToStringEquals("12345,1234,5", res[999].exec("12345+ "), 3040); +assertToStringEquals("12345a,12345,a", res[999].exec("12345a"), 3041); +assertNull(res[999].exec("*** Failers", 3042)); +assertToStringEquals("12345,1234,5", res[999].exec("12345+ "), 3043); +assertNull(res[999].exec("aaab", 3044)); +assertNull(res[999].exec("aaab", 3045)); +assertNull(res[999].exec("aaab", 3046)); +assertNull(res[999].exec("aaabbbccc", 3047)); +assertNull(res[999].exec("aaabbbbccccd", 3048)); +assertToStringEquals("aaabbbbcccc,ccc", res[1000].exec("aaabbbbccccd"), 3049); +assertToStringEquals("abc,b", res[1000].exec("((abc(ade)ufh()()x"), 3050); +assertNull(res[1000].exec("", 3051)); +assertToStringEquals("abc,b", res[1000].exec("(abc)"), 3052); +assertToStringEquals("abc,b", res[1000].exec("(abc(def)xyz)"), 3053); +assertNull(res[1000].exec("*** Failers", 3054)); +assertNull(res[1000].exec("ab", 3055)); +assertNull(res[1000].exec("Ab", 3056)); +assertNull(res[1000].exec("*** Failers ", 3057)); +assertNull(res[1000].exec("aB", 3058)); +assertNull(res[1000].exec("AB", 3059)); +assertNull(res[1000].exec(" ", 3060)); +assertToStringEquals("bc,b", res[1000].exec("a bcd e"), 3061); +assertNull(res[1000].exec("*** Failers", 3062)); +assertToStringEquals("c,", res[1000].exec("a b cd e"), 3063); +assertToStringEquals("abc,b", res[1000].exec("abcd e "), 3064); +assertToStringEquals("bc,b", res[1000].exec("a bcde "), 3065); +assertToStringEquals("bc,b", res[1000].exec("a bcde f"), 3066); +assertNull(res[1000].exec("*** Failers", 3067)); +assertToStringEquals("abc,b", res[1000].exec("abcdef "), 3068); +assertToStringEquals("abc,b", res[1000].exec("abc"), 3069); +assertToStringEquals("c,", res[1000].exec("aBc"), 3070); +assertNull(res[1000].exec("*** Failers", 3071)); +assertNull(res[1000].exec("abC", 3072)); +assertNull(res[1000].exec("aBC ", 3073)); +assertToStringEquals("bc,b", res[1000].exec("Abc"), 3074); +assertToStringEquals("c,", res[1000].exec("ABc"), 3075); +assertNull(res[1000].exec("ABC", 3076)); +assertNull(res[1000].exec("AbC", 3077)); +assertNull(res[1000].exec("", 3078)); +assertToStringEquals("abc,b", res[1000].exec("abc"), 3079); +assertToStringEquals("c,", res[1000].exec("aBc"), 3080); +assertNull(res[1000].exec("*** Failers ", 3081)); +assertNull(res[1000].exec("ABC", 3082)); +assertNull(res[1000].exec("abC", 3083)); +assertNull(res[1000].exec("aBC", 3084)); +assertNull(res[1000].exec("", 3085)); +assertToStringEquals("c,", res[1000].exec("aBc"), 3086); +assertToStringEquals("c,", res[1000].exec("aBBc"), 3087); +assertNull(res[1000].exec("*** Failers ", 3088)); +assertNull(res[1000].exec("aBC", 3089)); +assertNull(res[1000].exec("aBBC", 3090)); +assertNull(res[1000].exec("", 3091)); +assertToStringEquals("abc,b", res[1000].exec("abcd"), 3092); +assertNull(res[1000].exec("abCd", 3093)); +assertNull(res[1000].exec("*** Failers", 3094)); +assertNull(res[1000].exec("aBCd", 3095)); +assertToStringEquals("abc,b", res[1000].exec("abcD "), 3096); +assertNull(res[1000].exec("", 3097)); +assertNull(res[1000].exec("more than million", 3098)); +assertNull(res[1000].exec("more than MILLION", 3099)); +assertNull(res[1000].exec("more \n than Million ", 3100)); +assertNull(res[1000].exec("*** Failers", 3101)); +assertNull(res[1000].exec("MORE THAN MILLION ", 3102)); +assertNull(res[1000].exec("more \n than \n million ", 3103)); +assertNull(res[1000].exec("more than million", 3104)); +assertNull(res[1000].exec("more than MILLION", 3105)); +assertNull(res[1000].exec("more \n than Million ", 3106)); +assertNull(res[1000].exec("*** Failers", 3107)); +assertNull(res[1000].exec("MORE THAN MILLION ", 3108)); +assertNull(res[1000].exec("more \n than \n million ", 3109)); +assertNull(res[1000].exec("", 3110)); +assertToStringEquals("abc,b", res[1000].exec("abc"), 3111); +assertToStringEquals("bc,b", res[1000].exec("aBbc"), 3112); +assertToStringEquals("c,", res[1000].exec("aBBc "), 3113); +assertNull(res[1000].exec("*** Failers", 3114)); +assertToStringEquals("bc,b", res[1000].exec("Abc"), 3115); +assertNull(res[1000].exec("abAb ", 3116)); +assertNull(res[1000].exec("abbC ", 3117)); +assertNull(res[1000].exec("", 3118)); +assertToStringEquals("abc,b", res[1000].exec("abc"), 3119); +assertToStringEquals("c,", res[1000].exec("aBc"), 3120); +assertNull(res[1000].exec("*** Failers", 3121)); +assertNull(res[1000].exec("Ab ", 3122)); +assertNull(res[1000].exec("abC", 3123)); +assertNull(res[1000].exec("aBC ", 3124)); +assertNull(res[1000].exec("", 3125)); +assertToStringEquals("c,", res[1000].exec("abxxc"), 3126); +assertToStringEquals("c,", res[1000].exec("aBxxc"), 3127); +assertNull(res[1000].exec("*** Failers", 3128)); +assertToStringEquals("c,", res[1000].exec("Abxxc"), 3129); +assertToStringEquals("c,", res[1000].exec("ABxxc"), 3130); +assertNull(res[1000].exec("abxxC ", 3131)); +assertToStringEquals("abc,b", res[1000].exec("abc:"), 3132); +assertNull(res[1000].exec("12", 3133)); +assertNull(res[1000].exec("*** Failers", 3134)); +assertNull(res[1000].exec("123", 3135)); +assertNull(res[1000].exec("xyz ", 3136)); +assertToStringEquals("abc,b", res[1000].exec("abc:"), 3137); +assertNull(res[1000].exec("12", 3138)); +assertNull(res[1000].exec("*** Failers", 3139)); +assertNull(res[1000].exec("123", 3140)); +assertNull(res[1000].exec("xyz ", 3141)); +assertNull(res[1000].exec("", 3142)); +assertNull(res[1000].exec("foobar", 3143)); +assertToStringEquals("c,", res[1000].exec("cat"), 3144); +assertToStringEquals("c,", res[1000].exec("fcat"), 3145); +assertToStringEquals("c,", res[1000].exec("focat "), 3146); +assertNull(res[1000].exec("*** Failers", 3147)); +assertToStringEquals("c,", res[1000].exec("foocat "), 3148); +assertNull(res[1000].exec("foobar", 3149)); +assertToStringEquals("c,", res[1000].exec("cat"), 3150); +assertToStringEquals("c,", res[1000].exec("fcat"), 3151); +assertToStringEquals("c,", res[1000].exec("focat "), 3152); +assertNull(res[1000].exec("*** Failers", 3153)); +assertToStringEquals("c,", res[1000].exec("foocat "), 3154); +assertNull(res[1000].exec("a", 3155)); +assertNull(res[1000].exec("aa", 3156)); +assertNull(res[1000].exec("aaaa", 3157)); +assertNull(res[1000].exec("", 3158)); +assertToStringEquals("abc,abc", res[1001].exec("abc"), 3159); +assertToStringEquals("abcabc,abc", res[1001].exec("abcabc"), 3160); +assertToStringEquals("abcabcabc,abc", res[1001].exec("abcabcabc"), 3161); +assertToStringEquals(",", res[1001].exec("xyz "), 3162); +assertToStringEquals("a,a", res[1002].exec("a"), 3163); +assertToStringEquals("aaaaa,aaaaa", res[1002].exec("aaaaa "), 3164); +assertToStringEquals("a,a", res[1003].exec("a"), 3165); +assertToStringEquals("b,b", res[1003].exec("b"), 3166); +assertToStringEquals("ababab,ababab", res[1003].exec("ababab"), 3167); +assertToStringEquals("aaaab,aaaab", res[1003].exec("aaaabcde"), 3168); +assertToStringEquals("bbbb,bbbb", res[1003].exec("bbbb "), 3169); +assertToStringEquals("b,b", res[1004].exec("b"), 3170); +assertToStringEquals("bbbb,bbbb", res[1004].exec("bbbb"), 3171); +assertToStringEquals(",", res[1004].exec("aaa "), 3172); +assertToStringEquals("cccc,cccc", res[1005].exec("cccc"), 3173); +assertToStringEquals(",", res[1005].exec("abab "), 3174); +assertToStringEquals("a,a", res[1006].exec("a"), 3175); +assertToStringEquals("aaaa,a", res[1006].exec("aaaa "), 3176); +assertToStringEquals("a,a", res[1007].exec("a"), 3177); +assertToStringEquals("b,b", res[1007].exec("b"), 3178); +assertToStringEquals("abab,b", res[1007].exec("abab"), 3179); +assertToStringEquals("baba,a", res[1007].exec("baba "), 3180); +assertToStringEquals("b,b", res[1008].exec("b"), 3181); +assertToStringEquals("bbbb,b", res[1008].exec("bbbb"), 3182); +assertToStringEquals(",", res[1008].exec("aaa "), 3183); +assertToStringEquals("c,c", res[1009].exec("c"), 3184); +assertToStringEquals("cccc,c", res[1009].exec("cccc"), 3185); +assertToStringEquals(",", res[1009].exec("baba "), 3186); +assertToStringEquals(",", res[1009].exec("a"), 3187); +assertToStringEquals(",", res[1009].exec("aaabcde "), 3188); +assertToStringEquals(",", res[1009].exec("aaaaa"), 3189); +assertToStringEquals(",", res[1009].exec("aabbaa "), 3190); +assertToStringEquals(",", res[1009].exec("aaaaa"), 3191); +assertToStringEquals(",", res[1009].exec("aabbaa "), 3192); +assertToStringEquals("12-sep-98,8", res[1009].exec("12-sep-98"), 3193); +assertToStringEquals("12-09-98,8", res[1009].exec("12-09-98"), 3194); +assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3195); +assertToStringEquals("sep-12-98,8", res[1009].exec("sep-12-98"), 3196); +assertToStringEquals(" , ", res[1009].exec(" "), 3197); +assertToStringEquals("s,s", res[1009].exec("saturday"), 3198); +assertToStringEquals("sund,d", res[1009].exec("sunday"), 3199); +assertToStringEquals("S,S", res[1009].exec("Saturday"), 3200); +assertToStringEquals("Sund,d", res[1009].exec("Sunday"), 3201); +assertToStringEquals("SATURDAY,Y", res[1009].exec("SATURDAY"), 3202); +assertToStringEquals("SUNDAY,Y", res[1009].exec("SUNDAY"), 3203); +assertToStringEquals("SunD,D", res[1009].exec("SunDay"), 3204); +assertToStringEquals(",", res[1009].exec("abcx"), 3205); +assertToStringEquals(",", res[1009].exec("aBCx"), 3206); +assertToStringEquals(",", res[1009].exec("bbx"), 3207); +assertToStringEquals("BBx,x", res[1009].exec("BBx"), 3208); +assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3209); +assertToStringEquals(",", res[1009].exec("abcX"), 3210); +assertToStringEquals(",", res[1009].exec("aBCX"), 3211); +assertToStringEquals(",", res[1009].exec("bbX"), 3212); +assertToStringEquals("BBX , ", res[1009].exec("BBX "), 3213); +assertToStringEquals(",", res[1009].exec("ac"), 3214); +assertToStringEquals(",", res[1009].exec("aC"), 3215); +assertToStringEquals(",", res[1009].exec("bD"), 3216); +assertToStringEquals("eleph,h", res[1009].exec("elephant"), 3217); +assertToStringEquals("Europe , ", res[1009].exec("Europe "), 3218); +assertToStringEquals("frog,g", res[1009].exec("frog"), 3219); +assertToStringEquals("Fr,r", res[1009].exec("France"), 3220); +assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3221); +assertToStringEquals("Afric,c", res[1009].exec("Africa "), 3222); +assertToStringEquals(",", res[1009].exec("ab"), 3223); +assertToStringEquals(",", res[1009].exec("aBd"), 3224); +assertToStringEquals("xy,y", res[1009].exec("xy"), 3225); +assertToStringEquals("xY,Y", res[1009].exec("xY"), 3226); +assertToStringEquals("ze,e", res[1009].exec("zebra"), 3227); +assertToStringEquals("Z,Z", res[1009].exec("Zambesi"), 3228); +assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3229); +assertToStringEquals(",", res[1009].exec("aCD "), 3230); +assertToStringEquals("XY , ", res[1009].exec("XY "), 3231); +assertToStringEquals("foo\n,\n", res[1009].exec("foo\nbar"), 3232); +assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3233); +assertToStringEquals(",", res[1009].exec("bar"), 3234); +assertToStringEquals(",", res[1009].exec("baz\nbar "), 3235); +assertToStringEquals(",", res[1009].exec("barbaz"), 3236); +assertToStringEquals(",", res[1009].exec("barbarbaz "), 3237); +assertToStringEquals("koo,o", res[1009].exec("koobarbaz "), 3238); +assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3239); +assertToStringEquals(",", res[1009].exec("baz"), 3240); +assertToStringEquals("foo,o", res[1009].exec("foobarbaz "), 3241); +assertToStringEquals("abc", res[1012].exec("abc"), 3242); +assertToStringEquals("abc", res[1012].exec("xabcy"), 3243); +assertToStringEquals("abc", res[1012].exec("ababc"), 3244); +assertNull(res[1012].exec("*** Failers", 3245)); +assertNull(res[1012].exec("xbc", 3246)); +assertNull(res[1012].exec("axc", 3247)); +assertNull(res[1012].exec("abx", 3248)); +assertToStringEquals("abc", res[1013].exec("abc"), 3249); +assertToStringEquals("abc", res[1014].exec("abc"), 3250); +assertToStringEquals("abbc", res[1014].exec("abbc"), 3251); +assertToStringEquals("abbbbc", res[1014].exec("abbbbc"), 3252); +assertToStringEquals("a", res[1015].exec("abbbbc"), 3253); +assertToStringEquals("abbb", res[1016].exec("abbbbc"), 3254); +assertToStringEquals("abbbbc", res[1017].exec("abbbbc"), 3255); +assertToStringEquals("abbc", res[1018].exec("abbc"), 3256); +assertNull(res[1018].exec("*** Failers", 3257)); +assertNull(res[1018].exec("abc", 3258)); +assertNull(res[1018].exec("abq", 3259)); +assertToStringEquals("abbbbc", res[1020].exec("abbbbc"), 3260); +assertToStringEquals("abbbbc", res[1021].exec("abbbbc"), 3261); +assertToStringEquals("abbbbc", res[1022].exec("abbbbc"), 3262); +assertToStringEquals("abbbbc", res[1023].exec("abbbbc"), 3263); +assertNull(res[1024].exec("*** Failers", 3264)); +assertNull(res[1024].exec("abq", 3265)); +assertNull(res[1024].exec("abbbbc", 3266)); +assertToStringEquals("abbc", res[1025].exec("abbc"), 3267); +assertToStringEquals("abc", res[1025].exec("abc"), 3268); +assertToStringEquals("abc", res[1026].exec("abc"), 3269); +assertToStringEquals("abc", res[1028].exec("abc"), 3270); +assertToStringEquals("abc", res[1029].exec("abc"), 3271); +assertToStringEquals("abc", res[1030].exec("abc"), 3272); +assertNull(res[1030].exec("*** Failers", 3273)); +assertNull(res[1030].exec("abbbbc", 3274)); +assertNull(res[1030].exec("abcc", 3275)); +assertToStringEquals("abc", res[1031].exec("abcc"), 3276); +assertToStringEquals("abc", res[1033].exec("aabc"), 3277); +assertNull(res[1033].exec("*** Failers", 3278)); +assertToStringEquals("abc", res[1033].exec("aabc"), 3279); +assertNull(res[1033].exec("aabcd", 3280)); +assertToStringEquals("", res[1034].exec("abc"), 3281); +assertToStringEquals("", res[1035].exec("abc"), 3282); +assertToStringEquals("abc", res[1036].exec("abc"), 3283); +assertToStringEquals("axc", res[1036].exec("axc"), 3284); +assertToStringEquals("axyzc", res[1037].exec("axyzc"), 3285); +assertToStringEquals("abd", res[1038].exec("abd"), 3286); +assertNull(res[1038].exec("*** Failers", 3287)); +assertNull(res[1038].exec("axyzd", 3288)); +assertNull(res[1038].exec("abc", 3289)); +assertToStringEquals("ace", res[1039].exec("ace"), 3290); +assertToStringEquals("ac", res[1040].exec("aac"), 3291); +assertToStringEquals("a-", res[1041].exec("a-"), 3292); +assertToStringEquals("a-", res[1042].exec("a-"), 3293); +assertToStringEquals("a]", res[1043].exec("a]"), 3294); +assertNull(res[1044].exec("a]b", 3295)); +assertToStringEquals("aed", res[1045].exec("aed"), 3296); +assertNull(res[1045].exec("*** Failers", 3297)); +assertNull(res[1045].exec("abd", 3298)); +assertNull(res[1045].exec("abd", 3299)); +assertToStringEquals("adc", res[1046].exec("adc"), 3300); +assertNull(res[1047].exec("adc", 3301)); +assertNull(res[1047].exec("*** Failers", 3302)); +assertNull(res[1047].exec("a-c", 3303)); +assertNull(res[1047].exec("a]c", 3304)); +assertToStringEquals("a", res[1048].exec("a-"), 3305); +assertToStringEquals("a", res[1048].exec("-a"), 3306); +assertToStringEquals("a", res[1048].exec("-a-"), 3307); +assertNull(res[1049].exec("*** Failers", 3308)); +assertNull(res[1049].exec("xy", 3309)); +assertNull(res[1049].exec("yz", 3310)); +assertNull(res[1049].exec("xyz", 3311)); +assertToStringEquals("a", res[1050].exec("*** Failers"), 3312); +assertNull(res[1050].exec("a-", 3313)); +assertNull(res[1050].exec("-a", 3314)); +assertNull(res[1050].exec("-a-", 3315)); +assertToStringEquals("y", res[1051].exec("xy"), 3316); +assertToStringEquals("y", res[1052].exec("yz"), 3317); +assertToStringEquals("y", res[1053].exec("xyz"), 3318); +assertToStringEquals("a", res[1054].exec("a"), 3319); +assertToStringEquals("-", res[1055].exec("-"), 3320); +assertToStringEquals("*", res[1055].exec("*** Failers"), 3321); +assertToStringEquals("-", res[1055].exec("-"), 3322); +assertNull(res[1055].exec("a", 3323)); +assertToStringEquals("a b", res[1056].exec("a b"), 3324); +assertToStringEquals("a-b", res[1057].exec("a-b"), 3325); +assertNull(res[1057].exec("*** Failers", 3326)); +assertToStringEquals("a-b", res[1057].exec("a-b"), 3327); +assertNull(res[1057].exec("a b", 3328)); +assertToStringEquals("1", res[1058].exec("1"), 3329); +assertToStringEquals("-", res[1059].exec("-"), 3330); +assertToStringEquals("*", res[1059].exec("*** Failers"), 3331); +assertToStringEquals("-", res[1059].exec("-"), 3332); +assertNull(res[1059].exec("1", 3333)); +assertToStringEquals("a", res[1060].exec("a"), 3334); +assertToStringEquals("-", res[1061].exec("-"), 3335); +assertToStringEquals("*", res[1061].exec("*** Failers"), 3336); +assertToStringEquals("-", res[1061].exec("-"), 3337); +assertNull(res[1061].exec("a", 3338)); +assertToStringEquals("a b", res[1062].exec("a b"), 3339); +assertToStringEquals("a-b", res[1063].exec("a-b"), 3340); +assertNull(res[1063].exec("*** Failers", 3341)); +assertToStringEquals("a-b", res[1063].exec("a-b"), 3342); +assertNull(res[1063].exec("a b", 3343)); +assertToStringEquals("1", res[1064].exec("1"), 3344); +assertToStringEquals("-", res[1065].exec("-"), 3345); +assertToStringEquals("*", res[1065].exec("*** Failers"), 3346); +assertToStringEquals("-", res[1065].exec("-"), 3347); +assertNull(res[1065].exec("1", 3348)); +assertToStringEquals("ab", res[1066].exec("abc"), 3349); +assertToStringEquals("ab", res[1066].exec("abcd"), 3350); +assertToStringEquals("ef,", res[1067].exec("def"), 3351); +assertToStringEquals("a(b", res[1069].exec("a(b"), 3352); +assertNull(res[1069].exec("ab", 3353)); +assertNull(res[1069].exec("a((b", 3354)); +assertNull(res[1070].exec("a\x08", 3355)); +assertToStringEquals("a,a,a", res[1071].exec("abc"), 3356); +assertToStringEquals("abc,a,c", res[1072].exec("abc"), 3357); +assertToStringEquals("abc", res[1073].exec("aabbabc"), 3358); +assertToStringEquals("abc", res[1074].exec("aabbabc"), 3359); +assertToStringEquals("abc", res[1075].exec("abcabc"), 3360); +assertToStringEquals("ab,b", res[1076].exec("ab"), 3361); +assertToStringEquals("ab,b", res[1077].exec("ab"), 3362); +assertToStringEquals("ab,b", res[1078].exec("ab"), 3363); +assertToStringEquals("ab,b", res[1079].exec("ab"), 3364); +assertToStringEquals("a,a", res[1080].exec("ab"), 3365); +assertToStringEquals("a,a", res[1081].exec("ab"), 3366); +assertToStringEquals("cde", res[1082].exec("cde"), 3367); +assertNull(res[1083].exec("*** Failers", 3368)); +assertNull(res[1083].exec("b", 3369)); +assertToStringEquals("abbbcd,c", res[1085].exec("abbbcd"), 3370); +assertToStringEquals("abcd,a", res[1086].exec("abcd"), 3371); +assertToStringEquals("e", res[1087].exec("e"), 3372); +assertToStringEquals("ef,e", res[1088].exec("ef"), 3373); +assertToStringEquals("abcdefg", res[1089].exec("abcdefg"), 3374); +assertToStringEquals("ab", res[1090].exec("xabyabbbz"), 3375); +assertToStringEquals("a", res[1090].exec("xayabbbz"), 3376); +assertToStringEquals("cde,cd", res[1091].exec("abcde"), 3377); +assertToStringEquals("hij", res[1092].exec("hij"), 3378); +assertToStringEquals("ef,", res[1094].exec("abcdef"), 3379); +assertToStringEquals("bcd,b", res[1095].exec("abcd"), 3380); +assertToStringEquals("abc,a", res[1096].exec("abc"), 3381); +assertToStringEquals("abc,bc", res[1097].exec("abc"), 3382); +assertToStringEquals("abcd,bc,d", res[1098].exec("abcd"), 3383); +assertToStringEquals("abcd,bc,d", res[1099].exec("abcd"), 3384); +assertToStringEquals("abcd,b,cd", res[1100].exec("abcd"), 3385); +assertToStringEquals("adcdcde", res[1101].exec("adcdcde"), 3386); +assertNull(res[1102].exec("*** Failers", 3387)); +assertNull(res[1102].exec("abcde", 3388)); +assertNull(res[1102].exec("adcdcde", 3389)); +assertToStringEquals("abc,ab", res[1103].exec("abc"), 3390); +assertToStringEquals("abcd,abc,a,b,d", res[1104].exec("abcd"), 3391); +assertToStringEquals("alpha", res[1105].exec("alpha"), 3392); +assertToStringEquals("bh,", res[1106].exec("abh"), 3393); +assertToStringEquals("effgz,effgz,", res[1107].exec("effgz"), 3394); +assertToStringEquals("ij,ij,j", res[1107].exec("ij"), 3395); +assertToStringEquals("effgz,effgz,", res[1107].exec("reffgz"), 3396); +assertNull(res[1107].exec("*** Failers", 3397)); +assertNull(res[1107].exec("effg", 3398)); +assertNull(res[1107].exec("bcdd", 3399)); +assertToStringEquals("a,a,a,a,a,a,a,a,a,a,a", res[1108].exec("a"), 3400); +assertToStringEquals("a,a,a,a,a,a,a,a,a,a", res[1109].exec("a"), 3401); +assertNull(res[1110].exec("*** Failers", 3402)); +assertNull(res[1110].exec("aa", 3403)); +assertNull(res[1110].exec("uh-uh", 3404)); +assertToStringEquals("multiple words", res[1111].exec("multiple words, yeah"), 3405); +assertToStringEquals("abcde,ab,de", res[1112].exec("abcde"), 3406); +assertToStringEquals("(a, b),a,b", res[1113].exec("(a, b)"), 3407); +assertToStringEquals("abcd", res[1115].exec("abcd"), 3408); +assertToStringEquals("abcd,bc", res[1116].exec("abcd"), 3409); +assertToStringEquals("ac", res[1117].exec("ac"), 3410); +assertToStringEquals("ABC", res[1118].exec("ABC"), 3411); +assertToStringEquals("ABC", res[1118].exec("XABCY"), 3412); +assertToStringEquals("ABC", res[1118].exec("ABABC"), 3413); +assertNull(res[1118].exec("*** Failers", 3414)); +assertNull(res[1118].exec("aaxabxbaxbbx", 3415)); +assertNull(res[1118].exec("XBC", 3416)); +assertNull(res[1118].exec("AXC", 3417)); +assertNull(res[1118].exec("ABX", 3418)); +assertToStringEquals("ABC", res[1119].exec("ABC"), 3419); +assertToStringEquals("ABC", res[1120].exec("ABC"), 3420); +assertToStringEquals("ABBC", res[1120].exec("ABBC"), 3421); +assertToStringEquals("ABBBBC", res[1121].exec("ABBBBC"), 3422); +assertToStringEquals("ABBBBC", res[1122].exec("ABBBBC"), 3423); +assertToStringEquals("ABBC", res[1123].exec("ABBC"), 3424); +assertNull(res[1124].exec("*** Failers", 3425)); +assertNull(res[1124].exec("ABC", 3426)); +assertNull(res[1124].exec("ABQ", 3427)); +assertToStringEquals("ABBBBC", res[1126].exec("ABBBBC"), 3428); +assertToStringEquals("ABBBBC", res[1127].exec("ABBBBC"), 3429); +assertToStringEquals("ABBBBC", res[1128].exec("ABBBBC"), 3430); +assertToStringEquals("ABBBBC", res[1129].exec("ABBBBC"), 3431); +assertNull(res[1130].exec("*** Failers", 3432)); +assertNull(res[1130].exec("ABQ", 3433)); +assertNull(res[1130].exec("ABBBBC", 3434)); +assertToStringEquals("ABBC", res[1131].exec("ABBC"), 3435); +assertToStringEquals("ABC", res[1131].exec("ABC"), 3436); +assertToStringEquals("ABC", res[1132].exec("ABC"), 3437); +assertToStringEquals("ABC", res[1134].exec("ABC"), 3438); +assertToStringEquals("ABC", res[1135].exec("ABC"), 3439); +assertToStringEquals("ABC", res[1136].exec("ABC"), 3440); +assertNull(res[1136].exec("*** Failers", 3441)); +assertNull(res[1136].exec("ABBBBC", 3442)); +assertNull(res[1136].exec("ABCC", 3443)); +assertToStringEquals("ABC", res[1137].exec("ABCC"), 3444); +assertToStringEquals("ABC", res[1139].exec("AABC"), 3445); +assertToStringEquals("", res[1140].exec("ABC"), 3446); +assertToStringEquals("", res[1141].exec("ABC"), 3447); +assertToStringEquals("ABC", res[1142].exec("ABC"), 3448); +assertToStringEquals("AXC", res[1142].exec("AXC"), 3449); +assertToStringEquals("AXYZC", res[1143].exec("AXYZC"), 3450); +assertNull(res[1144].exec("*** Failers", 3451)); +assertToStringEquals("AABC", res[1144].exec("AABC"), 3452); +assertNull(res[1144].exec("AXYZD", 3453)); +assertToStringEquals("ABD", res[1145].exec("ABD"), 3454); +assertToStringEquals("ACE", res[1146].exec("ACE"), 3455); +assertNull(res[1146].exec("*** Failers", 3456)); +assertNull(res[1146].exec("ABC", 3457)); +assertNull(res[1146].exec("ABD", 3458)); +assertToStringEquals("AC", res[1147].exec("AAC"), 3459); +assertToStringEquals("A-", res[1148].exec("A-"), 3460); +assertToStringEquals("A-", res[1149].exec("A-"), 3461); +assertToStringEquals("A]", res[1150].exec("A]"), 3462); +assertNull(res[1151].exec("A]B", 3463)); +assertToStringEquals("AED", res[1152].exec("AED"), 3464); +assertToStringEquals("ADC", res[1153].exec("ADC"), 3465); +assertNull(res[1153].exec("*** Failers", 3466)); +assertNull(res[1153].exec("ABD", 3467)); +assertNull(res[1153].exec("A-C", 3468)); +assertNull(res[1154].exec("ADC", 3469)); +assertToStringEquals("AB", res[1155].exec("ABC"), 3470); +assertToStringEquals("AB", res[1155].exec("ABCD"), 3471); +assertToStringEquals("EF,", res[1156].exec("DEF"), 3472); +assertNull(res[1157].exec("*** Failers", 3473)); +assertNull(res[1157].exec("A]C", 3474)); +assertNull(res[1157].exec("B", 3475)); +assertToStringEquals("A(B", res[1158].exec("A(B"), 3476); +assertNull(res[1158].exec("AB", 3477)); +assertNull(res[1158].exec("A((B", 3478)); +assertNull(res[1159].exec("AB", 3479)); +assertToStringEquals("A,A,A", res[1160].exec("ABC"), 3480); +assertToStringEquals("ABC,A,C", res[1161].exec("ABC"), 3481); +assertToStringEquals("ABC", res[1162].exec("AABBABC"), 3482); +assertToStringEquals("ABC", res[1163].exec("AABBABC"), 3483); +assertToStringEquals("ABC", res[1164].exec("ABCABC"), 3484); +assertToStringEquals("ABC", res[1165].exec("ABCABC"), 3485); +assertToStringEquals("ABC", res[1166].exec("ABCABC"), 3486); +assertToStringEquals("AB,B", res[1167].exec("AB"), 3487); +assertToStringEquals("AB,B", res[1168].exec("AB"), 3488); +assertToStringEquals("AB,B", res[1169].exec("AB"), 3489); +assertToStringEquals("AB,B", res[1170].exec("AB"), 3490); +assertToStringEquals("A,A", res[1171].exec("AB"), 3491); +assertToStringEquals("A,A", res[1172].exec("AB"), 3492); +assertToStringEquals(",", res[1173].exec("AB"), 3493); +assertToStringEquals("CDE", res[1174].exec("CDE"), 3494); +assertToStringEquals("ABBBCD,C", res[1177].exec("ABBBCD"), 3495); +assertToStringEquals("ABCD,A", res[1178].exec("ABCD"), 3496); +assertToStringEquals("E", res[1179].exec("E"), 3497); +assertToStringEquals("EF,E", res[1180].exec("EF"), 3498); +assertToStringEquals("ABCDEFG", res[1181].exec("ABCDEFG"), 3499); +assertToStringEquals("AB", res[1182].exec("XABYABBBZ"), 3500); +assertToStringEquals("A", res[1182].exec("XAYABBBZ"), 3501); +assertToStringEquals("CDE,CD", res[1183].exec("ABCDE"), 3502); +assertToStringEquals("HIJ", res[1184].exec("HIJ"), 3503); +assertNull(res[1185].exec("ABCDE", 3504)); +assertToStringEquals("EF,", res[1186].exec("ABCDEF"), 3505); +assertToStringEquals("BCD,B", res[1187].exec("ABCD"), 3506); +assertToStringEquals("ABC,A", res[1188].exec("ABC"), 3507); +assertToStringEquals("ABC,BC", res[1189].exec("ABC"), 3508); +assertToStringEquals("ABCD,BC,D", res[1190].exec("ABCD"), 3509); +assertToStringEquals("ABCD,BC,D", res[1191].exec("ABCD"), 3510); +assertToStringEquals("ABCD,B,CD", res[1192].exec("ABCD"), 3511); +assertToStringEquals("ADCDCDE", res[1193].exec("ADCDCDE"), 3512); +assertToStringEquals("ABC,AB", res[1195].exec("ABC"), 3513); +assertToStringEquals("ABCD,ABC,A,B,D", res[1196].exec("ABCD"), 3514); +assertToStringEquals("ALPHA", res[1197].exec("ALPHA"), 3515); +assertToStringEquals("BH,", res[1198].exec("ABH"), 3516); +assertToStringEquals("EFFGZ,EFFGZ,", res[1199].exec("EFFGZ"), 3517); +assertToStringEquals("IJ,IJ,J", res[1199].exec("IJ"), 3518); +assertToStringEquals("EFFGZ,EFFGZ,", res[1199].exec("REFFGZ"), 3519); +assertNull(res[1199].exec("*** Failers", 3520)); +assertNull(res[1199].exec("ADCDCDE", 3521)); +assertNull(res[1199].exec("EFFG", 3522)); +assertNull(res[1199].exec("BCDD", 3523)); +assertToStringEquals("A,A,A,A,A,A,A,A,A,A,A", res[1200].exec("A"), 3524); +assertToStringEquals("A,A,A,A,A,A,A,A,A,A", res[1201].exec("A"), 3525); +assertToStringEquals("A,A", res[1202].exec("A"), 3526); +assertToStringEquals("C,C", res[1203].exec("C"), 3527); +assertNull(res[1204].exec("*** Failers", 3528)); +assertNull(res[1204].exec("AA", 3529)); +assertNull(res[1204].exec("UH-UH", 3530)); +assertToStringEquals("MULTIPLE WORDS", res[1205].exec("MULTIPLE WORDS, YEAH"), 3531); +assertToStringEquals("ABCDE,AB,DE", res[1206].exec("ABCDE"), 3532); +assertToStringEquals("(A, B),A,B", res[1207].exec("(A, B)"), 3533); +assertToStringEquals("ABCD", res[1209].exec("ABCD"), 3534); +assertToStringEquals("ABCD,BC", res[1210].exec("ABCD"), 3535); +assertToStringEquals("AC", res[1211].exec("AC"), 3536); +assertToStringEquals("ad", res[1212].exec("abad"), 3537); +assertToStringEquals("ad", res[1213].exec("abad"), 3538); +assertToStringEquals("ad", res[1214].exec("abad"), 3539); +assertToStringEquals("ace,e", res[1215].exec("ace"), 3540); +assertToStringEquals("ace,e", res[1216].exec("ace"), 3541); +assertToStringEquals("ace,e", res[1217].exec("ace"), 3542); +assertToStringEquals("acd,d", res[1217].exec("acdbcdbe"), 3543); +assertToStringEquals("acdbcdbe,e", res[1218].exec("acdbcdbe"), 3544); +assertToStringEquals("acdb,b", res[1219].exec("acdbcdbe"), 3545); +assertToStringEquals("acdbcdb,b", res[1220].exec("acdbcdbe"), 3546); +assertToStringEquals("acdbcd,d", res[1221].exec("acdbcdbe"), 3547); +assertToStringEquals("foobar,bar,,bar", res[1222].exec("foobar"), 3548); +assertToStringEquals("acdbcdbe,e", res[1223].exec("acdbcdbe"), 3549); +assertToStringEquals("acdbcdbe,e", res[1224].exec("acdbcdbe"), 3550); +assertToStringEquals("acdbcdbe,e", res[1225].exec("acdbcdbe"), 3551); +assertToStringEquals("acdbcdb,b", res[1226].exec("acdbcdbe"), 3552); +assertToStringEquals("acdbcdbe,e", res[1227].exec("acdbcdbe"), 3553); +assertToStringEquals("acdbcdb,b", res[1228].exec("acdbcdbe"), 3554); +assertToStringEquals("ace,c,e", res[1229].exec("ace"), 3555); +assertToStringEquals("AB,A", res[1230].exec("AB"), 3556); +assertToStringEquals(".,.,", res[1231].exec("."), 3557); +assertToStringEquals("<&", res[1232].exec("<&OUT"), 3558); +assertToStringEquals("foobar,,,,b,a,r", res[1233].exec("foobar"), 3559); +assertToStringEquals(",,,,,,", res[1233].exec("ab"), 3560); +assertToStringEquals(",,,,,,", res[1233].exec("*** Failers"), 3561); +assertToStringEquals(",,,,,,", res[1233].exec("cb"), 3562); +assertToStringEquals(",,,,,,", res[1233].exec("b"), 3563); +assertToStringEquals(",,,,,,", res[1233].exec("ab"), 3564); +assertToStringEquals(",,,,,,", res[1233].exec("b"), 3565); +assertToStringEquals(",,,,,,", res[1233].exec("b"), 3566); +assertToStringEquals("aba", res[1234].exec("aba"), 3567); +assertToStringEquals("a", res[1235].exec("aba"), 3568); +assertToStringEquals(",", res[1236].exec("abc"), 3569); +assertToStringEquals("aax,a", res[1237].exec("aax"), 3570); +assertToStringEquals("aax,a,a", res[1238].exec("aax"), 3571); +assertToStringEquals("aax,a,a", res[1239].exec("aax"), 3572); +assertToStringEquals("ab,", res[1240].exec("cab"), 3573); +assertToStringEquals("ab,", res[1241].exec("cab"), 3574); +assertToStringEquals("ab,", res[1241].exec("ab"), 3575); +assertToStringEquals("ab,", res[1241].exec("ab"), 3576); +assertNull(res[1241].exec("Ab", 3577)); +assertNull(res[1241].exec("Ab", 3578)); +assertNull(res[1241].exec("*** Failers", 3579)); +assertNull(res[1241].exec("cb", 3580)); +assertNull(res[1241].exec("aB", 3581)); +assertToStringEquals("ab,", res[1241].exec("ab"), 3582); +assertToStringEquals("ab,", res[1241].exec("ab"), 3583); +assertNull(res[1241].exec("Ab", 3584)); +assertNull(res[1241].exec("Ab", 3585)); +assertNull(res[1241].exec("*** Failers", 3586)); +assertNull(res[1241].exec("aB", 3587)); +assertNull(res[1241].exec("aB", 3588)); +assertToStringEquals("ab,", res[1241].exec("ab"), 3589); +assertToStringEquals("ab,", res[1241].exec("ab"), 3590); +assertNull(res[1241].exec("aB", 3591)); +assertNull(res[1241].exec("aB", 3592)); +assertNull(res[1241].exec("*** Failers", 3593)); +assertNull(res[1241].exec("aB", 3594)); +assertNull(res[1241].exec("Ab", 3595)); +assertNull(res[1241].exec("aB", 3596)); +assertNull(res[1241].exec("aB", 3597)); +assertNull(res[1241].exec("*** Failers", 3598)); +assertNull(res[1241].exec("Ab", 3599)); +assertNull(res[1241].exec("AB", 3600)); +assertToStringEquals("ab,", res[1241].exec("ab"), 3601); +assertToStringEquals("ab,", res[1241].exec("ab"), 3602); +assertNull(res[1241].exec("aB", 3603)); +assertNull(res[1241].exec("aB", 3604)); +assertNull(res[1241].exec("*** Failers", 3605)); +assertNull(res[1241].exec("AB", 3606)); +assertNull(res[1241].exec("Ab", 3607)); +assertNull(res[1241].exec("aB", 3608)); +assertNull(res[1241].exec("aB", 3609)); +assertNull(res[1241].exec("*** Failers", 3610)); +assertNull(res[1241].exec("Ab", 3611)); +assertNull(res[1241].exec("AB", 3612)); +assertNull(res[1241].exec("*** Failers", 3613)); +assertNull(res[1241].exec("AB", 3614)); +assertNull(res[1241].exec("a\nB", 3615)); +assertNull(res[1241].exec("a\nB", 3616)); +assertToStringEquals("cabbbb", res[1242].exec("cabbbb"), 3617); +assertToStringEquals("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", res[1243].exec("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"), 3618); +assertToStringEquals("foobar1234baz", res[1244].exec("foobar1234baz"), 3619); +assertToStringEquals("x~~,~~", res[1245].exec("x~~"), 3620); +assertToStringEquals("aaac", res[1246].exec("aaac"), 3621); +assertToStringEquals("aaac", res[1247].exec("aaac"), 3622); +assertNull(res[1247].exec("*** Failers", 3623)); +assertNull(res[1247].exec("B\nB", 3624)); +assertNull(res[1247].exec("dbcb", 3625)); +assertNull(res[1247].exec("dbaacb", 3626)); +assertNull(res[1247].exec("dbaacb", 3627)); +assertNull(res[1247].exec("cdaccb", 3628)); +assertNull(res[1248].exec("*** Failers", 3629)); +assertNull(res[1248].exec("dbcb", 3630)); +assertNull(res[1248].exec("a--", 3631)); +assertNull(res[1248].exec("a\nb\nc\n", 3632)); +assertNull(res[1248].exec("a\nb\nc\n", 3633)); +assertNull(res[1248].exec("a\nb\n", 3634)); +assertNull(res[1248].exec("a\nb\n", 3635)); +assertNull(res[1248].exec("a\nb\n", 3636)); +assertNull(res[1248].exec("a\nb\n", 3637)); +assertNull(res[1248].exec("a\nb\nc\n", 3638)); +assertNull(res[1248].exec("a\nb\nc\n", 3639)); +assertNull(res[1248].exec("a\nb\nc\n", 3640)); +assertNull(res[1248].exec("a\nb\nc\n", 3641)); +assertNull(res[1250].exec("*** Failers", 3642)); +assertNull(res[1250].exec("a\nb\nc\n", 3643)); +assertNull(res[1250].exec("a\nb\nc\n", 3644)); +assertNull(res[1250].exec("a\nb\nc\n", 3645)); +assertNull(res[1250].exec("a", 3646)); +assertNull(res[1250].exec("*** Failers", 3647)); +assertNull(res[1250].exec("a", 3648)); +assertNull(res[1250].exec("a", 3649)); +assertNull(res[1250].exec("a", 3650)); +assertToStringEquals("one:,one:", res[1251].exec("one:"), 3651); +assertNull(res[1251].exec("a", 3652)); +assertToStringEquals("abcd,,abcd", res[1252].exec("abcd"), 3653); +assertToStringEquals("xy:z:::abcd,xy:z:::,abcd", res[1252].exec("xy:z:::abcd"), 3654); +assertToStringEquals("aexyc,c", res[1253].exec("aexycd"), 3655); +assertToStringEquals("aab,aa", res[1254].exec("caab"), 3656); +assertToStringEquals("abcd,,abcd", res[1255].exec("abcd"), 3657); +assertToStringEquals("xy:z:::abcd,xy:z:::,abcd", res[1255].exec("xy:z:::abcd"), 3658); +assertToStringEquals("Failers,,Failers", res[1255].exec("*** Failers"), 3659); +assertNull(res[1255].exec("abcd:", 3660)); +assertNull(res[1255].exec("abcd:", 3661)); +assertToStringEquals("aexyc,c", res[1256].exec("aexycd"), 3662); +assertNull(res[1257].exec("aaab", 3663)); +assertToStringEquals(":[,:[", res[1258].exec("a:[b]:"), 3664); +assertToStringEquals("=[,=[", res[1259].exec("a=[b]="), 3665); +assertToStringEquals(".[,.[", res[1260].exec("a.[b]."), 3666); +assertNull(res[1260].exec("aaab", 3667)); +assertNull(res[1260].exec("aaab", 3668)); +assertNull(res[1260].exec("((abc(ade)ufh()()x", 3669)); +assertNull(res[1261].exec("*** Failers", 3670)); +assertNull(res[1261].exec("aaab", 3671)); +assertNull(res[1261].exec("a\nb\n", 3672)); +assertNull(res[1262].exec("a\nb\n", 3673)); +assertNull(res[1264].exec("a\nb", 3674)); +assertNull(res[1265].exec("a\nb", 3675)); +assertNull(res[1265].exec("*** Failers", 3676)); +assertNull(res[1265].exec("alphabetabcd", 3677)); +assertNull(res[1265].exec("endingwxyz", 3678)); +assertNull(res[1265].exec("*** Failers", 3679)); +assertNull(res[1265].exec("a rather long string that doesn't end with one of them", 3680)); +assertNull(res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark otherword", 3681)); +assertNull(res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark", 3682)); +assertNull(res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope", 3683)); +assertNull(res[1265].exec("999foo", 3684)); +assertNull(res[1265].exec("123999foo ", 3685)); +assertNull(res[1265].exec("*** Failers", 3686)); +assertNull(res[1265].exec("123abcfoo", 3687)); +assertNull(res[1265].exec("999foo", 3688)); +assertNull(res[1265].exec("123999foo ", 3689)); +assertNull(res[1265].exec("*** Failers", 3690)); +assertNull(res[1265].exec("123abcfoo", 3691)); +assertNull(res[1265].exec("123abcfoo", 3692)); +assertNull(res[1265].exec("123456foo ", 3693)); +assertNull(res[1265].exec("*** Failers", 3694)); +assertNull(res[1265].exec("123999foo ", 3695)); +assertNull(res[1265].exec("123abcfoo ", 3696)); +assertNull(res[1265].exec("123456foo ", 3697)); +assertNull(res[1265].exec("*** Failers", 3698)); +assertNull(res[1265].exec("123999foo ", 3699)); +assertToStringEquals("ZA,A,", res[1266].exec("ZABCDEFG"), 3700); +assertToStringEquals("ZA,A,", res[1267].exec("ZABCDEFG"), 3701); +assertToStringEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3702); +assertToStringEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3703); +assertToStringEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3704); +assertToStringEquals("a", res[1269].exec("abbab"), 3705); +assertToStringEquals("", res[1269].exec("abcde"), 3706); +assertToStringEquals("", res[1269].exec("-things"), 3707); +assertToStringEquals("", res[1269].exec("0digit"), 3708); +assertToStringEquals("", res[1269].exec("*** Failers"), 3709); +assertToStringEquals("", res[1269].exec("bcdef "), 3710); +assertToStringEquals("a", res[1270].exec("abcde"), 3711); +assertToStringEquals("-", res[1270].exec("-things"), 3712); +assertToStringEquals("0", res[1270].exec("0digit"), 3713); +assertNull(res[1270].exec("*** Failers", 3714)); +assertNull(res[1270].exec("bcdef ", 3715)); +assertNull(res[1271].exec("> \x09\n\x0c\x0d\x0b<", 3716)); +assertNull(res[1271].exec(" ", 3717)); +assertNull(res[1272].exec("> \x09\n\x0c\x0d\x0b<", 3718)); +assertNull(res[1272].exec(" ", 3719)); +assertToStringEquals(" \x09\n\x0c\x0d\x0b", res[1273].exec("> \x09\n\x0c\x0d\x0b<"), 3720); +assertToStringEquals(" ", res[1273].exec(" "), 3721); +assertToStringEquals(" \x09\n\x0c\x0d\x0b", res[1274].exec("> \x09\n\x0c\x0d\x0b<"), 3722); +assertToStringEquals(" ", res[1274].exec(" "), 3723); +assertNull(res[1275].exec("ab", 3724)); +assertNull(res[1278].exec("abcabcabc", 3725)); +assertNull(res[1278].exec("abc(*+|abc ", 3726)); +assertNull(res[1279].exec("abc abcabc", 3727)); +assertNull(res[1279].exec("*** Failers", 3728)); +assertNull(res[1279].exec("abcabcabc ", 3729)); +assertNull(res[1280].exec("abc#not comment\n literal ", 3730)); +assertNull(res[1281].exec("abc#not comment\n literal ", 3731)); +assertNull(res[1282].exec("abc#not comment\n literal ", 3732)); +assertNull(res[1283].exec("abc#not comment\n literal ", 3733)); +assertNull(res[1284].exec("abc\\$xyz", 3734)); +assertNull(res[1285].exec("abc$xyz", 3735)); +assertNull(res[1286].exec("abc", 3736)); +assertNull(res[1286].exec("*** Failers", 3737)); +assertNull(res[1286].exec("xyzabc ", 3738)); +assertNull(res[1287].exec("abc1abc2xyzabc3", 3739)); +assertToStringEquals("abc1", res[1288].exec("abc1abc2xyzabc3 "), 3740); +assertNull(res[1288].exec("XabcdY", 3741)); +assertNull(res[1288].exec("*** Failers ", 3742)); +assertNull(res[1288].exec("Xa b c d Y ", 3743)); +assertToStringEquals("abcY", res[1288].exec("XabcY"), 3744); +assertNull(res[1288].exec("AxyzB ", 3745)); +assertNull(res[1288].exec("XabCY", 3746)); +assertNull(res[1288].exec("*** Failers", 3747)); +assertToStringEquals("abcY", res[1288].exec("XabcY "), 3748); +assertNull(res[1288].exec("abCE", 3749)); +assertNull(res[1288].exec("DE", 3750)); +assertNull(res[1288].exec("*** Failers", 3751)); +assertToStringEquals("abcE", res[1288].exec("abcE"), 3752); +assertNull(res[1288].exec("abCe ", 3753)); +assertNull(res[1288].exec("dE", 3754)); +assertNull(res[1288].exec("De ", 3755)); +assertNull(res[1289].exec("z", 3756)); +assertNull(res[1289].exec("a", 3757)); +assertNull(res[1289].exec("-", 3758)); +assertNull(res[1289].exec("d", 3759)); +assertNull(res[1289].exec("] ", 3760)); +assertNull(res[1289].exec("*** Failers", 3761)); +assertNull(res[1289].exec("b ", 3762)); +assertToStringEquals("z", res[1290].exec("z"), 3763); +assertToStringEquals("C", res[1290].exec("C "), 3764); +assertToStringEquals("M", res[1291].exec("M "), 3765); +assertNull(res[1292].exec("", 3766)); +assertNull(res[1292].exec("REGular", 3767)); +assertNull(res[1292].exec("regulaer", 3768)); +assertNull(res[1292].exec("Regex ", 3769)); +assertNull(res[1292].exec("regul\ufffdr ", 3770)); +assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3771)); +assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3772)); +assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3773)); +assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3774)); +assertNull(res[1292].exec("\x84XAZXB", 3775)); +assertNull(res[1292].exec("123a", 3776)); +assertNull(res[1292].exec("ac", 3777)); +assertToStringEquals("b,", res[1292].exec("bbbbc"), 3778); +assertToStringEquals("ab,a", res[1292].exec("abc"), 3779); +assertNull(res[1292].exec("*** Failers", 3780)); +assertToStringEquals("b,", res[1292].exec("bca"), 3781); +assertNull(res[1292].exec("", 3782)); +assertToStringEquals("ab,a", res[1292].exec("abc"), 3783); +assertNull(res[1292].exec("*** Failers", 3784)); +assertToStringEquals("b,", res[1292].exec("bca"), 3785); +assertToStringEquals("ab,a", res[1292].exec("abc"), 3786); +assertNull(res[1292].exec("*** Failers", 3787)); +assertNull(res[1292].exec("def ", 3788)); +assertNull(res[1292].exec("", 3789)); +assertToStringEquals("ab,a", res[1292].exec("abc"), 3790); +assertNull(res[1292].exec("*** Failers", 3791)); +assertNull(res[1292].exec("def ", 3792)); +assertNull(res[1292].exec("", 3793)); +assertToStringEquals("line\nbreak", res[1293].exec("this is a line\nbreak"), 3794); +assertToStringEquals("line\nbreak", res[1293].exec("line one\nthis is a line\nbreak in the second line "), 3795); +assertToStringEquals("line\nbreak", res[1294].exec("this is a line\nbreak"), 3796); +assertNull(res[1294].exec("** Failers ", 3797)); +assertToStringEquals("line\nbreak", res[1294].exec("line one\nthis is a line\nbreak in the second line "), 3798); +assertToStringEquals("line\nbreak", res[1295].exec("this is a line\nbreak"), 3799); +assertNull(res[1295].exec("** Failers ", 3800)); +assertToStringEquals("line\nbreak", res[1295].exec("line one\nthis is a line\nbreak in the second line "), 3801); +assertNull(res[1296].exec("123P", 3802)); +assertNull(res[1296].exec("a4PR", 3803)); +assertNull(res[1297].exec("123P", 3804)); +assertNull(res[1297].exec("4PR", 3805)); +assertToStringEquals("", res[1298].exec("a\nb\nc\n"), 3806); +assertToStringEquals("", res[1298].exec(" "), 3807); +assertToStringEquals("", res[1298].exec("A\nC\nC\n "), 3808); +assertToStringEquals("", res[1298].exec("AB"), 3809); +assertToStringEquals("", res[1298].exec("aB "), 3810); +assertToStringEquals("", res[1298].exec("AB"), 3811); +assertToStringEquals("", res[1298].exec("aB "), 3812); +assertToStringEquals("", res[1298].exec("AB"), 3813); +assertToStringEquals("", res[1298].exec("aB "), 3814); +assertToStringEquals("", res[1298].exec("AB"), 3815); +assertToStringEquals("", res[1298].exec("aB "), 3816); +assertToStringEquals("Content-Type:xxxxxyyy ", res[1299].exec("Content-Type:xxxxxyyy "), 3817); +assertToStringEquals("Content-Type:xxxxxyyyz", res[1300].exec("Content-Type:xxxxxyyyz"), 3818); +assertToStringEquals("Content-Type:xxxyyy ", res[1301].exec("Content-Type:xxxyyy "), 3819); +assertToStringEquals("Content-Type:xxxyyyz", res[1302].exec("Content-Type:xxxyyyz"), 3820); +assertToStringEquals("abc", res[1303].exec("xyz\nabc"), 3821); +assertToStringEquals("abc", res[1303].exec("xyz\nabc<lf>"), 3822); +assertToStringEquals("abc", res[1303].exec("xyz\x0d\nabc<lf>"), 3823); +assertToStringEquals("abc", res[1303].exec("xyz\x0dabc<cr>"), 3824); +assertToStringEquals("abc", res[1303].exec("xyz\x0d\nabc<crlf>"), 3825); +assertNull(res[1303].exec("** Failers ", 3826)); +assertToStringEquals("abc", res[1303].exec("xyz\nabc<cr>"), 3827); +assertToStringEquals("abc", res[1303].exec("xyz\x0d\nabc<cr>"), 3828); +assertToStringEquals("abc", res[1303].exec("xyz\nabc<crlf>"), 3829); +assertToStringEquals("abc", res[1303].exec("xyz\x0dabc<crlf>"), 3830); +assertToStringEquals("abc", res[1303].exec("xyz\x0dabc<lf>"), 3831); +assertToStringEquals("abc", res[1304].exec("xyzabc"), 3832); +assertToStringEquals("abc", res[1304].exec("xyzabc\n "), 3833); +assertToStringEquals("abc", res[1304].exec("xyzabc\npqr "), 3834); +assertToStringEquals("abc", res[1304].exec("xyzabc\x0d<cr> "), 3835); +assertToStringEquals("abc", res[1304].exec("xyzabc\x0dpqr<cr> "), 3836); +assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\n<crlf> "), 3837); +assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\npqr<crlf> "), 3838); +assertNull(res[1304].exec("** Failers", 3839)); +assertToStringEquals("abc", res[1304].exec("xyzabc\x0d "), 3840); +assertToStringEquals("abc", res[1304].exec("xyzabc\x0dpqr "), 3841); +assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\n "), 3842); +assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\npqr "), 3843); +assertToStringEquals("abc", res[1305].exec("xyz\x0dabcdef"), 3844); +assertToStringEquals("abc", res[1305].exec("xyz\nabcdef<lf>"), 3845); +assertNull(res[1305].exec("** Failers ", 3846)); +assertToStringEquals("abc", res[1305].exec("xyz\nabcdef"), 3847); +assertNull(res[1305].exec(" ", 3848)); +assertToStringEquals("abc", res[1306].exec("xyz\nabcdef"), 3849); +assertToStringEquals("abc", res[1306].exec("xyz\x0dabcdef<cr>"), 3850); +assertNull(res[1306].exec("** Failers ", 3851)); +assertToStringEquals("abc", res[1306].exec("xyz\x0dabcdef"), 3852); +assertNull(res[1306].exec(" ", 3853)); +assertToStringEquals("abc", res[1307].exec("xyz\x0d\nabcdef"), 3854); +assertToStringEquals("abc", res[1307].exec("xyz\x0dabcdef<cr>"), 3855); +assertNull(res[1307].exec("** Failers ", 3856)); +assertToStringEquals("abc", res[1307].exec("xyz\x0dabcdef"), 3857); +assertToStringEquals("abc", res[1308].exec("abc\ndef"), 3858); +assertToStringEquals("abc", res[1308].exec("abc\x0ddef"), 3859); +assertToStringEquals("abc", res[1308].exec("abc\x0d\ndef"), 3860); +assertToStringEquals("<cr>abc", res[1308].exec("<cr>abc\ndef"), 3861); +assertToStringEquals("<cr>abc", res[1308].exec("<cr>abc\x0ddef"), 3862); +assertToStringEquals("<cr>abc", res[1308].exec("<cr>abc\x0d\ndef"), 3863); +assertToStringEquals("<crlf>abc", res[1308].exec("<crlf>abc\ndef"), 3864); +assertToStringEquals("<crlf>abc", res[1308].exec("<crlf>abc\x0ddef"), 3865); +assertToStringEquals("<crlf>abc", res[1308].exec("<crlf>abc\x0d\ndef"), 3866); +assertNull(res[1309].exec("abc\ndef", 3867)); +assertNull(res[1309].exec("abc\x0ddef", 3868)); +assertNull(res[1309].exec("abc\x0d\ndef", 3869)); +assertToStringEquals("abc=xyz\\,", res[1310].exec("abc=xyz\\\npqr"), 3870); +assertToStringEquals("aaaa,a,", res[1311].exec("aaaa"), 3871); +assertToStringEquals("aaaa", res[1312].exec("aaaa"), 3872); +assertToStringEquals("aaaa,a,", res[1313].exec("aaaa"), 3873); +assertToStringEquals("aaaa", res[1314].exec("aaaa"), 3874); +assertNull(res[1317].exec("a\x0db", 3875)); +assertNull(res[1317].exec("a\nb<cr> ", 3876)); +assertNull(res[1317].exec("** Failers", 3877)); +assertNull(res[1317].exec("a\nb", 3878)); +assertNull(res[1317].exec("a\nb<any>", 3879)); +assertNull(res[1317].exec("a\x0db<cr> ", 3880)); +assertNull(res[1317].exec("a\x0db<any> ", 3881)); +assertToStringEquals("abc1", res[1318].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 3882); +assertToStringEquals("abc1", res[1319].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 3883); +assertNull(res[1320].exec("a\nb", 3884)); +assertNull(res[1320].exec("a\x0db", 3885)); +assertNull(res[1320].exec("a\x0d\nb", 3886)); +assertNull(res[1320].exec("a\x0bb", 3887)); +assertNull(res[1320].exec("a\x0cb", 3888)); +assertNull(res[1320].exec("a\x85b ", 3889)); +assertNull(res[1320].exec("** Failers", 3890)); +assertNull(res[1320].exec("a\n\x0db ", 3891)); +assertToStringEquals("ab", res[1321].exec("ab"), 3892); +assertNull(res[1321].exec("a\nb", 3893)); +assertNull(res[1321].exec("a\x0db", 3894)); +assertNull(res[1321].exec("a\x0d\nb", 3895)); +assertNull(res[1321].exec("a\x0bb", 3896)); +assertNull(res[1321].exec("a\x0cb", 3897)); +assertNull(res[1321].exec("a\x85b ", 3898)); +assertNull(res[1321].exec("a\n\x0db ", 3899)); +assertNull(res[1321].exec("a\n\x0d\x85\x0cb ", 3900)); +assertNull(res[1322].exec("a\nb", 3901)); +assertNull(res[1322].exec("a\x0db", 3902)); +assertNull(res[1322].exec("a\x0d\nb", 3903)); +assertNull(res[1322].exec("a\x0bb", 3904)); +assertNull(res[1322].exec("a\x0cb", 3905)); +assertNull(res[1322].exec("a\x85b ", 3906)); +assertNull(res[1322].exec("a\n\x0db ", 3907)); +assertNull(res[1322].exec("a\n\x0d\x85\x0cb ", 3908)); +assertNull(res[1322].exec("** Failers", 3909)); +assertNull(res[1322].exec("ab ", 3910)); +assertNull(res[1323].exec("a\nb", 3911)); +assertNull(res[1323].exec("a\n\x0db", 3912)); +assertNull(res[1323].exec("a\n\x0d\x85b", 3913)); +assertNull(res[1323].exec("a\x0d\n\x0d\nb ", 3914)); +assertNull(res[1323].exec("a\x0d\n\x0d\n\x0d\nb ", 3915)); +assertNull(res[1323].exec("a\n\x0d\n\x0db", 3916)); +assertNull(res[1323].exec("a\n\n\x0d\nb ", 3917)); +assertNull(res[1323].exec("** Failers", 3918)); +assertNull(res[1323].exec("a\n\n\n\x0db", 3919)); +assertNull(res[1323].exec("a\x0d", 3920)); +assertToStringEquals("aRb", res[1324].exec("aRb"), 3921); +assertNull(res[1324].exec("** Failers", 3922)); +assertNull(res[1324].exec("a\nb ", 3923)); +assertToStringEquals("afoo", res[1325].exec("afoo"), 3924); +assertNull(res[1325].exec("** Failers ", 3925)); +assertNull(res[1325].exec("\x0d\nfoo ", 3926)); +assertNull(res[1325].exec("\nfoo ", 3927)); +assertToStringEquals("afoo", res[1326].exec("afoo"), 3928); +assertNull(res[1326].exec("\nfoo ", 3929)); +assertNull(res[1326].exec("** Failers ", 3930)); +assertNull(res[1326].exec("\x0d\nfoo ", 3931)); +assertToStringEquals("afoo", res[1327].exec("afoo"), 3932); +assertNull(res[1327].exec("** Failers ", 3933)); +assertNull(res[1327].exec("\nfoo ", 3934)); +assertNull(res[1327].exec("\x0d\nfoo ", 3935)); +assertToStringEquals("afoo", res[1328].exec("afoo"), 3936); +assertNull(res[1328].exec("\x0d\nfoo ", 3937)); +assertNull(res[1328].exec("\nfoo ", 3938)); +assertToStringEquals("", res[1329].exec("abc\x0d\x0dxyz"), 3939); +assertToStringEquals("", res[1329].exec("abc\n\x0dxyz "), 3940); +assertNull(res[1329].exec("** Failers ", 3941)); +assertToStringEquals("", res[1329].exec("abc\x0d\nxyz"), 3942); +assertToStringEquals("X", res[1330].exec("XABC"), 3943); +assertNull(res[1330].exec("** Failers ", 3944)); +assertToStringEquals("X", res[1330].exec("XABCB"), 3945); +assertNull(res[1330].exec("abc\x0d\n\x0d\n", 3946)); +assertNull(res[1330].exec("abc\x0d\n\x0d\n", 3947)); +assertNull(res[1330].exec("abc\x0d\n\x0d\n", 3948)); assertThrows("var re = /(?|(abc)|(xyz))/;", 3949); assertThrows("var re = /(x)(?|(abc)|(xyz))(x)/;", 3950); -assertEquals(null, res[1330].exec("xabcx", 3951)); -assertEquals(null, res[1330].exec("xxyzx ", 3952)); +assertNull(res[1330].exec("xabcx", 3951)); +assertNull(res[1330].exec("xxyzx ", 3952)); assertThrows("var re = /(x)(?|(abc)(pqr)|(xyz))(x)/;", 3953); -assertEquals(null, res[1330].exec("xabcpqrx", 3954)); -assertEquals(null, res[1330].exec("xxyzx ", 3955)); -assertEquals(null, res[1330].exec("abcabc", 3956)); -assertEquals(null, res[1330].exec("xyzabc ", 3957)); -assertEquals(null, res[1330].exec("** Failers ", 3958)); -assertEquals(null, res[1330].exec("xyzxyz ", 3959)); -assertEquals(null, res[1331].exec("X X\n", 3960)); -assertEquals(null, res[1331].exec("X\x09X\x0b", 3961)); -assertEquals(null, res[1331].exec("** Failers", 3962)); -assertEquals(null, res[1331].exec("\xa0 X\n ", 3963)); -assertEquals(null, res[1332].exec("\x09 \xa0X\n\x0b\x0c\x0d\n", 3964)); -assertEquals(null, res[1332].exec("\x09 \xa0\n\x0b\x0c\x0d\n", 3965)); -assertEquals(null, res[1332].exec("\x09 \xa0\n\x0b\x0c", 3966)); -assertEquals(null, res[1332].exec("** Failers ", 3967)); -assertEquals(null, res[1332].exec("\x09 \xa0\n\x0b", 3968)); -assertEquals(null, res[1332].exec(" ", 3969)); -assertEquals(null, res[1333].exec("XY ABCDE", 3970)); -assertEquals(null, res[1333].exec("XY PQR ST ", 3971)); -assertEquals(null, res[1334].exec("XY AB PQRS", 3972)); -assertEquals(null, res[1335].exec(">XNNNYZ", 3973)); -assertEquals(null, res[1335].exec("> X NYQZ", 3974)); -assertEquals(null, res[1335].exec("** Failers", 3975)); -assertEquals(null, res[1335].exec(">XYZ ", 3976)); -assertEquals(null, res[1335].exec("> X NY Z", 3977)); -assertEquals(null, res[1336].exec(">XY\nZ\nA\x0bNN\x0c", 3978)); -assertEquals(null, res[1336].exec(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c", 3979)); -assertEquals(null, res[1337].exec("\x0d\nA", 3980)); -assertEquals("\nA", res[1338].exec("\x0d\nA "), 3981); -assertEquals("\nA", res[1339].exec("\x0d\nA "), 3982); -assertEquals("\nA,\n", res[1340].exec("\x0d\nA "), 3983); -assertEquals(null, res[1341].exec("a\x0db", 3984)); -assertEquals(null, res[1341].exec("a\nb", 3985)); -assertEquals(null, res[1341].exec("a\x0d\nb", 3986)); -assertEquals(null, res[1341].exec("** Failers", 3987)); -assertEquals(null, res[1341].exec("a\x85b", 3988)); -assertEquals(null, res[1341].exec("a\x0bb ", 3989)); -assertEquals(null, res[1342].exec("a\x0db", 3990)); -assertEquals(null, res[1342].exec("a\nb", 3991)); -assertEquals(null, res[1342].exec("a\x0d\nb", 3992)); -assertEquals(null, res[1342].exec("a\x85b", 3993)); -assertEquals(null, res[1342].exec("a\x0bb ", 3994)); -assertEquals(null, res[1342].exec("** Failers ", 3995)); -assertEquals(null, res[1342].exec("a\x85b<bsr_anycrlf>", 3996)); -assertEquals(null, res[1342].exec("a\x0bb<bsr_anycrlf>", 3997)); -assertEquals(null, res[1343].exec("a\x0db", 3998)); -assertEquals(null, res[1343].exec("a\nb", 3999)); -assertEquals(null, res[1343].exec("a\x0d\nb", 4000)); -assertEquals(null, res[1343].exec("** Failers", 4001)); -assertEquals(null, res[1343].exec("a\x85b", 4002)); -assertEquals(null, res[1343].exec("a\x0bb ", 4003)); -assertEquals(null, res[1344].exec("a\x0db", 4004)); -assertEquals(null, res[1344].exec("a\nb", 4005)); -assertEquals(null, res[1344].exec("a\x0d\nb", 4006)); -assertEquals(null, res[1344].exec("a\x85b", 4007)); -assertEquals(null, res[1344].exec("a\x0bb ", 4008)); -assertEquals(null, res[1344].exec("** Failers ", 4009)); -assertEquals(null, res[1344].exec("a\x85b<bsr_anycrlf>", 4010)); -assertEquals(null, res[1344].exec("a\x0bb<bsr_anycrlf>", 4011)); -assertEquals(null, res[1345].exec("a\x0d\n\nb", 4012)); -assertEquals(null, res[1345].exec("a\n\x0d\x0db", 4013)); -assertEquals(null, res[1345].exec("a\x0d\n\x0d\n\x0d\n\x0d\nb", 4014)); -assertEquals(null, res[1345].exec("** Failers", 4015)); -assertEquals(null, res[1345].exec("a\x8585b", 4016)); -assertEquals(null, res[1345].exec("a\x0b\x00bb ", 4017)); -assertEquals(null, res[1346].exec("a\x0d\x0db", 4018)); -assertEquals(null, res[1346].exec("a\n\n\nb", 4019)); -assertEquals(null, res[1346].exec("a\x0d\n\n\x0d\x0db", 4020)); -assertEquals(null, res[1346].exec("a\x8585b", 4021)); -assertEquals(null, res[1346].exec("a\x0b\x00bb ", 4022)); -assertEquals(null, res[1346].exec("** Failers ", 4023)); -assertEquals(null, res[1346].exec("a\x0d\x0d\x0d\x0d\x0db ", 4024)); -assertEquals(null, res[1346].exec("a\x8585b<bsr_anycrlf>", 4025)); -assertEquals(null, res[1346].exec("a\x0b\x00bb<bsr_anycrlf>", 4026)); -assertEquals("abc", res[1347].exec("abc "), 4027); -assertEquals(null, res[1348].exec("** Failers", 4028)); -assertEquals(null, res[1348].exec("ab", 4029)); -assertEquals(null, res[1349].exec("** Failers", 4030)); -assertEquals(null, res[1349].exec("ab ", 4031)); -assertEquals(null, res[1349].exec("** Failers", 4032)); -assertEquals(null, res[1349].exec("ab ", 4033)); -assertEquals("aXb", res[1350].exec("aXb"), 4034); -assertEquals("a\nb", res[1350].exec("a\nb "), 4035); -assertEquals(null, res[1350].exec("** Failers", 4036)); -assertEquals(null, res[1350].exec("ab ", 4037)); -assertEquals("aXb", res[1351].exec("aXb"), 4038); -assertEquals("a\nX\nXb", res[1351].exec("a\nX\nXb "), 4039); -assertEquals(null, res[1351].exec("** Failers", 4040)); -assertEquals(null, res[1351].exec("ab ", 4041)); -assertEquals(null, res[1352].exec("ab", 4042)); -assertEquals(null, res[1352].exec("ax{100}b ", 4043)); -assertEquals(null, res[1352].exec("ax{100}x{100}b ", 4044)); -assertEquals(null, res[1352].exec("ax{100}b ", 4045)); -assertEquals(null, res[1352].exec("ax{100}x{100}b ", 4046)); -assertEquals(null, res[1352].exec("*** Failers ", 4047)); -assertEquals(null, res[1352].exec("ab", 4048)); -assertEquals(null, res[1352].exec(" ", 4049)); -assertEquals("X", res[1353].exec("Xoanon"), 4050); -assertEquals("X", res[1353].exec("+Xoanon"), 4051); -assertEquals("X", res[1353].exec("x{300}Xoanon "), 4052); -assertEquals(null, res[1353].exec("*** Failers ", 4053)); -assertEquals(null, res[1353].exec("YXoanon ", 4054)); -assertEquals("X", res[1354].exec("YXoanon"), 4055); -assertEquals(null, res[1354].exec("*** Failers", 4056)); -assertEquals(null, res[1354].exec("Xoanon", 4057)); -assertEquals(null, res[1354].exec("+Xoanon ", 4058)); -assertEquals(null, res[1354].exec("x{300}Xoanon ", 4059)); -assertEquals("X", res[1355].exec("X+oanon"), 4060); -assertEquals(null, res[1355].exec("ZXx{300}oanon ", 4061)); -assertEquals("X", res[1355].exec("FAX "), 4062); -assertEquals(null, res[1355].exec("*** Failers ", 4063)); -assertEquals(null, res[1355].exec("Xoanon ", 4064)); -assertEquals("X", res[1356].exec("Xoanon "), 4065); -assertEquals(null, res[1356].exec("*** Failers", 4066)); -assertEquals(null, res[1356].exec("X+oanon", 4067)); -assertEquals("X", res[1356].exec("ZXx{300}oanon "), 4068); -assertEquals(null, res[1356].exec("FAX ", 4069)); -assertEquals("b", res[1357].exec("abcd"), 4070); -assertEquals("x", res[1357].exec("ax{100} "), 4071); -assertEquals("b", res[1357].exec("ab99"), 4072); -assertEquals("x", res[1357].exec("x{123}x{123}45"), 4073); -assertEquals("x", res[1357].exec("x{400}x{401}x{402}6 "), 4074); -assertEquals("*", res[1357].exec("*** Failers"), 4075); -assertEquals("d", res[1357].exec("d99"), 4076); -assertEquals("x", res[1357].exec("x{123}x{122}4 "), 4077); -assertEquals("x", res[1357].exec("x{400}x{403}6 "), 4078); -assertEquals("x", res[1357].exec("x{400}x{401}x{402}x{402}6 "), 4079); -assertEquals(null, res[1358].exec("\ufffd]", 4080)); -assertEquals(null, res[1358].exec("\ufffd", 4081)); -assertEquals(null, res[1358].exec("\ufffd\ufffd\ufffd", 4082)); -assertEquals(null, res[1358].exec("\ufffd\ufffd\ufffd?", 4083)); -assertEquals("acb", res[1359].exec("acb"), 4084); -assertEquals("ab", res[1359].exec("ab"), 4085); -assertEquals(null, res[1359].exec("ax{100}b ", 4086)); -assertEquals(null, res[1359].exec("*** Failers", 4087)); -assertEquals(null, res[1359].exec("a\nb ", 4088)); -assertEquals(null, res[1360].exec("ax{4000}xyb ", 4089)); -assertEquals(null, res[1360].exec("ax{4000}yb ", 4090)); -assertEquals(null, res[1360].exec("ax{4000}x{100}yb ", 4091)); -assertEquals(null, res[1360].exec("*** Failers", 4092)); -assertEquals(null, res[1360].exec("ax{4000}b ", 4093)); -assertEquals(null, res[1360].exec("ac\ncb ", 4094)); -assertEquals("a\xc0,,\xc0", res[1361].exec("a\xc0\x88b"), 4095); -assertEquals("ax,,x", res[1362].exec("ax{100}b"), 4096); -assertEquals("a\xc0\x88b,\xc0\x88,b", res[1363].exec("a\xc0\x88b"), 4097); -assertEquals("ax{100}b,x{100},b", res[1364].exec("ax{100}b"), 4098); -assertEquals("a\xc0\x92,\xc0,\x92", res[1365].exec("a\xc0\x92bcd"), 4099); -assertEquals("ax{,x,{", res[1366].exec("ax{240}bcd"), 4100); -assertEquals("a\xc0\x92,\xc0,\x92", res[1367].exec("a\xc0\x92bcd"), 4101); -assertEquals("ax{,x,{", res[1368].exec("ax{240}bcd"), 4102); -assertEquals("a\xc0,,\xc0", res[1369].exec("a\xc0\x92bcd"), 4103); -assertEquals("ax,,x", res[1370].exec("ax{240}bcd"), 4104); -assertEquals(null, res[1371].exec("ax{1234}xyb ", 4105)); -assertEquals(null, res[1371].exec("ax{1234}x{4321}yb ", 4106)); -assertEquals(null, res[1371].exec("ax{1234}x{4321}x{3412}b ", 4107)); -assertEquals(null, res[1371].exec("*** Failers", 4108)); -assertEquals(null, res[1371].exec("ax{1234}b ", 4109)); -assertEquals(null, res[1371].exec("ac\ncb ", 4110)); -assertEquals("ax{1234}xyb,x{1234}xy", res[1372].exec("ax{1234}xyb "), 4111); -assertEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1372].exec("ax{1234}x{4321}yb "), 4112); -assertEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1372].exec("ax{1234}x{4321}x{3412}b "), 4113); -assertEquals("axxxxbcdefghijb,xxxxbcdefghij", res[1372].exec("axxxxbcdefghijb "), 4114); -assertEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1372].exec("ax{1234}x{4321}x{3412}x{3421}b "), 4115); -assertEquals(null, res[1372].exec("*** Failers", 4116)); -assertEquals("ax{1234}b,x{1234}", res[1372].exec("ax{1234}b "), 4117); -assertEquals("ax{1234}xyb,x{1234}xy", res[1373].exec("ax{1234}xyb "), 4118); -assertEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1373].exec("ax{1234}x{4321}yb "), 4119); -assertEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1373].exec("ax{1234}x{4321}x{3412}b "), 4120); -assertEquals("axxxxb,xxxx", res[1373].exec("axxxxbcdefghijb "), 4121); -assertEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1373].exec("ax{1234}x{4321}x{3412}x{3421}b "), 4122); -assertEquals(null, res[1373].exec("*** Failers", 4123)); -assertEquals("ax{1234}b,x{1234}", res[1373].exec("ax{1234}b "), 4124); -assertEquals(null, res[1374].exec("ax{1234}xyb ", 4125)); -assertEquals(null, res[1374].exec("ax{1234}x{4321}yb ", 4126)); -assertEquals(null, res[1374].exec("ax{1234}x{4321}x{3412}b ", 4127)); -assertEquals("axxxxb,xxxx", res[1374].exec("axxxxbcdefghijb "), 4128); -assertEquals(null, res[1374].exec("ax{1234}x{4321}x{3412}x{3421}b ", 4129)); -assertEquals("axbxxb,xbxx", res[1374].exec("axbxxbcdefghijb "), 4130); -assertEquals("axxxxxb,xxxxx", res[1374].exec("axxxxxbcdefghijb "), 4131); -assertEquals(null, res[1374].exec("*** Failers", 4132)); -assertEquals(null, res[1374].exec("ax{1234}b ", 4133)); -assertEquals(null, res[1374].exec("axxxxxxbcdefghijb ", 4134)); -assertEquals(null, res[1375].exec("ax{1234}xyb ", 4135)); -assertEquals(null, res[1375].exec("ax{1234}x{4321}yb ", 4136)); -assertEquals(null, res[1375].exec("ax{1234}x{4321}x{3412}b ", 4137)); -assertEquals("axxxxb,xxxx", res[1375].exec("axxxxbcdefghijb "), 4138); -assertEquals(null, res[1375].exec("ax{1234}x{4321}x{3412}x{3421}b ", 4139)); -assertEquals("axbxxb,xbxx", res[1375].exec("axbxxbcdefghijb "), 4140); -assertEquals("axxxxxb,xxxxx", res[1375].exec("axxxxxbcdefghijb "), 4141); -assertEquals(null, res[1375].exec("*** Failers", 4142)); -assertEquals(null, res[1375].exec("ax{1234}b ", 4143)); -assertEquals(null, res[1375].exec("axxxxxxbcdefghijb ", 4144)); -assertEquals(null, res[1375].exec("*** Failers", 4145)); -assertEquals(null, res[1375].exec("x{100}", 4146)); -assertEquals(null, res[1375].exec("aXbcd", 4147)); -assertEquals(null, res[1375].exec("ax{100}bcd", 4148)); -assertEquals(null, res[1375].exec("ax{100000}bcd", 4149)); -assertEquals(null, res[1375].exec("x{100}x{100}x{100}b", 4150)); -assertEquals(null, res[1375].exec("*** Failers ", 4151)); -assertEquals(null, res[1375].exec("x{100}x{100}b", 4152)); -assertEquals(null, res[1375].exec("x{ab} ", 4153)); -assertEquals(null, res[1375].exec("\xc2\xab", 4154)); -assertEquals(null, res[1375].exec("*** Failers ", 4155)); -assertEquals(null, res[1375].exec("\x00{ab}", 4156)); -assertEquals(null, res[1375].exec("WXYZ", 4157)); -assertEquals(null, res[1375].exec("x{256}XYZ ", 4158)); -assertEquals(null, res[1375].exec("*** Failers", 4159)); -assertEquals(null, res[1375].exec("XYZ ", 4160)); -assertEquals("bcd", res[1376].exec("bcd"), 4161); -assertEquals("00}", res[1376].exec("x{100}aYx{256}Z "), 4162); -assertEquals("x{", res[1377].exec("x{100}bc"), 4163); -assertEquals("x{100}bcA", res[1378].exec("x{100}bcAa"), 4164); -assertEquals("x{", res[1379].exec("x{100}bca"), 4165); -assertEquals("bcd", res[1380].exec("bcd"), 4166); -assertEquals("00}", res[1380].exec("x{100}aYx{256}Z "), 4167); -assertEquals("x{", res[1381].exec("x{100}bc"), 4168); -assertEquals("x{100}bc", res[1382].exec("x{100}bcAa"), 4169); -assertEquals("x{", res[1383].exec("x{100}bca"), 4170); -assertEquals(null, res[1383].exec("abcd", 4171)); -assertEquals(null, res[1383].exec("abcd", 4172)); -assertEquals("x{", res[1383].exec("x{100}x{100} "), 4173); -assertEquals("x{", res[1383].exec("x{100}x{100} "), 4174); -assertEquals("x{", res[1383].exec("x{100}x{100}x{100}x{100} "), 4175); -assertEquals(null, res[1383].exec("abce", 4176)); -assertEquals("x{", res[1383].exec("x{100}x{100}x{100}x{100} "), 4177); -assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4178)); -assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4179)); -assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4180)); -assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}XX", 4181)); -assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 4182)); -assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 4183)); -assertEquals("Xy", res[1383].exec("Xyyyax{100}x{100}bXzzz"), 4184); -assertEquals("X", res[1386].exec("1X2"), 4185); -assertEquals("x", res[1386].exec("1x{100}2 "), 4186); -assertEquals(">X", res[1387].exec("> >X Y"), 4187); -assertEquals(">x", res[1387].exec("> >x{100} Y"), 4188); -assertEquals("1", res[1388].exec("x{100}3"), 4189); -assertEquals(" ", res[1389].exec("x{100} X"), 4190); -assertEquals("abcd", res[1390].exec("12abcd34"), 4191); -assertEquals("*** Failers", res[1390].exec("*** Failers"), 4192); -assertEquals(" ", res[1390].exec("1234 "), 4193); -assertEquals("abc", res[1391].exec("12abcd34"), 4194); -assertEquals("ab", res[1391].exec("12ab34"), 4195); -assertEquals("***", res[1391].exec("*** Failers "), 4196); -assertEquals(null, res[1391].exec("1234", 4197)); -assertEquals(" ", res[1391].exec("12a34 "), 4198); -assertEquals("ab", res[1392].exec("12abcd34"), 4199); -assertEquals("ab", res[1392].exec("12ab34"), 4200); -assertEquals("**", res[1392].exec("*** Failers "), 4201); -assertEquals(null, res[1392].exec("1234", 4202)); -assertEquals(" ", res[1392].exec("12a34 "), 4203); -assertEquals("12", res[1393].exec("12abcd34"), 4204); -assertEquals(null, res[1393].exec("*** Failers", 4205)); -assertEquals("12", res[1394].exec("12abcd34"), 4206); -assertEquals("123", res[1394].exec("1234abcd"), 4207); -assertEquals(null, res[1394].exec("*** Failers ", 4208)); -assertEquals(null, res[1394].exec("1.4 ", 4209)); -assertEquals("12", res[1395].exec("12abcd34"), 4210); -assertEquals("12", res[1395].exec("1234abcd"), 4211); -assertEquals(null, res[1395].exec("*** Failers ", 4212)); -assertEquals(null, res[1395].exec("1.4 ", 4213)); -assertEquals("12abcd34", res[1396].exec("12abcd34"), 4214); -assertEquals("***", res[1396].exec("*** Failers"), 4215); -assertEquals(null, res[1396].exec(" ", 4216)); -assertEquals("12a", res[1397].exec("12abcd34"), 4217); -assertEquals("123", res[1397].exec("1234abcd"), 4218); -assertEquals("***", res[1397].exec("*** Failers"), 4219); -assertEquals(null, res[1397].exec(" ", 4220)); -assertEquals("12", res[1398].exec("12abcd34"), 4221); -assertEquals("12", res[1398].exec("1234abcd"), 4222); -assertEquals("**", res[1398].exec("*** Failers"), 4223); -assertEquals(null, res[1398].exec(" ", 4224)); -assertEquals("> <", res[1399].exec("12> <34"), 4225); -assertEquals(null, res[1399].exec("*** Failers", 4226)); -assertEquals("> <", res[1400].exec("ab> <cd"), 4227); -assertEquals("> <", res[1400].exec("ab> <ce"), 4228); -assertEquals(null, res[1400].exec("*** Failers", 4229)); -assertEquals(null, res[1400].exec("ab> <cd ", 4230)); -assertEquals("> <", res[1401].exec("ab> <cd"), 4231); -assertEquals("> <", res[1401].exec("ab> <ce"), 4232); -assertEquals(null, res[1401].exec("*** Failers", 4233)); -assertEquals(null, res[1401].exec("ab> <cd ", 4234)); -assertEquals("12", res[1402].exec("12 34"), 4235); -assertEquals("Failers", res[1402].exec("*** Failers"), 4236); -assertEquals(null, res[1402].exec("+++=*! ", 4237)); -assertEquals("ab", res[1403].exec("ab cd"), 4238); -assertEquals("abc", res[1403].exec("abcd ce"), 4239); -assertEquals("Fai", res[1403].exec("*** Failers"), 4240); -assertEquals(null, res[1403].exec("a.b.c", 4241)); -assertEquals("ab", res[1404].exec("ab cd"), 4242); -assertEquals("ab", res[1404].exec("abcd ce"), 4243); -assertEquals("Fa", res[1404].exec("*** Failers"), 4244); -assertEquals(null, res[1404].exec("a.b.c", 4245)); -assertEquals("====", res[1405].exec("12====34"), 4246); -assertEquals("*** ", res[1405].exec("*** Failers"), 4247); -assertEquals(" ", res[1405].exec("abcd "), 4248); -assertEquals("===", res[1406].exec("ab====cd"), 4249); -assertEquals("==", res[1406].exec("ab==cd"), 4250); -assertEquals("***", res[1406].exec("*** Failers"), 4251); -assertEquals(null, res[1406].exec("a.b.c", 4252)); -assertEquals("==", res[1407].exec("ab====cd"), 4253); -assertEquals("==", res[1407].exec("ab==cd"), 4254); -assertEquals("**", res[1407].exec("*** Failers"), 4255); -assertEquals(null, res[1407].exec("a.b.c", 4256)); -assertEquals(null, res[1407].exec("x{100}", 4257)); -assertEquals(null, res[1407].exec("Zx{100}", 4258)); -assertEquals(null, res[1407].exec("x{100}Z", 4259)); -assertEquals("**", res[1407].exec("*** Failers "), 4260); -assertEquals(null, res[1407].exec("Zx{100}", 4261)); -assertEquals(null, res[1407].exec("x{100}", 4262)); -assertEquals(null, res[1407].exec("x{100}Z", 4263)); -assertEquals("**", res[1407].exec("*** Failers "), 4264); -assertEquals(null, res[1407].exec("abcx{200}X", 4265)); -assertEquals(null, res[1407].exec("abcx{100}X ", 4266)); -assertEquals("**", res[1407].exec("*** Failers"), 4267); -assertEquals(" ", res[1407].exec("X "), 4268); -assertEquals(null, res[1407].exec("abcx{200}X", 4269)); -assertEquals(null, res[1407].exec("abcx{100}X ", 4270)); -assertEquals(null, res[1407].exec("abQX ", 4271)); -assertEquals("**", res[1407].exec("*** Failers"), 4272); -assertEquals(" ", res[1407].exec("X "), 4273); -assertEquals(null, res[1407].exec("abcx{100}x{200}x{100}X", 4274)); -assertEquals("**", res[1407].exec("*** Failers"), 4275); -assertEquals(null, res[1407].exec("abcx{200}X", 4276)); -assertEquals(" ", res[1407].exec("X "), 4277); -assertEquals(null, res[1407].exec("AX", 4278)); -assertEquals(null, res[1407].exec("x{150}X", 4279)); -assertEquals(null, res[1407].exec("x{500}X ", 4280)); -assertEquals("**", res[1407].exec("*** Failers"), 4281); -assertEquals(null, res[1407].exec("x{100}X", 4282)); -assertEquals(" ", res[1407].exec("x{200}X "), 4283); -assertEquals(null, res[1407].exec("AX", 4284)); -assertEquals(null, res[1407].exec("x{150}X", 4285)); -assertEquals(null, res[1407].exec("x{500}X ", 4286)); -assertEquals("**", res[1407].exec("*** Failers"), 4287); -assertEquals(null, res[1407].exec("x{100}X", 4288)); -assertEquals(" ", res[1407].exec("x{200}X "), 4289); -assertEquals(null, res[1407].exec("QX ", 4290)); -assertEquals(null, res[1407].exec("AX", 4291)); -assertEquals(null, res[1407].exec("x{500}X ", 4292)); -assertEquals("**", res[1407].exec("*** Failers"), 4293); -assertEquals(null, res[1407].exec("x{100}X", 4294)); -assertEquals(null, res[1407].exec("x{150}X", 4295)); -assertEquals(" ", res[1407].exec("x{200}X "), 4296); -assertEquals(null, res[1407].exec("z", 4297)); -assertEquals(null, res[1407].exec("Z ", 4298)); -assertEquals(null, res[1407].exec("x{100}", 4299)); -assertEquals("**", res[1407].exec("*** Failers"), 4300); -assertEquals(null, res[1407].exec("x{102}", 4301)); -assertEquals(" ", res[1407].exec("y "), 4302); -assertEquals("\xff", res[1408].exec(">\xff<"), 4303); -assertEquals(null, res[1409].exec(">x{ff}<", 4304)); -assertEquals("X", res[1410].exec("XYZ"), 4305); -assertEquals("X", res[1411].exec("XYZ"), 4306); -assertEquals("x", res[1411].exec("x{123} "), 4307); -assertEquals(",", res[1416].exec("catac"), 4308); -assertEquals(",", res[1416].exec("ax{256}a "), 4309); -assertEquals(",", res[1416].exec("x{85}"), 4310); -assertEquals("abc1", res[1417].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 4311); -assertEquals("abc1", res[1418].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 4312); -assertEquals(null, res[1419].exec("a\nb", 4313)); -assertEquals(null, res[1419].exec("a\x0db", 4314)); -assertEquals(null, res[1419].exec("a\x0d\nb", 4315)); -assertEquals(null, res[1419].exec("a\x0bb", 4316)); -assertEquals(null, res[1419].exec("a\x0cb", 4317)); -assertEquals(null, res[1419].exec("ax{85}b ", 4318)); -assertEquals(null, res[1419].exec("ax{2028}b ", 4319)); -assertEquals(null, res[1419].exec("ax{2029}b ", 4320)); -assertEquals(null, res[1419].exec("** Failers", 4321)); -assertEquals(null, res[1419].exec("a\n\x0db ", 4322)); -assertEquals("ab", res[1420].exec("ab"), 4323); -assertEquals(null, res[1420].exec("a\nb", 4324)); -assertEquals(null, res[1420].exec("a\x0db", 4325)); -assertEquals(null, res[1420].exec("a\x0d\nb", 4326)); -assertEquals(null, res[1420].exec("a\x0bb", 4327)); -assertEquals(null, res[1420].exec("a\x0cx{2028}x{2029}b", 4328)); -assertEquals(null, res[1420].exec("ax{85}b ", 4329)); -assertEquals(null, res[1420].exec("a\n\x0db ", 4330)); -assertEquals(null, res[1420].exec("a\n\x0dx{85}\x0cb ", 4331)); -assertEquals(null, res[1421].exec("a\nb", 4332)); -assertEquals(null, res[1421].exec("a\x0db", 4333)); -assertEquals(null, res[1421].exec("a\x0d\nb", 4334)); -assertEquals(null, res[1421].exec("a\x0bb", 4335)); -assertEquals(null, res[1421].exec("a\x0cx{2028}x{2029}b", 4336)); -assertEquals(null, res[1421].exec("ax{85}b ", 4337)); -assertEquals(null, res[1421].exec("a\n\x0db ", 4338)); -assertEquals(null, res[1421].exec("a\n\x0dx{85}\x0cb ", 4339)); -assertEquals(null, res[1421].exec("** Failers", 4340)); -assertEquals(null, res[1421].exec("ab ", 4341)); -assertEquals(null, res[1422].exec("a\nb", 4342)); -assertEquals(null, res[1422].exec("a\n\x0db", 4343)); -assertEquals(null, res[1422].exec("a\n\x0dx{85}b", 4344)); -assertEquals(null, res[1422].exec("a\x0d\n\x0d\nb ", 4345)); -assertEquals(null, res[1422].exec("a\x0d\n\x0d\n\x0d\nb ", 4346)); -assertEquals(null, res[1422].exec("a\n\x0d\n\x0db", 4347)); -assertEquals(null, res[1422].exec("a\n\n\x0d\nb ", 4348)); -assertEquals(null, res[1422].exec("** Failers", 4349)); -assertEquals(null, res[1422].exec("a\n\n\n\x0db", 4350)); -assertEquals(null, res[1422].exec("a\x0d", 4351)); -assertEquals(null, res[1423].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 4352)); -assertEquals(null, res[1424].exec(" x{a0}X\n\x0b\x0c\x0d\n", 4353)); -assertEquals(null, res[1425].exec(">\x09 x{a0}X\n\n\n<", 4354)); -assertEquals(null, res[1426].exec(">\x09 x{a0}X\n\n\n<", 4355)); -assertEquals(null, res[1427].exec("X X\n", 4356)); -assertEquals(null, res[1427].exec("X\x09X\x0b", 4357)); -assertEquals(null, res[1427].exec("** Failers", 4358)); -assertEquals(null, res[1427].exec("x{a0} X\n ", 4359)); -assertEquals(null, res[1428].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 4360)); -assertEquals(null, res[1428].exec("\x09 x{a0}\n\x0b\x0c\x0d\n", 4361)); -assertEquals(null, res[1428].exec("\x09 x{a0}\n\x0b\x0c", 4362)); -assertEquals(null, res[1428].exec("** Failers ", 4363)); -assertEquals(null, res[1428].exec("\x09 x{a0}\n\x0b", 4364)); -assertEquals(null, res[1428].exec(" ", 4365)); -assertEquals(null, res[1429].exec("x{3001}x{3000}x{2030}x{2028}", 4366)); -assertEquals(null, res[1429].exec("Xx{180e}Xx{85}", 4367)); -assertEquals(null, res[1429].exec("** Failers", 4368)); -assertEquals(null, res[1429].exec("x{2009} X\n ", 4369)); -assertEquals(null, res[1430].exec("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n", 4370)); -assertEquals(null, res[1430].exec("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n", 4371)); -assertEquals(null, res[1430].exec("\x09 x{202f}\n\x0b\x0c", 4372)); -assertEquals(null, res[1430].exec("** Failers ", 4373)); -assertEquals(null, res[1430].exec("\x09x{200a}x{a0}x{2028}\x0b", 4374)); -assertEquals(null, res[1430].exec(" ", 4375)); -assertEquals(null, res[1431].exec("a\x0db", 4376)); -assertEquals(null, res[1431].exec("a\nb", 4377)); -assertEquals(null, res[1431].exec("a\x0d\nb", 4378)); -assertEquals(null, res[1431].exec("** Failers", 4379)); -assertEquals(null, res[1431].exec("ax{85}b", 4380)); -assertEquals(null, res[1431].exec("a\x0bb ", 4381)); -assertEquals(null, res[1432].exec("a\x0db", 4382)); -assertEquals(null, res[1432].exec("a\nb", 4383)); -assertEquals(null, res[1432].exec("a\x0d\nb", 4384)); -assertEquals(null, res[1432].exec("ax{85}b", 4385)); -assertEquals(null, res[1432].exec("a\x0bb ", 4386)); -assertEquals(null, res[1432].exec("** Failers ", 4387)); -assertEquals(null, res[1432].exec("ax{85}b<bsr_anycrlf>", 4388)); -assertEquals(null, res[1432].exec("a\x0bb<bsr_anycrlf>", 4389)); -assertEquals(null, res[1433].exec("a\x0db", 4390)); -assertEquals(null, res[1433].exec("a\nb", 4391)); -assertEquals(null, res[1433].exec("a\x0d\nb", 4392)); -assertEquals(null, res[1433].exec("** Failers", 4393)); -assertEquals(null, res[1433].exec("ax{85}b", 4394)); -assertEquals(null, res[1433].exec("a\x0bb ", 4395)); -assertEquals(null, res[1434].exec("a\x0db", 4396)); -assertEquals(null, res[1434].exec("a\nb", 4397)); -assertEquals(null, res[1434].exec("a\x0d\nb", 4398)); -assertEquals(null, res[1434].exec("ax{85}b", 4399)); -assertEquals(null, res[1434].exec("a\x0bb ", 4400)); -assertEquals(null, res[1434].exec("** Failers ", 4401)); -assertEquals(null, res[1434].exec("ax{85}b<bsr_anycrlf>", 4402)); -assertEquals(null, res[1434].exec("a\x0bb<bsr_anycrlf>", 4403)); -assertEquals("X", res[1435].exec("Ax{1ec5}ABCXYZ"), 4404); -assertEquals(null, res[1437].exec("AB", 4405)); -assertEquals(null, res[1437].exec("*** Failers", 4406)); -assertEquals(null, res[1437].exec("A0", 4407)); -assertEquals(null, res[1437].exec("00 ", 4408)); -assertEquals(null, res[1438].exec("AB", 4409)); -assertEquals(null, res[1438].exec("Ax{300}BC ", 4410)); -assertEquals(null, res[1438].exec("Ax{300}x{301}x{302}BC ", 4411)); -assertEquals(null, res[1438].exec("*** Failers", 4412)); -assertEquals(null, res[1438].exec("x{300} ", 4413)); -assertEquals(null, res[1439].exec("ABC", 4414)); -assertEquals(null, res[1439].exec("Ax{300}Bx{300}x{301}C ", 4415)); -assertEquals(null, res[1439].exec("Ax{300}x{301}x{302}BC ", 4416)); -assertEquals(null, res[1439].exec("*** Failers", 4417)); -assertEquals(null, res[1439].exec("x{300} ", 4418)); -assertEquals(null, res[1440].exec("abcd", 4419)); -assertEquals(null, res[1440].exec("a ", 4420)); -assertEquals(null, res[1440].exec("*** Failers ", 4421)); -assertEquals(null, res[1441].exec("1234", 4422)); -assertEquals(null, res[1441].exec("= ", 4423)); -assertEquals(null, res[1441].exec("*** Failers ", 4424)); -assertEquals(null, res[1441].exec("abcd ", 4425)); -assertEquals(null, res[1442].exec("abcdAx{300}x{301}x{302}", 4426)); -assertEquals(null, res[1442].exec("Ax{300}x{301}x{302}", 4427)); -assertEquals(null, res[1442].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}", 4428)); -assertEquals(null, res[1442].exec("a ", 4429)); -assertEquals(null, res[1442].exec("*** Failers ", 4430)); -assertEquals(null, res[1442].exec("x{300}x{301}x{302}", 4431)); -assertEquals("abc", res[1443].exec("abc"), 4432); -assertEquals("abc", res[1443].exec("Ax{300}abc"), 4433); -assertEquals("abc", res[1443].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4434); -assertEquals("abc", res[1443].exec("x{300}abc "), 4435); -assertEquals(null, res[1443].exec("*** Failers", 4436)); -assertEquals("abc", res[1444].exec("abc"), 4437); -assertEquals(null, res[1444].exec("Ax{300}abc", 4438)); -assertEquals(null, res[1444].exec("*** Failers", 4439)); -assertEquals(null, res[1444].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz", 4440)); -assertEquals(null, res[1444].exec("x{300}abc ", 4441)); -assertEquals("abc", res[1445].exec("abc"), 4442); -assertEquals("abc", res[1445].exec("Ax{300}abc"), 4443); -assertEquals("abc", res[1445].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4444); -assertEquals("abc", res[1445].exec("x{300}abc "), 4445); -assertEquals(null, res[1445].exec("*** Failers", 4446)); -assertEquals("abc", res[1446].exec("abc"), 4447); -assertEquals(null, res[1446].exec("Ax{300}abc", 4448)); -assertEquals(null, res[1446].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz", 4449)); -assertEquals(null, res[1446].exec("*** Failers", 4450)); -assertEquals(null, res[1446].exec("x{300}abc ", 4451)); -assertEquals(null, res[1447].exec("A=b", 4452)); -assertEquals(null, res[1447].exec("=c ", 4453)); -assertEquals(null, res[1447].exec("*** Failers", 4454)); -assertEquals(null, res[1447].exec("1=2 ", 4455)); -assertEquals(null, res[1447].exec("AAAA=b ", 4456)); -assertEquals(null, res[1448].exec("AAAA=b", 4457)); -assertEquals(null, res[1448].exec("=c ", 4458)); -assertEquals(null, res[1448].exec("*** Failers", 4459)); -assertEquals(null, res[1448].exec("1=2 ", 4460)); -assertEquals(null, res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}X", 4461)); -assertEquals(null, res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X ", 4462)); -assertEquals(null, res[1449].exec("*** Failers", 4463)); -assertEquals(null, res[1449].exec("X", 4464)); -assertEquals(null, res[1449].exec("Ax{300}x{301}x{302}X", 4465)); -assertEquals(null, res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X", 4466)); -assertEquals(null, res[1450].exec("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<", 4467)); -assertEquals(null, res[1450].exec("\npx{300}9!$ < ", 4468)); -assertEquals(null, res[1450].exec("** Failers ", 4469)); -assertEquals(null, res[1450].exec("apx{300}9!$ < ", 4470)); -assertEquals(null, res[1451].exec("X", 4471)); -assertEquals(null, res[1451].exec("** Failers ", 4472)); -assertEquals(null, res[1451].exec("", 4473)); -assertEquals(null, res[1452].exec("9", 4474)); -assertEquals(null, res[1452].exec("** Failers ", 4475)); -assertEquals(null, res[1452].exec("x{c0}", 4476)); -assertEquals(null, res[1453].exec("X", 4477)); -assertEquals(null, res[1453].exec("** Failers ", 4478)); -assertEquals(null, res[1453].exec("x{30f}", 4479)); -assertEquals(null, res[1454].exec("X", 4480)); -assertEquals(null, res[1454].exec("** Failers ", 4481)); -assertEquals(null, res[1454].exec("x{660}", 4482)); -assertEquals(null, res[1455].exec("X", 4483)); -assertEquals(null, res[1455].exec("** Failers ", 4484)); -assertEquals(null, res[1455].exec("x{66c}", 4485)); -assertEquals(null, res[1456].exec("X", 4486)); -assertEquals(null, res[1456].exec("** Failers ", 4487)); -assertEquals(null, res[1456].exec("x{f01}", 4488)); -assertEquals(null, res[1457].exec("X", 4489)); -assertEquals(null, res[1457].exec("** Failers ", 4490)); -assertEquals(null, res[1457].exec("x{1680}", 4491)); -assertEquals(null, res[1458].exec("x{017}", 4492)); -assertEquals(null, res[1458].exec("x{09f} ", 4493)); -assertEquals(null, res[1458].exec("** Failers", 4494)); -assertEquals(null, res[1458].exec("x{0600} ", 4495)); -assertEquals(null, res[1459].exec("x{601}", 4496)); -assertEquals(null, res[1459].exec("** Failers", 4497)); -assertEquals(null, res[1459].exec("x{09f} ", 4498)); -assertEquals(null, res[1460].exec("** Failers", 4499)); -assertEquals(null, res[1460].exec("x{09f} ", 4500)); -assertEquals(null, res[1461].exec("x{f8ff}", 4501)); -assertEquals(null, res[1461].exec("** Failers", 4502)); -assertEquals(null, res[1461].exec("x{09f} ", 4503)); -assertEquals(null, res[1462].exec("?x{dfff}", 4504)); -assertEquals(null, res[1462].exec("** Failers", 4505)); -assertEquals(null, res[1462].exec("x{09f} ", 4506)); -assertEquals(null, res[1463].exec("a", 4507)); -assertEquals(null, res[1463].exec("** Failers ", 4508)); -assertEquals(null, res[1463].exec("Z", 4509)); -assertEquals(null, res[1463].exec("x{e000} ", 4510)); -assertEquals(null, res[1464].exec("x{2b0}", 4511)); -assertEquals(null, res[1464].exec("** Failers", 4512)); -assertEquals(null, res[1464].exec("a ", 4513)); -assertEquals(null, res[1465].exec("x{1bb}", 4514)); -assertEquals(null, res[1465].exec("** Failers", 4515)); -assertEquals(null, res[1465].exec("a ", 4516)); -assertEquals(null, res[1465].exec("x{2b0}", 4517)); -assertEquals(null, res[1466].exec("x{1c5}", 4518)); -assertEquals(null, res[1466].exec("** Failers", 4519)); -assertEquals(null, res[1466].exec("a ", 4520)); -assertEquals(null, res[1466].exec("x{2b0}", 4521)); -assertEquals(null, res[1467].exec("A", 4522)); -assertEquals(null, res[1467].exec("** Failers", 4523)); -assertEquals(null, res[1467].exec("x{2b0}", 4524)); -assertEquals(null, res[1468].exec("x{903}", 4525)); -assertEquals(null, res[1468].exec("** Failers", 4526)); -assertEquals(null, res[1468].exec("X", 4527)); -assertEquals(null, res[1468].exec("x{300}", 4528)); -assertEquals(null, res[1468].exec(" ", 4529)); -assertEquals(null, res[1469].exec("x{488}", 4530)); -assertEquals(null, res[1469].exec("** Failers", 4531)); -assertEquals(null, res[1469].exec("X", 4532)); -assertEquals(null, res[1469].exec("x{903}", 4533)); -assertEquals(null, res[1469].exec("x{300}", 4534)); -assertEquals(null, res[1470].exec("x{300}", 4535)); -assertEquals(null, res[1470].exec("** Failers", 4536)); -assertEquals(null, res[1470].exec("X", 4537)); -assertEquals(null, res[1470].exec("x{903}", 4538)); -assertEquals(null, res[1470].exec("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}", 4539)); -assertEquals(null, res[1470].exec("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}", 4540)); -assertEquals(null, res[1470].exec("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}", 4541)); -assertEquals(null, res[1470].exec("** Failers", 4542)); -assertEquals(null, res[1470].exec("X", 4543)); -assertEquals(null, res[1471].exec("x{16ee}", 4544)); -assertEquals(null, res[1471].exec("** Failers", 4545)); -assertEquals(null, res[1471].exec("X", 4546)); -assertEquals(null, res[1471].exec("x{966}", 4547)); -assertEquals(null, res[1472].exec("x{b2}", 4548)); -assertEquals(null, res[1472].exec("x{b3}", 4549)); -assertEquals(null, res[1472].exec("** Failers", 4550)); -assertEquals(null, res[1472].exec("X", 4551)); -assertEquals(null, res[1472].exec("x{16ee}", 4552)); -assertEquals(null, res[1473].exec("_", 4553)); -assertEquals(null, res[1473].exec("x{203f}", 4554)); -assertEquals(null, res[1473].exec("** Failers", 4555)); -assertEquals(null, res[1473].exec("X", 4556)); -assertEquals(null, res[1473].exec("-", 4557)); -assertEquals(null, res[1473].exec("x{58a}", 4558)); -assertEquals(null, res[1474].exec("-", 4559)); -assertEquals(null, res[1474].exec("x{58a}", 4560)); -assertEquals(null, res[1474].exec("** Failers", 4561)); -assertEquals(null, res[1474].exec("X", 4562)); -assertEquals(null, res[1474].exec("x{203f}", 4563)); -assertEquals(null, res[1475].exec(")", 4564)); -assertEquals(null, res[1475].exec("]", 4565)); -assertEquals(null, res[1475].exec("}", 4566)); -assertEquals(null, res[1475].exec("x{f3b}", 4567)); -assertEquals(null, res[1475].exec("** Failers", 4568)); -assertEquals(null, res[1475].exec("X", 4569)); -assertEquals(null, res[1475].exec("x{203f}", 4570)); -assertEquals(null, res[1475].exec("(", 4571)); -assertEquals(null, res[1475].exec("[", 4572)); -assertEquals(null, res[1475].exec("{", 4573)); -assertEquals(null, res[1475].exec("x{f3c}", 4574)); -assertEquals(null, res[1476].exec("x{bb}", 4575)); -assertEquals(null, res[1476].exec("x{2019}", 4576)); -assertEquals(null, res[1476].exec("** Failers", 4577)); -assertEquals(null, res[1476].exec("X", 4578)); -assertEquals(null, res[1476].exec("x{203f}", 4579)); -assertEquals(null, res[1477].exec("x{ab}", 4580)); -assertEquals(null, res[1477].exec("x{2018}", 4581)); -assertEquals(null, res[1477].exec("** Failers", 4582)); -assertEquals(null, res[1477].exec("X", 4583)); -assertEquals(null, res[1477].exec("x{203f}", 4584)); -assertEquals(null, res[1478].exec("!", 4585)); -assertEquals(null, res[1478].exec("x{37e}", 4586)); -assertEquals(null, res[1478].exec("** Failers", 4587)); -assertEquals(null, res[1478].exec("X", 4588)); -assertEquals(null, res[1478].exec("x{203f}", 4589)); -assertEquals(null, res[1479].exec("(", 4590)); -assertEquals(null, res[1479].exec("[", 4591)); -assertEquals(null, res[1479].exec("{", 4592)); -assertEquals(null, res[1479].exec("x{f3c}", 4593)); -assertEquals(null, res[1479].exec("** Failers", 4594)); -assertEquals(null, res[1479].exec("X", 4595)); -assertEquals(null, res[1479].exec(")", 4596)); -assertEquals(null, res[1479].exec("]", 4597)); -assertEquals(null, res[1479].exec("}", 4598)); -assertEquals(null, res[1479].exec("x{f3b}", 4599)); -assertEquals(null, res[1479].exec("$x{a2}x{a3}x{a4}x{a5}x{a6}", 4600)); -assertEquals(null, res[1479].exec("x{9f2}", 4601)); -assertEquals(null, res[1479].exec("** Failers", 4602)); -assertEquals(null, res[1479].exec("X", 4603)); -assertEquals(null, res[1479].exec("x{2c2}", 4604)); -assertEquals(null, res[1480].exec("x{2c2}", 4605)); -assertEquals(null, res[1480].exec("** Failers", 4606)); -assertEquals(null, res[1480].exec("X", 4607)); -assertEquals(null, res[1480].exec("x{9f2}", 4608)); -assertEquals(null, res[1480].exec("+<|~x{ac}x{2044}", 4609)); -assertEquals(null, res[1480].exec("** Failers", 4610)); -assertEquals(null, res[1480].exec("X", 4611)); -assertEquals(null, res[1480].exec("x{9f2}", 4612)); -assertEquals(null, res[1481].exec("x{a6}", 4613)); -assertEquals(null, res[1481].exec("x{482} ", 4614)); -assertEquals(null, res[1481].exec("** Failers", 4615)); -assertEquals(null, res[1481].exec("X", 4616)); -assertEquals(null, res[1481].exec("x{9f2}", 4617)); -assertEquals(null, res[1482].exec("x{2028}", 4618)); -assertEquals(null, res[1482].exec("** Failers", 4619)); -assertEquals(null, res[1482].exec("X", 4620)); -assertEquals(null, res[1482].exec("x{2029}", 4621)); -assertEquals(null, res[1483].exec("x{2029}", 4622)); -assertEquals(null, res[1483].exec("** Failers", 4623)); -assertEquals(null, res[1483].exec("X", 4624)); -assertEquals(null, res[1483].exec("x{2028}", 4625)); -assertEquals(null, res[1484].exec("\\ \\", 4626)); -assertEquals(null, res[1484].exec("x{a0}", 4627)); -assertEquals(null, res[1484].exec("x{1680}", 4628)); -assertEquals(null, res[1484].exec("x{180e}", 4629)); -assertEquals(null, res[1484].exec("x{2000}", 4630)); -assertEquals(null, res[1484].exec("x{2001} ", 4631)); -assertEquals(null, res[1484].exec("** Failers", 4632)); -assertEquals(null, res[1484].exec("x{2028}", 4633)); -assertEquals(null, res[1484].exec("x{200d} ", 4634)); -assertEquals(null, res[1484].exec(" x{660}x{661}x{662}ABC", 4635)); -assertEquals(null, res[1484].exec(" x{660}x{661}x{662}ABC", 4636)); -assertEquals(null, res[1485].exec(" x{660}x{661}x{662}ABC", 4637)); -assertEquals(null, res[1486].exec(" x{660}x{661}x{662}ABC", 4638)); -assertEquals(null, res[1487].exec(" x{660}x{661}x{662}ABC", 4639)); -assertEquals(null, res[1488].exec(" x{660}x{661}x{662}ABC", 4640)); -assertEquals(null, res[1489].exec(" x{660}x{661}x{662}ABC", 4641)); -assertEquals(null, res[1490].exec(" x{660}x{661}x{662}ABC", 4642)); -assertEquals(null, res[1491].exec(" x{660}x{661}x{662}ABC", 4643)); -assertEquals(null, res[1492].exec(" x{660}x{661}x{662}ABC", 4644)); -assertEquals(null, res[1493].exec(" x{660}x{661}x{662}ABC", 4645)); -assertEquals(null, res[1493].exec(" x{660}x{661}x{662}ABC", 4646)); -assertEquals(null, res[1493].exec(" x{660}x{661}x{662}ABC", 4647)); -assertEquals(null, res[1493].exec(" ** Failers", 4648)); -assertEquals(null, res[1493].exec(" x{660}x{661}x{662}ABC", 4649)); -assertEquals(null, res[1494].exec("A", 4650)); -assertEquals(null, res[1494].exec("ax{10a0}B ", 4651)); -assertEquals(null, res[1494].exec("** Failers ", 4652)); -assertEquals(null, res[1494].exec("a", 4653)); -assertEquals(null, res[1494].exec("x{1d00} ", 4654)); -assertEquals(null, res[1495].exec("1234", 4655)); -assertEquals(null, res[1495].exec("** Failers", 4656)); -assertEquals(null, res[1495].exec("ABC ", 4657)); -assertEquals(null, res[1496].exec("1234", 4658)); -assertEquals(null, res[1496].exec("** Failers", 4659)); -assertEquals(null, res[1496].exec("ABC ", 4660)); -assertEquals(null, res[1496].exec("A2XYZ", 4661)); -assertEquals(null, res[1496].exec("123A5XYZPQR", 4662)); -assertEquals(null, res[1496].exec("ABAx{660}XYZpqr", 4663)); -assertEquals(null, res[1496].exec("** Failers", 4664)); -assertEquals(null, res[1496].exec("AXYZ", 4665)); -assertEquals(null, res[1496].exec("XYZ ", 4666)); -assertEquals(null, res[1496].exec("1XYZ", 4667)); -assertEquals(null, res[1496].exec("AB=XYZ.. ", 4668)); -assertEquals(null, res[1496].exec("XYZ ", 4669)); -assertEquals(null, res[1496].exec("** Failers", 4670)); -assertEquals(null, res[1496].exec("WXYZ ", 4671)); -assertEquals(null, res[1497].exec("1234", 4672)); -assertEquals(null, res[1497].exec("1234", 4673)); -assertEquals(null, res[1497].exec("12-34", 4674)); -assertEquals("{", res[1497].exec("12+x{661}-34 "), 4675); -assertEquals(null, res[1497].exec("** Failers", 4676)); -assertEquals("d", res[1497].exec("abcd "), 4677); -assertEquals("d", res[1498].exec("abcd"), 4678); -assertEquals(null, res[1498].exec("** Failers", 4679)); -assertEquals(null, res[1498].exec("1234", 4680)); -assertEquals(null, res[1499].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4681)); -assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4682); -assertEquals(" ", res[1499].exec(" "), 4683); -assertEquals(null, res[1499].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4684)); -assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4685); -assertEquals(null, res[1500].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4686)); -assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1500].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4687); -assertEquals(null, res[1501].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4688)); -assertEquals(null, res[1501].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 4689)); -assertEquals(null, res[1502].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4690)); -assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1502].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4691); -assertEquals(null, res[1503].exec("a", 4692)); -assertEquals(null, res[1503].exec("A ", 4693)); -assertEquals(null, res[1504].exec("a", 4694)); -assertEquals(null, res[1504].exec("A ", 4695)); -assertEquals(null, res[1505].exec("A", 4696)); -assertEquals(null, res[1505].exec("aZ", 4697)); -assertEquals(null, res[1505].exec("** Failers", 4698)); -assertEquals(null, res[1505].exec("abc ", 4699)); -assertEquals(null, res[1506].exec("A", 4700)); -assertEquals(null, res[1506].exec("aZ", 4701)); -assertEquals(null, res[1506].exec("** Failers", 4702)); -assertEquals(null, res[1506].exec("abc ", 4703)); -assertEquals(null, res[1507].exec("a", 4704)); -assertEquals(null, res[1507].exec("Az", 4705)); -assertEquals(null, res[1507].exec("** Failers", 4706)); -assertEquals(null, res[1507].exec("ABC ", 4707)); -assertEquals(null, res[1508].exec("a", 4708)); -assertEquals(null, res[1508].exec("Az", 4709)); -assertEquals(null, res[1508].exec("** Failers", 4710)); -assertEquals(null, res[1508].exec("ABC ", 4711)); -assertEquals(null, res[1508].exec("x{c0}", 4712)); -assertEquals(null, res[1508].exec("x{e0} ", 4713)); -assertEquals(null, res[1508].exec("x{c0}", 4714)); -assertEquals(null, res[1508].exec("x{e0} ", 4715)); -assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 4716)); -assertEquals(null, res[1508].exec("** Failers", 4717)); -assertEquals(null, res[1508].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 4718)); -assertEquals(null, res[1508].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 4719)); -assertEquals(null, res[1508].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 4720)); -assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 4721)); -assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 4722)); -assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 4723)); -assertEquals(null, res[1508].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 4724)); -assertEquals(null, res[1508].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 4725)); -assertEquals(null, res[1508].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 4726)); -assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 4727)); -assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 4728)); -assertEquals(null, res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}", 4729)); -assertEquals(null, res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 4730)); -assertEquals(null, res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 4731)); -assertEquals(null, res[1508].exec("x{391}", 4732)); -assertEquals(null, res[1508].exec("x{ff3a}", 4733)); -assertEquals(null, res[1508].exec("x{3b1}", 4734)); -assertEquals(null, res[1508].exec("x{ff5a} ", 4735)); -assertEquals(null, res[1508].exec("x{c0}", 4736)); -assertEquals(null, res[1508].exec("x{e0} ", 4737)); -assertEquals(null, res[1508].exec("x{104}", 4738)); -assertEquals(null, res[1508].exec("x{105}", 4739)); -assertEquals(null, res[1508].exec("x{109} ", 4740)); -assertEquals(null, res[1508].exec("** Failers", 4741)); -assertEquals(null, res[1508].exec("x{100}", 4742)); -assertEquals(null, res[1508].exec("x{10a} ", 4743)); -assertEquals(null, res[1508].exec("Z", 4744)); -assertEquals(null, res[1508].exec("z", 4745)); -assertEquals(null, res[1508].exec("x{39c}", 4746)); -assertEquals(null, res[1508].exec("x{178}", 4747)); -assertEquals(null, res[1508].exec("|", 4748)); -assertEquals(null, res[1508].exec("x{80}", 4749)); -assertEquals(null, res[1508].exec("x{ff}", 4750)); -assertEquals(null, res[1508].exec("x{100}", 4751)); -assertEquals(null, res[1508].exec("x{101} ", 4752)); -assertEquals(null, res[1508].exec("** Failers", 4753)); -assertEquals(null, res[1508].exec("x{102}", 4754)); -assertEquals(null, res[1508].exec("Y", 4755)); -assertEquals(null, res[1508].exec("y ", 4756)); -assertEquals(null, res[1509].exec("A", 4757)); -assertEquals(null, res[1509].exec("Ax{300}BC ", 4758)); -assertEquals(null, res[1509].exec("Ax{300}x{301}x{302}BC ", 4759)); -assertEquals(null, res[1509].exec("*** Failers", 4760)); -assertEquals(null, res[1509].exec("x{300} ", 4761)); -assertEquals("X", res[1510].exec("X123"), 4762); -assertEquals(null, res[1510].exec("*** Failers", 4763)); -assertEquals(null, res[1510].exec("AXYZ", 4764)); -assertEquals(null, res[1511].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 4765)); -assertEquals(null, res[1511].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 4766)); -assertEquals(null, res[1512].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 4767)); -assertEquals(null, res[1512].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 4768)); -assertEquals("A,,A", res[1513].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4769); -assertEquals("A,,A", res[1513].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4770); -assertEquals("A,,A", res[1514].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4771); -assertEquals("A,,A", res[1514].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4772); -assertEquals(null, res[1515].exec("*** Failers", 4773)); -assertEquals(null, res[1515].exec("Ax{300}x{301}x{302}", 4774)); -assertEquals(null, res[1516].exec("Ax{300}x{301}Bx{300}X", 4775)); -assertEquals(null, res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 4776)); -assertEquals(null, res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 4777)); -assertEquals(null, res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 4778)); -assertEquals(null, res[1517].exec("Ax{300}x{301}Bx{300}X", 4779)); -assertEquals(null, res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 4780)); -assertEquals(null, res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 4781)); -assertEquals(null, res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 4782)); -assertEquals(null, res[1518].exec("12X", 4783)); -assertEquals(null, res[1518].exec("123X", 4784)); -assertEquals(null, res[1518].exec("*** Failers", 4785)); -assertEquals(null, res[1518].exec("X", 4786)); -assertEquals(null, res[1518].exec("1X", 4787)); -assertEquals(null, res[1518].exec("1234X ", 4788)); -assertEquals(null, res[1518].exec("x{100} ", 4789)); -assertEquals(null, res[1518].exec("x{101} ", 4790)); -assertEquals(null, res[1518].exec("x{2e81}x{3007}x{2f804}x{31a0}", 4791)); -assertEquals(null, res[1518].exec("** Failers", 4792)); -assertEquals(null, res[1518].exec("x{2e7f} ", 4793)); -assertEquals(null, res[1518].exec("x{3105}", 4794)); -assertEquals(null, res[1518].exec("** Failers", 4795)); -assertEquals(null, res[1518].exec("x{30ff} ", 4796)); -assertEquals(null, res[1519].exec("x{06e9}", 4797)); -assertEquals(null, res[1519].exec("x{060b}", 4798)); -assertEquals(null, res[1519].exec("** Failers", 4799)); -assertEquals(null, res[1519].exec("Xx{06e9} ", 4800)); -assertEquals(null, res[1520].exec("x{2f800}", 4801)); -assertEquals(null, res[1520].exec("** Failers", 4802)); -assertEquals(null, res[1520].exec("x{a014}", 4803)); -assertEquals(null, res[1520].exec("x{a4c6} ", 4804)); -assertEquals(null, res[1521].exec("AXYZ", 4805)); -assertEquals(null, res[1521].exec("x{1234}XYZ ", 4806)); -assertEquals(null, res[1521].exec("** Failers", 4807)); -assertEquals(null, res[1521].exec("X ", 4808)); -assertEquals(null, res[1522].exec("** Failers", 4809)); -assertEquals(null, res[1522].exec("AX", 4810)); -assertEquals(null, res[1523].exec("XYZ", 4811)); -assertEquals(null, res[1523].exec("AXYZ", 4812)); -assertEquals(null, res[1523].exec("x{1234}XYZ ", 4813)); -assertEquals(null, res[1523].exec("** Failers", 4814)); -assertEquals(null, res[1523].exec("ABXYZ ", 4815)); -assertEquals(null, res[1524].exec("XYZ", 4816)); -assertEquals(null, res[1524].exec("** Failers", 4817)); -assertEquals(null, res[1524].exec("AXYZ", 4818)); -assertEquals(null, res[1524].exec("x{1234}XYZ ", 4819)); -assertEquals(null, res[1524].exec("ABXYZ ", 4820)); -assertEquals(null, res[1524].exec("AXYZ", 4821)); -assertEquals(null, res[1524].exec("x{1234}XYZ", 4822)); -assertEquals(null, res[1524].exec("Ax{1234}XYZ", 4823)); -assertEquals(null, res[1524].exec("** Failers", 4824)); -assertEquals(null, res[1524].exec("XYZ", 4825)); -assertEquals(null, res[1524].exec("** Failers", 4826)); -assertEquals(null, res[1524].exec("AXYZ", 4827)); -assertEquals(null, res[1524].exec("x{1234}XYZ", 4828)); -assertEquals(null, res[1524].exec("Ax{1234}XYZ", 4829)); -assertEquals(null, res[1524].exec("XYZ", 4830)); -assertEquals(null, res[1525].exec("XYZ", 4831)); -assertEquals(null, res[1525].exec("AXYZ", 4832)); -assertEquals(null, res[1525].exec("x{1234}XYZ", 4833)); -assertEquals(null, res[1525].exec("Ax{1234}XYZ", 4834)); -assertEquals(null, res[1525].exec("** Failers", 4835)); -assertEquals(null, res[1526].exec("XYZ", 4836)); -assertEquals(null, res[1526].exec("** Failers", 4837)); -assertEquals(null, res[1526].exec("AXYZ", 4838)); -assertEquals(null, res[1526].exec("x{1234}XYZ", 4839)); -assertEquals(null, res[1526].exec("Ax{1234}XYZ", 4840)); -assertEquals("AX", res[1527].exec("AXYZ"), 4841); -assertEquals(null, res[1527].exec("x{1234}XYZ ", 4842)); -assertEquals(null, res[1527].exec("** Failers", 4843)); -assertEquals(null, res[1527].exec("X ", 4844)); -assertEquals(null, res[1528].exec("** Failers", 4845)); -assertEquals("AX", res[1528].exec("AX"), 4846); -assertEquals("X", res[1529].exec("XYZ"), 4847); -assertEquals("AX", res[1529].exec("AXYZ"), 4848); -assertEquals(null, res[1529].exec("x{1234}XYZ ", 4849)); -assertEquals(null, res[1529].exec("** Failers", 4850)); -assertEquals(null, res[1529].exec("ABXYZ ", 4851)); -assertEquals("X", res[1530].exec("XYZ"), 4852); -assertEquals(null, res[1530].exec("** Failers", 4853)); -assertEquals("AX", res[1530].exec("AXYZ"), 4854); -assertEquals(null, res[1530].exec("x{1234}XYZ ", 4855)); -assertEquals(null, res[1530].exec("ABXYZ ", 4856)); -assertEquals("AX", res[1531].exec("AXYZ"), 4857); -assertEquals(null, res[1531].exec("x{1234}XYZ", 4858)); -assertEquals(null, res[1531].exec("Ax{1234}XYZ", 4859)); -assertEquals(null, res[1531].exec("** Failers", 4860)); -assertEquals(null, res[1531].exec("XYZ", 4861)); -assertEquals(null, res[1532].exec("** Failers", 4862)); -assertEquals("AX", res[1532].exec("AXYZ"), 4863); -assertEquals(null, res[1532].exec("x{1234}XYZ", 4864)); -assertEquals(null, res[1532].exec("Ax{1234}XYZ", 4865)); -assertEquals(null, res[1532].exec("XYZ", 4866)); -assertEquals("X", res[1533].exec("XYZ"), 4867); -assertEquals("AX", res[1533].exec("AXYZ"), 4868); -assertEquals(null, res[1533].exec("x{1234}XYZ", 4869)); -assertEquals(null, res[1533].exec("Ax{1234}XYZ", 4870)); -assertEquals(null, res[1533].exec("** Failers", 4871)); -assertEquals("X", res[1534].exec("XYZ"), 4872); -assertEquals(null, res[1534].exec("** Failers", 4873)); -assertEquals("AX", res[1534].exec("AXYZ"), 4874); -assertEquals(null, res[1534].exec("x{1234}XYZ", 4875)); -assertEquals(null, res[1534].exec("Ax{1234}XYZ", 4876)); -assertEquals(null, res[1535].exec("abcdefgh", 4877)); -assertEquals(null, res[1535].exec("x{1234}\n\x0dx{3456}xyz ", 4878)); -assertEquals(null, res[1536].exec("abcdefgh", 4879)); -assertEquals(null, res[1536].exec("x{1234}\n\x0dx{3456}xyz ", 4880)); -assertEquals(null, res[1537].exec("** Failers", 4881)); -assertEquals(null, res[1537].exec("abcdefgh", 4882)); -assertEquals(null, res[1537].exec("x{1234}\n\x0dx{3456}xyz ", 4883)); -assertEquals(null, res[1538].exec(" AXY", 4884)); -assertEquals(null, res[1538].exec(" aXY", 4885)); -assertEquals(null, res[1538].exec(" x{1c5}XY", 4886)); -assertEquals(null, res[1538].exec(" ** Failers", 4887)); -assertEquals(null, res[1538].exec(" x{1bb}XY", 4888)); -assertEquals(null, res[1538].exec(" x{2b0}XY", 4889)); -assertEquals(null, res[1538].exec(" !XY ", 4890)); -assertEquals(null, res[1539].exec(" AXY", 4891)); -assertEquals(null, res[1539].exec(" aXY", 4892)); -assertEquals(null, res[1539].exec(" x{1c5}XY", 4893)); -assertEquals(null, res[1539].exec(" ** Failers", 4894)); -assertEquals(null, res[1539].exec(" x{1bb}XY", 4895)); -assertEquals(null, res[1539].exec(" x{2b0}XY", 4896)); -assertEquals(null, res[1539].exec(" !XY ", 4897)); -assertEquals(null, res[1539].exec(" AXY", 4898)); -assertEquals(null, res[1539].exec(" aXY", 4899)); -assertEquals(null, res[1539].exec(" AbcdeXyz ", 4900)); -assertEquals(null, res[1539].exec(" x{1c5}AbXY", 4901)); -assertEquals(null, res[1539].exec(" abcDEXypqreXlmn ", 4902)); -assertEquals(null, res[1539].exec(" ** Failers", 4903)); -assertEquals(null, res[1539].exec(" x{1bb}XY", 4904)); -assertEquals(null, res[1539].exec(" x{2b0}XY", 4905)); -assertEquals(null, res[1539].exec(" !XY ", 4906)); -assertEquals(null, res[1540].exec(" AXY", 4907)); -assertEquals(null, res[1540].exec(" aXY", 4908)); -assertEquals(null, res[1540].exec(" AbcdeXyz ", 4909)); -assertEquals(null, res[1540].exec(" x{1c5}AbXY", 4910)); -assertEquals(null, res[1540].exec(" abcDEXypqreXlmn ", 4911)); -assertEquals(null, res[1540].exec(" ** Failers", 4912)); -assertEquals(null, res[1540].exec(" x{1bb}XY", 4913)); -assertEquals(null, res[1540].exec(" x{2b0}XY", 4914)); -assertEquals(null, res[1540].exec(" !XY ", 4915)); -assertEquals(null, res[1540].exec(" AXY", 4916)); -assertEquals(null, res[1540].exec(" aXY", 4917)); -assertEquals(null, res[1540].exec(" AbcdeXyz ", 4918)); -assertEquals(null, res[1540].exec(" x{1c5}AbXY", 4919)); -assertEquals(null, res[1540].exec(" abcDEXypqreXlmn ", 4920)); -assertEquals(null, res[1540].exec(" ** Failers", 4921)); -assertEquals(null, res[1540].exec(" x{1bb}XY", 4922)); -assertEquals(null, res[1540].exec(" x{2b0}XY", 4923)); -assertEquals(null, res[1540].exec(" !XY ", 4924)); -assertEquals(null, res[1541].exec(" AXY", 4925)); -assertEquals(null, res[1541].exec(" aXY", 4926)); -assertEquals(null, res[1541].exec(" AbcdeXyz ", 4927)); -assertEquals(null, res[1541].exec(" x{1c5}AbXY", 4928)); -assertEquals(null, res[1541].exec(" abcDEXypqreXlmn ", 4929)); -assertEquals(null, res[1541].exec(" ** Failers", 4930)); -assertEquals(null, res[1541].exec(" x{1bb}XY", 4931)); -assertEquals(null, res[1541].exec(" x{2b0}XY", 4932)); -assertEquals(null, res[1541].exec(" !XY ", 4933)); -assertEquals(null, res[1542].exec(" !XY", 4934)); -assertEquals(null, res[1542].exec(" x{1bb}XY", 4935)); -assertEquals(null, res[1542].exec(" x{2b0}XY", 4936)); -assertEquals(null, res[1542].exec(" ** Failers", 4937)); -assertEquals(null, res[1542].exec(" x{1c5}XY", 4938)); -assertEquals(null, res[1542].exec(" AXY ", 4939)); -assertEquals(null, res[1543].exec(" !XY", 4940)); -assertEquals(null, res[1543].exec(" x{1bb}XY", 4941)); -assertEquals(null, res[1543].exec(" x{2b0}XY", 4942)); -assertEquals(null, res[1543].exec(" ** Failers", 4943)); -assertEquals(null, res[1543].exec(" x{1c5}XY", 4944)); -assertEquals(null, res[1543].exec(" AXY ", 4945)); -assertEquals(null, res[1543].exec("x{c0}x{e0}x{116}x{117}", 4946)); -assertEquals(null, res[1543].exec("x{c0}x{e0}x{116}x{117}", 4947)); -assertEquals(null, res[1545].exec("123abcdefg", 4948)); -assertEquals(null, res[1545].exec("123abc\xc4\xc5zz", 4949)); -assertEquals(null, res[1546].exec("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}====", 4950)); -assertEquals(null, res[1546].exec("x{a77d}x{1d79}", 4951)); -assertEquals(null, res[1546].exec("x{1d79}x{a77d} ", 4952)); -assertEquals(null, res[1546].exec("x{a77d}x{1d79}", 4953)); -assertEquals(null, res[1546].exec("** Failers ", 4954)); -assertEquals(null, res[1546].exec("x{1d79}x{a77d} ", 4955)); +assertNull(res[1330].exec("xabcpqrx", 3954)); +assertNull(res[1330].exec("xxyzx ", 3955)); +assertNull(res[1330].exec("abcabc", 3956)); +assertNull(res[1330].exec("xyzabc ", 3957)); +assertNull(res[1330].exec("** Failers ", 3958)); +assertNull(res[1330].exec("xyzxyz ", 3959)); +assertNull(res[1331].exec("X X\n", 3960)); +assertNull(res[1331].exec("X\x09X\x0b", 3961)); +assertNull(res[1331].exec("** Failers", 3962)); +assertNull(res[1331].exec("\xa0 X\n ", 3963)); +assertNull(res[1332].exec("\x09 \xa0X\n\x0b\x0c\x0d\n", 3964)); +assertNull(res[1332].exec("\x09 \xa0\n\x0b\x0c\x0d\n", 3965)); +assertNull(res[1332].exec("\x09 \xa0\n\x0b\x0c", 3966)); +assertNull(res[1332].exec("** Failers ", 3967)); +assertNull(res[1332].exec("\x09 \xa0\n\x0b", 3968)); +assertNull(res[1332].exec(" ", 3969)); +assertNull(res[1333].exec("XY ABCDE", 3970)); +assertNull(res[1333].exec("XY PQR ST ", 3971)); +assertNull(res[1334].exec("XY AB PQRS", 3972)); +assertNull(res[1335].exec(">XNNNYZ", 3973)); +assertNull(res[1335].exec("> X NYQZ", 3974)); +assertNull(res[1335].exec("** Failers", 3975)); +assertNull(res[1335].exec(">XYZ ", 3976)); +assertNull(res[1335].exec("> X NY Z", 3977)); +assertNull(res[1336].exec(">XY\nZ\nA\x0bNN\x0c", 3978)); +assertNull(res[1336].exec(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c", 3979)); +assertNull(res[1337].exec("\x0d\nA", 3980)); +assertToStringEquals("\nA", res[1338].exec("\x0d\nA "), 3981); +assertToStringEquals("\nA", res[1339].exec("\x0d\nA "), 3982); +assertToStringEquals("\nA,\n", res[1340].exec("\x0d\nA "), 3983); +assertNull(res[1341].exec("a\x0db", 3984)); +assertNull(res[1341].exec("a\nb", 3985)); +assertNull(res[1341].exec("a\x0d\nb", 3986)); +assertNull(res[1341].exec("** Failers", 3987)); +assertNull(res[1341].exec("a\x85b", 3988)); +assertNull(res[1341].exec("a\x0bb ", 3989)); +assertNull(res[1342].exec("a\x0db", 3990)); +assertNull(res[1342].exec("a\nb", 3991)); +assertNull(res[1342].exec("a\x0d\nb", 3992)); +assertNull(res[1342].exec("a\x85b", 3993)); +assertNull(res[1342].exec("a\x0bb ", 3994)); +assertNull(res[1342].exec("** Failers ", 3995)); +assertNull(res[1342].exec("a\x85b<bsr_anycrlf>", 3996)); +assertNull(res[1342].exec("a\x0bb<bsr_anycrlf>", 3997)); +assertNull(res[1343].exec("a\x0db", 3998)); +assertNull(res[1343].exec("a\nb", 3999)); +assertNull(res[1343].exec("a\x0d\nb", 4000)); +assertNull(res[1343].exec("** Failers", 4001)); +assertNull(res[1343].exec("a\x85b", 4002)); +assertNull(res[1343].exec("a\x0bb ", 4003)); +assertNull(res[1344].exec("a\x0db", 4004)); +assertNull(res[1344].exec("a\nb", 4005)); +assertNull(res[1344].exec("a\x0d\nb", 4006)); +assertNull(res[1344].exec("a\x85b", 4007)); +assertNull(res[1344].exec("a\x0bb ", 4008)); +assertNull(res[1344].exec("** Failers ", 4009)); +assertNull(res[1344].exec("a\x85b<bsr_anycrlf>", 4010)); +assertNull(res[1344].exec("a\x0bb<bsr_anycrlf>", 4011)); +assertNull(res[1345].exec("a\x0d\n\nb", 4012)); +assertNull(res[1345].exec("a\n\x0d\x0db", 4013)); +assertNull(res[1345].exec("a\x0d\n\x0d\n\x0d\n\x0d\nb", 4014)); +assertNull(res[1345].exec("** Failers", 4015)); +assertNull(res[1345].exec("a\x8585b", 4016)); +assertNull(res[1345].exec("a\x0b\x00bb ", 4017)); +assertNull(res[1346].exec("a\x0d\x0db", 4018)); +assertNull(res[1346].exec("a\n\n\nb", 4019)); +assertNull(res[1346].exec("a\x0d\n\n\x0d\x0db", 4020)); +assertNull(res[1346].exec("a\x8585b", 4021)); +assertNull(res[1346].exec("a\x0b\x00bb ", 4022)); +assertNull(res[1346].exec("** Failers ", 4023)); +assertNull(res[1346].exec("a\x0d\x0d\x0d\x0d\x0db ", 4024)); +assertNull(res[1346].exec("a\x8585b<bsr_anycrlf>", 4025)); +assertNull(res[1346].exec("a\x0b\x00bb<bsr_anycrlf>", 4026)); +assertToStringEquals("abc", res[1347].exec("abc "), 4027); +assertNull(res[1348].exec("** Failers", 4028)); +assertNull(res[1348].exec("ab", 4029)); +assertNull(res[1349].exec("** Failers", 4030)); +assertNull(res[1349].exec("ab ", 4031)); +assertNull(res[1349].exec("** Failers", 4032)); +assertNull(res[1349].exec("ab ", 4033)); +assertToStringEquals("aXb", res[1350].exec("aXb"), 4034); +assertToStringEquals("a\nb", res[1350].exec("a\nb "), 4035); +assertNull(res[1350].exec("** Failers", 4036)); +assertNull(res[1350].exec("ab ", 4037)); +assertToStringEquals("aXb", res[1351].exec("aXb"), 4038); +assertToStringEquals("a\nX\nXb", res[1351].exec("a\nX\nXb "), 4039); +assertNull(res[1351].exec("** Failers", 4040)); +assertNull(res[1351].exec("ab ", 4041)); +assertNull(res[1352].exec("ab", 4042)); +assertNull(res[1352].exec("ax{100}b ", 4043)); +assertNull(res[1352].exec("ax{100}x{100}b ", 4044)); +assertNull(res[1352].exec("ax{100}b ", 4045)); +assertNull(res[1352].exec("ax{100}x{100}b ", 4046)); +assertNull(res[1352].exec("*** Failers ", 4047)); +assertNull(res[1352].exec("ab", 4048)); +assertNull(res[1352].exec(" ", 4049)); +assertToStringEquals("X", res[1353].exec("Xoanon"), 4050); +assertToStringEquals("X", res[1353].exec("+Xoanon"), 4051); +assertToStringEquals("X", res[1353].exec("x{300}Xoanon "), 4052); +assertNull(res[1353].exec("*** Failers ", 4053)); +assertNull(res[1353].exec("YXoanon ", 4054)); +assertToStringEquals("X", res[1354].exec("YXoanon"), 4055); +assertNull(res[1354].exec("*** Failers", 4056)); +assertNull(res[1354].exec("Xoanon", 4057)); +assertNull(res[1354].exec("+Xoanon ", 4058)); +assertNull(res[1354].exec("x{300}Xoanon ", 4059)); +assertToStringEquals("X", res[1355].exec("X+oanon"), 4060); +assertNull(res[1355].exec("ZXx{300}oanon ", 4061)); +assertToStringEquals("X", res[1355].exec("FAX "), 4062); +assertNull(res[1355].exec("*** Failers ", 4063)); +assertNull(res[1355].exec("Xoanon ", 4064)); +assertToStringEquals("X", res[1356].exec("Xoanon "), 4065); +assertNull(res[1356].exec("*** Failers", 4066)); +assertNull(res[1356].exec("X+oanon", 4067)); +assertToStringEquals("X", res[1356].exec("ZXx{300}oanon "), 4068); +assertNull(res[1356].exec("FAX ", 4069)); +assertToStringEquals("b", res[1357].exec("abcd"), 4070); +assertToStringEquals("x", res[1357].exec("ax{100} "), 4071); +assertToStringEquals("b", res[1357].exec("ab99"), 4072); +assertToStringEquals("x", res[1357].exec("x{123}x{123}45"), 4073); +assertToStringEquals("x", res[1357].exec("x{400}x{401}x{402}6 "), 4074); +assertToStringEquals("*", res[1357].exec("*** Failers"), 4075); +assertToStringEquals("d", res[1357].exec("d99"), 4076); +assertToStringEquals("x", res[1357].exec("x{123}x{122}4 "), 4077); +assertToStringEquals("x", res[1357].exec("x{400}x{403}6 "), 4078); +assertToStringEquals("x", res[1357].exec("x{400}x{401}x{402}x{402}6 "), 4079); +assertNull(res[1358].exec("\ufffd]", 4080)); +assertNull(res[1358].exec("\ufffd", 4081)); +assertNull(res[1358].exec("\ufffd\ufffd\ufffd", 4082)); +assertNull(res[1358].exec("\ufffd\ufffd\ufffd?", 4083)); +assertToStringEquals("acb", res[1359].exec("acb"), 4084); +assertToStringEquals("ab", res[1359].exec("ab"), 4085); +assertNull(res[1359].exec("ax{100}b ", 4086)); +assertNull(res[1359].exec("*** Failers", 4087)); +assertNull(res[1359].exec("a\nb ", 4088)); +assertNull(res[1360].exec("ax{4000}xyb ", 4089)); +assertNull(res[1360].exec("ax{4000}yb ", 4090)); +assertNull(res[1360].exec("ax{4000}x{100}yb ", 4091)); +assertNull(res[1360].exec("*** Failers", 4092)); +assertNull(res[1360].exec("ax{4000}b ", 4093)); +assertNull(res[1360].exec("ac\ncb ", 4094)); +assertToStringEquals("a\xc0,,\xc0", res[1361].exec("a\xc0\x88b"), 4095); +assertToStringEquals("ax,,x", res[1362].exec("ax{100}b"), 4096); +assertToStringEquals("a\xc0\x88b,\xc0\x88,b", res[1363].exec("a\xc0\x88b"), 4097); +assertToStringEquals("ax{100}b,x{100},b", res[1364].exec("ax{100}b"), 4098); +assertToStringEquals("a\xc0\x92,\xc0,\x92", res[1365].exec("a\xc0\x92bcd"), 4099); +assertToStringEquals("ax{,x,{", res[1366].exec("ax{240}bcd"), 4100); +assertToStringEquals("a\xc0\x92,\xc0,\x92", res[1367].exec("a\xc0\x92bcd"), 4101); +assertToStringEquals("ax{,x,{", res[1368].exec("ax{240}bcd"), 4102); +assertToStringEquals("a\xc0,,\xc0", res[1369].exec("a\xc0\x92bcd"), 4103); +assertToStringEquals("ax,,x", res[1370].exec("ax{240}bcd"), 4104); +assertNull(res[1371].exec("ax{1234}xyb ", 4105)); +assertNull(res[1371].exec("ax{1234}x{4321}yb ", 4106)); +assertNull(res[1371].exec("ax{1234}x{4321}x{3412}b ", 4107)); +assertNull(res[1371].exec("*** Failers", 4108)); +assertNull(res[1371].exec("ax{1234}b ", 4109)); +assertNull(res[1371].exec("ac\ncb ", 4110)); +assertToStringEquals("ax{1234}xyb,x{1234}xy", res[1372].exec("ax{1234}xyb "), 4111); +assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1372].exec("ax{1234}x{4321}yb "), 4112); +assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1372].exec("ax{1234}x{4321}x{3412}b "), 4113); +assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij", res[1372].exec("axxxxbcdefghijb "), 4114); +assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1372].exec("ax{1234}x{4321}x{3412}x{3421}b "), 4115); +assertNull(res[1372].exec("*** Failers", 4116)); +assertToStringEquals("ax{1234}b,x{1234}", res[1372].exec("ax{1234}b "), 4117); +assertToStringEquals("ax{1234}xyb,x{1234}xy", res[1373].exec("ax{1234}xyb "), 4118); +assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1373].exec("ax{1234}x{4321}yb "), 4119); +assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1373].exec("ax{1234}x{4321}x{3412}b "), 4120); +assertToStringEquals("axxxxb,xxxx", res[1373].exec("axxxxbcdefghijb "), 4121); +assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1373].exec("ax{1234}x{4321}x{3412}x{3421}b "), 4122); +assertNull(res[1373].exec("*** Failers", 4123)); +assertToStringEquals("ax{1234}b,x{1234}", res[1373].exec("ax{1234}b "), 4124); +assertNull(res[1374].exec("ax{1234}xyb ", 4125)); +assertNull(res[1374].exec("ax{1234}x{4321}yb ", 4126)); +assertNull(res[1374].exec("ax{1234}x{4321}x{3412}b ", 4127)); +assertToStringEquals("axxxxb,xxxx", res[1374].exec("axxxxbcdefghijb "), 4128); +assertNull(res[1374].exec("ax{1234}x{4321}x{3412}x{3421}b ", 4129)); +assertToStringEquals("axbxxb,xbxx", res[1374].exec("axbxxbcdefghijb "), 4130); +assertToStringEquals("axxxxxb,xxxxx", res[1374].exec("axxxxxbcdefghijb "), 4131); +assertNull(res[1374].exec("*** Failers", 4132)); +assertNull(res[1374].exec("ax{1234}b ", 4133)); +assertNull(res[1374].exec("axxxxxxbcdefghijb ", 4134)); +assertNull(res[1375].exec("ax{1234}xyb ", 4135)); +assertNull(res[1375].exec("ax{1234}x{4321}yb ", 4136)); +assertNull(res[1375].exec("ax{1234}x{4321}x{3412}b ", 4137)); +assertToStringEquals("axxxxb,xxxx", res[1375].exec("axxxxbcdefghijb "), 4138); +assertNull(res[1375].exec("ax{1234}x{4321}x{3412}x{3421}b ", 4139)); +assertToStringEquals("axbxxb,xbxx", res[1375].exec("axbxxbcdefghijb "), 4140); +assertToStringEquals("axxxxxb,xxxxx", res[1375].exec("axxxxxbcdefghijb "), 4141); +assertNull(res[1375].exec("*** Failers", 4142)); +assertNull(res[1375].exec("ax{1234}b ", 4143)); +assertNull(res[1375].exec("axxxxxxbcdefghijb ", 4144)); +assertNull(res[1375].exec("*** Failers", 4145)); +assertNull(res[1375].exec("x{100}", 4146)); +assertNull(res[1375].exec("aXbcd", 4147)); +assertNull(res[1375].exec("ax{100}bcd", 4148)); +assertNull(res[1375].exec("ax{100000}bcd", 4149)); +assertNull(res[1375].exec("x{100}x{100}x{100}b", 4150)); +assertNull(res[1375].exec("*** Failers ", 4151)); +assertNull(res[1375].exec("x{100}x{100}b", 4152)); +assertNull(res[1375].exec("x{ab} ", 4153)); +assertNull(res[1375].exec("\xc2\xab", 4154)); +assertNull(res[1375].exec("*** Failers ", 4155)); +assertNull(res[1375].exec("\x00{ab}", 4156)); +assertNull(res[1375].exec("WXYZ", 4157)); +assertNull(res[1375].exec("x{256}XYZ ", 4158)); +assertNull(res[1375].exec("*** Failers", 4159)); +assertNull(res[1375].exec("XYZ ", 4160)); +assertToStringEquals("bcd", res[1376].exec("bcd"), 4161); +assertToStringEquals("00}", res[1376].exec("x{100}aYx{256}Z "), 4162); +assertToStringEquals("x{", res[1377].exec("x{100}bc"), 4163); +assertToStringEquals("x{100}bcA", res[1378].exec("x{100}bcAa"), 4164); +assertToStringEquals("x{", res[1379].exec("x{100}bca"), 4165); +assertToStringEquals("bcd", res[1380].exec("bcd"), 4166); +assertToStringEquals("00}", res[1380].exec("x{100}aYx{256}Z "), 4167); +assertToStringEquals("x{", res[1381].exec("x{100}bc"), 4168); +assertToStringEquals("x{100}bc", res[1382].exec("x{100}bcAa"), 4169); +assertToStringEquals("x{", res[1383].exec("x{100}bca"), 4170); +assertNull(res[1383].exec("abcd", 4171)); +assertNull(res[1383].exec("abcd", 4172)); +assertToStringEquals("x{", res[1383].exec("x{100}x{100} "), 4173); +assertToStringEquals("x{", res[1383].exec("x{100}x{100} "), 4174); +assertToStringEquals("x{", res[1383].exec("x{100}x{100}x{100}x{100} "), 4175); +assertNull(res[1383].exec("abce", 4176)); +assertToStringEquals("x{", res[1383].exec("x{100}x{100}x{100}x{100} "), 4177); +assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4178)); +assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4179)); +assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4180)); +assertNull(res[1383].exec("abcdx{100}x{100}x{100}XX", 4181)); +assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 4182)); +assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 4183)); +assertToStringEquals("Xy", res[1383].exec("Xyyyax{100}x{100}bXzzz"), 4184); +assertToStringEquals("X", res[1386].exec("1X2"), 4185); +assertToStringEquals("x", res[1386].exec("1x{100}2 "), 4186); +assertToStringEquals(">X", res[1387].exec("> >X Y"), 4187); +assertToStringEquals(">x", res[1387].exec("> >x{100} Y"), 4188); +assertToStringEquals("1", res[1388].exec("x{100}3"), 4189); +assertToStringEquals(" ", res[1389].exec("x{100} X"), 4190); +assertToStringEquals("abcd", res[1390].exec("12abcd34"), 4191); +assertToStringEquals("*** Failers", res[1390].exec("*** Failers"), 4192); +assertToStringEquals(" ", res[1390].exec("1234 "), 4193); +assertToStringEquals("abc", res[1391].exec("12abcd34"), 4194); +assertToStringEquals("ab", res[1391].exec("12ab34"), 4195); +assertToStringEquals("***", res[1391].exec("*** Failers "), 4196); +assertNull(res[1391].exec("1234", 4197)); +assertToStringEquals(" ", res[1391].exec("12a34 "), 4198); +assertToStringEquals("ab", res[1392].exec("12abcd34"), 4199); +assertToStringEquals("ab", res[1392].exec("12ab34"), 4200); +assertToStringEquals("**", res[1392].exec("*** Failers "), 4201); +assertNull(res[1392].exec("1234", 4202)); +assertToStringEquals(" ", res[1392].exec("12a34 "), 4203); +assertToStringEquals("12", res[1393].exec("12abcd34"), 4204); +assertNull(res[1393].exec("*** Failers", 4205)); +assertToStringEquals("12", res[1394].exec("12abcd34"), 4206); +assertToStringEquals("123", res[1394].exec("1234abcd"), 4207); +assertNull(res[1394].exec("*** Failers ", 4208)); +assertNull(res[1394].exec("1.4 ", 4209)); +assertToStringEquals("12", res[1395].exec("12abcd34"), 4210); +assertToStringEquals("12", res[1395].exec("1234abcd"), 4211); +assertNull(res[1395].exec("*** Failers ", 4212)); +assertNull(res[1395].exec("1.4 ", 4213)); +assertToStringEquals("12abcd34", res[1396].exec("12abcd34"), 4214); +assertToStringEquals("***", res[1396].exec("*** Failers"), 4215); +assertNull(res[1396].exec(" ", 4216)); +assertToStringEquals("12a", res[1397].exec("12abcd34"), 4217); +assertToStringEquals("123", res[1397].exec("1234abcd"), 4218); +assertToStringEquals("***", res[1397].exec("*** Failers"), 4219); +assertNull(res[1397].exec(" ", 4220)); +assertToStringEquals("12", res[1398].exec("12abcd34"), 4221); +assertToStringEquals("12", res[1398].exec("1234abcd"), 4222); +assertToStringEquals("**", res[1398].exec("*** Failers"), 4223); +assertNull(res[1398].exec(" ", 4224)); +assertToStringEquals("> <", res[1399].exec("12> <34"), 4225); +assertNull(res[1399].exec("*** Failers", 4226)); +assertToStringEquals("> <", res[1400].exec("ab> <cd"), 4227); +assertToStringEquals("> <", res[1400].exec("ab> <ce"), 4228); +assertNull(res[1400].exec("*** Failers", 4229)); +assertNull(res[1400].exec("ab> <cd ", 4230)); +assertToStringEquals("> <", res[1401].exec("ab> <cd"), 4231); +assertToStringEquals("> <", res[1401].exec("ab> <ce"), 4232); +assertNull(res[1401].exec("*** Failers", 4233)); +assertNull(res[1401].exec("ab> <cd ", 4234)); +assertToStringEquals("12", res[1402].exec("12 34"), 4235); +assertToStringEquals("Failers", res[1402].exec("*** Failers"), 4236); +assertNull(res[1402].exec("+++=*! ", 4237)); +assertToStringEquals("ab", res[1403].exec("ab cd"), 4238); +assertToStringEquals("abc", res[1403].exec("abcd ce"), 4239); +assertToStringEquals("Fai", res[1403].exec("*** Failers"), 4240); +assertNull(res[1403].exec("a.b.c", 4241)); +assertToStringEquals("ab", res[1404].exec("ab cd"), 4242); +assertToStringEquals("ab", res[1404].exec("abcd ce"), 4243); +assertToStringEquals("Fa", res[1404].exec("*** Failers"), 4244); +assertNull(res[1404].exec("a.b.c", 4245)); +assertToStringEquals("====", res[1405].exec("12====34"), 4246); +assertToStringEquals("*** ", res[1405].exec("*** Failers"), 4247); +assertToStringEquals(" ", res[1405].exec("abcd "), 4248); +assertToStringEquals("===", res[1406].exec("ab====cd"), 4249); +assertToStringEquals("==", res[1406].exec("ab==cd"), 4250); +assertToStringEquals("***", res[1406].exec("*** Failers"), 4251); +assertNull(res[1406].exec("a.b.c", 4252)); +assertToStringEquals("==", res[1407].exec("ab====cd"), 4253); +assertToStringEquals("==", res[1407].exec("ab==cd"), 4254); +assertToStringEquals("**", res[1407].exec("*** Failers"), 4255); +assertNull(res[1407].exec("a.b.c", 4256)); +assertNull(res[1407].exec("x{100}", 4257)); +assertNull(res[1407].exec("Zx{100}", 4258)); +assertNull(res[1407].exec("x{100}Z", 4259)); +assertToStringEquals("**", res[1407].exec("*** Failers "), 4260); +assertNull(res[1407].exec("Zx{100}", 4261)); +assertNull(res[1407].exec("x{100}", 4262)); +assertNull(res[1407].exec("x{100}Z", 4263)); +assertToStringEquals("**", res[1407].exec("*** Failers "), 4264); +assertNull(res[1407].exec("abcx{200}X", 4265)); +assertNull(res[1407].exec("abcx{100}X ", 4266)); +assertToStringEquals("**", res[1407].exec("*** Failers"), 4267); +assertToStringEquals(" ", res[1407].exec("X "), 4268); +assertNull(res[1407].exec("abcx{200}X", 4269)); +assertNull(res[1407].exec("abcx{100}X ", 4270)); +assertNull(res[1407].exec("abQX ", 4271)); +assertToStringEquals("**", res[1407].exec("*** Failers"), 4272); +assertToStringEquals(" ", res[1407].exec("X "), 4273); +assertNull(res[1407].exec("abcx{100}x{200}x{100}X", 4274)); +assertToStringEquals("**", res[1407].exec("*** Failers"), 4275); +assertNull(res[1407].exec("abcx{200}X", 4276)); +assertToStringEquals(" ", res[1407].exec("X "), 4277); +assertNull(res[1407].exec("AX", 4278)); +assertNull(res[1407].exec("x{150}X", 4279)); +assertNull(res[1407].exec("x{500}X ", 4280)); +assertToStringEquals("**", res[1407].exec("*** Failers"), 4281); +assertNull(res[1407].exec("x{100}X", 4282)); +assertToStringEquals(" ", res[1407].exec("x{200}X "), 4283); +assertNull(res[1407].exec("AX", 4284)); +assertNull(res[1407].exec("x{150}X", 4285)); +assertNull(res[1407].exec("x{500}X ", 4286)); +assertToStringEquals("**", res[1407].exec("*** Failers"), 4287); +assertNull(res[1407].exec("x{100}X", 4288)); +assertToStringEquals(" ", res[1407].exec("x{200}X "), 4289); +assertNull(res[1407].exec("QX ", 4290)); +assertNull(res[1407].exec("AX", 4291)); +assertNull(res[1407].exec("x{500}X ", 4292)); +assertToStringEquals("**", res[1407].exec("*** Failers"), 4293); +assertNull(res[1407].exec("x{100}X", 4294)); +assertNull(res[1407].exec("x{150}X", 4295)); +assertToStringEquals(" ", res[1407].exec("x{200}X "), 4296); +assertNull(res[1407].exec("z", 4297)); +assertNull(res[1407].exec("Z ", 4298)); +assertNull(res[1407].exec("x{100}", 4299)); +assertToStringEquals("**", res[1407].exec("*** Failers"), 4300); +assertNull(res[1407].exec("x{102}", 4301)); +assertToStringEquals(" ", res[1407].exec("y "), 4302); +assertToStringEquals("\xff", res[1408].exec(">\xff<"), 4303); +assertNull(res[1409].exec(">x{ff}<", 4304)); +assertToStringEquals("X", res[1410].exec("XYZ"), 4305); +assertToStringEquals("X", res[1411].exec("XYZ"), 4306); +assertToStringEquals("x", res[1411].exec("x{123} "), 4307); +assertToStringEquals(",", res[1416].exec("catac"), 4308); +assertToStringEquals(",", res[1416].exec("ax{256}a "), 4309); +assertToStringEquals(",", res[1416].exec("x{85}"), 4310); +assertToStringEquals("abc1", res[1417].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 4311); +assertToStringEquals("abc1", res[1418].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 4312); +assertNull(res[1419].exec("a\nb", 4313)); +assertNull(res[1419].exec("a\x0db", 4314)); +assertNull(res[1419].exec("a\x0d\nb", 4315)); +assertNull(res[1419].exec("a\x0bb", 4316)); +assertNull(res[1419].exec("a\x0cb", 4317)); +assertNull(res[1419].exec("ax{85}b ", 4318)); +assertNull(res[1419].exec("ax{2028}b ", 4319)); +assertNull(res[1419].exec("ax{2029}b ", 4320)); +assertNull(res[1419].exec("** Failers", 4321)); +assertNull(res[1419].exec("a\n\x0db ", 4322)); +assertToStringEquals("ab", res[1420].exec("ab"), 4323); +assertNull(res[1420].exec("a\nb", 4324)); +assertNull(res[1420].exec("a\x0db", 4325)); +assertNull(res[1420].exec("a\x0d\nb", 4326)); +assertNull(res[1420].exec("a\x0bb", 4327)); +assertNull(res[1420].exec("a\x0cx{2028}x{2029}b", 4328)); +assertNull(res[1420].exec("ax{85}b ", 4329)); +assertNull(res[1420].exec("a\n\x0db ", 4330)); +assertNull(res[1420].exec("a\n\x0dx{85}\x0cb ", 4331)); +assertNull(res[1421].exec("a\nb", 4332)); +assertNull(res[1421].exec("a\x0db", 4333)); +assertNull(res[1421].exec("a\x0d\nb", 4334)); +assertNull(res[1421].exec("a\x0bb", 4335)); +assertNull(res[1421].exec("a\x0cx{2028}x{2029}b", 4336)); +assertNull(res[1421].exec("ax{85}b ", 4337)); +assertNull(res[1421].exec("a\n\x0db ", 4338)); +assertNull(res[1421].exec("a\n\x0dx{85}\x0cb ", 4339)); +assertNull(res[1421].exec("** Failers", 4340)); +assertNull(res[1421].exec("ab ", 4341)); +assertNull(res[1422].exec("a\nb", 4342)); +assertNull(res[1422].exec("a\n\x0db", 4343)); +assertNull(res[1422].exec("a\n\x0dx{85}b", 4344)); +assertNull(res[1422].exec("a\x0d\n\x0d\nb ", 4345)); +assertNull(res[1422].exec("a\x0d\n\x0d\n\x0d\nb ", 4346)); +assertNull(res[1422].exec("a\n\x0d\n\x0db", 4347)); +assertNull(res[1422].exec("a\n\n\x0d\nb ", 4348)); +assertNull(res[1422].exec("** Failers", 4349)); +assertNull(res[1422].exec("a\n\n\n\x0db", 4350)); +assertNull(res[1422].exec("a\x0d", 4351)); +assertNull(res[1423].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 4352)); +assertNull(res[1424].exec(" x{a0}X\n\x0b\x0c\x0d\n", 4353)); +assertNull(res[1425].exec(">\x09 x{a0}X\n\n\n<", 4354)); +assertNull(res[1426].exec(">\x09 x{a0}X\n\n\n<", 4355)); +assertNull(res[1427].exec("X X\n", 4356)); +assertNull(res[1427].exec("X\x09X\x0b", 4357)); +assertNull(res[1427].exec("** Failers", 4358)); +assertNull(res[1427].exec("x{a0} X\n ", 4359)); +assertNull(res[1428].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 4360)); +assertNull(res[1428].exec("\x09 x{a0}\n\x0b\x0c\x0d\n", 4361)); +assertNull(res[1428].exec("\x09 x{a0}\n\x0b\x0c", 4362)); +assertNull(res[1428].exec("** Failers ", 4363)); +assertNull(res[1428].exec("\x09 x{a0}\n\x0b", 4364)); +assertNull(res[1428].exec(" ", 4365)); +assertNull(res[1429].exec("x{3001}x{3000}x{2030}x{2028}", 4366)); +assertNull(res[1429].exec("Xx{180e}Xx{85}", 4367)); +assertNull(res[1429].exec("** Failers", 4368)); +assertNull(res[1429].exec("x{2009} X\n ", 4369)); +assertNull(res[1430].exec("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n", 4370)); +assertNull(res[1430].exec("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n", 4371)); +assertNull(res[1430].exec("\x09 x{202f}\n\x0b\x0c", 4372)); +assertNull(res[1430].exec("** Failers ", 4373)); +assertNull(res[1430].exec("\x09x{200a}x{a0}x{2028}\x0b", 4374)); +assertNull(res[1430].exec(" ", 4375)); +assertNull(res[1431].exec("a\x0db", 4376)); +assertNull(res[1431].exec("a\nb", 4377)); +assertNull(res[1431].exec("a\x0d\nb", 4378)); +assertNull(res[1431].exec("** Failers", 4379)); +assertNull(res[1431].exec("ax{85}b", 4380)); +assertNull(res[1431].exec("a\x0bb ", 4381)); +assertNull(res[1432].exec("a\x0db", 4382)); +assertNull(res[1432].exec("a\nb", 4383)); +assertNull(res[1432].exec("a\x0d\nb", 4384)); +assertNull(res[1432].exec("ax{85}b", 4385)); +assertNull(res[1432].exec("a\x0bb ", 4386)); +assertNull(res[1432].exec("** Failers ", 4387)); +assertNull(res[1432].exec("ax{85}b<bsr_anycrlf>", 4388)); +assertNull(res[1432].exec("a\x0bb<bsr_anycrlf>", 4389)); +assertNull(res[1433].exec("a\x0db", 4390)); +assertNull(res[1433].exec("a\nb", 4391)); +assertNull(res[1433].exec("a\x0d\nb", 4392)); +assertNull(res[1433].exec("** Failers", 4393)); +assertNull(res[1433].exec("ax{85}b", 4394)); +assertNull(res[1433].exec("a\x0bb ", 4395)); +assertNull(res[1434].exec("a\x0db", 4396)); +assertNull(res[1434].exec("a\nb", 4397)); +assertNull(res[1434].exec("a\x0d\nb", 4398)); +assertNull(res[1434].exec("ax{85}b", 4399)); +assertNull(res[1434].exec("a\x0bb ", 4400)); +assertNull(res[1434].exec("** Failers ", 4401)); +assertNull(res[1434].exec("ax{85}b<bsr_anycrlf>", 4402)); +assertNull(res[1434].exec("a\x0bb<bsr_anycrlf>", 4403)); +assertToStringEquals("X", res[1435].exec("Ax{1ec5}ABCXYZ"), 4404); +assertNull(res[1437].exec("AB", 4405)); +assertNull(res[1437].exec("*** Failers", 4406)); +assertNull(res[1437].exec("A0", 4407)); +assertNull(res[1437].exec("00 ", 4408)); +assertNull(res[1438].exec("AB", 4409)); +assertNull(res[1438].exec("Ax{300}BC ", 4410)); +assertNull(res[1438].exec("Ax{300}x{301}x{302}BC ", 4411)); +assertNull(res[1438].exec("*** Failers", 4412)); +assertNull(res[1438].exec("x{300} ", 4413)); +assertNull(res[1439].exec("ABC", 4414)); +assertNull(res[1439].exec("Ax{300}Bx{300}x{301}C ", 4415)); +assertNull(res[1439].exec("Ax{300}x{301}x{302}BC ", 4416)); +assertNull(res[1439].exec("*** Failers", 4417)); +assertNull(res[1439].exec("x{300} ", 4418)); +assertNull(res[1440].exec("abcd", 4419)); +assertNull(res[1440].exec("a ", 4420)); +assertNull(res[1440].exec("*** Failers ", 4421)); +assertNull(res[1441].exec("1234", 4422)); +assertNull(res[1441].exec("= ", 4423)); +assertNull(res[1441].exec("*** Failers ", 4424)); +assertNull(res[1441].exec("abcd ", 4425)); +assertNull(res[1442].exec("abcdAx{300}x{301}x{302}", 4426)); +assertNull(res[1442].exec("Ax{300}x{301}x{302}", 4427)); +assertNull(res[1442].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}", 4428)); +assertNull(res[1442].exec("a ", 4429)); +assertNull(res[1442].exec("*** Failers ", 4430)); +assertNull(res[1442].exec("x{300}x{301}x{302}", 4431)); +assertToStringEquals("abc", res[1443].exec("abc"), 4432); +assertToStringEquals("abc", res[1443].exec("Ax{300}abc"), 4433); +assertToStringEquals("abc", res[1443].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4434); +assertToStringEquals("abc", res[1443].exec("x{300}abc "), 4435); +assertNull(res[1443].exec("*** Failers", 4436)); +assertToStringEquals("abc", res[1444].exec("abc"), 4437); +assertNull(res[1444].exec("Ax{300}abc", 4438)); +assertNull(res[1444].exec("*** Failers", 4439)); +assertNull(res[1444].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz", 4440)); +assertNull(res[1444].exec("x{300}abc ", 4441)); +assertToStringEquals("abc", res[1445].exec("abc"), 4442); +assertToStringEquals("abc", res[1445].exec("Ax{300}abc"), 4443); +assertToStringEquals("abc", res[1445].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4444); +assertToStringEquals("abc", res[1445].exec("x{300}abc "), 4445); +assertNull(res[1445].exec("*** Failers", 4446)); +assertToStringEquals("abc", res[1446].exec("abc"), 4447); +assertNull(res[1446].exec("Ax{300}abc", 4448)); +assertNull(res[1446].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz", 4449)); +assertNull(res[1446].exec("*** Failers", 4450)); +assertNull(res[1446].exec("x{300}abc ", 4451)); +assertNull(res[1447].exec("A=b", 4452)); +assertNull(res[1447].exec("=c ", 4453)); +assertNull(res[1447].exec("*** Failers", 4454)); +assertNull(res[1447].exec("1=2 ", 4455)); +assertNull(res[1447].exec("AAAA=b ", 4456)); +assertNull(res[1448].exec("AAAA=b", 4457)); +assertNull(res[1448].exec("=c ", 4458)); +assertNull(res[1448].exec("*** Failers", 4459)); +assertNull(res[1448].exec("1=2 ", 4460)); +assertNull(res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}X", 4461)); +assertNull(res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X ", 4462)); +assertNull(res[1449].exec("*** Failers", 4463)); +assertNull(res[1449].exec("X", 4464)); +assertNull(res[1449].exec("Ax{300}x{301}x{302}X", 4465)); +assertNull(res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X", 4466)); +assertNull(res[1450].exec("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<", 4467)); +assertNull(res[1450].exec("\npx{300}9!$ < ", 4468)); +assertNull(res[1450].exec("** Failers ", 4469)); +assertNull(res[1450].exec("apx{300}9!$ < ", 4470)); +assertNull(res[1451].exec("X", 4471)); +assertNull(res[1451].exec("** Failers ", 4472)); +assertNull(res[1451].exec("", 4473)); +assertNull(res[1452].exec("9", 4474)); +assertNull(res[1452].exec("** Failers ", 4475)); +assertNull(res[1452].exec("x{c0}", 4476)); +assertNull(res[1453].exec("X", 4477)); +assertNull(res[1453].exec("** Failers ", 4478)); +assertNull(res[1453].exec("x{30f}", 4479)); +assertNull(res[1454].exec("X", 4480)); +assertNull(res[1454].exec("** Failers ", 4481)); +assertNull(res[1454].exec("x{660}", 4482)); +assertNull(res[1455].exec("X", 4483)); +assertNull(res[1455].exec("** Failers ", 4484)); +assertNull(res[1455].exec("x{66c}", 4485)); +assertNull(res[1456].exec("X", 4486)); +assertNull(res[1456].exec("** Failers ", 4487)); +assertNull(res[1456].exec("x{f01}", 4488)); +assertNull(res[1457].exec("X", 4489)); +assertNull(res[1457].exec("** Failers ", 4490)); +assertNull(res[1457].exec("x{1680}", 4491)); +assertNull(res[1458].exec("x{017}", 4492)); +assertNull(res[1458].exec("x{09f} ", 4493)); +assertNull(res[1458].exec("** Failers", 4494)); +assertNull(res[1458].exec("x{0600} ", 4495)); +assertNull(res[1459].exec("x{601}", 4496)); +assertNull(res[1459].exec("** Failers", 4497)); +assertNull(res[1459].exec("x{09f} ", 4498)); +assertNull(res[1460].exec("** Failers", 4499)); +assertNull(res[1460].exec("x{09f} ", 4500)); +assertNull(res[1461].exec("x{f8ff}", 4501)); +assertNull(res[1461].exec("** Failers", 4502)); +assertNull(res[1461].exec("x{09f} ", 4503)); +assertNull(res[1462].exec("?x{dfff}", 4504)); +assertNull(res[1462].exec("** Failers", 4505)); +assertNull(res[1462].exec("x{09f} ", 4506)); +assertNull(res[1463].exec("a", 4507)); +assertNull(res[1463].exec("** Failers ", 4508)); +assertNull(res[1463].exec("Z", 4509)); +assertNull(res[1463].exec("x{e000} ", 4510)); +assertNull(res[1464].exec("x{2b0}", 4511)); +assertNull(res[1464].exec("** Failers", 4512)); +assertNull(res[1464].exec("a ", 4513)); +assertNull(res[1465].exec("x{1bb}", 4514)); +assertNull(res[1465].exec("** Failers", 4515)); +assertNull(res[1465].exec("a ", 4516)); +assertNull(res[1465].exec("x{2b0}", 4517)); +assertNull(res[1466].exec("x{1c5}", 4518)); +assertNull(res[1466].exec("** Failers", 4519)); +assertNull(res[1466].exec("a ", 4520)); +assertNull(res[1466].exec("x{2b0}", 4521)); +assertNull(res[1467].exec("A", 4522)); +assertNull(res[1467].exec("** Failers", 4523)); +assertNull(res[1467].exec("x{2b0}", 4524)); +assertNull(res[1468].exec("x{903}", 4525)); +assertNull(res[1468].exec("** Failers", 4526)); +assertNull(res[1468].exec("X", 4527)); +assertNull(res[1468].exec("x{300}", 4528)); +assertNull(res[1468].exec(" ", 4529)); +assertNull(res[1469].exec("x{488}", 4530)); +assertNull(res[1469].exec("** Failers", 4531)); +assertNull(res[1469].exec("X", 4532)); +assertNull(res[1469].exec("x{903}", 4533)); +assertNull(res[1469].exec("x{300}", 4534)); +assertNull(res[1470].exec("x{300}", 4535)); +assertNull(res[1470].exec("** Failers", 4536)); +assertNull(res[1470].exec("X", 4537)); +assertNull(res[1470].exec("x{903}", 4538)); +assertNull(res[1470].exec("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}", 4539)); +assertNull(res[1470].exec("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}", 4540)); +assertNull(res[1470].exec("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}", 4541)); +assertNull(res[1470].exec("** Failers", 4542)); +assertNull(res[1470].exec("X", 4543)); +assertNull(res[1471].exec("x{16ee}", 4544)); +assertNull(res[1471].exec("** Failers", 4545)); +assertNull(res[1471].exec("X", 4546)); +assertNull(res[1471].exec("x{966}", 4547)); +assertNull(res[1472].exec("x{b2}", 4548)); +assertNull(res[1472].exec("x{b3}", 4549)); +assertNull(res[1472].exec("** Failers", 4550)); +assertNull(res[1472].exec("X", 4551)); +assertNull(res[1472].exec("x{16ee}", 4552)); +assertNull(res[1473].exec("_", 4553)); +assertNull(res[1473].exec("x{203f}", 4554)); +assertNull(res[1473].exec("** Failers", 4555)); +assertNull(res[1473].exec("X", 4556)); +assertNull(res[1473].exec("-", 4557)); +assertNull(res[1473].exec("x{58a}", 4558)); +assertNull(res[1474].exec("-", 4559)); +assertNull(res[1474].exec("x{58a}", 4560)); +assertNull(res[1474].exec("** Failers", 4561)); +assertNull(res[1474].exec("X", 4562)); +assertNull(res[1474].exec("x{203f}", 4563)); +assertNull(res[1475].exec(")", 4564)); +assertNull(res[1475].exec("]", 4565)); +assertNull(res[1475].exec("}", 4566)); +assertNull(res[1475].exec("x{f3b}", 4567)); +assertNull(res[1475].exec("** Failers", 4568)); +assertNull(res[1475].exec("X", 4569)); +assertNull(res[1475].exec("x{203f}", 4570)); +assertNull(res[1475].exec("(", 4571)); +assertNull(res[1475].exec("[", 4572)); +assertNull(res[1475].exec("{", 4573)); +assertNull(res[1475].exec("x{f3c}", 4574)); +assertNull(res[1476].exec("x{bb}", 4575)); +assertNull(res[1476].exec("x{2019}", 4576)); +assertNull(res[1476].exec("** Failers", 4577)); +assertNull(res[1476].exec("X", 4578)); +assertNull(res[1476].exec("x{203f}", 4579)); +assertNull(res[1477].exec("x{ab}", 4580)); +assertNull(res[1477].exec("x{2018}", 4581)); +assertNull(res[1477].exec("** Failers", 4582)); +assertNull(res[1477].exec("X", 4583)); +assertNull(res[1477].exec("x{203f}", 4584)); +assertNull(res[1478].exec("!", 4585)); +assertNull(res[1478].exec("x{37e}", 4586)); +assertNull(res[1478].exec("** Failers", 4587)); +assertNull(res[1478].exec("X", 4588)); +assertNull(res[1478].exec("x{203f}", 4589)); +assertNull(res[1479].exec("(", 4590)); +assertNull(res[1479].exec("[", 4591)); +assertNull(res[1479].exec("{", 4592)); +assertNull(res[1479].exec("x{f3c}", 4593)); +assertNull(res[1479].exec("** Failers", 4594)); +assertNull(res[1479].exec("X", 4595)); +assertNull(res[1479].exec(")", 4596)); +assertNull(res[1479].exec("]", 4597)); +assertNull(res[1479].exec("}", 4598)); +assertNull(res[1479].exec("x{f3b}", 4599)); +assertNull(res[1479].exec("$x{a2}x{a3}x{a4}x{a5}x{a6}", 4600)); +assertNull(res[1479].exec("x{9f2}", 4601)); +assertNull(res[1479].exec("** Failers", 4602)); +assertNull(res[1479].exec("X", 4603)); +assertNull(res[1479].exec("x{2c2}", 4604)); +assertNull(res[1480].exec("x{2c2}", 4605)); +assertNull(res[1480].exec("** Failers", 4606)); +assertNull(res[1480].exec("X", 4607)); +assertNull(res[1480].exec("x{9f2}", 4608)); +assertNull(res[1480].exec("+<|~x{ac}x{2044}", 4609)); +assertNull(res[1480].exec("** Failers", 4610)); +assertNull(res[1480].exec("X", 4611)); +assertNull(res[1480].exec("x{9f2}", 4612)); +assertNull(res[1481].exec("x{a6}", 4613)); +assertNull(res[1481].exec("x{482} ", 4614)); +assertNull(res[1481].exec("** Failers", 4615)); +assertNull(res[1481].exec("X", 4616)); +assertNull(res[1481].exec("x{9f2}", 4617)); +assertNull(res[1482].exec("x{2028}", 4618)); +assertNull(res[1482].exec("** Failers", 4619)); +assertNull(res[1482].exec("X", 4620)); +assertNull(res[1482].exec("x{2029}", 4621)); +assertNull(res[1483].exec("x{2029}", 4622)); +assertNull(res[1483].exec("** Failers", 4623)); +assertNull(res[1483].exec("X", 4624)); +assertNull(res[1483].exec("x{2028}", 4625)); +assertNull(res[1484].exec("\\ \\", 4626)); +assertNull(res[1484].exec("x{a0}", 4627)); +assertNull(res[1484].exec("x{1680}", 4628)); +assertNull(res[1484].exec("x{180e}", 4629)); +assertNull(res[1484].exec("x{2000}", 4630)); +assertNull(res[1484].exec("x{2001} ", 4631)); +assertNull(res[1484].exec("** Failers", 4632)); +assertNull(res[1484].exec("x{2028}", 4633)); +assertNull(res[1484].exec("x{200d} ", 4634)); +assertNull(res[1484].exec(" x{660}x{661}x{662}ABC", 4635)); +assertNull(res[1484].exec(" x{660}x{661}x{662}ABC", 4636)); +assertNull(res[1485].exec(" x{660}x{661}x{662}ABC", 4637)); +assertNull(res[1486].exec(" x{660}x{661}x{662}ABC", 4638)); +assertNull(res[1487].exec(" x{660}x{661}x{662}ABC", 4639)); +assertNull(res[1488].exec(" x{660}x{661}x{662}ABC", 4640)); +assertNull(res[1489].exec(" x{660}x{661}x{662}ABC", 4641)); +assertNull(res[1490].exec(" x{660}x{661}x{662}ABC", 4642)); +assertNull(res[1491].exec(" x{660}x{661}x{662}ABC", 4643)); +assertNull(res[1492].exec(" x{660}x{661}x{662}ABC", 4644)); +assertNull(res[1493].exec(" x{660}x{661}x{662}ABC", 4645)); +assertNull(res[1493].exec(" x{660}x{661}x{662}ABC", 4646)); +assertNull(res[1493].exec(" x{660}x{661}x{662}ABC", 4647)); +assertNull(res[1493].exec(" ** Failers", 4648)); +assertNull(res[1493].exec(" x{660}x{661}x{662}ABC", 4649)); +assertNull(res[1494].exec("A", 4650)); +assertNull(res[1494].exec("ax{10a0}B ", 4651)); +assertNull(res[1494].exec("** Failers ", 4652)); +assertNull(res[1494].exec("a", 4653)); +assertNull(res[1494].exec("x{1d00} ", 4654)); +assertNull(res[1495].exec("1234", 4655)); +assertNull(res[1495].exec("** Failers", 4656)); +assertNull(res[1495].exec("ABC ", 4657)); +assertNull(res[1496].exec("1234", 4658)); +assertNull(res[1496].exec("** Failers", 4659)); +assertNull(res[1496].exec("ABC ", 4660)); +assertNull(res[1496].exec("A2XYZ", 4661)); +assertNull(res[1496].exec("123A5XYZPQR", 4662)); +assertNull(res[1496].exec("ABAx{660}XYZpqr", 4663)); +assertNull(res[1496].exec("** Failers", 4664)); +assertNull(res[1496].exec("AXYZ", 4665)); +assertNull(res[1496].exec("XYZ ", 4666)); +assertNull(res[1496].exec("1XYZ", 4667)); +assertNull(res[1496].exec("AB=XYZ.. ", 4668)); +assertNull(res[1496].exec("XYZ ", 4669)); +assertNull(res[1496].exec("** Failers", 4670)); +assertNull(res[1496].exec("WXYZ ", 4671)); +assertNull(res[1497].exec("1234", 4672)); +assertNull(res[1497].exec("1234", 4673)); +assertNull(res[1497].exec("12-34", 4674)); +assertToStringEquals("{", res[1497].exec("12+x{661}-34 "), 4675); +assertNull(res[1497].exec("** Failers", 4676)); +assertToStringEquals("d", res[1497].exec("abcd "), 4677); +assertToStringEquals("d", res[1498].exec("abcd"), 4678); +assertNull(res[1498].exec("** Failers", 4679)); +assertNull(res[1498].exec("1234", 4680)); +assertNull(res[1499].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4681)); +assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4682); +assertToStringEquals(" ", res[1499].exec(" "), 4683); +assertNull(res[1499].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4684)); +assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4685); +assertNull(res[1500].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4686)); +assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1500].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4687); +assertNull(res[1501].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4688)); +assertNull(res[1501].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 4689)); +assertNull(res[1502].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4690)); +assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1502].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4691); +assertNull(res[1503].exec("a", 4692)); +assertNull(res[1503].exec("A ", 4693)); +assertNull(res[1504].exec("a", 4694)); +assertNull(res[1504].exec("A ", 4695)); +assertNull(res[1505].exec("A", 4696)); +assertNull(res[1505].exec("aZ", 4697)); +assertNull(res[1505].exec("** Failers", 4698)); +assertNull(res[1505].exec("abc ", 4699)); +assertNull(res[1506].exec("A", 4700)); +assertNull(res[1506].exec("aZ", 4701)); +assertNull(res[1506].exec("** Failers", 4702)); +assertNull(res[1506].exec("abc ", 4703)); +assertNull(res[1507].exec("a", 4704)); +assertNull(res[1507].exec("Az", 4705)); +assertNull(res[1507].exec("** Failers", 4706)); +assertNull(res[1507].exec("ABC ", 4707)); +assertNull(res[1508].exec("a", 4708)); +assertNull(res[1508].exec("Az", 4709)); +assertNull(res[1508].exec("** Failers", 4710)); +assertNull(res[1508].exec("ABC ", 4711)); +assertNull(res[1508].exec("x{c0}", 4712)); +assertNull(res[1508].exec("x{e0} ", 4713)); +assertNull(res[1508].exec("x{c0}", 4714)); +assertNull(res[1508].exec("x{e0} ", 4715)); +assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 4716)); +assertNull(res[1508].exec("** Failers", 4717)); +assertNull(res[1508].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 4718)); +assertNull(res[1508].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 4719)); +assertNull(res[1508].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 4720)); +assertNull(res[1508].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 4721)); +assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 4722)); +assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 4723)); +assertNull(res[1508].exec("ax{391}x{10427}x{ff3a}x{1fb0} ", 4724)); +assertNull(res[1508].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 4725)); +assertNull(res[1508].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 4726)); +assertNull(res[1508].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 4727)); +assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 4728)); +assertNull(res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}", 4729)); +assertNull(res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 4730)); +assertNull(res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 4731)); +assertNull(res[1508].exec("x{391}", 4732)); +assertNull(res[1508].exec("x{ff3a}", 4733)); +assertNull(res[1508].exec("x{3b1}", 4734)); +assertNull(res[1508].exec("x{ff5a} ", 4735)); +assertNull(res[1508].exec("x{c0}", 4736)); +assertNull(res[1508].exec("x{e0} ", 4737)); +assertNull(res[1508].exec("x{104}", 4738)); +assertNull(res[1508].exec("x{105}", 4739)); +assertNull(res[1508].exec("x{109} ", 4740)); +assertNull(res[1508].exec("** Failers", 4741)); +assertNull(res[1508].exec("x{100}", 4742)); +assertNull(res[1508].exec("x{10a} ", 4743)); +assertNull(res[1508].exec("Z", 4744)); +assertNull(res[1508].exec("z", 4745)); +assertNull(res[1508].exec("x{39c}", 4746)); +assertNull(res[1508].exec("x{178}", 4747)); +assertNull(res[1508].exec("|", 4748)); +assertNull(res[1508].exec("x{80}", 4749)); +assertNull(res[1508].exec("x{ff}", 4750)); +assertNull(res[1508].exec("x{100}", 4751)); +assertNull(res[1508].exec("x{101} ", 4752)); +assertNull(res[1508].exec("** Failers", 4753)); +assertNull(res[1508].exec("x{102}", 4754)); +assertNull(res[1508].exec("Y", 4755)); +assertNull(res[1508].exec("y ", 4756)); +assertNull(res[1509].exec("A", 4757)); +assertNull(res[1509].exec("Ax{300}BC ", 4758)); +assertNull(res[1509].exec("Ax{300}x{301}x{302}BC ", 4759)); +assertNull(res[1509].exec("*** Failers", 4760)); +assertNull(res[1509].exec("x{300} ", 4761)); +assertToStringEquals("X", res[1510].exec("X123"), 4762); +assertNull(res[1510].exec("*** Failers", 4763)); +assertNull(res[1510].exec("AXYZ", 4764)); +assertNull(res[1511].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 4765)); +assertNull(res[1511].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 4766)); +assertNull(res[1512].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 4767)); +assertNull(res[1512].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 4768)); +assertToStringEquals("A,,A", res[1513].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4769); +assertToStringEquals("A,,A", res[1513].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4770); +assertToStringEquals("A,,A", res[1514].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4771); +assertToStringEquals("A,,A", res[1514].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4772); +assertNull(res[1515].exec("*** Failers", 4773)); +assertNull(res[1515].exec("Ax{300}x{301}x{302}", 4774)); +assertNull(res[1516].exec("Ax{300}x{301}Bx{300}X", 4775)); +assertNull(res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 4776)); +assertNull(res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 4777)); +assertNull(res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 4778)); +assertNull(res[1517].exec("Ax{300}x{301}Bx{300}X", 4779)); +assertNull(res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 4780)); +assertNull(res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 4781)); +assertNull(res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 4782)); +assertNull(res[1518].exec("12X", 4783)); +assertNull(res[1518].exec("123X", 4784)); +assertNull(res[1518].exec("*** Failers", 4785)); +assertNull(res[1518].exec("X", 4786)); +assertNull(res[1518].exec("1X", 4787)); +assertNull(res[1518].exec("1234X ", 4788)); +assertNull(res[1518].exec("x{100} ", 4789)); +assertNull(res[1518].exec("x{101} ", 4790)); +assertNull(res[1518].exec("x{2e81}x{3007}x{2f804}x{31a0}", 4791)); +assertNull(res[1518].exec("** Failers", 4792)); +assertNull(res[1518].exec("x{2e7f} ", 4793)); +assertNull(res[1518].exec("x{3105}", 4794)); +assertNull(res[1518].exec("** Failers", 4795)); +assertNull(res[1518].exec("x{30ff} ", 4796)); +assertNull(res[1519].exec("x{06e9}", 4797)); +assertNull(res[1519].exec("x{060b}", 4798)); +assertNull(res[1519].exec("** Failers", 4799)); +assertNull(res[1519].exec("Xx{06e9} ", 4800)); +assertNull(res[1520].exec("x{2f800}", 4801)); +assertNull(res[1520].exec("** Failers", 4802)); +assertNull(res[1520].exec("x{a014}", 4803)); +assertNull(res[1520].exec("x{a4c6} ", 4804)); +assertNull(res[1521].exec("AXYZ", 4805)); +assertNull(res[1521].exec("x{1234}XYZ ", 4806)); +assertNull(res[1521].exec("** Failers", 4807)); +assertNull(res[1521].exec("X ", 4808)); +assertNull(res[1522].exec("** Failers", 4809)); +assertNull(res[1522].exec("AX", 4810)); +assertNull(res[1523].exec("XYZ", 4811)); +assertNull(res[1523].exec("AXYZ", 4812)); +assertNull(res[1523].exec("x{1234}XYZ ", 4813)); +assertNull(res[1523].exec("** Failers", 4814)); +assertNull(res[1523].exec("ABXYZ ", 4815)); +assertNull(res[1524].exec("XYZ", 4816)); +assertNull(res[1524].exec("** Failers", 4817)); +assertNull(res[1524].exec("AXYZ", 4818)); +assertNull(res[1524].exec("x{1234}XYZ ", 4819)); +assertNull(res[1524].exec("ABXYZ ", 4820)); +assertNull(res[1524].exec("AXYZ", 4821)); +assertNull(res[1524].exec("x{1234}XYZ", 4822)); +assertNull(res[1524].exec("Ax{1234}XYZ", 4823)); +assertNull(res[1524].exec("** Failers", 4824)); +assertNull(res[1524].exec("XYZ", 4825)); +assertNull(res[1524].exec("** Failers", 4826)); +assertNull(res[1524].exec("AXYZ", 4827)); +assertNull(res[1524].exec("x{1234}XYZ", 4828)); +assertNull(res[1524].exec("Ax{1234}XYZ", 4829)); +assertNull(res[1524].exec("XYZ", 4830)); +assertNull(res[1525].exec("XYZ", 4831)); +assertNull(res[1525].exec("AXYZ", 4832)); +assertNull(res[1525].exec("x{1234}XYZ", 4833)); +assertNull(res[1525].exec("Ax{1234}XYZ", 4834)); +assertNull(res[1525].exec("** Failers", 4835)); +assertNull(res[1526].exec("XYZ", 4836)); +assertNull(res[1526].exec("** Failers", 4837)); +assertNull(res[1526].exec("AXYZ", 4838)); +assertNull(res[1526].exec("x{1234}XYZ", 4839)); +assertNull(res[1526].exec("Ax{1234}XYZ", 4840)); +assertToStringEquals("AX", res[1527].exec("AXYZ"), 4841); +assertNull(res[1527].exec("x{1234}XYZ ", 4842)); +assertNull(res[1527].exec("** Failers", 4843)); +assertNull(res[1527].exec("X ", 4844)); +assertNull(res[1528].exec("** Failers", 4845)); +assertToStringEquals("AX", res[1528].exec("AX"), 4846); +assertToStringEquals("X", res[1529].exec("XYZ"), 4847); +assertToStringEquals("AX", res[1529].exec("AXYZ"), 4848); +assertNull(res[1529].exec("x{1234}XYZ ", 4849)); +assertNull(res[1529].exec("** Failers", 4850)); +assertNull(res[1529].exec("ABXYZ ", 4851)); +assertToStringEquals("X", res[1530].exec("XYZ"), 4852); +assertNull(res[1530].exec("** Failers", 4853)); +assertToStringEquals("AX", res[1530].exec("AXYZ"), 4854); +assertNull(res[1530].exec("x{1234}XYZ ", 4855)); +assertNull(res[1530].exec("ABXYZ ", 4856)); +assertToStringEquals("AX", res[1531].exec("AXYZ"), 4857); +assertNull(res[1531].exec("x{1234}XYZ", 4858)); +assertNull(res[1531].exec("Ax{1234}XYZ", 4859)); +assertNull(res[1531].exec("** Failers", 4860)); +assertNull(res[1531].exec("XYZ", 4861)); +assertNull(res[1532].exec("** Failers", 4862)); +assertToStringEquals("AX", res[1532].exec("AXYZ"), 4863); +assertNull(res[1532].exec("x{1234}XYZ", 4864)); +assertNull(res[1532].exec("Ax{1234}XYZ", 4865)); +assertNull(res[1532].exec("XYZ", 4866)); +assertToStringEquals("X", res[1533].exec("XYZ"), 4867); +assertToStringEquals("AX", res[1533].exec("AXYZ"), 4868); +assertNull(res[1533].exec("x{1234}XYZ", 4869)); +assertNull(res[1533].exec("Ax{1234}XYZ", 4870)); +assertNull(res[1533].exec("** Failers", 4871)); +assertToStringEquals("X", res[1534].exec("XYZ"), 4872); +assertNull(res[1534].exec("** Failers", 4873)); +assertToStringEquals("AX", res[1534].exec("AXYZ"), 4874); +assertNull(res[1534].exec("x{1234}XYZ", 4875)); +assertNull(res[1534].exec("Ax{1234}XYZ", 4876)); +assertNull(res[1535].exec("abcdefgh", 4877)); +assertNull(res[1535].exec("x{1234}\n\x0dx{3456}xyz ", 4878)); +assertNull(res[1536].exec("abcdefgh", 4879)); +assertNull(res[1536].exec("x{1234}\n\x0dx{3456}xyz ", 4880)); +assertNull(res[1537].exec("** Failers", 4881)); +assertNull(res[1537].exec("abcdefgh", 4882)); +assertNull(res[1537].exec("x{1234}\n\x0dx{3456}xyz ", 4883)); +assertNull(res[1538].exec(" AXY", 4884)); +assertNull(res[1538].exec(" aXY", 4885)); +assertNull(res[1538].exec(" x{1c5}XY", 4886)); +assertNull(res[1538].exec(" ** Failers", 4887)); +assertNull(res[1538].exec(" x{1bb}XY", 4888)); +assertNull(res[1538].exec(" x{2b0}XY", 4889)); +assertNull(res[1538].exec(" !XY ", 4890)); +assertNull(res[1539].exec(" AXY", 4891)); +assertNull(res[1539].exec(" aXY", 4892)); +assertNull(res[1539].exec(" x{1c5}XY", 4893)); +assertNull(res[1539].exec(" ** Failers", 4894)); +assertNull(res[1539].exec(" x{1bb}XY", 4895)); +assertNull(res[1539].exec(" x{2b0}XY", 4896)); +assertNull(res[1539].exec(" !XY ", 4897)); +assertNull(res[1539].exec(" AXY", 4898)); +assertNull(res[1539].exec(" aXY", 4899)); +assertNull(res[1539].exec(" AbcdeXyz ", 4900)); +assertNull(res[1539].exec(" x{1c5}AbXY", 4901)); +assertNull(res[1539].exec(" abcDEXypqreXlmn ", 4902)); +assertNull(res[1539].exec(" ** Failers", 4903)); +assertNull(res[1539].exec(" x{1bb}XY", 4904)); +assertNull(res[1539].exec(" x{2b0}XY", 4905)); +assertNull(res[1539].exec(" !XY ", 4906)); +assertNull(res[1540].exec(" AXY", 4907)); +assertNull(res[1540].exec(" aXY", 4908)); +assertNull(res[1540].exec(" AbcdeXyz ", 4909)); +assertNull(res[1540].exec(" x{1c5}AbXY", 4910)); +assertNull(res[1540].exec(" abcDEXypqreXlmn ", 4911)); +assertNull(res[1540].exec(" ** Failers", 4912)); +assertNull(res[1540].exec(" x{1bb}XY", 4913)); +assertNull(res[1540].exec(" x{2b0}XY", 4914)); +assertNull(res[1540].exec(" !XY ", 4915)); +assertNull(res[1540].exec(" AXY", 4916)); +assertNull(res[1540].exec(" aXY", 4917)); +assertNull(res[1540].exec(" AbcdeXyz ", 4918)); +assertNull(res[1540].exec(" x{1c5}AbXY", 4919)); +assertNull(res[1540].exec(" abcDEXypqreXlmn ", 4920)); +assertNull(res[1540].exec(" ** Failers", 4921)); +assertNull(res[1540].exec(" x{1bb}XY", 4922)); +assertNull(res[1540].exec(" x{2b0}XY", 4923)); +assertNull(res[1540].exec(" !XY ", 4924)); +assertNull(res[1541].exec(" AXY", 4925)); +assertNull(res[1541].exec(" aXY", 4926)); +assertNull(res[1541].exec(" AbcdeXyz ", 4927)); +assertNull(res[1541].exec(" x{1c5}AbXY", 4928)); +assertNull(res[1541].exec(" abcDEXypqreXlmn ", 4929)); +assertNull(res[1541].exec(" ** Failers", 4930)); +assertNull(res[1541].exec(" x{1bb}XY", 4931)); +assertNull(res[1541].exec(" x{2b0}XY", 4932)); +assertNull(res[1541].exec(" !XY ", 4933)); +assertNull(res[1542].exec(" !XY", 4934)); +assertNull(res[1542].exec(" x{1bb}XY", 4935)); +assertNull(res[1542].exec(" x{2b0}XY", 4936)); +assertNull(res[1542].exec(" ** Failers", 4937)); +assertNull(res[1542].exec(" x{1c5}XY", 4938)); +assertNull(res[1542].exec(" AXY ", 4939)); +assertNull(res[1543].exec(" !XY", 4940)); +assertNull(res[1543].exec(" x{1bb}XY", 4941)); +assertNull(res[1543].exec(" x{2b0}XY", 4942)); +assertNull(res[1543].exec(" ** Failers", 4943)); +assertNull(res[1543].exec(" x{1c5}XY", 4944)); +assertNull(res[1543].exec(" AXY ", 4945)); +assertNull(res[1543].exec("x{c0}x{e0}x{116}x{117}", 4946)); +assertNull(res[1543].exec("x{c0}x{e0}x{116}x{117}", 4947)); +assertNull(res[1545].exec("123abcdefg", 4948)); +assertNull(res[1545].exec("123abc\xc4\xc5zz", 4949)); +assertNull(res[1546].exec("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}====", 4950)); +assertNull(res[1546].exec("x{a77d}x{1d79}", 4951)); +assertNull(res[1546].exec("x{1d79}x{a77d} ", 4952)); +assertNull(res[1546].exec("x{a77d}x{1d79}", 4953)); +assertNull(res[1546].exec("** Failers ", 4954)); +assertNull(res[1546].exec("x{1d79}x{a77d} ", 4955)); assertThrows("var re = //;", 4956); diff --git a/test/mjsunit/tools/codemap.js b/test/mjsunit/tools/codemap.js index 81fb8101..33d7e4e0 100644 --- a/test/mjsunit/tools/codemap.js +++ b/test/mjsunit/tools/codemap.js @@ -157,6 +157,7 @@ function assertNoEntry(codeMap, addr) { codeMap.addStaticCode(0x15500, newCodeEntry(0x5000, 'lib2')); codeMap.addStaticCode(0x155500, newCodeEntry(0x10000, 'lib3')); var allStatics = codeMap.getAllStaticEntries(); + allStatics = allStatics.map(String); allStatics.sort(); assertEquals(['lib1: 3000', 'lib2: 5000', 'lib3: 10000'], allStatics); })(); @@ -168,13 +169,15 @@ function assertNoEntry(codeMap, addr) { codeMap.addCode(0x1700, newCodeEntry(0x100, 'code2')); codeMap.addCode(0x1900, newCodeEntry(0x50, 'code3')); var allDynamics = codeMap.getAllDynamicEntries(); + allDynamics = allDynamics.map(String); allDynamics.sort(); assertEquals(['code1: 200', 'code2: 100', 'code3: 50'], allDynamics); codeMap.deleteCode(0x1700); var allDynamics2 = codeMap.getAllDynamicEntries(); + allDynamics2 = allDynamics2.map(String); allDynamics2.sort(); assertEquals(['code1: 200', 'code3: 50'], allDynamics2); codeMap.deleteCode(0x1500); var allDynamics3 = codeMap.getAllDynamicEntries(); - assertEquals(['code3: 50'], allDynamics3); + assertEquals(['code3: 50'], allDynamics3.map(String)); })(); diff --git a/test/mjsunit/tools/splaytree.js b/test/mjsunit/tools/splaytree.js index 5e18796d..d582dc97 100644 --- a/test/mjsunit/tools/splaytree.js +++ b/test/mjsunit/tools/splaytree.js @@ -81,13 +81,13 @@ function createSampleTree() { (function testSplay() { var tree = new SplayTree(); tree.root_ = createSampleTree(); - assertArrayEquals(['50', '30', '60', '10', '40', '90', '20', '70', '100', '15', '80'], + assertArrayEquals([50, 30, 60, 10, 40, 90, 20, 70, 100, 15, 80], tree.exportValues()); tree.splay_(50); - assertArrayEquals(['50', '30', '60', '10', '40', '90', '20', '70', '100', '15', '80'], + assertArrayEquals([50, 30, 60, 10, 40, 90, 20, 70, 100, 15, 80], tree.exportValues()); tree.splay_(80); - assertArrayEquals(['80', '60', '90', '50', '70', '100', '30', '10', '40', '20', '15'], + assertArrayEquals([80, 60, 90, 50, 70, 100, 30, 10, 40, 20, 15], tree.exportValues()); })(); diff --git a/test/preparser/empty.js b/test/preparser/empty.js new file mode 100644 index 00000000..70b88e2a --- /dev/null +++ b/test/preparser/empty.js @@ -0,0 +1,28 @@ +// Copyright 2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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 file contains no JavaScript code. diff --git a/test/preparser/functions-only.js b/test/preparser/functions-only.js new file mode 100644 index 00000000..4dcde579 --- /dev/null +++ b/test/preparser/functions-only.js @@ -0,0 +1,38 @@ +// Copyright 2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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 file contains no identifiers or string literals, but does contain +// symbols. + +(function () { + if (this != null) { + return this; + } + while (true) { + if ([][2]) return false; + } +})({}, function() { return [true]; } ); diff --git a/test/preparser/non-alphanum.js b/test/preparser/non-alphanum.js new file mode 100644 index 00000000..83bd1f8b --- /dev/null +++ b/test/preparser/non-alphanum.js @@ -0,0 +1,34 @@ +// Copyright 2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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 file contains no symbols or function declarations, and only +// non-alphanumeric characters, but does contain valid code. + +// Created using http://discogscounter.getfreehosting.co.uk/js-noalnum_com.php +// Probably only works in Firefox, but should parse fine. + +([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]])([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(![]+[])[+!+[]]]((![]+[])[+!+[]])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+[][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]]((![]+[])[+!+[]]+(+[![]]+[])[+[]])[+[]]+(![]+[])[+!+[]]+(+[]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+([]+([]+[])[([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[!+[]+!+[]+!+[]+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]]((![]+[])[+!+[]]+[+[]])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[!+[]+!+[]]+[][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]]((+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])+[])[+[]]+(![]+[])[+[]])[+[]]) diff --git a/test/preparser/symbols-only.js b/test/preparser/symbols-only.js new file mode 100644 index 00000000..b6520636 --- /dev/null +++ b/test/preparser/symbols-only.js @@ -0,0 +1,49 @@ +// Copyright 2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * 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. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +// OWNER OR 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 file contains no function declarations. + +var x = 42; +var y = "hello world"; +if (x == y) { + with ({ x: 10, y: "20", z: 42 }) { + print(z); + } +} +try { + x = 2; + throw y; + y = 4; +} catch (e) { + y = e; +} finally { + x = y; +} +for (var i = 0; i < 10; i++) { + x += x; +} +print(y); diff --git a/test/preparser/testcfg.py b/test/preparser/testcfg.py new file mode 100644 index 00000000..c78d03bc --- /dev/null +++ b/test/preparser/testcfg.py @@ -0,0 +1,90 @@ +# Copyright 2011 the V8 project authors. All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * 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. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT +# OWNER OR 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. + +import test +import os +from os.path import join, dirname, exists +import platform +import utils + + +class PreparserTestCase(test.TestCase): + + def __init__(self, root, path, executable, mode, context): + super(PreparserTestCase, self).__init__(context, path, mode) + self.executable = executable + self.root = root + + def GetLabel(self): + return "%s %s %s" % (self.mode, self.path[-2], self.path[-1]) + + def GetName(self): + return self.path[-1] + + def BuildCommand(self, path): + testfile = join(self.root, self.GetName()) + ".js" + result = [self.executable, testfile] + return result + + def GetCommand(self): + return self.BuildCommand(self.path) + + def Run(self): + return test.TestCase.Run(self) + + +class PreparserTestConfiguration(test.TestConfiguration): + + def __init__(self, context, root): + super(PreparserTestConfiguration, self).__init__(context, root) + + def GetBuildRequirements(self): + return ['preparser'] + + def ListTests(self, current_path, path, mode, variant_flags): + executable = join('obj', 'preparser', mode, 'preparser') + if utils.IsWindows(): + executable += '.exe' + executable = join(self.context.buildspace, executable) + # Find all .js files in tests/preparser directory. + filenames = [f[:-3] for f in os.listdir(self.root) if f.endswith(".js")] + filenames.sort() + result = [] + for file in filenames: + result.append(PreparserTestCase(self.root, + current_path + [file], executable, + mode, self.context)) + return result + + def GetTestStatus(self, sections, defs): + status_file = join(self.root, 'preparser.status') + if exists(status_file): + test.ReadConfigurationInto(status_file, sections, defs) + + +def GetConfiguration(context, root): + return PreparserTestConfiguration(context, root) diff --git a/test/sputnik/testcfg.py b/test/sputnik/testcfg.py index c1e3c1bb..c9eb4f21 100644 --- a/test/sputnik/testcfg.py +++ b/test/sputnik/testcfg.py @@ -57,7 +57,7 @@ class SputnikTestCase(test.TestCase): def AfterRun(self, result): # Dispose the temporary file if everything looks okay. - if not result.HasPreciousOutput(): self.tmpfile.Dispose() + if result is None or not result.HasPreciousOutput(): self.tmpfile.Dispose() self.tmpfile = None def GetCommand(self): diff --git a/test/test262/harness-adapt.js b/test/test262/harness-adapt.js index b52afdba..bc10a9d5 100644 --- a/test/test262/harness-adapt.js +++ b/test/test262/harness-adapt.js @@ -43,7 +43,7 @@ var ES5Harness = (function() { } Test262Error.prototype.toString = function() { - return this.result; + return this.result + " " + error; } function registerTest(test) { @@ -52,22 +52,24 @@ var ES5Harness = (function() { try { var res = test.test.call($this); } catch(e) { - print(e); - res = 'fail'; error = e; + res = 'fail'; + error = e; } var retVal = /^s/i.test(test.id) ? (res === true || typeof res == 'undefined' ? 'pass' : 'fail') : (res === true ? 'pass' : 'fail'); if (retVal != 'pass') { + var precondition = (test.precondition !== undefined) + ? test.precondition.toString() + : ''; + throw new Test262Error( test.id, test.path, test.description, test.test.toString(), - (test.precondition !== undefined) - ? test.precondition.toString() - : '', + precondition, retVal, error); } diff --git a/test/test262/test262.status b/test/test262/test262.status index bdc8b9c7..754984df 100644 --- a/test/test262/test262.status +++ b/test/test262/test262.status @@ -32,6 +32,20 @@ prefix ietestcenter + +# +# Deliberate differences for compatibility with other browsers +# +# 15.9.5.43-0-9 and 15.9.5.43-0-10. V8 doesn't throw RangeError +# from Date.prototype.toISOString when string is not a finite number. +# This is compatible with Firefox and Safari. +15.9.5.43-0-9: PASS || FAIL +15.9.5.43-0-10: PASS || FAIL + +# +# Unanalyzed failures which may be bugs or deliberate differences +# + # BUG: 7.6 - SyntaxError expected: reserved words used as Identifier # Names in UTF8: class (class) 7.6-30: FAIL @@ -913,66 +927,6 @@ prefix ietestcenter # of 'O', and 'desc' is accessor descriptor, test updating multiple # attribute values of 'P' (10.6 [[DefineOwnProperty]] step 3) 15.2.3.7-6-a-292: FAIL -# Bug? Object.preventExtensions - indexed properties cannot be added into the -# returned object -15.2.3.10-3-2: FAIL -# Bug? Object.preventExtensions - indexed properties cannot be added into a -# Function object -15.2.3.10-3-3: FAIL -# Bug? Object.preventExtensions - indexed properties cannot be added into an -# Array object -15.2.3.10-3-4: FAIL -# Bug? Object.preventExtensions - indexed properties cannot be added into a -# String object -15.2.3.10-3-5-1: FAIL -# Bug? Object.preventExtensions - indexed properties cannot be added into a -# Boolean object -15.2.3.10-3-6: FAIL -# Bug? Object.preventExtensions - indexed properties cannot be added into a -# Number object -15.2.3.10-3-7: FAIL -# Bug? Object.preventExtensions - indexed properties cannot be added into a Date -# object -15.2.3.10-3-8: FAIL -# Bug? Object.preventExtensions - indexed properties cannot be added into a -# RegExp object -15.2.3.10-3-9: FAIL -# Bug? Object.preventExtensions - indexed properties cannot be added into an -# Error object -15.2.3.10-3-10: FAIL -# Bug? Object.preventExtensions - indexed properties cannot be added into an -# Arguments object -15.2.3.10-3-11: FAIL -# Bug? Object.preventExtensions - named properties cannot be added into the -# returned object -15.2.3.10-3-12: FAIL -# Bug? Object.preventExtensions - named properties cannot be added into a -# Function object -15.2.3.10-3-13: FAIL -# Bug? Object.preventExtensions - named properties cannot be added into an Array -# object -15.2.3.10-3-14: FAIL -# Bug? Object.preventExtensions - named properties cannot be added into a String -# object -15.2.3.10-3-15: FAIL -# Bug? Object.preventExtensions - named properties cannot be added into a -# Boolean object -15.2.3.10-3-16: FAIL -# Bug? Object.preventExtensions - named properties cannot be added into a Number -# object -15.2.3.10-3-17: FAIL -# Bug? Object.preventExtensions - named properties cannot be added into a Date -# object -15.2.3.10-3-18: FAIL -# Bug? Object.preventExtensions - named properties cannot be added into a RegExp -# object -15.2.3.10-3-19: FAIL -# Bug? Object.preventExtensions - named properties cannot be added into an Error -# object -15.2.3.10-3-20: FAIL -# Bug? Object.preventExtensions - named properties cannot be added into an -# Arguments object -15.2.3.10-3-21: FAIL # Bug? Object.prototype.toString - '[object Undefined]' will be returned when # 'this' value is undefined 15.2.4.2-1-1: FAIL |
