aae6659cc14acd0f68316c491c53d8c82ae9d452
[profile/ivi/qtdeclarative.git] / tests / auto / declarative / parserstress / tests / ecma_3 / Statements / switch-001.js
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* ***** BEGIN LICENSE BLOCK *****
3  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4  *
5  * The contents of this file are subject to the Mozilla Public License Version
6  * 1.1 (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  * http://www.mozilla.org/MPL/
9  *
10  * Software distributed under the License is distributed on an "AS IS" basis,
11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12  * for the specific language governing rights and limitations under the
13  * License.
14  *
15  * The Original Code is mozilla.org code.
16  *
17  * The Initial Developer of the Original Code is
18  * Netscape Communications Corporation.
19  * Portions created by the Initial Developer are Copyright (C) 1998
20  * the Initial Developer. All Rights Reserved.
21  *
22  * Contributor(s):
23  *   pschwartau@netscape.com
24  *
25  * Alternatively, the contents of this file may be used under the terms of
26  * either the GNU General Public License Version 2 or later (the "GPL"), or
27  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28  * in which case the provisions of the GPL or the LGPL are applicable instead
29  * of those above. If you wish to allow use of your version of this file only
30  * under the terms of either the GPL or the LGPL, and not to allow others to
31  * use your version of this file under the terms of the MPL, indicate your
32  * decision by deleting the provisions above and replace them with the notice
33  * and other provisions required by the GPL or the LGPL. If you do not delete
34  * the provisions above, a recipient may use your version of this file under
35  * the terms of any one of the MPL, the GPL or the LGPL.
36  *
37  * ***** END LICENSE BLOCK ***** */
38
39 /*
40  * Date: 07 May 2001
41  *
42  * SUMMARY: Testing the switch statement
43  *
44  * See ECMA3  Section 12.11,  "The switch Statement"
45  */
46 //-----------------------------------------------------------------------------
47 var gTestfile = 'switch-001.js';
48 var UBound = 0;
49 var BUGNUMBER = '(none)';
50 var summary = 'Testing the switch statement';
51 var cnMatch = 'Match';
52 var cnNoMatch = 'NoMatch';
53 var status = '';
54 var statusitems = [ ];
55 var actual = '';
56 var actualvalues = [ ];
57 var expect= '';
58 var expectedvalues = [ ];
59
60
61 status = 'Section A of test';
62 actual = match(17, f(fInverse(17)), f, fInverse);
63 expect = cnMatch;
64 addThis();
65
66 status = 'Section B of test';
67 actual = match(17, 18, f, fInverse);
68 expect = cnNoMatch;
69 addThis();
70
71 status = 'Section C of test';
72 actual = match(1, 1, Math.exp, Math.log);
73 expect = cnMatch;
74 addThis();
75
76 status = 'Section D of test';
77 actual = match(1, 2, Math.exp, Math.log);
78 expect = cnNoMatch;
79 addThis();
80
81 status = 'Section E of test';
82 actual = match(1, 1, Math.sin, Math.cos);
83 expect = cnNoMatch;
84 addThis();
85
86
87
88 //---------------------------------------------------------------------------------
89 test();
90 //---------------------------------------------------------------------------------
91
92
93
94 /*
95  * If F,G are inverse functions and x==y, this should return cnMatch -
96  */
97 function match(x, y, F, G)
98 {
99   switch (x)
100   {
101   case F(G(y)):
102     return cnMatch;
103
104   default:
105     return cnNoMatch;
106   }
107 }
108
109
110 function addThis()
111 {
112   statusitems[UBound] = status;
113   actualvalues[UBound] = actual;
114   expectedvalues[UBound] = expect;
115   UBound++;
116 }
117
118
119 function test()
120 {
121   enterFunc ('test');
122   printBugNumber(BUGNUMBER);
123   printStatus (summary);
124
125   for (var i = 0; i < UBound; i++)
126   {
127     reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]);
128   }
129
130   exitFunc ('test');
131 }
132
133
134 function f(m)
135 {
136   return 2*(m+1);
137 }
138
139
140 function fInverse(n)
141 {
142   return (n-2)/2;
143 }