| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 /// Common test code that is run by 3 tests: mirrors_test.dart, | 5 /// Common test code that is run by 3 tests: mirrors_test.dart, |
| 6 /// mirrors_used_test.dart, and static_test.dart. | 6 /// mirrors_used_test.dart, and static_test.dart. |
| 7 library smoke.test.common; | 7 library smoke.test.common; |
| 8 | 8 |
| 9 import 'package:smoke/smoke.dart' as smoke; | 9 import 'package:smoke/smoke.dart' as smoke; |
| 10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 _checkQuery(res, [#i, #j, #j2, #inc0, #inc1, #inc2]); | 250 _checkQuery(res, [#i, #j, #j2, #inc0, #inc1, #inc2]); |
| 251 }); | 251 }); |
| 252 | 252 |
| 253 test('inherited properties and fields', () { | 253 test('inherited properties and fields', () { |
| 254 var options = new smoke.QueryOptions(includeInherited: true); | 254 var options = new smoke.QueryOptions(includeInherited: true); |
| 255 var res = smoke.query(D, options); | 255 var res = smoke.query(D, options); |
| 256 _checkQuery(res, [#x, #y, #b, #i, #j, #j2, #x2, #i2]); | 256 _checkQuery(res, [#x, #y, #b, #i, #j, #j2, #x2, #i2]); |
| 257 }); | 257 }); |
| 258 | 258 |
| 259 test('inherited fields only', () { | 259 test('inherited fields only', () { |
| 260 var options = new smoke.QueryOptions(includeInherited: true, | 260 var options = new smoke.QueryOptions( |
| 261 includeProperties: false); | 261 includeInherited: true, includeProperties: false); |
| 262 var res = smoke.query(D, options); | 262 var res = smoke.query(D, options); |
| 263 _checkQuery(res, [#x, #y, #b, #i, #j]); | 263 _checkQuery(res, [#x, #y, #b, #i, #j]); |
| 264 }); | 264 }); |
| 265 | 265 |
| 266 test('exact annotation', () { | 266 test('exact annotation', () { |
| 267 var options = new smoke.QueryOptions(includeInherited: true, | 267 var options = new smoke.QueryOptions( |
| 268 withAnnotations: const [a1]); | 268 includeInherited: true, withAnnotations: const [a1]); |
| 269 var res = smoke.query(H, options); | 269 var res = smoke.query(H, options); |
| 270 _checkQuery(res, [#b, #f, #g]); | 270 _checkQuery(res, [#b, #f, #g]); |
| 271 | 271 |
| 272 options = new smoke.QueryOptions(includeInherited: true, | 272 options = new smoke.QueryOptions( |
| 273 withAnnotations: const [a2]); | 273 includeInherited: true, withAnnotations: const [a2]); |
| 274 res = smoke.query(H, options); | 274 res = smoke.query(H, options); |
| 275 _checkQuery(res, [#d, #h]); | 275 _checkQuery(res, [#d, #h]); |
| 276 | 276 |
| 277 options = new smoke.QueryOptions(includeInherited: true, | 277 options = new smoke.QueryOptions( |
| 278 withAnnotations: const [a1, a2]); | 278 includeInherited: true, withAnnotations: const [a1, a2]); |
| 279 res = smoke.query(H, options); | 279 res = smoke.query(H, options); |
| 280 _checkQuery(res, [#b, #d, #f, #g, #h]); | 280 _checkQuery(res, [#b, #d, #f, #g, #h]); |
| 281 }); | 281 }); |
| 282 | 282 |
| 283 test('type annotation', () { | 283 test('type annotation', () { |
| 284 var options = new smoke.QueryOptions(includeInherited: true, | 284 var options = new smoke.QueryOptions( |
| 285 withAnnotations: const [Annot]); | 285 includeInherited: true, withAnnotations: const [Annot]); |
| 286 var res = smoke.query(H, options); | 286 var res = smoke.query(H, options); |
| 287 _checkQuery(res, [#b, #f, #g, #i]); | 287 _checkQuery(res, [#b, #f, #g, #i]); |
| 288 }); | 288 }); |
| 289 | 289 |
| 290 test('mixed annotations (type and exact)', () { | 290 test('mixed annotations (type and exact)', () { |
| 291 var options = new smoke.QueryOptions(includeInherited: true, | 291 var options = new smoke.QueryOptions( |
| 292 withAnnotations: const [a2, Annot]); | 292 includeInherited: true, withAnnotations: const [a2, Annot]); |
| 293 var res = smoke.query(H, options); | 293 var res = smoke.query(H, options); |
| 294 _checkQuery(res, [#b, #d, #f, #g, #h, #i]); | 294 _checkQuery(res, [#b, #d, #f, #g, #h, #i]); |
| 295 }); | 295 }); |
| 296 | 296 |
| 297 test('symbol to name', () { | 297 test('symbol to name', () { |
| 298 expect(smoke.symbolToName(#i), 'i'); | 298 expect(smoke.symbolToName(#i), 'i'); |
| 299 }); | 299 }); |
| 300 | 300 |
| 301 test('name to symbol', () { | 301 test('name to symbol', () { |
| 302 expect(smoke.nameToSymbol('i'), #i); | 302 expect(smoke.nameToSymbol('i'), #i); |
| 303 }); | 303 }); |
| 304 }); | 304 }); |
| 305 | 305 |
| 306 test('invoke Type instance methods', () { | 306 test('invoke Type instance methods', () { |
| 307 var a = new A(); | 307 var a = new A(); |
| 308 expect( | 308 expect( |
| 309 smoke.invoke(a.runtimeType, #toString, []), a.runtimeType.toString()); | 309 smoke.invoke(a.runtimeType, #toString, []), a.runtimeType.toString()); |
| 310 }); | 310 }); |
| 311 } | 311 } |
| 312 | 312 |
| 313 class A { | 313 class A { |
| 314 int i = 42; | 314 int i = 42; |
| 315 int j = 44; | 315 int j = 44; |
| 316 int get j2 => j; | 316 int get j2 => j; |
| 317 void set j2(int v) { j = v; } | 317 void set j2(int v) { |
| 318 void inc0() { i++; } | 318 j = v; |
| 319 void inc1(int v) { i = i + (v == null ? -10 : v); } | 319 } |
| 320 void inc2([int v]) { i = i + (v == null ? -10 : v); } | 320 void inc0() { |
| 321 i++; |
| 322 } |
| 323 void inc1(int v) { |
| 324 i = i + (v == null ? -10 : v); |
| 325 } |
| 326 void inc2([int v]) { |
| 327 i = i + (v == null ? -10 : v); |
| 328 } |
| 321 | 329 |
| 322 static int staticValue = 42; | 330 static int staticValue = 42; |
| 323 static void staticInc() { staticValue++; } | 331 static void staticInc() { |
| 332 staticValue++; |
| 333 } |
| 324 } | 334 } |
| 325 | 335 |
| 326 class B { | 336 class B { |
| 327 final int f = 3; | 337 final int f = 3; |
| 328 int _w; | 338 int _w; |
| 329 int get w => _w; | 339 int get w => _w; |
| 330 set w(int v) { _w = v; } | 340 set w(int v) { |
| 341 _w = v; |
| 342 } |
| 331 | 343 |
| 332 String z; | 344 String z; |
| 333 A a; | 345 A a; |
| 334 | 346 |
| 335 B(this._w, this.z, this.a); | 347 B(this._w, this.z, this.a); |
| 336 } | 348 } |
| 337 | 349 |
| 338 class C { | 350 class C { |
| 339 int x; | 351 int x; |
| 340 String y; | 352 String y; |
| 341 B b; | 353 B b; |
| 342 | 354 |
| 343 inc(int n) { | 355 inc(int n) { |
| 344 x = x + n; | 356 x = x + n; |
| 345 } | 357 } |
| 346 dec(int n) { | 358 dec(int n) { |
| 347 x = x - n; | 359 x = x - n; |
| 348 } | 360 } |
| 349 | 361 |
| 350 C(this.x, this.y, this.b); | 362 C(this.x, this.y, this.b); |
| 351 } | 363 } |
| 352 | 364 |
| 353 | |
| 354 class D extends C with A { | 365 class D extends C with A { |
| 355 int get x2 => x; | 366 int get x2 => x; |
| 356 int get i2 => i; | 367 int get i2 => i; |
| 357 | 368 |
| 358 D(x, y, b) : super(x, y, b); | 369 D(x, y, b) : super(x, y, b); |
| 359 } | 370 } |
| 360 | 371 |
| 361 class E { | 372 class E { |
| 362 set x(int v) { } | 373 set x(int v) {} |
| 363 int get y => 1; | 374 int get y => 1; |
| 364 | 375 |
| 365 noSuchMethod(i) => y; | 376 noSuchMethod(i) => y; |
| 366 } | 377 } |
| 367 | 378 |
| 368 class E2 extends E {} | 379 class E2 extends E {} |
| 369 | 380 |
| 370 class F { | 381 class F { |
| 371 static int staticMethod(A a) => a.i; | 382 static int staticMethod(A a) => a.i; |
| 372 } | 383 } |
| 373 | 384 |
| 374 class F2 extends F {} | 385 class F2 extends F {} |
| 375 | 386 |
| 376 class Annot { const Annot(); } | 387 class Annot { |
| 377 class AnnotB extends Annot { const AnnotB(); } | 388 const Annot(); |
| 378 class AnnotC { const AnnotC({bool named: false}); } | 389 } |
| 390 class AnnotB extends Annot { |
| 391 const AnnotB(); |
| 392 } |
| 393 class AnnotC { |
| 394 const AnnotC({bool named: false}); |
| 395 } |
| 379 const a1 = const Annot(); | 396 const a1 = const Annot(); |
| 380 const a2 = 32; | 397 const a2 = 32; |
| 381 const a3 = const AnnotB(); | 398 const a3 = const AnnotB(); |
| 382 | 399 |
| 383 | |
| 384 class G { | 400 class G { |
| 385 int a; | 401 int a; |
| 386 @a1 int b; | 402 @a1 int b; |
| 387 int c; | 403 int c; |
| 388 @a2 int d; | 404 @a2 int d; |
| 389 } | 405 } |
| 390 | 406 |
| 391 class H extends G { | 407 class H extends G { |
| 392 int e; | 408 int e; |
| 393 @a1 int f; | 409 @a1 int f; |
| 394 @a1 int g; | 410 @a1 int g; |
| 395 @a2 int h; | 411 @a2 int h; |
| 396 @a3 int i; | 412 @a3 int i; |
| 397 } | 413 } |
| 398 | 414 |
| 399 class K { | 415 class K { |
| 400 @AnnotC(named: true) int k; | 416 @AnnotC(named: true) int k; |
| 401 @AnnotC() int k2; | 417 @AnnotC() int k2; |
| 402 } | 418 } |
| OLD | NEW |