blob: 1fcce1fca9626e15c722306718f60ce525fab9a4 [file] [log] [blame]
// Copyright (c) 2024, 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.
foo1(int? x) => <int>[?x];
foo2(String? x) => <String>{?x};
foo3(bool? x, num y) => <bool, num>{?x: y};
bar1(int? x) => <int>[?x];
bar2(int? x, bool b) => <int>{ if (b) ?x };
bar3(int? x, List<String> y) => <int>{ for (var _ in y) ?x };
bar4(String x, bool? y) => <String, bool>{x: ?y};
bar5(int? x, num y) => <int, num>{?x: y};
bar6(Symbol? x, String? y) => <Symbol, String>{?x: ?y};
bar7(int? x, double? y, bool b) => <int, double>{ if (b) ?x: ?y };
bar8(bool? x, Symbol? y, List<num> z) => <bool, Symbol>{ for (var _ in z) ?x: ?y };
main() {
expectShallowEqualLists(foo1(0), <int>[0]);
expectShallowEqualLists(foo1(null), <int>[]);
expectShallowEqualSets(foo2(""), <String>{""});
expectShallowEqualSets(foo2(null), <String>{});
expectShallowEqualMaps(foo3(false, 0), <bool, num>{false: 0});
expectShallowEqualMaps(foo3(null, 0), <bool, num>{});
expectShallowEqualLists(bar1(0), <int>[0]);
expectShallowEqualLists(bar1(null), <int>[]);
expectShallowEqualSets(bar2(0, true), <int>{0});
expectShallowEqualSets(bar2(0, false), <int>{});
expectShallowEqualSets(bar2(null, true), <int>{});
expectShallowEqualSets(bar2(null, false), <int>{});
expectShallowEqualSets(bar3(0, ["", ""]), <int>{0});
expectShallowEqualSets(bar3(null, ["", ""]), <int>{});
expectShallowEqualSets(bar3(0, []), <int>{});
expectShallowEqualSets(bar3(null, []), <int>{});
expectShallowEqualMaps(bar4("", false), <String, bool>{"": false});
expectShallowEqualMaps(bar4("", null), <String, bool>{});
expectShallowEqualMaps(bar5(0, 1.0), <int, num>{0: 1.0});
expectShallowEqualMaps(bar5(null, 1.0), <int, num>{});
expectShallowEqualMaps(bar6(#key, ""), <Symbol, String>{#key: ""});
expectShallowEqualMaps(bar6(#key, null), <Symbol, String>{});
expectShallowEqualMaps(bar6(null, ""), <Symbol, String>{});
expectShallowEqualMaps(bar6(null, null), <Symbol, String>{});
expectShallowEqualMaps(bar7(0, 1.0, true), <int, double>{0: 1.0});
expectShallowEqualMaps(bar7(0, 1.0, false), <int, double>{});
expectShallowEqualMaps(bar7(0, null, true), <int, double>{});
expectShallowEqualMaps(bar7(0, null, false), <int, double>{});
expectShallowEqualMaps(bar7(null, 1.0, true), <int, double>{});
expectShallowEqualMaps(bar7(null, 1.0, false), <int, double>{});
expectShallowEqualMaps(bar7(null, null, true), <int, double>{});
expectShallowEqualMaps(bar7(null, null, false), <int, double>{});
expectShallowEqualMaps(bar8(false, #value, [1.0]), <bool, Symbol>{false: #value});
expectShallowEqualMaps(bar8(false, #value, []), <int, double>{});
expectShallowEqualMaps(bar8(false, null, [1.0]), <int, double>{});
expectShallowEqualMaps(bar8(false, null, []), <int, double>{});
expectShallowEqualMaps(bar8(null, #value, [1.0]), <int, double>{});
expectShallowEqualMaps(bar8(null, #value, []), <int, double>{});
expectShallowEqualMaps(bar8(null, null, [1.0]), <int, double>{});
expectShallowEqualMaps(bar8(null, null, []), <int, double>{});
}
void expectShallowEqualLists(List x, List y) {
bool equals = true;
if (x.length != y.length) {
equals = false;
} else {
for (int i = 0; i < x.length; i++) {
if (x[i] != y[i]) {
equals = false;
break;
}
}
}
if (!equals) {
throw "Expected the values to be equal, got '${x}' != '${y}'.";
}
}
void expectShallowEqualSets(Set x, Set y) {
if (!x.containsAll(y) || !y.containsAll(x)) {
throw "Expected the values to be equal, got '${x}' != '${y}'.";
}
}
void expectShallowEqualMaps(Map x, Map y) {
bool equals = true;
for (dynamic key in x.keys) {
if (!y.containsKey(key)) {
equals = false;
break;
} else {
if (x[key] != y[key]) {
equals = false;
break;
}
}
}
if (!x.keys.toSet().containsAll(y.keys)) {
equals = false;
}
if (!equals) {
throw "Expected the values to be equal, got '${x}' != '${y}'.";
}
}