blob: 8fa7e195db7399939e589186ed21d0a6419dda83 [file] [log] [blame]
/*
* Copyright (c) 2018, 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.
*/
/**
* @assertion If s does not start with const and it does not occur in a constant
* context, then it evaluates to a mutable set object as follows:
*
* Let e1 … en be the constant element expressions of s in source order.
* Evaluation of s proceeds as follows:
*
* First evaluate e1 … en, in source order, to values v1 … vn.
* Create a new LinkedHashSet<T> instance, o.
* For each i in 1 … n in numeric order, invoke the add method on o with vi as
* argument. Then s evaluates to an object implementing LinkedHashSet which has
* the same elements as o, and in the same iteration order. (Iteration order is
* insertion order, where adding an element equal to one already in the set does
* not change the set in any way).
*
* @description Check that evaluation of non-constant element expression is
* performed as expected
* @author sgrekhov@unipro.ru
*/
import "dart:collection";
import "../../Utils/expect.dart";
dynamic getDynamic(dynamic d) => d;
main() {
var s0 = <int> {};
Expect.isTrue(s0 is LinkedHashSet<int>);
LinkedHashSet<int> o0 = new LinkedHashSet<int>();
Expect.iterableEquals(o0, s0);
var s1 = <int> {3, 1, 4, null, 1, 4};
LinkedHashSet<int> o1 = new LinkedHashSet<int>();
o1.add(3);
o1.add(1);
o1.add(4);
o1.add(null);
o1.add(1);
o1.add(4);
Expect.iterableEquals(o1, s1);
var s2 = <Object> {'3', 1, 4, null, 1, null,};
LinkedHashSet<Object> o2 = new LinkedHashSet<Object>();
o2.add('3');
o2.add(1);
o2.add(4);
o2.add(null);
o2.add(1);
o2.add(null);
Expect.iterableEquals(o2, s2);
var s3 = {3, 1, 4, null, 1, null, getDynamic(5),};
LinkedHashSet<dynamic> o3 = new LinkedHashSet<dynamic>();
o3.add(3);
o3.add(1);
o3.add(4);
o3.add(null);
o3.add(1);
o3.add(null);
o3.add(getDynamic(5));
Expect.iterableEquals(o3, s3);
var s4 = {1, 1.0};
LinkedHashSet<dynamic> o4 = new LinkedHashSet<dynamic>();
o4.add(1);
o4.add(1.0);
Expect.iterableEquals(o4, s4);
var s5 = {1.0, 1};
Expect.iterableEquals([1.0], s5);
}