OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 library memcache_test; |
| 6 |
| 7 import 'package:unittest/unittest.dart'; |
| 8 import 'package:memcache/memcache.dart'; |
| 9 |
| 10 import 'package:appengine/src/protobuf_api/rpc/rpc_service_remote_api.dart'; |
| 11 import 'package:appengine/src/api_impl/raw_memcache_impl.dart'; |
| 12 import 'package:memcache/src/memcache_impl.dart'; |
| 13 |
| 14 import '../../utils/error_matchers.dart'; |
| 15 |
| 16 main() { |
| 17 var rpcService = new RPCServiceRemoteApi('127.0.0.1', 4444); |
| 18 var memcache = new MemCacheImpl(new RawMemcacheRpcImpl(rpcService, '')); |
| 19 |
| 20 group('memcache', () { |
| 21 setUp(() => memcache.clear()); |
| 22 |
| 23 test('get-set-get', () { |
| 24 memcache.get([1]).then(expectAsync((value) { |
| 25 expect(value, isNull); |
| 26 memcache.set('ABC', 'abc').then(expectAsync((value) { |
| 27 expect(value, isNull); |
| 28 memcache.get('ABC').then(expectAsync((value) { |
| 29 expect(value, 'abc'); |
| 30 })); |
| 31 })); |
| 32 })); |
| 33 }); |
| 34 |
| 35 test('get-add-replace', () { |
| 36 memcache.get([1]).then(expectAsync((value) { |
| 37 expect(value, isNull); |
| 38 memcache.set('ABC', 'abc').then(expectAsync((value) { |
| 39 expect(value, isNull); |
| 40 memcache.get('ABC').then(expectAsync((value) { |
| 41 expect(value, 'abc'); |
| 42 memcache.set('ABC', 'ABC', |
| 43 action: SetAction.REPLACE).then(expectAsync((value) { |
| 44 expect(value, isNull); |
| 45 memcache.get('ABC').then(expectAsync((value) { |
| 46 expect(value, 'ABC'); |
| 47 })); |
| 48 })); |
| 49 })); |
| 50 })); |
| 51 })); |
| 52 }); |
| 53 |
| 54 test('error-replace', () { |
| 55 memcache.get('A').then(expectAsync((value) { |
| 56 expect(value, isNull); |
| 57 expect(memcache.set('A', 'ABC', action: SetAction.REPLACE), |
| 58 throwsA(isMemcacheNotStored)); |
| 59 })); |
| 60 }); |
| 61 |
| 62 test('error-add', () { |
| 63 memcache.get('A').then(expectAsync((value) { |
| 64 expect(value, isNull); |
| 65 memcache.set('A', 'ABC').then(expectAsync((value) { |
| 66 expect(value, isNull); |
| 67 expect(memcache.set('A', 'ABC', action: SetAction.ADD), |
| 68 throwsA(isMemcacheNotStored)); |
| 69 })); |
| 70 })); |
| 71 }); |
| 72 |
| 73 test('all-get-set-get', () { |
| 74 memcache.getAll(['A', 'B']).then(expectAsync((value) { |
| 75 expect(value, {'A': null, 'B': null}); |
| 76 memcache.setAll({'A': 'ABC', 'B': 'abc'}).then(expectAsync((value) { |
| 77 expect(value, isNull); |
| 78 memcache.getAll(['A', 'B']).then(expectAsync((value) { |
| 79 expect(value, {'A': 'ABC', 'B': 'abc'}); |
| 80 memcache.setAll({'A': 'abc', 'B': 'ABC'}).then(expectAsync((value) { |
| 81 expect(value, isNull); |
| 82 memcache.getAll(['A', 'B']).then(expectAsync((value) { |
| 83 expect(value, {'A': 'abc', 'B': 'ABC'}); |
| 84 })); |
| 85 })); |
| 86 })); |
| 87 })); |
| 88 })); |
| 89 }); |
| 90 |
| 91 test('all-get-add-replace', () { |
| 92 memcache.getAll(['A', 'B']).then(expectAsync((value) { |
| 93 expect(value, {'A': null, 'B': null}); |
| 94 memcache.setAll({'A': 'ABC', 'B': 'abc'}, |
| 95 action: SetAction.ADD).then(expectAsync((value) { |
| 96 expect(value, isNull); |
| 97 memcache.getAll(['A', 'B']).then(expectAsync((value) { |
| 98 expect(value, {'A': 'ABC', 'B': 'abc'}); |
| 99 memcache.setAll( |
| 100 {'A': 'abc', 'B': 'ABC'}, |
| 101 action: SetAction.REPLACE).then(expectAsync((value) { |
| 102 expect(value, isNull); |
| 103 memcache.getAll(['A', 'B']).then(expectAsync((value) { |
| 104 expect(value, {'A': 'abc', 'B': 'ABC'}); |
| 105 })); |
| 106 })); |
| 107 })); |
| 108 })); |
| 109 })); |
| 110 }); |
| 111 |
| 112 test('all-error-replace', () { |
| 113 memcache.getAll(['A', 'B']).then(expectAsync((value) { |
| 114 expect(value, {'A': null, 'B': null}); |
| 115 expect(memcache.setAll({'A': 'ABC', 'B': 'abc'}, |
| 116 action: SetAction.REPLACE), |
| 117 throwsA(isMemcacheNotStored)); |
| 118 })); |
| 119 }); |
| 120 |
| 121 test('all-error-add', () { |
| 122 memcache.getAll(['A', 'B']).then(expectAsync((value) { |
| 123 expect(value, {'A': null, 'B': null}); |
| 124 memcache.setAll({'A': 'ABC', 'B': 'abc'}).then(expectAsync((value) { |
| 125 expect(value, isNull); |
| 126 expect(memcache.setAll({'A': 'ABC', 'B': 'abc'}, |
| 127 action: SetAction.ADD), |
| 128 throwsA(isMemcacheNotStored)); |
| 129 })); |
| 130 })); |
| 131 }); |
| 132 |
| 133 test('increment-increment', () { |
| 134 memcache.increment('A').then(expectAsync((value) { |
| 135 expect(value, 1); |
| 136 memcache.increment([65]).then(expectAsync((value) { |
| 137 expect(value, 2); |
| 138 })); |
| 139 })); |
| 140 }); |
| 141 |
| 142 test('initial-increment-increment', () { |
| 143 memcache.increment('A', initialValue: 2).then(expectAsync((value) { |
| 144 expect(value, 3); |
| 145 memcache.increment([65], delta: 2).then(expectAsync((value) { |
| 146 expect(value, 5); |
| 147 })); |
| 148 })); |
| 149 }); |
| 150 |
| 151 test('initial-max-increment-wrap-increment', () { |
| 152 memcache.increment( |
| 153 'A', initialValue: 0xFFFFFFFFFFFFFFFF).then(expectAsync((value) { |
| 154 expect(value, 0); |
| 155 memcache.increment([65], delta: 2).then(expectAsync((value) { |
| 156 expect(value, 2); |
| 157 })); |
| 158 })); |
| 159 }); |
| 160 |
| 161 test('initial-almost-max-increment-increment-wrap', () { |
| 162 memcache.increment( |
| 163 'A', initialValue: 0xFFFFFFFFFFFFFFFE).then(expectAsync((value) { |
| 164 expect(value, 0xFFFFFFFFFFFFFFFF); |
| 165 memcache.increment([65], delta: 2).then(expectAsync((value) { |
| 166 expect(value, 1); |
| 167 })); |
| 168 })); |
| 169 }); |
| 170 |
| 171 test('increment-max-delta-increment-wrap', () { |
| 172 memcache.increment( |
| 173 'A', delta: 0xFFFFFFFFFFFFFFFF).then(expectAsync((value) { |
| 174 expect(value, 0xFFFFFFFFFFFFFFFF); |
| 175 memcache.increment([65], delta: 2).then(expectAsync((value) { |
| 176 expect(value, 1); |
| 177 })); |
| 178 })); |
| 179 }); |
| 180 |
| 181 test('decrement-decrement', () { |
| 182 memcache.decrement('A').then(expectAsync((value) { |
| 183 expect(value, 0); |
| 184 memcache.decrement([65]).then(expectAsync((value) { |
| 185 expect(value, 0); |
| 186 })); |
| 187 })); |
| 188 }); |
| 189 |
| 190 test('initial-decrement-decrement', () { |
| 191 memcache.decrement('A', initialValue: 3).then(expectAsync((value) { |
| 192 expect(value, 2); |
| 193 memcache.decrement([65], delta: 2).then(expectAsync((value) { |
| 194 expect(value, 0); |
| 195 })); |
| 196 })); |
| 197 }); |
| 198 |
| 199 test('initial-max-decrement-max-decrement', () { |
| 200 memcache.decrement( |
| 201 'A', |
| 202 delta: 0xFFFFFFFFFFFFFFFF, |
| 203 initialValue: 0xFFFFFFFFFFFFFFFF).then(expectAsync((value) { |
| 204 expect(value, 0); |
| 205 memcache.decrement( |
| 206 [65], delta: 0xFFFFFFFFFFFFFFFE).then(expectAsync((value) { |
| 207 expect(value, 0); |
| 208 })); |
| 209 })); |
| 210 }); |
| 211 |
| 212 test('initial-max-decrement-decrement', () { |
| 213 memcache.decrement( |
| 214 'A', initialValue: 0xFFFFFFFFFFFFFFFF).then(expectAsync((value) { |
| 215 expect(value, 0xFFFFFFFFFFFFFFFE); |
| 216 memcache.decrement( |
| 217 [65], delta: 0xFFFFFFFFFFFFFFFE).then(expectAsync((value) { |
| 218 expect(value, 0); |
| 219 })); |
| 220 })); |
| 221 }); |
| 222 }); |
| 223 } |
OLD | NEW |