Index: test/codegen/lib/html/selectelement_test.dart |
diff --git a/test/codegen/lib/html/selectelement_test.dart b/test/codegen/lib/html/selectelement_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b56912c36de8da22d6420124a5205db7be0d5059 |
--- /dev/null |
+++ b/test/codegen/lib/html/selectelement_test.dart |
@@ -0,0 +1,77 @@ |
+// Copyright (c) 2012, 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 selectelement_test; |
+import 'package:unittest/unittest.dart'; |
+import 'package:unittest/html_config.dart'; |
+import 'dart:html'; |
+ |
+main() { |
+ useHtmlConfiguration(); |
+ |
+ test('selectedOptions', () { |
+ var element = new SelectElement(); |
+ element.multiple = false; |
+ var options = [ |
+ new OptionElement(), |
+ new DivElement(), |
+ new OptionElement(data: 'data', value: 'two', selected: true), |
+ new DivElement(), |
+ new OptionElement(data: 'data', value: 'two', selected: true), |
+ new OptionElement(), |
+ ]; |
+ element.children.addAll(options); |
+ expect(element.selectedOptions.length, 1); |
+ expect(element.selectedOptions[0], equals(options[4])); |
+ }); |
+ |
+ test('multiple selectedOptions', () { |
+ var element = new SelectElement(); |
+ element.multiple = true; |
+ var options = [ |
+ new OptionElement(), |
+ new DivElement(), |
+ new OptionElement(data: 'data', value: 'two', selected: true), |
+ new DivElement(), |
+ new OptionElement(data: 'data', value: 'two', selected: true), |
+ new OptionElement(), |
+ new OptionElement(data: 'data', value: 'two', selected: false), |
+ ]; |
+ element.children.addAll(options); |
+ expect(element.selectedOptions.length, 2); |
+ expect(element.selectedOptions[0], equals(options[2])); |
+ expect(element.selectedOptions[1], equals(options[4])); |
+ }); |
+ |
+ test('options', () { |
+ var element = new SelectElement(); |
+ var options = [ |
+ new OptionElement(), |
+ new OptionElement(data: 'data', value: 'two', selected: true), |
+ new OptionElement(data: 'data', value: 'two', selected: true), |
+ new OptionElement(), |
+ ]; |
+ element.children.addAll(options); |
+ // Use last to make sure that the list was correctly wrapped. |
+ expect(element.options.last, equals(options[3])); |
+ }); |
+ |
+ test('optgroup', () { |
+ var element = new Element.html( |
+ '<select>' |
+ '<option>1</option>' |
+ '<optgroup>' |
+ '<option>2</option>' |
+ '</optgroup>' |
+ '</select>'); |
+ |
+ expect(element.options.length, 2); |
+ element.selectedIndex = 1; |
+ |
+ var optGroup = element.children[1]; |
+ expect(optGroup is OptGroupElement, isTrue); |
+ expect(optGroup.children.single.selected, isTrue); |
+ expect(element.selectedOptions, optGroup.children); |
+ }); |
+} |