Sha256: 36d991a2443cd2ccd8f81f8a115790b02b1840278dcff9403f349a21be959e4f

Contents?: true

Size: 1.69 KB

Versions: 2

Compression:

Stored size: 1.69 KB

Contents

require 'spec_helper'
require 'combinatorics/cartesian_product'

describe CartesianProduct do
  subject { CartesianProduct } 

  describe "cardinality" do
    it "should return 1 for cardinality(1, 1)" do 
      subject.cardinality(1, 1).should == 1
    end

    it "should return 2 for cardinality(1, 2)" do
      subject.cardinality(1, 2).should == 2
    end

    it "should return 2 for cardinality(2, 1)" do
      subject.cardinality(2, 1).should == 2
    end

    it "should return 4 for cardinality(2, 2)" do
      subject.cardinality(2, 2).should == 4
    end

    it "should return 3 for cardinality(3, 1)" do
      subject.cardinality(3, 1).should == 3
    end

    it "should return 3 for cardinality(1, 3)" do
      subject.cardinality(1, 3).should == 3
    end

    it "should return 6 for cardinality(2, 3)" do
      subject.cardinality(2, 3).should == 6
    end

    it "should return 6 for cardinality(3, 2)" do
      subject.cardinality(3, 2).should == 6
    end
    
    it "should return 9 for cardinality(3, 3)" do
      subject.cardinality(3, 3).should == 9
    end

    it "should raise RangeError if c1 is negative" do
      lambda { subject.cardinality(-1, 1) }.should raise_error(RangeError)
    end

    it "should raise RangeError if c2 is negative" do
      lambda { subject.cardinality(1, -1) }.should raise_error(RangeError)
    end

    it "should raise RangeError if c1 is zero" do
      lambda { subject.cardinality(0, 1) }.should raise_error(RangeError)
    end

    it "should raise RangeError if c2 is zero" do
      lambda { subject.cardinality(1, 0) }.should raise_error(RangeError)
    end
  end

  it "should wrap cardinality with CartesianProduct.X" do
    should respond_to(:X)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
combinatorics-0.4.3 spec/cartesian_product/cardinality_spec.rb
combinatorics-0.4.1 spec/cartesian_product/cardinality_spec.rb