From e089d1d41718e2362cc1a0821e1110e7d7dd3246 Mon Sep 17 00:00:00 2001 From: Ayush Jain Date: Tue, 27 Feb 2018 15:52:32 +0530 Subject: [PATCH 1/4] Add tests for TableDrivenAgentProgram --- tests/test_agents.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/test_agents.py b/tests/test_agents.py index eedaf0d76..b810b595c 100644 --- a/tests/test_agents.py +++ b/tests/test_agents.py @@ -55,6 +55,41 @@ def test_add(): assert l2.direction == Direction.D +def test_TableDrivenAgentProgram(): + loc_A, loc_B = (0, 0), (1, 0) + # table defining all the possible states of the agent + table = {((loc_A, 'Clean'),): 'Right', + ((loc_A, 'Dirty'),): 'Suck', + ((loc_B, 'Clean'),): 'Left', + ((loc_B, 'Dirty'),): 'Suck', + ((loc_A, 'Dirty'), (loc_A, 'Clean')): 'Right', + ((loc_A, 'Clean'), (loc_B, 'Dirty')): 'Suck', + ((loc_B, 'Clean'), (loc_A, 'Dirty')): 'Suck', + ((loc_B, 'Dirty'), (loc_B, 'Clean')): 'Left', + ((loc_A, 'Dirty'), (loc_A, 'Clean'), (loc_B, 'Dirty')): 'Suck', + ((loc_B, 'Dirty'), (loc_B, 'Clean'), (loc_A, 'Dirty')): 'Suck' + } + + # create an object of the TableDrivenAgentProgram + agent = TableDrivenAgentProgram(table) + # create an object of TrivialVacuumEnvironment + environment = TrivialVacuumEnvironment() + # initializing some environment status + environment.status = {loc_A:'Dirty', loc_B:'Dirty'} + # add agent to the environment + environment.add_thing(agent) + + # run the environment by single step everytime to check how environment evolves using TableDrivenAgentProgram + environment.run(steps = 1) + assert environment.status == {(0,0): 'Clean', (1,0): 'Dirty'} + + environment.run(steps = 1) + assert environment.status == {(0,0): 'Clean', (1,0): 'Dirty'} + + environment.run(steps = 1) + assert environment.status == {(0,0): 'Clean', (1,0): 'Clean'} + + def test_RandomVacuumAgent() : # create an object of the RandomVacuumAgent agent = RandomVacuumAgent() From 2a7590aa11da772df7ad5210c6d8f4abc9e7915c Mon Sep 17 00:00:00 2001 From: Ayush Jain Date: Tue, 27 Feb 2018 16:12:38 +0530 Subject: [PATCH 2/4] Add tests for TableDrivenAgentProgram --- tests/test_agents.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/test_agents.py b/tests/test_agents.py index b810b595c..47db0e946 100644 --- a/tests/test_agents.py +++ b/tests/test_agents.py @@ -2,7 +2,7 @@ from agents import Direction from agents import Agent from agents import ReflexVacuumAgent, ModelBasedVacuumAgent, TrivialVacuumEnvironment, compare_agents,\ - RandomVacuumAgent, TableDrivenVacuumAgent + RandomVacuumAgent, TableDrivenVacuumAgent, TableDrivenAgentProgram random.seed("aima-python") @@ -81,14 +81,14 @@ def test_TableDrivenAgentProgram(): # run the environment by single step everytime to check how environment evolves using TableDrivenAgentProgram environment.run(steps = 1) - assert environment.status == {(0,0): 'Clean', (1,0): 'Dirty'} + assert environment.status == {(1,0): 'Clean', (0,0): 'Dirty'} environment.run(steps = 1) - assert environment.status == {(0,0): 'Clean', (1,0): 'Dirty'} + assert environment.status == {(1,0): 'Clean', (0,0): 'Dirty'} environment.run(steps = 1) - assert environment.status == {(0,0): 'Clean', (1,0): 'Clean'} - + assert environment.status == {(1,0): 'Clean', (0,0): 'Clean'} + def test_RandomVacuumAgent() : # create an object of the RandomVacuumAgent From 991f0c77262645fff57501c6c6c9dab73f203f62 Mon Sep 17 00:00:00 2001 From: Ayush Jain Date: Wed, 28 Feb 2018 01:56:03 +0530 Subject: [PATCH 3/4] Check environment status at every step --- tests/test_agents.py | 52 +++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/tests/test_agents.py b/tests/test_agents.py index 47db0e946..89378abed 100644 --- a/tests/test_agents.py +++ b/tests/test_agents.py @@ -2,7 +2,7 @@ from agents import Direction from agents import Agent from agents import ReflexVacuumAgent, ModelBasedVacuumAgent, TrivialVacuumEnvironment, compare_agents,\ - RandomVacuumAgent, TableDrivenVacuumAgent, TableDrivenAgentProgram + RandomVacuumAgent, TableDrivenVacuumAgent, TableDrivenAgentProgram, RandomAgentProgram random.seed("aima-python") @@ -54,8 +54,36 @@ def test_add(): assert l1.direction == Direction.U assert l2.direction == Direction.D +def test_RandomAgentProgram() : + #create a list of all the actions a vacuum cleaner can perform + list = ['Right', 'Left', 'Suck', 'NoOp'] + # create a program and then an object of the RandomAgentProgram + program = RandomAgentProgram(list) + + agent = Agent(program) + # create an object of TrivialVacuumEnvironment + environment = TrivialVacuumEnvironment() + # add agent to the environment + environment.add_thing(agent) + # run the environment + environment.run() + # check final status of the environment + assert environment.status == {(1, 0): 'Clean' , (0, 0): 'Clean'} -def test_TableDrivenAgentProgram(): +def test_RandomVacuumAgent() : + # create an object of the RandomVacuumAgent + agent = RandomVacuumAgent() + # create an object of TrivialVacuumEnvironment + environment = TrivialVacuumEnvironment() + # add agent to the environment + environment.add_thing(agent) + # run the environment + environment.run() + # check final status of the environment + assert environment.status == {(1,0):'Clean' , (0,0) : 'Clean'} + + +def test_TableDrivenAgent(): loc_A, loc_B = (0, 0), (1, 0) # table defining all the possible states of the agent table = {((loc_A, 'Clean'),): 'Right', @@ -70,8 +98,9 @@ def test_TableDrivenAgentProgram(): ((loc_B, 'Dirty'), (loc_B, 'Clean'), (loc_A, 'Dirty')): 'Suck' } - # create an object of the TableDrivenAgentProgram - agent = TableDrivenAgentProgram(table) + # create an program and then an object of the TableDrivenAgent + program = TableDrivenAgentProgram(table) + agent = Agent(program) # create an object of TrivialVacuumEnvironment environment = TrivialVacuumEnvironment() # initializing some environment status @@ -90,19 +119,6 @@ def test_TableDrivenAgentProgram(): assert environment.status == {(1,0): 'Clean', (0,0): 'Clean'} -def test_RandomVacuumAgent() : - # create an object of the RandomVacuumAgent - agent = RandomVacuumAgent() - # create an object of TrivialVacuumEnvironment - environment = TrivialVacuumEnvironment() - # add agent to the environment - environment.add_thing(agent) - # run the environment - environment.run() - # check final status of the environment - assert environment.status == {(1,0):'Clean' , (0,0) : 'Clean'} - - def test_ReflexVacuumAgent() : # create an object of the ReflexVacuumAgent agent = ReflexVacuumAgent() @@ -164,4 +180,4 @@ def constant_prog(percept): return percept agent = Agent(constant_prog) result = agent.program(5) - assert result == 5 + assert result == 5 \ No newline at end of file From 249b423b0d65017f22252a9c04231462a9699be0 Mon Sep 17 00:00:00 2001 From: ayushjain19 Date: Wed, 28 Feb 2018 04:12:27 +0530 Subject: [PATCH 4/4] Check environment status at every step of TableDrivenAgentProgram --- tests/test_agents.py | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/tests/test_agents.py b/tests/test_agents.py index b921fc413..caefe61d4 100644 --- a/tests/test_agents.py +++ b/tests/test_agents.py @@ -83,16 +83,9 @@ def test_RandomVacuumAgent() : assert environment.status == {(1,0):'Clean' , (0,0) : 'Clean'} -<<<<<<< HEAD def test_TableDrivenAgent(): loc_A, loc_B = (0, 0), (1, 0) # table defining all the possible states of the agent -======= -def test_TableDrivenAgent() : - #create a table that would consist of all the possible states of the agent - loc_A, loc_B = (0, 0), (1, 0) - ->>>>>>> origin/master table = {((loc_A, 'Clean'),): 'Right', ((loc_A, 'Dirty'),): 'Suck', ((loc_B, 'Clean'),): 'Left', @@ -104,7 +97,6 @@ def test_TableDrivenAgent() : ((loc_A, 'Dirty'), (loc_A, 'Clean'), (loc_B, 'Dirty')): 'Suck', ((loc_B, 'Dirty'), (loc_B, 'Clean'), (loc_A, 'Dirty')): 'Suck' } -<<<<<<< HEAD # create an program and then an object of the TableDrivenAgent program = TableDrivenAgentProgram(table) @@ -125,19 +117,6 @@ def test_TableDrivenAgent() : environment.run(steps = 1) assert environment.status == {(1,0): 'Clean', (0,0): 'Clean'} -======= - # create an program and then an object of the TableDrivenAgent - program = TableDrivenAgentProgram(table) - agent = Agent(program) - # create an object of the TrivialVacuumEnvironment - environment = TrivialVacuumEnvironment() - # add agent to the environment - environment.add_thing(agent) - # run the environment - environment.run() - # check final status of the environment - assert environment.status == {(1, 0): 'Clean', (0, 0): 'Clean'} ->>>>>>> origin/master def test_ReflexVacuumAgent() : @@ -201,4 +180,4 @@ def constant_prog(percept): return percept agent = Agent(constant_prog) result = agent.program(5) - assert result == 5 \ No newline at end of file + assert result == 5