|  | // 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. | 
|  |  | 
|  | import 'dart:html'; | 
|  |  | 
|  | import 'package:expect/legacy/minitest.dart'; // ignore: deprecated_member_use_from_same_package | 
|  |  | 
|  | main() { | 
|  | 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>', | 
|  | ) | 
|  | as SelectElement; | 
|  |  | 
|  | expect(element.options.length, 2); | 
|  | element.selectedIndex = 1; | 
|  |  | 
|  | var optGroup = element.children[1]; | 
|  | expect(optGroup is OptGroupElement, isTrue); | 
|  | expect((optGroup.children.single as OptionElement).selected, isTrue); | 
|  | expect(element.selectedOptions, optGroup.children); | 
|  | }); | 
|  | } |