1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
require "librarian/environment/runtime_cache"
module Librarian
class Environment
describe RuntimeCache do
let(:rtc) { described_class.new }
let(:key) { ["brah", "nick"] }
let(:key_x) { ["brah", "phar"] }
let(:key_y) { ["rost", "phar"] }
def triple(keypair)
[rtc.include?(*keypair), rtc.get(*keypair), rtc.memo(*keypair){yield}]
end
context "originally" do
specify { expect(triple(key){9}).to eql([false, nil, 9]) }
end
context "after put" do
before { rtc.put(*key){6} }
specify { expect(triple(key){9}).to eql([true, 6, 6]) }
specify { expect(triple(key_x){9}).to eql([false, nil, 9]) }
specify { expect(triple(key_y){9}).to eql([false, nil, 9]) }
end
context "after put then delete" do
before { rtc.put(*key){6} }
before { rtc.delete *key }
specify { expect(triple(key){9}).to eql([false, nil, 9]) }
specify { expect(triple(key_x){9}).to eql([false, nil, 9]) }
specify { expect(triple(key_y){9}).to eql([false, nil, 9]) }
end
context "after memo" do
before { rtc.memo(*key){6} }
specify { expect(triple(key){9}).to eql([true, 6, 6]) }
specify { expect(triple(key_x){9}).to eql([false, nil, 9]) }
specify { expect(triple(key_y){9}).to eql([false, nil, 9]) }
end
context "after memo then delete" do
before { rtc.memo(*key){6} }
before { rtc.delete *key }
specify { expect(triple(key){9}).to eql([false, nil, 9]) }
specify { expect(triple(key_x){9}).to eql([false, nil, 9]) }
specify { expect(triple(key_y){9}).to eql([false, nil, 9]) }
end
context "with keyspace wrapper" do
let(:krtc) { rtc.keyspace("brah") }
let(:key) { "nick" }
let(:key_x) { "phar" }
def triple(keypair)
[krtc.include?(key), krtc.get(key), krtc.memo(key){yield}]
end
context "after put" do
before { krtc.put(key){6} }
specify { expect(triple(key){9}).to eql([true, 6, 6]) }
end
end
end
end
end
|