Sha256: fb4560815ed7bf32261a06c9e227f4a04a5e54377ce8956f6697df45a63b5d05

Contents?: true

Size: 1.3 KB

Versions: 5

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

describe RnDB::Thicket do
  it "is empty by default" do
    thicket = described_class.new
    expect(thicket.count).to be_zero
  end

  it "can be initialized with a value" do
    thicket = described_class.new(2..21)
    expect(thicket.count).to eq((2..21).size)
  end

  it "can contain multiple disjoint slices" do
    thicket = described_class.new
    thicket << (11..16)
    thicket << (4..9)
    expect(thicket.to_a).to eq((4..9).to_a | (11..16).to_a)
  end

  it "can contain large values" do
    thicket = described_class.new(7..1e15)
    expect((thicket.min..thicket.max)).to eq((7..1e15.to_i))
  end

  it "can return the id by index" do
    thicket = described_class.new
    thicket << (11..16)
    thicket << (4..9)
    expect(thicket[7]).to eq(12)
  end

  it "returns a nil value when the index is out of range" do
    thicket = described_class.new
    thicket << (11..16)
    thicket << (4..9)
    expect(thicket[16]).to be_nil
  end

  it "can get the index of an id" do
    thicket = described_class.new
    thicket << (11..16)
    thicket << (4..9)
    expect(thicket.index(12)).to eq(7)
  end

  it "returns a nil index when the id does not exist" do
    thicket = described_class.new
    thicket << (11..16)
    thicket << (4..9)
    expect(thicket.index(10)).to be_nil
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rndb-0.3.1 spec/rn_db/thicket_spec.rb
rndb-0.3.0 spec/rn_db/thicket_spec.rb
rndb-0.2.1 spec/rn_db/thicket_spec.rb
rndb-0.2.0 spec/rn_db/thicket_spec.rb
rndb-0.1.1 spec/rn_db/thicket_spec.rb