enable and fix lints
diff --git a/.travis.yml b/.travis.yml
index 9c21886..8d6eeea 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,13 +1,12 @@
language: dart
dart:
- - stable
+ - 2.0.0
- dev
- - 1.24.3
dart_task:
- test:
- - dartanalyzer
+ - dartanalyzer: --fatal-infos --fatal-warnings .
matrix:
include:
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..ee63c14
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,98 @@
+include: package:pedantic/analysis_options.yaml
+analyzer:
+ strong-mode:
+ implicit-casts: false
+ errors:
+ dead_code: error
+ override_on_non_overriding_method: error
+ unused_element: error
+ unused_import: error
+ unused_local_variable: error
+linter:
+ rules:
+ - always_declare_return_types
+ - annotate_overrides
+ - avoid_bool_literals_in_conditional_expressions
+ - avoid_classes_with_only_static_members
+ - avoid_empty_else
+ - avoid_function_literals_in_foreach_calls
+ - avoid_init_to_null
+ - avoid_null_checks_in_equality_operators
+ - avoid_relative_lib_imports
+ - avoid_renaming_method_parameters
+ - avoid_return_types_on_setters
+ - avoid_returning_null
+ - avoid_returning_null_for_future
+ - avoid_returning_null_for_void
+ - avoid_returning_this
+ - avoid_shadowing_type_parameters
+ - avoid_single_cascade_in_expression_statements
+ - avoid_types_as_parameter_names
+ - avoid_unused_constructor_parameters
+ - await_only_futures
+ - camel_case_types
+ - cancel_subscriptions
+ - cascade_invocations
+ - comment_references
+ - constant_identifier_names
+ - control_flow_in_finally
+ - directives_ordering
+ - empty_catches
+ - empty_constructor_bodies
+ - empty_statements
+ - file_names
+ - hash_and_equals
+ - implementation_imports
+ - invariant_booleans
+ - iterable_contains_unrelated_type
+ - join_return_with_assignment
+ - library_names
+ - library_prefixes
+ - list_remove_unrelated_type
+ - literal_only_boolean_expressions
+ - no_adjacent_strings_in_list
+ - no_duplicate_case_values
+ - non_constant_identifier_names
+ - null_closures
+ - omit_local_variable_types
+ - only_throw_errors
+ - overridden_fields
+ - package_api_docs
+ - package_names
+ - package_prefixed_library_names
+ - prefer_adjacent_string_concatenation
+ - prefer_collection_literals
+ - prefer_conditional_assignment
+ - prefer_contains
+ - prefer_equal_for_default_values
+ - prefer_final_fields
+ - prefer_final_locals
+ - prefer_generic_function_type_aliases
+ - prefer_initializing_formals
+ - prefer_interpolation_to_compose_strings
+ - prefer_is_empty
+ - prefer_is_not_empty
+ - prefer_null_aware_operators
+ - prefer_single_quotes
+ - prefer_typing_uninitialized_variables
+ - recursive_getters
+ - slash_for_doc_comments
+ - test_types_in_equals
+ - throw_in_finally
+ - type_init_formals
+ - unawaited_futures
+ - unnecessary_await_in_return
+ - unnecessary_brace_in_string_interps
+ - unnecessary_const
+ - unnecessary_getters_setters
+ - unnecessary_lambdas
+ - unnecessary_new
+ - unnecessary_null_aware_assignments
+ - unnecessary_parenthesis
+ - unnecessary_statements
+ - unnecessary_this
+ - unrelated_type_equality_checks
+ - use_function_type_syntax_for_parameters
+ - use_rethrow_when_possible
+ - valid_regexps
+ - void_checks
diff --git a/lib/tuple.dart b/lib/tuple.dart
index 21d2578..82edd2b 100644
--- a/lib/tuple.dart
+++ b/lib/tuple.dart
@@ -38,20 +38,20 @@
/// Create a new tuple value with the specified list [items].
factory Tuple2.fromList(List items) {
if (items.length != 2) {
- throw new ArgumentError('items must have length 2');
+ throw ArgumentError('items must have length 2');
}
- return new Tuple2<T1, T2>(items[0] as T1, items[1] as T2);
+ return Tuple2<T1, T2>(items[0] as T1, items[1] as T2);
}
/// Returns a tuple with the first item set to the specified value.
Tuple2<T1, T2> withItem1(T1 v) {
- return new Tuple2<T1, T2>(v, item2);
+ return Tuple2<T1, T2>(v, item2);
}
/// Returns a tuple with the second item set to the specified value.
Tuple2<T1, T2> withItem2(T2 v) {
- return new Tuple2<T1, T2>(item1, v);
+ return Tuple2<T1, T2>(item1, v);
}
/// Creates a [List] containing the items of this [Tuple2].
@@ -59,13 +59,14 @@
/// The elements are in item order. The list is variable-length
/// if [growable] is true.
List toList({bool growable = false}) =>
- new List.from([item1, item2], growable: growable);
+ List.from([item1, item2], growable: growable);
@override
String toString() => '[$item1, $item2]';
@override
- bool operator ==(o) => o is Tuple2 && o.item1 == item1 && o.item2 == item2;
+ bool operator ==(other) =>
+ other is Tuple2 && other.item1 == item1 && other.item2 == item2;
@override
int get hashCode => hash2(item1.hashCode, item2.hashCode);
@@ -88,26 +89,25 @@
/// Create a new tuple value with the specified list [items].
factory Tuple3.fromList(List items) {
if (items.length != 3) {
- throw new ArgumentError('items must have length 3');
+ throw ArgumentError('items must have length 3');
}
- return new Tuple3<T1, T2, T3>(
- items[0] as T1, items[1] as T2, items[2] as T3);
+ return Tuple3<T1, T2, T3>(items[0] as T1, items[1] as T2, items[2] as T3);
}
/// Returns a tuple with the first item set to the specified value.
Tuple3<T1, T2, T3> withItem1(T1 v) {
- return new Tuple3<T1, T2, T3>(v, item2, item3);
+ return Tuple3<T1, T2, T3>(v, item2, item3);
}
/// Returns a tuple with the second item set to the specified value.
Tuple3<T1, T2, T3> withItem2(T2 v) {
- return new Tuple3<T1, T2, T3>(item1, v, item3);
+ return Tuple3<T1, T2, T3>(item1, v, item3);
}
/// Returns a tuple with the third item set to the specified value.
Tuple3<T1, T2, T3> withItem3(T3 v) {
- return new Tuple3<T1, T2, T3>(item1, item2, v);
+ return Tuple3<T1, T2, T3>(item1, item2, v);
}
/// Creates a [List] containing the items of this [Tuple3].
@@ -115,14 +115,17 @@
/// The elements are in item order. The list is variable-length
/// if [growable] is true.
List toList({bool growable = false}) =>
- new List.from([item1, item2, item3], growable: growable);
+ List.from([item1, item2, item3], growable: growable);
@override
String toString() => '[$item1, $item2, $item3]';
@override
- bool operator ==(o) =>
- o is Tuple3 && o.item1 == item1 && o.item2 == item2 && o.item3 == item3;
+ bool operator ==(other) =>
+ other is Tuple3 &&
+ other.item1 == item1 &&
+ other.item2 == item2 &&
+ other.item3 == item3;
@override
int get hashCode => hash3(item1.hashCode, item2.hashCode, item3.hashCode);
@@ -148,31 +151,31 @@
/// Create a new tuple value with the specified list [items].
factory Tuple4.fromList(List items) {
if (items.length != 4) {
- throw new ArgumentError('items must have length 4');
+ throw ArgumentError('items must have length 4');
}
- return new Tuple4<T1, T2, T3, T4>(
+ return Tuple4<T1, T2, T3, T4>(
items[0] as T1, items[1] as T2, items[2] as T3, items[3] as T4);
}
/// Returns a tuple with the first item set to the specified value.
Tuple4<T1, T2, T3, T4> withItem1(T1 v) {
- return new Tuple4<T1, T2, T3, T4>(v, item2, item3, item4);
+ return Tuple4<T1, T2, T3, T4>(v, item2, item3, item4);
}
/// Returns a tuple with the second item set to the specified value.
Tuple4<T1, T2, T3, T4> withItem2(T2 v) {
- return new Tuple4<T1, T2, T3, T4>(item1, v, item3, item4);
+ return Tuple4<T1, T2, T3, T4>(item1, v, item3, item4);
}
/// Returns a tuple with the third item set to the specified value.
Tuple4<T1, T2, T3, T4> withItem3(T3 v) {
- return new Tuple4<T1, T2, T3, T4>(item1, item2, v, item4);
+ return Tuple4<T1, T2, T3, T4>(item1, item2, v, item4);
}
/// Returns a tuple with the fourth item set to the specified value.
Tuple4<T1, T2, T3, T4> withItem4(T4 v) {
- return new Tuple4<T1, T2, T3, T4>(item1, item2, item3, v);
+ return Tuple4<T1, T2, T3, T4>(item1, item2, item3, v);
}
/// Creates a [List] containing the items of this [Tuple4].
@@ -180,18 +183,18 @@
/// The elements are in item order. The list is variable-length
/// if [growable] is true.
List toList({bool growable = false}) =>
- new List.from([item1, item2, item3, item4], growable: growable);
+ List.from([item1, item2, item3, item4], growable: growable);
@override
String toString() => '[$item1, $item2, $item3, $item4]';
@override
- bool operator ==(o) =>
- o is Tuple4 &&
- o.item1 == item1 &&
- o.item2 == item2 &&
- o.item3 == item3 &&
- o.item4 == item4;
+ bool operator ==(other) =>
+ other is Tuple4 &&
+ other.item1 == item1 &&
+ other.item2 == item2 &&
+ other.item3 == item3 &&
+ other.item4 == item4;
@override
int get hashCode =>
@@ -221,36 +224,36 @@
/// Create a new tuple value with the specified list [items].
factory Tuple5.fromList(List items) {
if (items.length != 5) {
- throw new ArgumentError('items must have length 5');
+ throw ArgumentError('items must have length 5');
}
- return new Tuple5<T1, T2, T3, T4, T5>(items[0] as T1, items[1] as T2,
+ return Tuple5<T1, T2, T3, T4, T5>(items[0] as T1, items[1] as T2,
items[2] as T3, items[3] as T4, items[4] as T5);
}
/// Returns a tuple with the first item set to the specified value.
Tuple5<T1, T2, T3, T4, T5> withItem1(T1 v) {
- return new Tuple5<T1, T2, T3, T4, T5>(v, item2, item3, item4, item5);
+ return Tuple5<T1, T2, T3, T4, T5>(v, item2, item3, item4, item5);
}
/// Returns a tuple with the second item set to the specified value.
Tuple5<T1, T2, T3, T4, T5> withItem2(T2 v) {
- return new Tuple5<T1, T2, T3, T4, T5>(item1, v, item3, item4, item5);
+ return Tuple5<T1, T2, T3, T4, T5>(item1, v, item3, item4, item5);
}
/// Returns a tuple with the third item set to the specified value.
Tuple5<T1, T2, T3, T4, T5> withItem3(T3 v) {
- return new Tuple5<T1, T2, T3, T4, T5>(item1, item2, v, item4, item5);
+ return Tuple5<T1, T2, T3, T4, T5>(item1, item2, v, item4, item5);
}
/// Returns a tuple with the fourth item set to the specified value.
Tuple5<T1, T2, T3, T4, T5> withItem4(T4 v) {
- return new Tuple5<T1, T2, T3, T4, T5>(item1, item2, item3, v, item5);
+ return Tuple5<T1, T2, T3, T4, T5>(item1, item2, item3, v, item5);
}
/// Returns a tuple with the fifth item set to the specified value.
Tuple5<T1, T2, T3, T4, T5> withItem5(T5 v) {
- return new Tuple5<T1, T2, T3, T4, T5>(item1, item2, item3, item4, v);
+ return Tuple5<T1, T2, T3, T4, T5>(item1, item2, item3, item4, v);
}
/// Creates a [List] containing the items of this [Tuple5].
@@ -258,19 +261,19 @@
/// The elements are in item order. The list is variable-length
/// if [growable] is true.
List toList({bool growable = false}) =>
- new List.from([item1, item2, item3, item4, item5], growable: growable);
+ List.from([item1, item2, item3, item4, item5], growable: growable);
@override
String toString() => '[$item1, $item2, $item3, $item4, $item5]';
@override
- bool operator ==(o) =>
- o is Tuple5 &&
- o.item1 == item1 &&
- o.item2 == item2 &&
- o.item3 == item3 &&
- o.item4 == item4 &&
- o.item5 == item5;
+ bool operator ==(other) =>
+ other is Tuple5 &&
+ other.item1 == item1 &&
+ other.item2 == item2 &&
+ other.item3 == item3 &&
+ other.item4 == item4 &&
+ other.item5 == item5;
@override
int get hashCode => hashObjects([
@@ -309,47 +312,41 @@
/// Create a new tuple value with the specified list [items].
factory Tuple6.fromList(List items) {
if (items.length != 6) {
- throw new ArgumentError('items must have length 6');
+ throw ArgumentError('items must have length 6');
}
- return new Tuple6<T1, T2, T3, T4, T5, T6>(items[0] as T1, items[1] as T2,
+ return Tuple6<T1, T2, T3, T4, T5, T6>(items[0] as T1, items[1] as T2,
items[2] as T3, items[3] as T4, items[4] as T5, items[5] as T6);
}
/// Returns a tuple with the first item set to the specified value.
Tuple6<T1, T2, T3, T4, T5, T6> withItem1(T1 v) {
- return new Tuple6<T1, T2, T3, T4, T5, T6>(
- v, item2, item3, item4, item5, item6);
+ return Tuple6<T1, T2, T3, T4, T5, T6>(v, item2, item3, item4, item5, item6);
}
/// Returns a tuple with the second item set to the specified value.
Tuple6<T1, T2, T3, T4, T5, T6> withItem2(T2 v) {
- return new Tuple6<T1, T2, T3, T4, T5, T6>(
- item1, v, item3, item4, item5, item6);
+ return Tuple6<T1, T2, T3, T4, T5, T6>(item1, v, item3, item4, item5, item6);
}
/// Returns a tuple with the third item set to the specified value.
Tuple6<T1, T2, T3, T4, T5, T6> withItem3(T3 v) {
- return new Tuple6<T1, T2, T3, T4, T5, T6>(
- item1, item2, v, item4, item5, item6);
+ return Tuple6<T1, T2, T3, T4, T5, T6>(item1, item2, v, item4, item5, item6);
}
/// Returns a tuple with the fourth item set to the specified value.
Tuple6<T1, T2, T3, T4, T5, T6> withItem4(T4 v) {
- return new Tuple6<T1, T2, T3, T4, T5, T6>(
- item1, item2, item3, v, item5, item6);
+ return Tuple6<T1, T2, T3, T4, T5, T6>(item1, item2, item3, v, item5, item6);
}
/// Returns a tuple with the fifth item set to the specified value.
Tuple6<T1, T2, T3, T4, T5, T6> withItem5(T5 v) {
- return new Tuple6<T1, T2, T3, T4, T5, T6>(
- item1, item2, item3, item4, v, item6);
+ return Tuple6<T1, T2, T3, T4, T5, T6>(item1, item2, item3, item4, v, item6);
}
/// Returns a tuple with the sixth item set to the specified value.
Tuple6<T1, T2, T3, T4, T5, T6> withItem6(T6 v) {
- return new Tuple6<T1, T2, T3, T4, T5, T6>(
- item1, item2, item3, item4, item5, v);
+ return Tuple6<T1, T2, T3, T4, T5, T6>(item1, item2, item3, item4, item5, v);
}
/// Creates a [List] containing the items of this [Tuple5].
@@ -357,21 +354,20 @@
/// The elements are in item order. The list is variable-length
/// if [growable] is true.
List toList({bool growable = false}) =>
- new List.from([item1, item2, item3, item4, item5, item6],
- growable: growable);
+ List.from([item1, item2, item3, item4, item5, item6], growable: growable);
@override
String toString() => '[$item1, $item2, $item3, $item4, $item5, $item6]';
@override
- bool operator ==(o) =>
- o is Tuple6 &&
- o.item1 == item1 &&
- o.item2 == item2 &&
- o.item3 == item3 &&
- o.item4 == item4 &&
- o.item5 == item5 &&
- o.item6 == item6;
+ bool operator ==(other) =>
+ other is Tuple6 &&
+ other.item1 == item1 &&
+ other.item2 == item2 &&
+ other.item3 == item3 &&
+ other.item4 == item4 &&
+ other.item5 == item5 &&
+ other.item6 == item6;
@override
int get hashCode => hashObjects([
@@ -414,10 +410,10 @@
/// Create a new tuple value with the specified list [items].
factory Tuple7.fromList(List items) {
if (items.length != 7) {
- throw new ArgumentError('items must have length 7');
+ throw ArgumentError('items must have length 7');
}
- return new Tuple7<T1, T2, T3, T4, T5, T6, T7>(
+ return Tuple7<T1, T2, T3, T4, T5, T6, T7>(
items[0] as T1,
items[1] as T2,
items[2] as T3,
@@ -429,43 +425,43 @@
/// Returns a tuple with the first item set to the specified value.
Tuple7<T1, T2, T3, T4, T5, T6, T7> withItem1(T1 v) {
- return new Tuple7<T1, T2, T3, T4, T5, T6, T7>(
+ return Tuple7<T1, T2, T3, T4, T5, T6, T7>(
v, item2, item3, item4, item5, item6, item7);
}
/// Returns a tuple with the second item set to the specified value.
Tuple7<T1, T2, T3, T4, T5, T6, T7> withItem2(T2 v) {
- return new Tuple7<T1, T2, T3, T4, T5, T6, T7>(
+ return Tuple7<T1, T2, T3, T4, T5, T6, T7>(
item1, v, item3, item4, item5, item6, item7);
}
/// Returns a tuple with the third item set to the specified value.
Tuple7<T1, T2, T3, T4, T5, T6, T7> withItem3(T3 v) {
- return new Tuple7<T1, T2, T3, T4, T5, T6, T7>(
+ return Tuple7<T1, T2, T3, T4, T5, T6, T7>(
item1, item2, v, item4, item5, item6, item7);
}
/// Returns a tuple with the fourth item set to the specified value.
Tuple7<T1, T2, T3, T4, T5, T6, T7> withItem4(T4 v) {
- return new Tuple7<T1, T2, T3, T4, T5, T6, T7>(
+ return Tuple7<T1, T2, T3, T4, T5, T6, T7>(
item1, item2, item3, v, item5, item6, item7);
}
/// Returns a tuple with the fifth item set to the specified value.
Tuple7<T1, T2, T3, T4, T5, T6, T7> withItem5(T5 v) {
- return new Tuple7<T1, T2, T3, T4, T5, T6, T7>(
+ return Tuple7<T1, T2, T3, T4, T5, T6, T7>(
item1, item2, item3, item4, v, item6, item7);
}
/// Returns a tuple with the sixth item set to the specified value.
Tuple7<T1, T2, T3, T4, T5, T6, T7> withItem6(T6 v) {
- return new Tuple7<T1, T2, T3, T4, T5, T6, T7>(
+ return Tuple7<T1, T2, T3, T4, T5, T6, T7>(
item1, item2, item3, item4, item5, v, item7);
}
/// Returns a tuple with the seventh item set to the specified value.
Tuple7<T1, T2, T3, T4, T5, T6, T7> withItem7(T7 v) {
- return new Tuple7<T1, T2, T3, T4, T5, T6, T7>(
+ return Tuple7<T1, T2, T3, T4, T5, T6, T7>(
item1, item2, item3, item4, item5, item6, v);
}
@@ -473,8 +469,8 @@
///
/// The elements are in item order. The list is variable-length
/// if [growable] is true.
- List toList({bool growable: false}) =>
- new List.from([item1, item2, item3, item4, item5, item6, item7],
+ List toList({bool growable = false}) =>
+ List.from([item1, item2, item3, item4, item5, item6, item7],
growable: growable);
@override
@@ -482,15 +478,15 @@
'[$item1, $item2, $item3, $item4, $item5, $item6, $item7]';
@override
- bool operator ==(o) =>
- o is Tuple7 &&
- o.item1 == item1 &&
- o.item2 == item2 &&
- o.item3 == item3 &&
- o.item4 == item4 &&
- o.item5 == item5 &&
- o.item5 == item6 &&
- o.item6 == item7;
+ bool operator ==(other) =>
+ other is Tuple7 &&
+ other.item1 == item1 &&
+ other.item2 == item2 &&
+ other.item3 == item3 &&
+ other.item4 == item4 &&
+ other.item5 == item5 &&
+ other.item5 == item6 &&
+ other.item6 == item7;
@override
int get hashCode => hashObjects([
diff --git a/pubspec.yaml b/pubspec.yaml
index 5113a76..4a58383 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -15,4 +15,5 @@
quiver: '>=0.22.0 <3.0.0'
dev_dependencies:
+ pedantic: ^1.2.0
test: '>=1.0.0 <2.0.0'
diff --git a/test/all_tests.dart b/test/all_tests.dart
deleted file mode 100644
index 6cf9e29..0000000
--- a/test/all_tests.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2015, the tuple 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 tuple.test;
-
-import 'tuple_test.dart' as tuple_test;
-
-main() {
- tuple_test.main();
-}
diff --git a/test/tuple_test.dart b/test/tuple_test.dart
index 6381e57..4f9a7ff 100644
--- a/test/tuple_test.dart
+++ b/test/tuple_test.dart
@@ -2,67 +2,61 @@
// 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 tuple.test;
-
import 'package:test/test.dart';
import 'package:tuple/tuple.dart';
-main() {
- group("Tuple tests", () {
- final t = new Tuple2<int, bool>(1, true);
+void main() {
+ final t = Tuple2<int, bool>(1, true);
- test('items', () {
- expect(t.item1, equals(1));
- expect(t.item2, equals(true));
- });
+ test('items', () {
+ expect(t.item1, equals(1));
+ expect(t.item2, equals(true));
+ });
- test('withItems', () {
- expect(t.withItem1(2), equals(new Tuple2<int, bool>(2, true)));
- expect(t.withItem2(false), equals(new Tuple2<int, bool>(1, false)));
- });
+ test('withItems', () {
+ expect(t.withItem1(2), equals(Tuple2<int, bool>(2, true)));
+ expect(t.withItem2(false), equals(Tuple2<int, bool>(1, false)));
+ });
- test('create a tuple from a list of items', () {
- final t1 = new Tuple2.fromList([1, true]);
- expect(t1.item1, equals(1));
- expect(t1.item2, equals(true));
+ test('create a tuple from a list of items', () {
+ final t1 = Tuple2.fromList([1, true]);
+ expect(t1.item1, equals(1));
+ expect(t1.item2, equals(true));
- expect(() => new Tuple2.fromList([1]),
- throwsA(new TypeMatcher<ArgumentError>()));
- expect(() => new Tuple2.fromList([1, true, 'a']),
- throwsA(new TypeMatcher<ArgumentError>()));
- });
+ expect(() => Tuple2.fromList([1]), throwsA(TypeMatcher<ArgumentError>()));
+ expect(() => Tuple2.fromList([1, true, 'a']),
+ throwsA(TypeMatcher<ArgumentError>()));
+ });
- test('equality', () {
- final otherT = new Tuple2<int, bool>(1, true);
- expect(t, equals(otherT));
- });
+ test('equality', () {
+ final otherT = Tuple2<int, bool>(1, true);
+ expect(t, equals(otherT));
+ });
- test('nested equality', () {
- final t1 = new Tuple2<Tuple2<int, String>, bool>(
- new Tuple2<int, String>(3, 'a'), false);
- final t2 = new Tuple2<Tuple2<int, String>, bool>(
- new Tuple2<int, String>(3, 'a'), false);
- expect(t1, equals(t2));
- });
+ test('nested equality', () {
+ final t1 =
+ Tuple2<Tuple2<int, String>, bool>(Tuple2<int, String>(3, 'a'), false);
+ final t2 =
+ Tuple2<Tuple2<int, String>, bool>(Tuple2<int, String>(3, 'a'), false);
+ expect(t1, equals(t2));
+ });
- test('can be used as keys in maps', () {
- final map = {t: 'a'};
- final key = new Tuple2<int, bool>(1, true);
- expect(map[key], equals('a'));
- });
+ test('can be used as keys in maps', () {
+ final map = {t: 'a'};
+ final key = Tuple2<int, bool>(1, true);
+ expect(map[key], equals('a'));
+ });
- test('toList() should return a listing containing the items of the tuple',
- () {
- expect(t.toList(), orderedEquals([1, true]));
- });
+ test('toList() should return a listing containing the items of the tuple',
+ () {
+ expect(t.toList(), orderedEquals([1, true]));
+ });
- test('toList() should return a fixed list by default', () {
- expect(() => t.toList().add(3),
- throwsA(new TypeMatcher<UnsupportedError>()));
- });
+ test('toList() should return a fixed list by default', () {
+ expect(() => t.toList().add(3), throwsA(TypeMatcher<UnsupportedError>()));
+ });
- test('toList(growable: true) should return a growable list', () {
- expect(t.toList(growable: true)..add('a'), orderedEquals([1, true, 'a']));
- });
+ test('toList(growable: true) should return a growable list', () {
+ expect(t.toList(growable: true)..add('a'), orderedEquals([1, true, 'a']));
});
}