Sha256: 6dd2776ccdd5a4f905532f8ef4922f739d29093b0a3bc7e0c9e1b884edc3f2d5

Contents?: true

Size: 994 Bytes

Versions: 2

Compression:

Stored size: 994 Bytes

Contents

require 'spec_helper'

describe Some do

  let (:cat) { Cat.new("MOGGIE!") }
  let (:dog) { Dog.new("DOGGIE!") }

  subject { Some[cat] }

  it { should be_some }
  it { should be_some Cat }
  it { should_not be_some Dog }

  it { should_not be_none }

  it { should eq Some[cat] }
  it { should_not eq Some[dog] }
  it { should_not eq None }

  it "has a value" do
    Some[cat].value.should eq cat
  end

  it "can be passed a default value but won't use it" do
    Some[cat].value_or { dog }.should eq cat
  end

  it "can be anded with another some" do
    (Some[cat] & Some[dog]).should eq Some[cat, dog]
  end

  it "can be anded with a none, resulting in none" do
    (Some[cat] & None).should eq None
  end

  it "can be ored with another some" do
    (Some[cat] | Some[dog]).should eq Some[cat]
  end

  it "can be ored with a none resulting in itself" do
    (Some[cat] | None).should eq Some[cat]
  end

  it "prints as Some[value]" do
    Some[4].to_s.should eq "Some[4]"
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
optional-0.0.2 spec/lib/optional/some_spec.rb
optional-0.0.1 spec/lib/optional/some_spec.rb