OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 Google Inc. All Rights Reserved. |
| 2 // |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 // you may not use this file except in compliance with the License. |
| 5 // You may obtain a copy of the License at |
| 6 // |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 // |
| 9 // Unless required by applicable law or agreed to in writing, software |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, |
| 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 // See the License for the specific language governing permissions and |
| 13 // limitations under the License. |
| 14 |
| 15 library quiver.check_test; |
| 16 |
| 17 import 'package:quiver/check.dart'; |
| 18 import 'package:test/test.dart'; |
| 19 |
| 20 main() { |
| 21 group('checkArgument', () { |
| 22 group('success', () { |
| 23 test('simple', () => checkArgument(true)); |
| 24 test('null message', () => checkArgument(true, message: null)); |
| 25 test('string message', () => checkArgument(true, message: 'foo')); |
| 26 test('function message', () => |
| 27 checkArgument(true, message: () => fail("Shouldn't be called"))); |
| 28 }); |
| 29 |
| 30 group('failure', () { |
| 31 checkArgumentShouldFail(Function f, [String expectedMessage]) { |
| 32 try { |
| 33 f(); |
| 34 fail('Should have thrown an ArgumentError'); |
| 35 } catch (e) { |
| 36 expect(e, isArgumentError); |
| 37 expect(e.message, expectedMessage); |
| 38 } |
| 39 } |
| 40 |
| 41 test('no message', |
| 42 () => checkArgumentShouldFail(() => checkArgument(false))); |
| 43 |
| 44 test('failure and simple string message', () => checkArgumentShouldFail( |
| 45 () => checkArgument(false, message: 'message'), 'message')); |
| 46 |
| 47 test('failure and null message', () => |
| 48 checkArgumentShouldFail(() => checkArgument(false, message: null))); |
| 49 test('failure and object as message', () => |
| 50 checkArgumentShouldFail(() => checkArgument(false, message: 5), '5')); |
| 51 test('failure and message closure returns object', |
| 52 () => checkArgumentShouldFail( |
| 53 () => checkArgument(false, message: () => 5), '5')); |
| 54 |
| 55 test('failure and message function', () { |
| 56 int five = 5; |
| 57 checkArgumentShouldFail( |
| 58 () => checkArgument(false, message: () => 'I ate $five pies'), |
| 59 'I ate 5 pies'); |
| 60 }); |
| 61 }); |
| 62 }); |
| 63 |
| 64 group('checkState', () { |
| 65 group('success', () { |
| 66 test('simple', () => checkState(true)); |
| 67 test('null message', () => checkState(true, message: null)); |
| 68 test('string message', () => checkState(true, message: 'foo')); |
| 69 test('function message', |
| 70 () => checkState(true, message: () => fail("Shouldn't be called"))); |
| 71 }); |
| 72 |
| 73 group('failure', () { |
| 74 checkStateShouldFail(Function f, [String expectedMessage]) { |
| 75 if (expectedMessage == null) expectedMessage = 'failed precondition'; |
| 76 try { |
| 77 f(); |
| 78 fail('Should have thrown a StateError'); |
| 79 } catch (e) { |
| 80 expect(e, isStateError); |
| 81 expect(e.message, expectedMessage); |
| 82 } |
| 83 } |
| 84 |
| 85 test('no message', () => checkStateShouldFail(() => checkState(false))); |
| 86 |
| 87 test('failure and simple string message', () => checkStateShouldFail( |
| 88 () => checkState(false, message: 'message'), 'message')); |
| 89 |
| 90 test('failure and null message', |
| 91 () => checkStateShouldFail(() => checkState(false, message: null))); |
| 92 test('message closure returns null', () => |
| 93 checkStateShouldFail(() => checkState(false, message: () => null))); |
| 94 |
| 95 test('failure and message function', () { |
| 96 int five = 5; |
| 97 checkStateShouldFail( |
| 98 () => checkState(false, message: () => 'I ate $five pies'), |
| 99 'I ate 5 pies'); |
| 100 }); |
| 101 }); |
| 102 }); |
| 103 |
| 104 group('checkNotNull', () { |
| 105 group('success', () { |
| 106 test('simple', () => expect(checkNotNull(''), '')); |
| 107 test('string message', () => expect(checkNotNull(5, message: 'foo'), 5)); |
| 108 test('function message', () => expect(checkNotNull(true, |
| 109 message: () => fail("Shouldn't be called")), true)); |
| 110 }); |
| 111 |
| 112 group('failure', () { |
| 113 checkNotNullShouldFail(Function f, [String expectedMessage]) { |
| 114 if (expectedMessage == null) expectedMessage = 'null pointer'; |
| 115 try { |
| 116 f(); |
| 117 fail('Should have thrown an ArgumentError'); |
| 118 } catch (e) { |
| 119 expect(e, isArgumentError); |
| 120 expect(e.message, expectedMessage); |
| 121 } |
| 122 } |
| 123 |
| 124 test( |
| 125 'no message', () => checkNotNullShouldFail(() => checkNotNull(null))); |
| 126 |
| 127 test('simple failure message', () => checkNotNullShouldFail( |
| 128 () => checkNotNull(null, message: 'message'), 'message')); |
| 129 |
| 130 test('null message', () => |
| 131 checkNotNullShouldFail(() => checkNotNull(null, message: null))); |
| 132 |
| 133 test('message closure returns null', () => checkNotNullShouldFail( |
| 134 () => checkNotNull(null, message: () => null))); |
| 135 |
| 136 test('failure and message function', () { |
| 137 int five = 5; |
| 138 checkNotNullShouldFail( |
| 139 () => checkNotNull(null, message: () => 'I ate $five pies'), |
| 140 'I ate 5 pies'); |
| 141 }); |
| 142 }); |
| 143 }); |
| 144 |
| 145 group('checkListIndex', () { |
| 146 test('success', () { |
| 147 checkListIndex(0, 1); |
| 148 checkListIndex(0, 1, message: () => fail("shouldn't be called")); |
| 149 checkListIndex(0, 2); |
| 150 checkListIndex(0, 2, message: () => fail("shouldn't be called")); |
| 151 checkListIndex(1, 2); |
| 152 checkListIndex(1, 2, message: () => fail("shouldn't be called")); |
| 153 }); |
| 154 |
| 155 group('failure', () { |
| 156 checkListIndexShouldFail(int index, int size, |
| 157 [message, String expectedMessage]) { |
| 158 try { |
| 159 checkListIndex(index, size, message: message); |
| 160 fail('Should have thrown a RangeError'); |
| 161 } catch (e) { |
| 162 expect(e, isRangeError); |
| 163 expect(e.message, expectedMessage == null |
| 164 ? 'index $index not valid for list of size $size' |
| 165 : expectedMessage); |
| 166 } |
| 167 } |
| 168 test('negative size', () => checkListIndexShouldFail(0, -1)); |
| 169 test('negative index', () => checkListIndexShouldFail(-1, 1)); |
| 170 test('index too high', () => checkListIndexShouldFail(1, 1)); |
| 171 test('zero size', () => checkListIndexShouldFail(0, 0)); |
| 172 |
| 173 test('with failure message', |
| 174 () => checkListIndexShouldFail(1, 1, 'foo', 'foo')); |
| 175 test('with failure message function', () { |
| 176 int five = 5; |
| 177 checkListIndexShouldFail( |
| 178 1, 1, () => 'I ate $five pies', 'I ate 5 pies'); |
| 179 }); |
| 180 }); |
| 181 }); |
| 182 } |
OLD | NEW |