#!/usr/bin/env dart
// Copyright (c) 2013, 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.

library reserved_names_test;

import 'dart:mirrors' as mirrors;

import 'package:unittest/unittest.dart';

import '../lib/protoc.dart' show MessageGenerator;

import 'test_util.dart';

void main() {
  test('testReservedNamesList', () {
    Set<String> names = new Set<String>();
    fillConflictingNames(mirrors.ClassMirror cls) {
      String className = mirrors.MirrorSystem.getName(cls.simpleName);
      names.addAll(
          cls
          .declarations
          .values
          .where((decl) => !decl.isPrivate && decl is !mirrors.VariableMirror)
          .map((m) => mirrors.MirrorSystem.getName(m.simpleName))
          .map((n) => n.startsWith(className + '.')
                      ? n.substring(className.length + 1) : n)
          .toList());
    }

    var cls = mirrors.currentMirrorSystem()
        .libraries[Uri.parse('package:protobuf/protobuf.dart')]
        .classes[#GeneratedMessage];
    do {
      fillConflictingNames(cls);
      cls = cls.superclass;
    } while (cls != null);

    var x = new Set<String>()..addAll(MessageGenerator.reservedNames);
    expect(names.toList()..sort(), equals(x.toList()..sort()));
  });
}

#!/usr/bin/env dart
// Copyright (c) 2013, 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.

library reserved_names_test;

import 'dart:mirrors' as mirrors;

import 'package:unittest/unittest.dart';

import '../lib/protoc.dart' show MessageGenerator;

import 'test_util.dart';

void main() {
  test('testReservedNamesList', () {
    Set<String> names = new Set<String>();
    fillConflictingNames(mirrors.ClassMirror cls) {
      String className = mirrors.MirrorSystem.getName(cls.simpleName);
      names.addAll(
          cls
          .declarations
          .values
          .where((decl) => !decl.isPrivate && decl is !mirrors.VariableMirror)
          .map((m) => mirrors.MirrorSystem.getName(m.simpleName))
          .map((n) => n.startsWith(className + '.')
                      ? n.substring(className.length + 1) : n)
          .toList());
    }

    var cls = mirrors.currentMirrorSystem()
        .libraries[Uri.parse('package:protobuf/protobuf.dart')]
        .declarations[#GeneratedMessage];
    do {
      fillConflictingNames(cls);
      cls = cls.superclass;
    } while (cls != null);

    var x = new Set<String>()..addAll(MessageGenerator.reservedNames);
    expect(names.toList()..sort(), equals(x.toList()..sort()));
  });
}

Update test to work with mirrors for Dart 1.1
Update test to work with mirrors for Dart 1.1

TBR=sigmund@google.com

Review URL: https://chromiumcodereview.appspot.com//123153002
