Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Unified Diff: packages/plugin/test/plugin_impl_test.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « packages/plugin/pubspec.yaml ('k') | packages/polymer/.gitignore » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: packages/plugin/test/plugin_impl_test.dart
diff --git a/packages/plugin/test/plugin_impl_test.dart b/packages/plugin/test/plugin_impl_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..5d2902f302e5fa7026cf72362693a9d40c5f5f29
--- /dev/null
+++ b/packages/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;
+ }
+}
« no previous file with comments | « packages/plugin/pubspec.yaml ('k') | packages/polymer/.gitignore » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698