# frozen_string_literal: true RSpec.describe GameOfLife::Plane do describe "#[]" do context "when empty" do subject(:cyclic_array) { described_class.new } it "returns nil with [-1]" do expect(cyclic_array[-1]).to be_nil end it "returns nil with [0]" do expect(cyclic_array[0]).to be_nil end it "returns nil with [1]" do expect(cyclic_array[1]).to be_nil end end context "when not empty" do subject(:cyclic_array) { described_class.new([0, 1, 2, 3]) } it "returns value at index" do expect(cyclic_array[0]).to eq 0 end it "returns value at -index (negative indices count backward from the end of the array)" do expect(cyclic_array[-5]).to eq 3 expect(cyclic_array[-1]).to eq 3 end it "returns value at any index (indices bigger than size cycle again from the beginning)" do expect(cyclic_array[5]).to eq 1 expect(cyclic_array[9]).to eq 1 end end end end