LJZN

每天更新Rails练习项目到Github~

» Home
» Category
» About Me
» Github

48进阶用户输入

08 Jul 2016 » LRTHW

测试文件

require 'ex48/lexicon.rb'
require "test/unit"

class TestNAME < Test::Unit::TestCase

	def test_directions()
		assert_equal(Lexicon.scan("north"), [['direction', 'north']])
		result = Lexicon.scan("north south east")
		
		assert_equal(result, [['direction', 'north'], ['direction', 'south'], ['direction', 'east']])
	end
	
	def test_verbs()
		assert_equal(Lexicon.scan("go"), [['verb', 'go']])
		result = Lexicon.scan("go kill eat")
		assert_equal(result, [['verb', 'go'], ['verb', 'kill'], ['verb', 'eat']])		
	end
	
	def test_stops()
		assert_equal(Lexicon.scan("the"), [['stop', 'the']])
		result = Lexicon.scan("the in of")
		assert_equal(result, [['stop', 'the'], ['stop', 'in'], ['stop', 'of']])		
	end
	
	def test_nouns()
		assert_equal(Lexicon.scan("bear"), [['noun', 'bear']])
		result = Lexicon.scan("bear princess")
		assert_equal(result, [['noun', 'bear'], ['noun', 'princess']])		
	end
	
	def test_numbers()
		assert_equal(Lexicon.scan("1234"), [['number', '1234']])
		result = Lexicon.scan("3 91234")
		assert_equal(result, [['number', '3'], ['number', '91234']])		
	end
	
	def test_errors()
		assert_equal(Lexicon.scan("ASDFADFASDF"), [['error', 'ASDFADFASDF']])
		result = Lexicon.scan("bear IAS princess")
		assert_equal(result, [['noun', 'bear'], ['error', 'IAS'], ['noun', 'princess']])		
	end
	
	def test_downcase()
		assert_equal(Lexicon.scan("BeaR"), [['noun', 'BeaR']])
	end
			
end

程序文件

class Lexicon
	
	def self.scan(words)
		words = words.split(' ')
		answer = []
		
		words.each do |word|
			down_word = word.downcase
			if ['north', 'south', 'east'].include?(down_word)		
				answer << ['direction', word]
			elsif ['go', 'kill', 'eat'].include?(down_word)		
				answer << ['verb', word]
			elsif ['the', 'in', 'of'].include?(down_word)		
				answer << ['stop', word]
			elsif ['bear', 'princess'].include?(down_word)		
				answer << ['noun', word]	
			elsif word =~ /^*[1-9]$/		
				answer << ['number', word]
			else
				answer << ['error', word]
			end
		end
		return answer
	end
end

Related Posts