blob: b3c4cedacab7f914a6c3032a3460282b714fc5d6 [file] [log] [blame]
/*
* Copyright (c) 2011-2016, 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 abstract void send(message)
* Sends an asynchronous message through this send port, to its corresponding
* ReceivePort.
* The content of message can be: primitive values (null, num, bool, double,
* String), instances of SendPort, and lists and maps whose elements are any
* of these. List and maps are also allowed to be cyclic.
*
* @description Checks that various maps are sent properly.
*
* @author kaigorodov
*/
import "dart:isolate";
import "../../../Utils/expect.dart";
import "send_A01_util.dart";
void iMain(SendPort replyPort) {
var maps = makeMaps();
for(var v in maps) {
replyPort.send(v);
}
}
makeMaps() {
var maps = [
const {}, const {"1:":1, "2":2, "3":3},
const {"1":const{}, "2":const{"1":const{}}},
messagesMap, {"1":messagesMap}, {"1":{}, "2":{"3":messagesMap}},
{"1" : messagesList}
];
return maps;
}
main() {
var receivePort = new ReceivePort();
var maps = makeMaps();
asyncStart();
Isolate.spawn(iMain, receivePort.sendPort);
int i = 0;
receivePort.listen((message) {
Expect.mapEquals(maps[i], message);
i++;
if (i == maps.length) {
receivePort.close();
asyncEnd();
}
});
}