summaryrefslogtreecommitdiffstats
path: root/CLI/ruby/spec
diff options
context:
space:
mode:
authora14m <[email protected]>2020-11-30 20:02:18 +0100
committera14m <[email protected]>2020-11-30 20:02:18 +0100
commitd8aff6caa4c9872de1d437faad00191c9d099a7a (patch)
tree8b062c01b32bb68b810762ea62ec71b6186a9ded /CLI/ruby/spec
parent553cde4d33c860a5490691117e414e586a685ae9 (diff)
Add the cyclic plane (circular array) implementation w/testing
Diffstat (limited to 'CLI/ruby/spec')
-rw-r--r--CLI/ruby/spec/plane_spec.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/CLI/ruby/spec/plane_spec.rb b/CLI/ruby/spec/plane_spec.rb
new file mode 100644
index 0000000..c4efbb4
--- /dev/null
+++ b/CLI/ruby/spec/plane_spec.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+RSpec.describe GameOfLife::Plane do
+ describe "#[]" do
+ context "when empty" do
+ subject { described_class.new }
+
+ it "returns nil with [-1]" do
+ expect(subject[-1]).to be_nil
+ end
+
+ it "returns nil with [0]" do
+ expect(subject[0]).to be_nil
+ end
+
+ it "returns nil with [1]" do
+ expect(subject[1]).to be_nil
+ end
+ end
+
+ context "when not empty" do
+ subject { described_class.new([0, 1, 2, 3]) }
+
+ it "returns value at index" do
+ expect(subject[0]).to eq 0
+ end
+
+ it "returns value at -index (negative indices count backward from the end of the array)" do
+ expect(subject[-5]).to eq 3
+ expect(subject[-1]).to eq 3
+ end
+
+ it "returns value at any index (indices bigger than size cycle again from the beginning)" do
+ expect(subject[5]).to eq 1
+ expect(subject[9]).to eq 1
+ end
+ end
+ end
+end