| 226 | } |
| 227 | |
| 228 | void testSnapshotCache() { |
| 229 | Arena arena; |
| 230 | SnapshotCache cache(&arena); |
| 231 | WriteMap writes(&arena); |
| 232 | |
| 233 | Standalone<VectorRef<KeyValueRef>> keys; |
| 234 | keys.push_back_deep(keys.arena(), KeyValueRef(LiteralStringRef("d"), LiteralStringRef("doo"))); |
| 235 | keys.push_back_deep(keys.arena(), KeyValueRef(LiteralStringRef("e"), LiteralStringRef("eoo"))); |
| 236 | keys.push_back_deep(keys.arena(), KeyValueRef(LiteralStringRef("e\x00"), LiteralStringRef("zoo"))); |
| 237 | keys.push_back_deep(keys.arena(), KeyValueRef(LiteralStringRef("f"), LiteralStringRef("foo"))); |
| 238 | cache.insert(KeyRangeRef(LiteralStringRef("d"), LiteralStringRef("f\x00")), keys); |
| 239 | |
| 240 | cache.insert(KeyRangeRef(LiteralStringRef("g"), LiteralStringRef("h")), Standalone<VectorRef<KeyValueRef>>()); |
| 241 | |
| 242 | Standalone<VectorRef<KeyValueRef>> keys2; |
| 243 | keys2.push_back_deep(keys2.arena(), KeyValueRef(LiteralStringRef("k"), LiteralStringRef("koo"))); |
| 244 | keys2.push_back_deep(keys2.arena(), KeyValueRef(LiteralStringRef("l"), LiteralStringRef("loo"))); |
| 245 | cache.insert(KeyRangeRef(LiteralStringRef("j"), LiteralStringRef("m")), keys2); |
| 246 | |
| 247 | writes.mutate(LiteralStringRef("c"), MutationRef::SetValue, LiteralStringRef("c--"), true); |
| 248 | writes.clear(KeyRangeRef(LiteralStringRef("c\x00"), LiteralStringRef("e")), true); |
| 249 | writes.mutate(LiteralStringRef("c\x00"), MutationRef::SetValue, LiteralStringRef("c00--"), true); |
| 250 | WriteMap::iterator it3(&writes); |
| 251 | writes.mutate(LiteralStringRef("d"), MutationRef::SetValue, LiteralStringRef("d--"), true); |
| 252 | writes.mutate(LiteralStringRef("e"), MutationRef::SetValue, LiteralStringRef("e++"), true); |
| 253 | writes.mutate(LiteralStringRef("i"), MutationRef::SetValue, LiteralStringRef("i--"), true); |
| 254 | |
| 255 | KeyRange searchKeys = KeyRangeRef(LiteralStringRef("a"), LiteralStringRef("z")); |
| 256 | |
| 257 | RYWIterator it(&cache, &writes); |
| 258 | it.skip(searchKeys.begin); |
| 259 | while (true) { |
| 260 | fprintf(stderr, |
| 261 | "b: '%s' e: '%s' type: %s value: '%s'\n", |
| 262 | printable(it.beginKey().toStandaloneStringRef()).c_str(), |
| 263 | printable(it.endKey().toStandaloneStringRef()).c_str(), |
| 264 | it.is_empty_range() ? "empty" : (it.is_kv() ? "keyvalue" : "unknown"), |
| 265 | it.is_kv() ? printable(it.kv(arena)->value).c_str() : ""); |
| 266 | if (it.endKey() >= searchKeys.end) |
| 267 | break; |
| 268 | ++it; |
| 269 | } |
| 270 | fprintf(stderr, "end\n"); |
| 271 | |
| 272 | it.skip(searchKeys.end); |
| 273 | while (true) { |
| 274 | fprintf(stderr, |
| 275 | "b: '%s' e: '%s' type: %s value: '%s'\n", |
| 276 | printable(it.beginKey().toStandaloneStringRef()).c_str(), |
| 277 | printable(it.endKey().toStandaloneStringRef()).c_str(), |
| 278 | it.is_empty_range() ? "empty" : (it.is_kv() ? "keyvalue" : "unknown"), |
| 279 | it.is_kv() ? printable(it.kv(arena)->value).c_str() : ""); |
| 280 | if (it.beginKey() <= searchKeys.begin) |
| 281 | break; |
| 282 | --it; |
| 283 | } |
| 284 | fprintf(stderr, "end\n"); |
| 285 |
nothing calls this directly
no test coverage detected