1/**
2 *  File Name:          RegExp/octal-002.js
3 *  ECMA Section:       15.7.1
4 *  Description:        Based on ECMA 2 Draft 7 February 1999
5 *  Simple test cases for matching OctalEscapeSequences.
6 *  Author:             christine@netscape.com
7 *  Date:               19 February 1999
8 */
9    var SECTION = "RegExp/octal-002.js";
10    var VERSION = "ECMA_2";
11    var TITLE   = "RegExp patterns that contain OctalEscapeSequences";
12    var BUGNUMBER="http://scopus/bugsplat/show_bug.cgi?id=346189";
13
14    startTest();
15
16// backreference
17    AddRegExpCases(
18        /(.)(.)(.)(.)(.)(.)(.)(.)\8/,
19        "/(.)(.)(.)(.)(.)(.)(.)(.)\\8",
20        "aabbccaaabbbccc",
21        "aabbccaaabbbccc",
22        0,
23        ["aabbccaaa", "a", "a", "b", "b", "c", "c", "a", "a"] );
24
25    AddRegExpCases(
26        /(.)(.)(.)(.)(.)(.)(.)(.)(.)\9/,
27        "/(.)(.)(.)(.)(.)(.)(.)(.)\\9",
28        "aabbccaabbcc",
29        "aabbccaabbcc",
30        0,
31        ["aabbccaabb", "a", "a", "b", "b", "c", "c", "a", "a", "b"] );
32
33    AddRegExpCases(
34        /(.)(.)(.)(.)(.)(.)(.)(.)(.)\8/,
35        "/(.)(.)(.)(.)(.)(.)(.)(.)(.)\\8",
36        "aabbccaababcc",
37        "aabbccaababcc",
38        0,
39        ["aabbccaaba", "a", "a", "b", "b", "c", "c", "a", "a", "b"] );
40
41    test();
42
43function AddRegExpCases(
44    regexp, str_regexp, pattern, str_pattern, index, matches_array ) {
45
46    // prevent a runtime error
47
48    if ( regexp.exec(pattern) == null || matches_array == null ) {
49        AddTestCase(
50            regexp + ".exec(" + str_pattern +")",
51            matches_array,
52            regexp.exec(pattern) );
53
54        return;
55    }
56    AddTestCase(
57        str_regexp + ".exec(" + str_pattern +").length",
58        matches_array.length,
59        regexp.exec(pattern).length );
60
61    AddTestCase(
62        str_regexp + ".exec(" + str_pattern +").index",
63        index,
64        regexp.exec(pattern).index );
65
66    AddTestCase(
67        str_regexp + ".exec(" + str_pattern +").input",
68        pattern,
69        regexp.exec(pattern).input );
70
71    AddTestCase(
72        str_regexp + ".exec(" + str_pattern +").toString()",
73        matches_array.toString(),
74        regexp.exec(pattern).toString() );
75/*
76    var limit = matches_array.length > regexp.exec(pattern).length
77                ? matches_array.length
78                : regexp.exec(pattern).length;
79
80    for ( var matches = 0; matches < limit; matches++ ) {
81        AddTestCase(
82            str_regexp + ".exec(" + str_pattern +")[" + matches +"]",
83            matches_array[matches],
84            regexp.exec(pattern)[matches] );
85    }
86*/
87}
88