Sha256: 83478c9ae456beb6f7ce1da2cba2227667f6c42947954819141bbd70e95e90f6

Contents?: true

Size: 1.37 KB

Versions: 119

Compression:

Stored size: 1.37 KB

Contents

require "#{File.dirname(__FILE__)}/spec_helper"

describe 'A by_need expression' do
  describe 'when a method is called on it' do
    it 'binds its variable' do
      local do |x, y, z|
        Thread.new { unify y, by_need { 4 } }
        Thread.new { unify z, x + y }
        Thread.new { unify x, by_need { 3 } }
        z.should == 7
      end
    end
  end

  describe 'when a bound variable is unified to it' do
    it 'passes unififcation for equal values' do
      local do |x|
        unify x, by_need { 1 }
        unify x, 1
        x.should == 1

        y = by_need { 1 }
        unify y, 1
        y.should == 1
      end
    end

    it 'fails unififcation for unequal values' do
      local do |x|
        unify x, by_need { 1 }
        lambda { unify x, 2 }.should raise_error(Dataflow::UnificationError)

        y = by_need { 1 }
        lambda { unify y, 2 }.should raise_error(Dataflow::UnificationError)
      end
    end

    describe 'when it is unified to a bound variable' do
      it 'passes unififcation for equal values' do
        local do |x|
          unify x, 1
          unify x, by_need { 1 }
          x.should == 1
        end
      end
      
      it 'fails unification for unequal values' do
        local do |x|
          unify x, 1
          lambda { unify x, by_need { 2 } }.should raise_error(Dataflow::UnificationError)
        end
      end
    end
  end
end

Version data entries

119 entries across 119 versions & 3 rubygems

Version Path
engineyard-serverside-2.0.4 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-1.6.5 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-2.0.3 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-2.0.2 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-2.0.1 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-2.0.0 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-2.0.0.rc1 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-2.0.0.pre5 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-2.0.0.pre4 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-2.0.0.pre3 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-2.0.0.pre2 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-2.0.0.pre1 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-1.7.0.pre2 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-1.6.4 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-1.6.4.pre6 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-1.6.4.pre5 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-1.6.4.pre4 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-1.6.4.pre3 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-1.6.4.pre2 lib/vendor/dataflow/spec/by_need_spec.rb
engineyard-serverside-1.6.4.pre lib/vendor/dataflow/spec/by_need_spec.rb