OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 using ::v8::TryCatch; | 60 using ::v8::TryCatch; |
61 using ::v8::Undefined; | 61 using ::v8::Undefined; |
62 using ::v8::V8; | 62 using ::v8::V8; |
63 using ::v8::Value; | 63 using ::v8::Value; |
64 | 64 |
65 static void ExpectBoolean(bool expected, Local<Value> result) { | 65 static void ExpectBoolean(bool expected, Local<Value> result) { |
66 CHECK(result->IsBoolean()); | 66 CHECK(result->IsBoolean()); |
67 CHECK_EQ(expected, result->BooleanValue()); | 67 CHECK_EQ(expected, result->BooleanValue()); |
68 } | 68 } |
69 | 69 |
| 70 |
70 static void ExpectInt32(int32_t expected, Local<Value> result) { | 71 static void ExpectInt32(int32_t expected, Local<Value> result) { |
71 CHECK(result->IsInt32()); | 72 CHECK(result->IsInt32()); |
72 CHECK_EQ(expected, result->Int32Value()); | 73 CHECK_EQ(expected, result->Int32Value()); |
73 } | 74 } |
74 | 75 |
| 76 |
75 static void ExpectNumber(double expected, Local<Value> result) { | 77 static void ExpectNumber(double expected, Local<Value> result) { |
76 CHECK(result->IsNumber()); | 78 CHECK(result->IsNumber()); |
77 CHECK_EQ(expected, result->NumberValue()); | 79 CHECK_EQ(expected, result->NumberValue()); |
78 } | 80 } |
79 | 81 |
| 82 |
80 static void ExpectUndefined(Local<Value> result) { | 83 static void ExpectUndefined(Local<Value> result) { |
81 CHECK(result->IsUndefined()); | 84 CHECK(result->IsUndefined()); |
82 } | 85 } |
83 | 86 |
| 87 |
84 // Tests are sorted by order of implementation. | 88 // Tests are sorted by order of implementation. |
85 | 89 |
86 TEST(simple_value) { | 90 TEST(simple_value) { |
87 v8::HandleScope scope; | 91 v8::HandleScope scope; |
88 LocalContext env; | 92 LocalContext env; |
89 Local<Value> result = CompileRun("0x271828;"); | 93 Local<Value> result = CompileRun("0x271828;"); |
90 ExpectInt32(0x271828, result); | 94 ExpectInt32(0x271828, result); |
91 } | 95 } |
92 | 96 |
93 | 97 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 | 168 |
165 if_comparison_testcontext_helper(op, "1", "3", expect_when_lt); | 169 if_comparison_testcontext_helper(op, "1", "3", expect_when_lt); |
166 if_comparison_testcontext_helper(op, "5", "5", expect_when_eq); | 170 if_comparison_testcontext_helper(op, "5", "5", expect_when_eq); |
167 if_comparison_testcontext_helper(op, "9", "7", expect_when_gt); | 171 if_comparison_testcontext_helper(op, "9", "7", expect_when_gt); |
168 | 172 |
169 if_comparison_effectcontext_helper(op, "1", "3", expect_when_lt); | 173 if_comparison_effectcontext_helper(op, "1", "3", expect_when_lt); |
170 if_comparison_effectcontext_helper(op, "5", "5", expect_when_eq); | 174 if_comparison_effectcontext_helper(op, "5", "5", expect_when_eq); |
171 if_comparison_effectcontext_helper(op, "9", "7", expect_when_gt); | 175 if_comparison_effectcontext_helper(op, "9", "7", expect_when_gt); |
172 } | 176 } |
173 | 177 |
| 178 |
174 TEST(if_comparison) { | 179 TEST(if_comparison) { |
175 v8::HandleScope scope; | 180 v8::HandleScope scope; |
176 LocalContext env; | 181 LocalContext env; |
177 | 182 |
178 if_comparison_helper("<", 1, 0, 0); | 183 if_comparison_helper("<", 1, 0, 0); |
179 if_comparison_helper("<=", 1, 1, 0); | 184 if_comparison_helper("<=", 1, 1, 0); |
180 if_comparison_helper("==", 0, 1, 0); | 185 if_comparison_helper("==", 0, 1, 0); |
181 if_comparison_helper("===", 0, 1, 0); | 186 if_comparison_helper("===", 0, 1, 0); |
182 if_comparison_helper(">=", 0, 1, 1); | 187 if_comparison_helper(">=", 0, 1, 1); |
183 if_comparison_helper(">", 0, 0, 1); | 188 if_comparison_helper(">", 0, 0, 1); |
184 if_comparison_helper("!=", 1, 0, 1); | 189 if_comparison_helper("!=", 1, 0, 1); |
185 if_comparison_helper("!==", 1, 0, 1); | 190 if_comparison_helper("!==", 1, 0, 1); |
186 } | 191 } |
187 | 192 |
| 193 |
188 TEST(unary_plus) { | 194 TEST(unary_plus) { |
189 v8::HandleScope scope; | 195 v8::HandleScope scope; |
190 LocalContext env; | 196 LocalContext env; |
191 Local<Value> result; | 197 Local<Value> result; |
192 // SMI | 198 // SMI |
193 result = CompileRun("var a = 1234; +a"); | 199 result = CompileRun("var a = 1234; +a"); |
194 ExpectInt32(1234, result); | 200 ExpectInt32(1234, result); |
195 // Number | 201 // Number |
196 result = CompileRun("var a = 1234.5; +a"); | 202 result = CompileRun("var a = 1234.5; +a"); |
197 ExpectNumber(1234.5, result); | 203 ExpectNumber(1234.5, result); |
198 // String (SMI) | 204 // String (SMI) |
199 result = CompileRun("var a = '1234'; +a"); | 205 result = CompileRun("var a = '1234'; +a"); |
200 ExpectInt32(1234, result); | 206 ExpectInt32(1234, result); |
201 // String (Number) | 207 // String (Number) |
202 result = CompileRun("var a = '1234.5'; +a"); | 208 result = CompileRun("var a = '1234.5'; +a"); |
203 ExpectNumber(1234.5, result); | 209 ExpectNumber(1234.5, result); |
204 // Check side effects. | 210 // Check side effects. |
205 result = CompileRun("var a = 1234; +(a = 4321); a"); | 211 result = CompileRun("var a = 1234; +(a = 4321); a"); |
206 ExpectInt32(4321, result); | 212 ExpectInt32(4321, result); |
207 } | 213 } |
208 | 214 |
| 215 |
209 TEST(unary_minus) { | 216 TEST(unary_minus) { |
210 v8::HandleScope scope; | 217 v8::HandleScope scope; |
211 LocalContext env; | 218 LocalContext env; |
212 Local<Value> result; | 219 Local<Value> result; |
213 result = CompileRun("var a = 1234; -a"); | 220 result = CompileRun("var a = 1234; -a"); |
214 ExpectInt32(-1234, result); | 221 ExpectInt32(-1234, result); |
215 result = CompileRun("var a = 1234.5; -a"); | 222 result = CompileRun("var a = 1234.5; -a"); |
216 ExpectNumber(-1234.5, result); | 223 ExpectNumber(-1234.5, result); |
217 result = CompileRun("var a = 1234; -(a = 4321); a"); | 224 result = CompileRun("var a = 1234; -(a = 4321); a"); |
218 ExpectInt32(4321, result); | 225 ExpectInt32(4321, result); |
219 result = CompileRun("var a = '1234'; -a"); | 226 result = CompileRun("var a = '1234'; -a"); |
220 ExpectInt32(-1234, result); | 227 ExpectInt32(-1234, result); |
221 result = CompileRun("var a = '1234.5'; -a"); | 228 result = CompileRun("var a = '1234.5'; -a"); |
222 ExpectNumber(-1234.5, result); | 229 ExpectNumber(-1234.5, result); |
223 } | 230 } |
224 | 231 |
| 232 |
225 TEST(unary_void) { | 233 TEST(unary_void) { |
226 v8::HandleScope scope; | 234 v8::HandleScope scope; |
227 LocalContext env; | 235 LocalContext env; |
228 Local<Value> result; | 236 Local<Value> result; |
229 result = CompileRun("var a = 1234; void (a);"); | 237 result = CompileRun("var a = 1234; void (a);"); |
230 ExpectUndefined(result); | 238 ExpectUndefined(result); |
231 result = CompileRun("var a = 0; void (a = 42); a"); | 239 result = CompileRun("var a = 0; void (a = 42); a"); |
232 ExpectInt32(42, result); | 240 ExpectInt32(42, result); |
233 result = CompileRun("var a = 0; void (a = 42);"); | 241 result = CompileRun("var a = 0; void (a = 42);"); |
234 ExpectUndefined(result); | 242 ExpectUndefined(result); |
235 } | 243 } |
236 | 244 |
| 245 |
237 TEST(unary_not) { | 246 TEST(unary_not) { |
238 v8::HandleScope scope; | 247 v8::HandleScope scope; |
239 LocalContext env; | 248 LocalContext env; |
240 Local<Value> result; | 249 Local<Value> result; |
241 result = CompileRun("var a = 1234; !a"); | 250 result = CompileRun("var a = 1234; !a"); |
242 ExpectBoolean(false, result); | 251 ExpectBoolean(false, result); |
243 result = CompileRun("var a = 0; !a"); | 252 result = CompileRun("var a = 0; !a"); |
244 ExpectBoolean(true, result); | 253 ExpectBoolean(true, result); |
245 result = CompileRun("var a = 0; !(a = 1234); a"); | 254 result = CompileRun("var a = 0; !(a = 1234); a"); |
246 ExpectInt32(1234, result); | 255 ExpectInt32(1234, result); |
247 result = CompileRun("var a = '1234'; !a"); | 256 result = CompileRun("var a = '1234'; !a"); |
248 ExpectBoolean(false, result); | 257 ExpectBoolean(false, result); |
249 result = CompileRun("var a = ''; !a"); | 258 result = CompileRun("var a = ''; !a"); |
250 ExpectBoolean(true, result); | 259 ExpectBoolean(true, result); |
251 result = CompileRun("var a = 1234; !!a"); | 260 result = CompileRun("var a = 1234; !!a"); |
252 ExpectBoolean(true, result); | 261 ExpectBoolean(true, result); |
253 result = CompileRun("var a = 0; !!a"); | 262 result = CompileRun("var a = 0; !!a"); |
254 ExpectBoolean(false, result); | 263 ExpectBoolean(false, result); |
255 result = CompileRun("var a = 0; if ( !a ) { 1; } else { 0; }"); | 264 result = CompileRun("var a = 0; if ( !a ) { 1; } else { 0; }"); |
256 ExpectInt32(1, result); | 265 ExpectInt32(1, result); |
257 result = CompileRun("var a = 1; if ( !a ) { 1; } else { 0; }"); | 266 result = CompileRun("var a = 1; if ( !a ) { 1; } else { 0; }"); |
258 ExpectInt32(0, result); | 267 ExpectInt32(0, result); |
259 } | 268 } |
260 | 269 |
OLD | NEW |