Sha256: 98e4264dbddba9db962517107bea5aff863c1104839d09eb4a6fa31d4e183868

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

  
require 'test/unit'
require 'raspberry/succ/predicate'

module TestLogic
    
  include Predicate::LogicInclusion
  extend Predicate::LogicExtension
  
  def man(x)
  end

  def woman(x)
  end
  
  def tool(x)
  end
  
  def mortal(x)
    woman(x) | man(x)
  end

  def can_use(x, y)
    ( man(x) | woman(x) ) & tool(y)
  end
    
end

class TC_Predicate < Test::Unit::TestCase

  include TestLogic
  
  def setup 
    man('socrates')
    woman('dido')
    tool('hammer')
    can_use('me', 'ball')
  end
  
  def test_facts
    assert(man?('socrates'), "man?('socrates')")
    assert(woman?('dido'), "woman?('dido')")
    assert(tool?('hammer'), "tool?('hammer')")
    assert(can_use?('me', 'ball'), "can_use?('me', 'ball')")
  end

  def test_deductions
    assert(mortal?('socrates'))
    assert(mortal?('dido'))
    assert(can_use?('socrates','hammer'))
    assert(can_use?('dido','hammer'))
  end
  
  def test_queries
    assert(man(/.*/).include?(['socrates']))
    assert(woman(/.*/).include?(['dido']))
    assert(mortal(/.*/).include?(['socrates']))
    assert(mortal(/.*/).include?(['dido']))
    assert(can_use(/.*/,/.*/).include?(['socrates', 'hammer']))
    assert(can_use(/.*/,/.*/).include?(['dido', 'hammer']))
    assert(can_use(/.*/,/.*/).include?(['me', 'ball']))
  end
    
end


 

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
carats-0.3.0 lib/carat-dev/predicate/predicate_test.rb