from nose.tools import *
from ex48.lexicon import lexicon
from ex48.lexicon import Sentence
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')])
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')])
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')])
def test_nouns():
	assert_equal(lexicon.scan("bear"),[('noun','bear')])
	result=lexicon.scan("bear princess")
	assert_equal(result,[('noun','bear'),
					('noun','princess')])
def test_numbers():
	assert_equal(lexicon.scan("1234"),[('number',1234)])
	result=lexicon.scan("3 91234")
	assert_equal(result,[('number',3),
						('number',91234)])
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')])
def test_sentence():
	subject=('noun','bear')
	verb=('verb','go')
	object2=('direction','north')
	result=Sentence(subject,verb,object2)
	assert_equal(result.subject,'bear')
	assert_equal(result.verb,'go')
	assert_equal(result.object,'north')
def test_peek():
	sentence=Sentence(('noun','bear'),('verb','go'),('direction','north'))
	result=sentence.peek([('noun','bear'),('verb','go'),('direction','north')])
	assert_equal(result,'noun')
def test_match():
	sentence=Sentence(('noun','bear'),('verb','go'),('direction','north'))
	assert_equal(sentence.match([('noun','bear'),('verb','go')],'noun'),('noun','bear'))
	assert_equal(sentence.match([('direction','north'),('verb','go')],'noun'),('direction','north'))
	assert_equal(sentence.match([('verb','go'),('direction','north')],'noun'),None)
	assert_equal(sentence.match([('verb','go'),('noun','bear')],'noun'),None)