// Copyright (c) 2011, 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 test program for constructors and initializers.

import "package:expect/expect.dart";

// Expect the initializer expressions E(i) to be evaluated
// in the order 1, 2, 3, ...
// This test has no inheritance but many fields to flush out issues with
// ordering of fields.

String trace = "";

int E(int i) {
  trace += "$i-";
  return i;
}

class A {
  var j; //      Names are in reverse order to detect sorting by name...
  var i = 0; // Initialized odd/even to detect these inits affecting order.
  var h;
  var g = 0;
  var f;
  var e = 0;
  var d;
  var c = 0;
  var b;
  var a = 0;

  A()
      : a = E(1), // Initializations in different order to decls.  Ascending...
        b = E(2),
        c = E(3),
        f = E(4), // Descending to be perverse...
        e = E(5),
        d = E(6),
        g = E(7), // Ascending again.
        h = E(8),
        i = E(9),
        j = E(10) {
    Expect.equals(1, a);
    Expect.equals(2, b);
    Expect.equals(3, c);

    Expect.equals(4, f);
    Expect.equals(5, e);
    Expect.equals(6, d);

    Expect.equals(7, g);
    Expect.equals(8, h);
    Expect.equals(9, i);
    Expect.equals(10, j);
  }
}

main() {
  var x = new A();
  Expect.equals('1-2-3-4-5-6-7-8-9-10-', trace);
}
