from nose.tools import *
from lexicon import lexicon,create_sentence

def test_directions():
    assert_equal(lexicon.scan("north"), [('direction', 'north')])
    result = lexicon.scan("north south east")
    print result
    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")
    print result
    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_create_verb_object():
    words=lexicon.scan('eat bear')
    sentence=create_sentence.parse_sentence(words)
    assert_equal(sentence.subject,'player')
    assert_equal(sentence.verb,'eat')
    assert_equal(sentence.object,'bear')
    print sentence.subject
    print sentence.object
    print sentence.verb

def test_create_subject_verb_object():
    words = lexicon.scan('princess kill bear')
    sentence = create_sentence.parse_sentence(words)
    assert_equal(sentence.subject, 'princess')
    assert_equal(sentence.verb, 'kill')
    assert_equal(sentence.object, 'bear')

def test_creat_sentence_error():
    words = lexicon.scan('princess kila bear')
    sentence = create_sentence.parse_sentence(words)
    assert_equal(sentence,create_sentence.ParserError)

if __name__ == '__main__':
   test_creat_sentence_error()
   