| // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | import "package:expect/expect.dart"; | 
 |  | 
 | // Dart test program for testing named parameters with various values that might | 
 | // be implemented as 'falsy' values in a JavaScript implementation. | 
 |  | 
 | class TestClass { | 
 |   TestClass(); | 
 |  | 
 |   method([value = 100]) => value; | 
 |   method2({value = 100}) => value; | 
 |  | 
 |   static staticMethod([value = 200]) => value; | 
 |   static staticMethod2({value = 200}) => value; | 
 | } | 
 |  | 
 | globalMethod([value = 300]) => value; | 
 | globalMethod2({value = 300}) => value; | 
 |  | 
 | const testValues = const [0, 0.0, '', false, null]; | 
 |  | 
 | testFunction(f, f2) { | 
 |   Expect.isTrue(f() >= 100); | 
 |   for (var v in testValues) { | 
 |     Expect.equals(v, f(v)); | 
 |     Expect.equals(v, f2(value: v)); | 
 |   } | 
 | } | 
 |  | 
 | main() { | 
 |   var obj = new TestClass(); | 
 |  | 
 |   Expect.equals(100, obj.method()); | 
 |   Expect.equals(100, obj.method2()); | 
 |   Expect.equals(200, TestClass.staticMethod()); | 
 |   Expect.equals(200, TestClass.staticMethod2()); | 
 |   Expect.equals(300, globalMethod()); | 
 |   Expect.equals(300, globalMethod2()); | 
 |  | 
 |   for (var v in testValues) { | 
 |     Expect.equals(v, obj.method(v)); | 
 |     Expect.equals(v, obj.method2(value: v)); | 
 |     Expect.equals(v, TestClass.staticMethod(v)); | 
 |     Expect.equals(v, TestClass.staticMethod2(value: v)); | 
 |     Expect.equals(v, globalMethod(v)); | 
 |     Expect.equals(v, globalMethod2(value: v)); | 
 |   } | 
 |  | 
 |   // Test via indirect call. | 
 |   testFunction(obj.method, obj.method2); | 
 |   testFunction(TestClass.staticMethod, TestClass.staticMethod2); | 
 |   testFunction(globalMethod, globalMethod2); | 
 | } |