| // Copyright (c) 2019, 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. |
| |
| // @dart = 2.9 |
| |
| // VMOptions=--no-enable-fast-object-copy |
| // VMOptions=--enable-fast-object-copy |
| |
| // Tests that sets of enums can be set through ports. |
| // https://github.com/dart-lang/sdk/issues/35626 |
| |
| library spawn_tests; |
| |
| import "dart:isolate"; |
| import "package:expect/expect.dart"; |
| |
| enum MyEnum { foo, bar, baz } |
| |
| void sendSetOfEnums(SendPort port) { |
| Set<MyEnum> remoteSet = Set()..add(MyEnum.bar); |
| port.send(remoteSet); |
| } |
| |
| void main() async { |
| Set<MyEnum> localSet = Set()..add(MyEnum.foo)..add(MyEnum.bar); |
| localSet.lookup(MyEnum.foo); |
| |
| final port = ReceivePort(); |
| await Isolate.spawn(sendSetOfEnums, port.sendPort); |
| Set<MyEnum> remoteSet = await port.first; |
| |
| print(localSet); |
| print(remoteSet); |
| Expect.setEquals([MyEnum.bar], localSet.intersection(remoteSet)); |
| Expect.setEquals([MyEnum.bar], remoteSet.intersection(localSet)); |
| } |