library SerializedScriptValueTest;
import '../../pkg/unittest/lib/unittest.dart';
import '../../pkg/unittest/lib/html_config.dart';
import 'dart:html';
import 'utils.dart';

serializationTest(name, value) => test(name, () {
      // To check how value is serialized and deserialized, we create a MessageEvent.
    final event = document.$dom_createEvent('MessageEvent');
    event.initMessageEvent('', false, false, value, '', '', window, []);
    verifyGraph(value, event.data);
});


main() {
  useHtmlConfiguration();

  serializationTest('null', null);
  serializationTest('int', 1);
  serializationTest('double', 2.39);
  serializationTest('string', 'hey!');

  final simpleMap = {'a': 100, 'b': 's'};
  final dagMap = { 'x': simpleMap, 'y': simpleMap };
  final cyclicMap = { 'b': dagMap };
  cyclicMap['a'] = cyclicMap;
  serializationTest('simple map', simpleMap);
  serializationTest('dag map', dagMap);
  serializationTest('cyclic map', cyclicMap);

  final simpleList = [ 100, 's'];
  final dagList = [ simpleList, simpleList ];
  final cyclicList = [ dagList ];
  cyclicList.add(cyclicList);
  serializationTest('simple list', simpleList);
  serializationTest('dag list', dagList);
  serializationTest('cyclic list', cyclicList);
}
