require 'test/unit' require 'calcagent' require 'fileutils' require 'net/http' BasicSocket.do_not_reverse_lookup = true class TestMyAgent < Test::Unit::TestCase def setup if File.exist?('calcagent.rb') FileUtils.copy('calcagent.rb', 'calcagent.rb.save') begin FileUtils.copy('calcagent-api.yaml', 'calcagent-api.yaml.save') rescue; end end @agent = MyAgent.new end def test_defining_hello actual, s = @agent.send("add pattern /^hello/, hello") actual, s = @agent.send("hello") actual, s = @agent.send("> def hello(pattern=nil, input=nil)") actual, s = @agent.send("> if @count == nil; @count = 1; return 'I am ready for my first lesson.'; end") actual, s = @agent.send("> return 'Hello again.'") actual, s = @agent.send("> end # method_def") actual, s = @agent.send("hello") assert_match(/lesson/, actual) actual, s = @agent.send("hi is a synonym for hello") assert_match(/Okay/, actual) actual, s = @agent.send("hi") assert_match(/again/, actual) end def test_show_api actual, s = @agent.send("show api") assert_match(/ is a synonym for /, actual) end def test_show_one_method_api actual, s = @agent.send("show show_api's api") assert_match(/show api/, actual) end def test_calc actual, s = @agent.send("how many ounces in a pound?") assert_match(/16/, actual) actual, s = @agent.send("what is 1 foot + 2 feet in meters?") assert_match(/meters/, actual) actual, s = @agent.send("convert -40F to Centigrade") assert_match(/-40/, actual) actual, s = @agent.send("how many meters in a mile?") assert_match(/1,609/, actual) actual, s = @agent.send("what is 3.5g in ounces?") assert_match(/0.123458867/, actual) end def test_operators actual, s = @agent.send("what is 0.5 + 0.5 - 1?") assert_match(/0/, actual) actual, s = @agent.send("1 + 1") assert_match(/2/, actual) actual, s = @agent.send("10 / 2") assert_match(/5/, actual) actual, s = @agent.send("5 * 2") assert_match(/10/, actual) actual, s = @agent.send("2 - 5") assert_match(/-3/, actual) end def test_how_many actual, s = @agent.send("how many days is 600,000 hours?") assert_match(/25,000/, actual) end def test_that actual, s = @agent.send("1 + PI") assert_match(/4\.1415/, actual) actual, s = @agent.send("that * e") if actual !~ /11.258/ then actual, s = @agent.send("that * E") end assert_match(/11.258/, actual) actual, s = @agent.send("what is that?") assert_match(/11.258/, actual) end def teardown File.delete('calcagent.rb') unless !File.exist?('calcagent.rb.save') begin; File.delete('calcagent-api.yaml'); rescue; end if File.exist?('calcagent.rb.save') FileUtils.copy('calcagent.rb.save', 'calcagent.rb') begin; FileUtils.copy('calcagent-api.yaml.save', 'calcagent-api.yaml'); rescue; end end if File.exist?('calcagent.rb') then File.delete('calcagent.rb.save') end if File.exist?('calcagent-api.yaml.save') then File.delete('calcagent-api.yaml.save') end end end