~ubuntu-branches/ubuntu/raring/qtwebkit-source/raring-proposed

« back to all changes in this revision

Viewing changes to Source/JavaScriptCore/tests/mozilla/ecma_2/String/match-001.js

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2013-02-18 14:24:18 UTC
  • Revision ID: package-import@ubuntu.com-20130218142418-eon0jmjg3nj438uy
Tags: upstream-2.3
ImportĀ upstreamĀ versionĀ 2.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 *  File Name:          String/match-001.js
 
3
 *  ECMA Section:       15.6.4.9
 
4
 *  Description:        Based on ECMA 2 Draft 7 February 1999
 
5
 *
 
6
 *  Author:             christine@netscape.com
 
7
 *  Date:               19 February 1999
 
8
 */
 
9
 
 
10
/*
 
11
 *  String.match( regexp )
 
12
 *
 
13
 *  If regexp is not an object of type RegExp, it is replaced with result
 
14
 *  of the expression new RegExp(regexp). Let string denote the result of
 
15
 *  converting the this value to a string.  If regexp.global is false,
 
16
 *  return the result obtained by invoking RegExp.prototype.exec (see
 
17
 *  section 15.7.5.3) on regexp with string as parameter.
 
18
 *
 
19
 *  Otherwise, set the regexp.lastIndex property to 0 and invoke
 
20
 *  RegExp.prototype.exec repeatedly until there is no match. If there is a
 
21
 *  match with an empty string (in other words, if the value of
 
22
 *  regexp.lastIndex is left unchanged) increment regexp.lastIndex by 1.
 
23
 *  The value returned is an array with the properties 0 through n-1
 
24
 *  corresponding to the first element of the result of each matching
 
25
 *  invocation of RegExp.prototype.exec.
 
26
 *
 
27
 *  Note that the match function is intentionally generic; it does not
 
28
 *  require that its this value be a string object.  Therefore, it can be
 
29
 *  transferred to other kinds of objects for use as a method.
 
30
 */
 
31
 
 
32
    var SECTION = "String/match-001.js";
 
33
    var VERSION = "ECMA_2";
 
34
    var TITLE   = "String.prototype.match( regexp )";
 
35
 
 
36
    startTest();
 
37
 
 
38
    // the regexp argument is not a RegExp object
 
39
    // this is not a string object
 
40
 
 
41
    // cases in which the regexp global property is false
 
42
 
 
43
     AddRegExpCases( 3, "3",   "1234567890", 1, 2, ["3"] );
 
44
 
 
45
    // cases in which the regexp object global property is true
 
46
 
 
47
    AddGlobalRegExpCases( /34/g, "/34/g", "343443444",  3, ["34", "34", "34"] );
 
48
    AddGlobalRegExpCases( /\d{1}/g,  "/d{1}/g",  "123456abcde7890", 10,
 
49
        ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] );
 
50
 
 
51
    AddGlobalRegExpCases( /\d{2}/g,  "/d{2}/g",  "123456abcde7890", 5,
 
52
        ["12", "34", "56", "78", "90"] );
 
53
 
 
54
    AddGlobalRegExpCases( /\D{2}/g,  "/d{2}/g",  "123456abcde7890", 2,
 
55
        ["ab", "cd"] );
 
56
 
 
57
    test();
 
58
 
 
59
 
 
60
function AddRegExpCases(
 
61
    regexp, str_regexp, string, length, index, matches_array ) {
 
62
 
 
63
    AddTestCase(
 
64
        "( " + string  + " ).match(" + str_regexp +").length",
 
65
        length,
 
66
        string.match(regexp).length );
 
67
 
 
68
    AddTestCase(
 
69
        "( " + string + " ).match(" + str_regexp +").index",
 
70
        index,
 
71
        string.match(regexp).index );
 
72
 
 
73
    AddTestCase(
 
74
        "( " + string + " ).match(" + str_regexp +").input",
 
75
        string,
 
76
        string.match(regexp).input );
 
77
 
 
78
    for ( var matches = 0; matches < matches_array.length; matches++ ) {
 
79
        AddTestCase(
 
80
            "( " + string + " ).match(" + str_regexp +")[" + matches +"]",
 
81
            matches_array[matches],
 
82
            string.match(regexp)[matches] );
 
83
    }
 
84
}
 
85
 
 
86
function AddGlobalRegExpCases(
 
87
    regexp, str_regexp, string, length, matches_array ) {
 
88
 
 
89
    AddTestCase(
 
90
        "( " + string  + " ).match(" + str_regexp +").length",
 
91
        length,
 
92
        string.match(regexp).length );
 
93
 
 
94
    for ( var matches = 0; matches < matches_array.length; matches++ ) {
 
95
        AddTestCase(
 
96
            "( " + string + " ).match(" + str_regexp +")[" + matches +"]",
 
97
            matches_array[matches],
 
98
            string.match(regexp)[matches] );
 
99
    }
 
100
}