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

/// @assertion The declaration of an enum of the form 
/// metadata enum E { id 0 , . . . id n−1 };
/// has the same effect as a class declaration
/// metadata class E {
/// final int index;
/// const E(this.index);
/// static const E id 0 = const E(0);
/// ...
/// static const E id n−1 = const E(n - 1);
/// static const List<E> values = const <E>[id 0 . . . id n−1 ];
/// String toString() => { 0: ‘E.id 0 ’, . . ., n-1: ‘E.id n−1 ’}[index]
/// }
/// @description Checks that enum values contains the same members as
/// enum elements
/// @author sgrekhov@unipro.ru

import "../../Utils/expect.dart";

enum E {a, b, c}

main() {
  Expect.identical(E.a, E.values[0]);
  Expect.identical(E.b, E.values[1]);
  Expect.identical(E.c, E.values[2]);

}
