Index: test/codegen/lib/html/input_element_test.dart |
diff --git a/test/codegen/lib/html/input_element_test.dart b/test/codegen/lib/html/input_element_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9509e02ca67d66d4ee4b12ecf0bd6daed3b898f1 |
--- /dev/null |
+++ b/test/codegen/lib/html/input_element_test.dart |
@@ -0,0 +1,195 @@ |
+library input_element_test; |
+import 'package:unittest/unittest.dart'; |
+import 'package:unittest/html_individual_config.dart'; |
+import 'dart:html'; |
+ |
+void check(InputElement element, String type, [bool supported = true]) { |
+ expect(element is InputElement, true); |
+ if (supported) { |
+ expect(element.type, type); |
+ } else { |
+ expect(element.type, 'text'); |
+ } |
+} |
+ |
+main() { |
+ useHtmlIndividualConfiguration(); |
+ |
+ group('supported_search', () { |
+ test('supported', () { |
+ expect(SearchInputElement.supported, true); |
+ }); |
+ }); |
+ |
+ group('supported_url', () { |
+ test('supported', () { |
+ expect(UrlInputElement.supported, true); |
+ }); |
+ }); |
+ |
+ group('supported_tel', () { |
+ test('supported', () { |
+ expect(TelephoneInputElement.supported, true); |
+ }); |
+ }); |
+ |
+ group('supported_email', () { |
+ test('supported', () { |
+ expect(EmailInputElement.supported, true); |
+ }); |
+ }); |
+ |
+ group('supported_date', () { |
+ test('supported', () { |
+ expect(DateInputElement.supported, true); |
+ }); |
+ }); |
+ |
+ group('supported_month', () { |
+ test('supported', () { |
+ expect(MonthInputElement.supported, true); |
+ }); |
+ }); |
+ |
+ group('supported_week', () { |
+ test('supported', () { |
+ expect(WeekInputElement.supported, true); |
+ }); |
+ }); |
+ |
+ group('supported_time', () { |
+ test('supported', () { |
+ expect(TimeInputElement.supported, true); |
+ }); |
+ }); |
+ |
+ group('supported_datetime-local', () { |
+ test('supported', () { |
+ expect(LocalDateTimeInputElement.supported, true); |
+ }); |
+ }); |
+ |
+ group('supported_number', () { |
+ test('supported', () { |
+ expect(NumberInputElement.supported, true); |
+ }); |
+ }); |
+ |
+ group('supported_range', () { |
+ test('supported', () { |
+ expect(RangeInputElement.supported, true); |
+ }); |
+ }); |
+ |
+ group('constructors', () { |
+ test('hidden', () { |
+ check(new HiddenInputElement(), 'hidden'); |
+ }); |
+ |
+ test('search', () { |
+ check(new SearchInputElement(), 'search', SearchInputElement.supported); |
+ }); |
+ |
+ test('text', () { |
+ check(new TextInputElement(), 'text'); |
+ }); |
+ |
+ test('url', () { |
+ check(new UrlInputElement(), 'url', UrlInputElement.supported); |
+ }); |
+ |
+ test('telephone', () { |
+ check(new TelephoneInputElement(), 'tel', |
+ TelephoneInputElement.supported); |
+ }); |
+ |
+ test('email', () { |
+ check(new EmailInputElement(), 'email', EmailInputElement.supported); |
+ }); |
+ |
+ test('password', () { |
+ check(new PasswordInputElement(), 'password'); |
+ }); |
+ |
+ test('date', () { |
+ check(new DateInputElement(), 'date', DateInputElement.supported); |
+ }); |
+ |
+ test('month', () { |
+ check(new MonthInputElement(), 'month', MonthInputElement.supported); |
+ }); |
+ |
+ test('week', () { |
+ check(new WeekInputElement(), 'week', WeekInputElement.supported); |
+ }); |
+ |
+ test('time', () { |
+ check(new TimeInputElement(), 'time', TimeInputElement.supported); |
+ if (TimeInputElement.supported) { |
+ var element = new TimeInputElement(); |
+ var now = new DateTime.now(); |
+ element.valueAsDate = now; |
+ expect(element.valueAsDate is DateTime, isTrue); |
+ |
+ // Bug 8813, setting it is just going to the epoch. |
+ //expect(element.valueAsDate, now); |
+ } |
+ }); |
+ |
+ test('datetime-local', () { |
+ check(new LocalDateTimeInputElement(), 'datetime-local', |
+ LocalDateTimeInputElement.supported); |
+ }); |
+ |
+ test('number', () { |
+ check(new NumberInputElement(), 'number', NumberInputElement.supported); |
+ }); |
+ |
+ test('range', () { |
+ check(new RangeInputElement(), 'range', RangeInputElement.supported); |
+ }); |
+ |
+ test('checkbox', () { |
+ check(new CheckboxInputElement(), 'checkbox'); |
+ }); |
+ |
+ test('radio', () { |
+ check(new RadioButtonInputElement(), 'radio'); |
+ }); |
+ |
+ test('file', () { |
+ check(new FileUploadInputElement(), 'file'); |
+ }); |
+ |
+ test('submit', () { |
+ check(new SubmitButtonInputElement(), 'submit'); |
+ }); |
+ |
+ test('image', () { |
+ check(new ImageButtonInputElement(), 'image'); |
+ }); |
+ |
+ test('reset', () { |
+ check(new ResetButtonInputElement(), 'reset'); |
+ }); |
+ |
+ test('button', () { |
+ check(new ButtonInputElement(), 'button'); |
+ }); |
+ }); |
+ |
+ group('attributes', () { |
+ test('valueSetNull', () { |
+ final e = new TextInputElement(); |
+ e.value = null; |
+ expect(e.value, ''); |
+ }); |
+ test('valueSetNullProxy', () { |
+ final e = new TextInputElement(); |
+ e.value = _undefined; |
+ expect(e.value, ''); |
+ }); |
+ }); |
+} |
+ |
+var _undefined = (() => new List(5)[0])(); |