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

Unified Diff: packages/charted/test.disabled/selection/selection_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
Index: packages/charted/test.disabled/selection/selection_test.dart
diff --git a/packages/charted/test.disabled/selection/selection_test.dart b/packages/charted/test.disabled/selection/selection_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..af2f540ab95fd5bfcb12a5775213a9069ab90a60
--- /dev/null
+++ b/packages/charted/test.disabled/selection/selection_test.dart
@@ -0,0 +1,321 @@
+/*
+ * Copyright 2014 Google Inc. All rights reserved.
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
+
+library charted.test.selection;
+
+import 'dart:html' show document, Element;
+import 'package:unittest/unittest.dart';
+import 'package:charted/selection/selection.dart';
+
+part 'selection_scope_test.dart';
+
+selectionTests() {
+ testSelectionScope();
+ testSelections();
+}
+
+testSelections() {
+ String markup = '<div class="charted-scope-root">'
+ '<div class="charted-scope-inner">'
+ '<div class="charted-scope-leaf"></div>'
+ '<div class="charted-scope-leaf"></div>'
+ '</div>'
+ '</div>';
+
+ Element root;
+ SelectionScope scope;
+ Selection empty, single, multiple;
+
+ setup() {
+ root = new Element.html(markup);
+ document.documentElement.append(root);
+ scope = new SelectionScope.selector('.charted-scope-root');
+
+ empty = scope.selectAll('.node');
+ single = scope.select('.charted-scope-inner');
+ multiple = scope.selectAll('.charted-scope-leaf');
+ }
+
+ teardown() {
+ root.remove();
+ }
+
+ test('toCallback() creates a callback to return the given value', () {
+ num value = 100;
+ SelectionCallback<num> cb = toCallback(value);
+ expect(cb(null, null, null), equals(value));
+ });
+
+ test('toValueAccessor() creates an accessor to return the given value', () {
+ num value = 100;
+ SelectionValueAccessor<num> cb = toValueAccessor(value);
+ expect(cb(null, null), equals(value));
+ });
+
+ group('Selection created from scope', () {
+ setUp(setup);
+ tearDown(teardown);
+
+ test('has isEmpty=true when the selection is empty', () {
+ expect(empty.isEmpty, equals(true));
+ expect(single.isEmpty, equals(false));
+ expect(multiple.isEmpty, equals(false));
+ });
+
+ test('has length set to number of non-null elements', () {
+ expect(empty.length, equals(0));
+ expect(single.length, equals(1));
+ expect(multiple.length, equals(2));
+ });
+
+ test('has first=null when there selection is empty', () {
+ expect(empty.first, equals(null));
+ });
+
+ test('has first set to first non-null element in selection', () {
+ expect(single.first.className, equals('charted-scope-inner'));
+ expect(multiple.first.className, equals('charted-scope-leaf'));
+ });
+
+ test('has exactly one group', () {
+ expect(empty.groups.length, equals(1));
+ expect(single.groups.length, equals(1));
+ expect(multiple.groups.length, equals(1));
+ });
+ });
+
+ group('Selection created from another selection', () {
+ Selection selection1, selection2, selection3;
+
+ setUp(() {
+ setup();
+ selection1 = empty.selectAll('.child-nodes');
+ selection2 = single.selectAll('.child-nodes');
+ selection3 = multiple.selectAll('.child-nodes');
+ });
+ tearDown(teardown);
+
+ test('has length set to number of non-null elements', () {
+ expect(selection1.length, equals(0));
+ expect(selection2.length, equals(0));
+ expect(selection3.length, equals(0));
+ });
+
+ test('has first=null when there selection is empty', () {
+ expect(selection1.first, equals(null));
+ expect(selection2.first, equals(null));
+ expect(selection3.first, equals(null));
+ });
+
+ test('has same number of groups as number of non-null elements '
+ 'in source selection', () {
+ expect(selection1.groups.length, equals(empty.length));
+ expect(selection2.groups.length, equals(single.length));
+ expect(selection3.groups.length, equals(multiple.length));
+ });
+ });
+
+ group('Selection', () {
+ setUp(setup);
+ tearDown(teardown);
+
+ test('attr sets attribute to the specified value on selected', () {
+ multiple.each((d, i, e) {
+ expect(e.attributes['height'], isNull);
+ });
+ multiple.attr('height', '10');
+ multiple.each((d, i, e) {
+ expect(e.attributes['height'], equals('10'));
+ });
+ });
+
+ test('attrWithCallBack sets attribute to the specified value '
+ 'on selected elements with callback', () {
+ multiple.each((d, i, e) {
+ expect(e.attributes['height'], isNull);
+ });
+ multiple.attrWithCallback('height', (d, i, e) => '${i * 10}');
+ multiple.each((d, i, e) {
+ expect(e.attributes['height'], equals('${i * 10}'));
+ });
+ });
+
+
+ test('classed sets class to the specified value on selected', () {
+ multiple.classed('new-class');
+ multiple.each((d, i, e) {
+ expect(e.attributes['class'], equals('charted-scope-leaf new-class'));
+ });
+ multiple.classed('new-class', false);
+ multiple.each((d, i, e) {
+ expect(e.attributes['class'], equals('charted-scope-leaf'));
+ });
+ });
+
+ test('classedWithCallBack sets class to the specified value '
+ 'on selected elements with callback', () {
+ multiple.classedWithCallback('new-class', (d, i, e) => i % 2 > 0);
+ multiple.each((d, i, e) {
+ if (i % 2 > 0) {
+ expect(e.attributes['class'], equals('charted-scope-leaf new-class'));
+ } else {
+ expect(e.attributes['class'], equals('charted-scope-leaf'));
+ }
+ });
+ multiple.classedWithCallback('new-class', (d, i, e) => i % 2 == 0);
+ multiple.each((d, i, e) {
+ if (i % 2 == 0) {
+ expect(e.attributes['class'], equals('charted-scope-leaf new-class'));
+ } else {
+ expect(e.attributes['class'], equals('charted-scope-leaf'));
+ }
+ });
+ });
+
+ test('style sets CSS style to specified value on selected', () {
+ multiple.each((d, i, e) {
+ expect(e.attributes['style'], isNull);
+ });
+ multiple.style('height', '10px');
+ multiple.each((d, i, e) {
+ expect(e.attributes['style'], equals('height: 10px;'));
+ });
+ });
+
+ test('attrWithCallBack sets CSS style to the specified value '
+ 'on selected elements with callback', () {
+ multiple.each((d, i, e) {
+ expect(e.attributes['style'], isNull);
+ });
+ multiple.styleWithCallback('height', (d, i, e) => '${i * 10}px');
+ multiple.each((d, i, e) {
+ expect(e.attributes['style'], equals('height: ${i * 10}px;'));
+ });
+ });
+
+ test('text sets text to specified value on selected', () {
+ multiple.each((d, i, e) {
+ expect(e.text, '');
+ });
+ multiple.text('some text');
+ multiple.each((d, i, e) {
+ expect(e.text, equals('some text'));
+ });
+ });
+
+ test('textWithCallBack sets text to the specified value '
+ 'on selected elements with callback', () {
+ multiple.each((d, i, e) {
+ expect(e.text, '');
+ });
+ multiple.textWithCallback((d, i, e) => 'text-${i}');
+ multiple.each((d, i, e) {
+ expect(e.text, equals('text-${i}'));
+ });
+ });
+
+ test('html sets inner html to specified value on selected', () {
+ multiple.each((d, i, e) {
+ expect(e.innerHtml, '');
+ });
+ multiple.text('some html');
+ multiple.each((d, i, e) {
+ expect(e.innerHtml, equals('some html'));
+ });
+ });
+
+ test('htmlWithCallBack sets inner html to the specified value '
+ 'on selected elements with callback', () {
+ multiple.each((d, i, e) {
+ expect(e.innerHtml, '');
+ });
+ multiple.htmlWithCallback((d, i, e) => 'html-${i}');
+ multiple.each((d, i, e) {
+ expect(e.innerHtml, equals('html-${i}'));
+ });
+ });
+
+ test('append appends new child elements to selection', () {
+ expect(multiple.selectAll('.appended').length, equals(0));
+ multiple.append('div')..classed('appended');
+ expect(multiple.selectAll('.appended').length, equals(multiple.length));
+ multiple.append('div')..classed('appended');
+ expect(multiple.selectAll('.appended').length,
+ equals(multiple.length * 2));
+ });
+
+ test('appendWithCallback appends new child elements '
+ 'to selection with callback', () {
+ for (var i = 0; i < multiple.length; i++) {
+ expect(multiple.selectAll('.appended-${i}').length, equals(0));
+ }
+ multiple.appendWithCallback((d, i, e) {
+ Element newItem = new Element.tag('div')
+ ..className = 'appended-${i}';
+ return newItem;
+ });
+ for (var i = 0; i < multiple.length; i++) {
+ expect(multiple.selectAll('.appended-${i}').length, equals(1));
+ }
+ });
+
+ test('insert inserts new child elements to selection', () {
+ expect(multiple.selectAll('.appended').length, equals(0));
+ multiple.insert('div', before: '.appended')..classed('appended');
+ expect(multiple.selectAll('.appended').length, equals(multiple.length));
+ multiple.insert('div', before: '.appended')..classed('appended');
+ expect(multiple.selectAll('.appended').length,
+ equals(multiple.length * 2));
+ });
+
+ test('insertWithCallback inserts new child elements '
+ 'to selection with callback', () {
+ for (var i = 0; i < multiple.length; i++) {
+ expect(multiple.selectAll('.appended-${i}').length, equals(0));
+ }
+ multiple.insertWithCallback((d, i, e) {
+ Element newItem = new Element.tag('div')
+ ..className = 'appended-${i}';
+ return newItem;
+ }, beforeFn: (d, i, e) => multiple.selectAll('.appended-${i}').first);
+ for (var i = 0; i < multiple.length; i++) {
+ expect(multiple.selectAll('.appended-${i}').length, equals(1));
+ }
+ });
+
+ test('remove removes selected elements', () {
+ Selection remove = scope.selectAll('.charted-scope-leaf');
+ expect(remove.length, equals(2));
+ remove.remove();
+ remove = scope.selectAll('.charted-scope-leaf');
+ expect(remove.length, equals(0));
+ });
+
+ test('each visits each selected element in order', () {
+ multiple.attrWithCallback('height', (d, i, e) => i * 10);
+ int count = 0;
+ multiple.each((d, i, e) {
+ expect(e.attributes['height'], equals('${i * 10}'));
+ count++;
+ });
+ expect(count, equals(multiple.length));
+ });
+
+ test('data binds data to selected elements', () {
+ List dataList = [1, 2];
+ multiple.data(dataList);
+ multiple.each((d, i, e) => expect(d, dataList[i]));
+ });
+
+ test('dataWithCallback binds data to elements with callback', () {
+ List dataList = [1, 2];
+ multiple.dataWithCallback((d, i, e) => dataList);
+ multiple.each((d, i, e) => expect(d, dataList[i]));
+ });
+ });
+}

Powered by Google App Engine
This is Rietveld 408576698