| // Copyright (c) 2012, 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"; | 
 |  | 
 | // Tests for the contains methods on lists. | 
 |  | 
 | test(list, notInList) { | 
 |   testList(list) { | 
 |     for (int i = 0; i < list.length; i++) { | 
 |       var elem = list[i]; | 
 |       Expect.isTrue(list.contains(list[i]), "$list.contains($elem)"); | 
 |     } | 
 |     Expect.isFalse(list.contains(notInList), "!$list.contains($notInList)"); | 
 |   } | 
 |  | 
 |   List fixedList = new List(list.length); | 
 |   List growList = new List(); | 
 |   for (int i = 0; i < list.length; i++) { | 
 |     fixedList[i] = list[i]; | 
 |     growList.add(list[i]); | 
 |   } | 
 |   testList(list); | 
 |   testList(fixedList); | 
 |   testList(growList); | 
 | } | 
 |  | 
 | class C { | 
 |   const C(); | 
 | } | 
 |  | 
 | class Niet { | 
 |   bool operator ==(other) => false; | 
 | } | 
 |  | 
 | main() { | 
 |   test(const <String>["a", "b", "c", null], "d"); | 
 |   test(const <int>[1, 2, 3, null], 0); | 
 |   test(const <bool>[true, false], null); | 
 |   test(const <C>[const C(), const C(), null], new C()); | 
 |   test(<C>[new C(), new C(), new C(), null], new C()); | 
 |   test(const <double>[0.0, 1.0, 5e-324, 1e+308, double.infinity], 2.0); | 
 |   Expect.isTrue(const <double>[-0.0].contains(0.0)); | 
 |   Expect.isFalse(const <double>[double.nan].contains(double.nan)); | 
 |   var niet = new Niet(); | 
 |   Expect.isFalse([niet].contains(niet)); | 
 | } |