// Copyright (c) 2012, 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.

/**
 * Tests internationalization of messages using the basic example as a template.
 */
library intl_message_test_2;

import '../example/basic/basic_example.dart';
import 'package:unittest/unittest.dart';
import 'dart:async';

main() {
  var list = [];
  var waitForIt = new Completer();

  addToList(x) {
    list.add(x);
    if (list.length == 4) {
      waitForIt.complete(list);
    }
  }

  test('Verify basic example printing localized messages', () {
    runAllTests(_) {
      setup(expectAsync1(runProgram), addToList);
    }
    setup(expectAsync1(runAllTests), addToList);
    waitForIt.future.then(expectAsync1((_) {
      expect(list[0], "Ran at 00:00:00 on Thursday, January 1, 1970");
      expect(list[1], "Ausgedruckt am 00:00:00 am Donnerstag, 1. Januar 1970.");
      expect(list[2], "วิ่ง 0:00:00 on วันพฤหัสบดี 1 มกราคม 1970.");
      expect(list[3], "วิ่ง now on today.");
    }));
  });
}

