| Index: mojo/public/dart/third_party/plugin/test/plugin_impl_test.dart
|
| diff --git a/mojo/public/dart/third_party/plugin/test/plugin_impl_test.dart b/mojo/public/dart/third_party/plugin/test/plugin_impl_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5d2902f302e5fa7026cf72362693a9d40c5f5f29
|
| --- /dev/null
|
| +++ b/mojo/public/dart/third_party/plugin/test/plugin_impl_test.dart
|
| @@ -0,0 +1,174 @@
|
| +// 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.
|
| +
|
| +library test.operation;
|
| +
|
| +import 'package:plugin/plugin.dart';
|
| +import 'package:plugin/src/plugin_impl.dart';
|
| +import 'package:unittest/unittest.dart';
|
| +
|
| +main() {
|
| + groupSep = ' | ';
|
| +
|
| + group('ExtensionManager', () {
|
| + test('processPlugins', () {
|
| + TestPlugin plugin1 = new TestPlugin('plugin1');
|
| + TestPlugin plugin2 = new TestPlugin('plugin1');
|
| + ExtensionManagerImpl manager = new ExtensionManagerImpl();
|
| + manager.processPlugins([plugin1, plugin2]);
|
| + expect(plugin1.extensionPointsRegistered, true);
|
| + expect(plugin1.extensionsRegistered, true);
|
| + expect(plugin2.extensionPointsRegistered, true);
|
| + expect(plugin2.extensionsRegistered, true);
|
| + });
|
| +
|
| + test('registerExtension - valid', () {
|
| + Plugin plugin = new TestPlugin('plugin');
|
| + ExtensionManagerImpl manager = new ExtensionManagerImpl();
|
| + ExtensionPoint point =
|
| + manager.registerExtensionPoint(plugin, 'point', null);
|
| + expect(point, isNotNull);
|
| + Object extension = 'extension';
|
| + manager.registerExtension('plugin.point', extension);
|
| + List<Object> extensions = point.extensions;
|
| + expect(extensions, isNotNull);
|
| + expect(extensions, hasLength(1));
|
| + expect(extensions[0], extension);
|
| + });
|
| +
|
| + test('registerExtension - non existent', () {
|
| + ExtensionManagerImpl manager = new ExtensionManagerImpl();
|
| + expect(() => manager.registerExtension('does not exist', 'extension'),
|
| + throwsA(new isInstanceOf<ExtensionError>()));
|
| + ;
|
| + });
|
| +
|
| + test('registerExtensionPoint - non-conflicting', () {
|
| + Plugin plugin1 = new TestPlugin('plugin1');
|
| + Plugin plugin2 = new TestPlugin('plugin2');
|
| + ExtensionManagerImpl manager = new ExtensionManagerImpl();
|
| + expect(
|
| + manager.registerExtensionPoint(plugin1, 'point1', null), isNotNull);
|
| + expect(
|
| + manager.registerExtensionPoint(plugin1, 'point2', null), isNotNull);
|
| + expect(
|
| + manager.registerExtensionPoint(plugin2, 'point1', null), isNotNull);
|
| + expect(
|
| + manager.registerExtensionPoint(plugin2, 'point2', null), isNotNull);
|
| + });
|
| +
|
| + test('registerExtensionPoint - conflicting - same plugin', () {
|
| + Plugin plugin1 = new TestPlugin('plugin1');
|
| + ExtensionManagerImpl manager = new ExtensionManagerImpl();
|
| + expect(
|
| + manager.registerExtensionPoint(plugin1, 'point1', null), isNotNull);
|
| + expect(() => manager.registerExtensionPoint(plugin1, 'point1', null),
|
| + throwsA(new isInstanceOf<ExtensionError>()));
|
| + });
|
| +
|
| + test('registerExtensionPoint - conflicting - different plugins', () {
|
| + Plugin plugin1 = new TestPlugin('plugin1');
|
| + Plugin plugin2 = new TestPlugin('plugin1');
|
| + ExtensionManagerImpl manager = new ExtensionManagerImpl();
|
| + expect(
|
| + manager.registerExtensionPoint(plugin1, 'point1', null), isNotNull);
|
| + expect(() => manager.registerExtensionPoint(plugin2, 'point1', null),
|
| + throwsA(new isInstanceOf<ExtensionError>()));
|
| + });
|
| + });
|
| +
|
| + group('ExtensionPointImpl', () {
|
| + test('extensions - empty', () {
|
| + Plugin plugin = new TestPlugin('plugin');
|
| + ExtensionPointImpl point = new ExtensionPointImpl(plugin, 'point', null);
|
| + List<Object> extensions = point.extensions;
|
| + expect(extensions, isNotNull);
|
| + expect(extensions, isEmpty);
|
| + });
|
| +
|
| + test('uniqueIdentifier', () {
|
| + Plugin plugin = new TestPlugin('plugin');
|
| + ExtensionPointImpl point = new ExtensionPointImpl(plugin, 'point', null);
|
| + expect(point.uniqueIdentifier, 'plugin.point');
|
| + });
|
| +
|
| + test('add - single', () {
|
| + Plugin plugin = new TestPlugin('plugin');
|
| + ExtensionPointImpl point = new ExtensionPointImpl(plugin, 'point', null);
|
| + Object extension = 'extension';
|
| + point.add(extension);
|
| + List<Object> extensions = point.extensions;
|
| + expect(extensions, isNotNull);
|
| + expect(extensions, hasLength(1));
|
| + expect(extensions[0], extension);
|
| + });
|
| +
|
| + test('add - multiple', () {
|
| + Plugin plugin = new TestPlugin('plugin');
|
| + ExtensionPointImpl point = new ExtensionPointImpl(plugin, 'point', null);
|
| + point.add('extension 1');
|
| + point.add('extension 2');
|
| + point.add('extension 3');
|
| + List<Object> extensions = point.extensions;
|
| + expect(extensions, isNotNull);
|
| + expect(extensions, hasLength(3));
|
| + });
|
| +
|
| + test('add - with validator - valid', () {
|
| + Plugin plugin = new TestPlugin('plugin');
|
| + ExtensionPointImpl point = new ExtensionPointImpl(plugin, 'point',
|
| + (Object extension) {
|
| + if (extension is! String) {
|
| + throw new ExtensionError('');
|
| + }
|
| + });
|
| + point.add('extension');
|
| + });
|
| +
|
| + test('add - with validator - invalid', () {
|
| + Plugin plugin = new TestPlugin('plugin');
|
| + ExtensionPointImpl point = new ExtensionPointImpl(plugin, 'point',
|
| + (Object extension) {
|
| + if (extension is! String) {
|
| + throw new ExtensionError('');
|
| + }
|
| + });
|
| + expect(() => point.add(1), throwsA(new isInstanceOf<ExtensionError>()));
|
| + });
|
| + });
|
| +}
|
| +
|
| +/**
|
| + * A simple plugin that can be used by tests.
|
| + */
|
| +class TestPlugin extends Plugin {
|
| + /**
|
| + * A flag indicating whether the method [registerExtensionPoints] has been
|
| + * invoked.
|
| + */
|
| + bool extensionPointsRegistered = false;
|
| +
|
| + /**
|
| + * A flag indicating whether the method [registerExtensions] has been invoked.
|
| + */
|
| + bool extensionsRegistered = false;
|
| +
|
| + @override
|
| + String uniqueIdentifier;
|
| +
|
| + /**
|
| + * Initialize a newly created plugin to have the given identifier.
|
| + */
|
| + TestPlugin(this.uniqueIdentifier);
|
| +
|
| + @override
|
| + void registerExtensionPoints(RegisterExtensionPoint register) {
|
| + extensionPointsRegistered = true;
|
| + }
|
| +
|
| + @override
|
| + void registerExtensions(RegisterExtension register) {
|
| + extensionsRegistered = true;
|
| + }
|
| +}
|
|
|