Index: packages/quiver/test/check_test.dart |
diff --git a/packages/quiver/test/check_test.dart b/packages/quiver/test/check_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8257cbdd46173a55b076d56396abd27e64856a7c |
--- /dev/null |
+++ b/packages/quiver/test/check_test.dart |
@@ -0,0 +1,182 @@ |
+// Copyright 2014 Google Inc. All Rights Reserved. |
+// |
+// Licensed under the Apache License, Version 2.0 (the "License"); |
+// you may not use this file except in compliance with the License. |
+// You may obtain a copy of the License at |
+// |
+// http://www.apache.org/licenses/LICENSE-2.0 |
+// |
+// Unless required by applicable law or agreed to in writing, software |
+// distributed under the License is distributed on an "AS IS" BASIS, |
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+// See the License for the specific language governing permissions and |
+// limitations under the License. |
+ |
+library quiver.check_test; |
+ |
+import 'package:quiver/check.dart'; |
+import 'package:test/test.dart'; |
+ |
+main() { |
+ group('checkArgument', () { |
+ group('success', () { |
+ test('simple', () => checkArgument(true)); |
+ test('null message', () => checkArgument(true, message: null)); |
+ test('string message', () => checkArgument(true, message: 'foo')); |
+ test('function message', () => |
+ checkArgument(true, message: () => fail("Shouldn't be called"))); |
+ }); |
+ |
+ group('failure', () { |
+ checkArgumentShouldFail(Function f, [String expectedMessage]) { |
+ try { |
+ f(); |
+ fail('Should have thrown an ArgumentError'); |
+ } catch (e) { |
+ expect(e, isArgumentError); |
+ expect(e.message, expectedMessage); |
+ } |
+ } |
+ |
+ test('no message', |
+ () => checkArgumentShouldFail(() => checkArgument(false))); |
+ |
+ test('failure and simple string message', () => checkArgumentShouldFail( |
+ () => checkArgument(false, message: 'message'), 'message')); |
+ |
+ test('failure and null message', () => |
+ checkArgumentShouldFail(() => checkArgument(false, message: null))); |
+ test('failure and object as message', () => |
+ checkArgumentShouldFail(() => checkArgument(false, message: 5), '5')); |
+ test('failure and message closure returns object', |
+ () => checkArgumentShouldFail( |
+ () => checkArgument(false, message: () => 5), '5')); |
+ |
+ test('failure and message function', () { |
+ int five = 5; |
+ checkArgumentShouldFail( |
+ () => checkArgument(false, message: () => 'I ate $five pies'), |
+ 'I ate 5 pies'); |
+ }); |
+ }); |
+ }); |
+ |
+ group('checkState', () { |
+ group('success', () { |
+ test('simple', () => checkState(true)); |
+ test('null message', () => checkState(true, message: null)); |
+ test('string message', () => checkState(true, message: 'foo')); |
+ test('function message', |
+ () => checkState(true, message: () => fail("Shouldn't be called"))); |
+ }); |
+ |
+ group('failure', () { |
+ checkStateShouldFail(Function f, [String expectedMessage]) { |
+ if (expectedMessage == null) expectedMessage = 'failed precondition'; |
+ try { |
+ f(); |
+ fail('Should have thrown a StateError'); |
+ } catch (e) { |
+ expect(e, isStateError); |
+ expect(e.message, expectedMessage); |
+ } |
+ } |
+ |
+ test('no message', () => checkStateShouldFail(() => checkState(false))); |
+ |
+ test('failure and simple string message', () => checkStateShouldFail( |
+ () => checkState(false, message: 'message'), 'message')); |
+ |
+ test('failure and null message', |
+ () => checkStateShouldFail(() => checkState(false, message: null))); |
+ test('message closure returns null', () => |
+ checkStateShouldFail(() => checkState(false, message: () => null))); |
+ |
+ test('failure and message function', () { |
+ int five = 5; |
+ checkStateShouldFail( |
+ () => checkState(false, message: () => 'I ate $five pies'), |
+ 'I ate 5 pies'); |
+ }); |
+ }); |
+ }); |
+ |
+ group('checkNotNull', () { |
+ group('success', () { |
+ test('simple', () => expect(checkNotNull(''), '')); |
+ test('string message', () => expect(checkNotNull(5, message: 'foo'), 5)); |
+ test('function message', () => expect(checkNotNull(true, |
+ message: () => fail("Shouldn't be called")), true)); |
+ }); |
+ |
+ group('failure', () { |
+ checkNotNullShouldFail(Function f, [String expectedMessage]) { |
+ if (expectedMessage == null) expectedMessage = 'null pointer'; |
+ try { |
+ f(); |
+ fail('Should have thrown an ArgumentError'); |
+ } catch (e) { |
+ expect(e, isArgumentError); |
+ expect(e.message, expectedMessage); |
+ } |
+ } |
+ |
+ test( |
+ 'no message', () => checkNotNullShouldFail(() => checkNotNull(null))); |
+ |
+ test('simple failure message', () => checkNotNullShouldFail( |
+ () => checkNotNull(null, message: 'message'), 'message')); |
+ |
+ test('null message', () => |
+ checkNotNullShouldFail(() => checkNotNull(null, message: null))); |
+ |
+ test('message closure returns null', () => checkNotNullShouldFail( |
+ () => checkNotNull(null, message: () => null))); |
+ |
+ test('failure and message function', () { |
+ int five = 5; |
+ checkNotNullShouldFail( |
+ () => checkNotNull(null, message: () => 'I ate $five pies'), |
+ 'I ate 5 pies'); |
+ }); |
+ }); |
+ }); |
+ |
+ group('checkListIndex', () { |
+ test('success', () { |
+ checkListIndex(0, 1); |
+ checkListIndex(0, 1, message: () => fail("shouldn't be called")); |
+ checkListIndex(0, 2); |
+ checkListIndex(0, 2, message: () => fail("shouldn't be called")); |
+ checkListIndex(1, 2); |
+ checkListIndex(1, 2, message: () => fail("shouldn't be called")); |
+ }); |
+ |
+ group('failure', () { |
+ checkListIndexShouldFail(int index, int size, |
+ [message, String expectedMessage]) { |
+ try { |
+ checkListIndex(index, size, message: message); |
+ fail('Should have thrown a RangeError'); |
+ } catch (e) { |
+ expect(e, isRangeError); |
+ expect(e.message, expectedMessage == null |
+ ? 'index $index not valid for list of size $size' |
+ : expectedMessage); |
+ } |
+ } |
+ test('negative size', () => checkListIndexShouldFail(0, -1)); |
+ test('negative index', () => checkListIndexShouldFail(-1, 1)); |
+ test('index too high', () => checkListIndexShouldFail(1, 1)); |
+ test('zero size', () => checkListIndexShouldFail(0, 0)); |
+ |
+ test('with failure message', |
+ () => checkListIndexShouldFail(1, 1, 'foo', 'foo')); |
+ test('with failure message function', () { |
+ int five = 5; |
+ checkListIndexShouldFail( |
+ 1, 1, () => 'I ate $five pies', 'I ate 5 pies'); |
+ }); |
+ }); |
+ }); |
+} |