File: runtime_cache_spec.rb

package info (click to toggle)
ruby-librarian 1.1.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 624 kB
  • sloc: ruby: 6,109; makefile: 11
file content (73 lines) | stat: -rw-r--r-- 2,148 bytes parent folder | download | duplicates (7)
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