Sha256: 5a657e0a342a53806064d6b974be89d62a76102c3038ff0675d765de087a5ecf

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

RSpec.shared_examples 'a cuboid' do
  let(:args) do
    {
      dimensions: [
        Measured::Length.new(1.1, :cm),
        Measured::Length.new(3.3, :cm),
        Measured::Length.new(2.2, :cm)
      ]
    }
  end

  it { is_expected.to be_a(Physical::Cuboid) }

  it "has dimensions as Measured::Length objects with rational values" do
    expect(subject.dimensions).to eq(
      [
        Measured::Length.new(1.1, :cm),
        Measured::Length.new(3.3, :cm),
        Measured::Length.new(2.2, :cm)
      ]
    )
  end

  it "has getter methods for each dimension as Measured::Length object" do
    expect(subject.length).to eq(Measured::Length.new(1.1, :cm))
    expect(subject.width).to eq(Measured::Length.new(3.3, :cm))
    expect(subject.height).to eq(Measured::Length.new(2.2, :cm))
  end

  describe "#==" do
    let(:args) { Hash[id: 123] }
    let(:other_cuboid) { described_class.new(**args) }
    let(:non_cuboid) { double(id: 123) }

    it "compares cuboids" do
      aggregate_failures do
        expect(subject == other_cuboid).to be(true)
        expect(subject == non_cuboid).to be(false)
        expect(subject.nil?).to be(false)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
physical-0.4.8 lib/physical/spec_support/shared_examples.rb
physical-0.4.7 lib/physical/spec_support/shared_examples.rb
physical-0.4.5 lib/physical/spec_support/shared_examples.rb