diff options
author | Richard Maw <richard.maw@codethink.co.uk> | 2014-02-06 13:00:52 +0000 |
---|---|---|
committer | Richard Maw <richard.maw@codethink.co.uk> | 2014-02-06 13:49:50 +0000 |
commit | 7b13aaf9eda0178f43c96401a8b87e516e3e0a1c (patch) | |
tree | 8a6ff1fcecb19d6d08df9cd292489ce2be2cee31 | |
parent | 1b4580180878a4a5bf7a1b0ad83ac0f09f50071f (diff) | |
download | cmdtest-7b13aaf9eda0178f43c96401a8b87e516e3e0a1c.tar.gz |
yarnlib: unit test ScenarioValidator
-rw-r--r-- | yarnlib/scenario_validator.py | 2 | ||||
-rw-r--r-- | yarnlib/scenario_validator_tests.py | 71 |
2 files changed, 72 insertions, 1 deletions
diff --git a/yarnlib/scenario_validator.py b/yarnlib/scenario_validator.py index f02fce2..2a4ce8b 100644 --- a/yarnlib/scenario_validator.py +++ b/yarnlib/scenario_validator.py @@ -48,7 +48,7 @@ class ScenarioValidator(object): def __init__(self, scenarios): self.scenarios = scenarios - def validate_all(self): + def validate_all(self): # pragma: no cover '''Convenience method to run all checks.''' self.check_there_are_scenarios() self.check_for_duplicate_scenario_names() diff --git a/yarnlib/scenario_validator_tests.py b/yarnlib/scenario_validator_tests.py new file mode 100644 index 0000000..3f3104c --- /dev/null +++ b/yarnlib/scenario_validator_tests.py @@ -0,0 +1,71 @@ +# Copyright 2014 Codethink Limited +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# =*= License: GPL-3+ =*= + + +import unittest + +import yarnlib + + +class ScenarioValidatorTests(unittest.TestCase): + + def setUp(self): + pass + + def test_check_scenarios_fail(self): + sv = yarnlib.ScenarioValidator([]) + with self.assertRaises(yarnlib.NoScenariosError): + sv.check_there_are_scenarios() + + def test_check_scenarios_pass(self): + sv = yarnlib.ScenarioValidator([ + yarnlib.Scenario('foo') + ]) + sv.check_there_are_scenarios() + + def test_check_duplicate_names_fail(self): + sv = yarnlib.ScenarioValidator([ + yarnlib.Scenario('foo'), + yarnlib.Scenario('foo'), + ]) + with self.assertRaises(yarnlib.DuplicateScenariosError): + sv.check_for_duplicate_scenario_names() + + def test_check_duplicate_names_pass(self): + sv = yarnlib.ScenarioValidator([ + yarnlib.Scenario('foo'), + yarnlib.Scenario('bar'), + ]) + sv.check_for_duplicate_scenario_names() + + def test_check_for_thens_fail(self): + sv = yarnlib.ScenarioValidator([ + yarnlib.Scenario('foo') + ]) + with self.assertRaises(yarnlib.NoThensError): + sv.check_for_thens() + + def test_check_for_thens_pass(self): + scenario = yarnlib.Scenario('foo') + scenario.steps = [ + yarnlib.ScenarioStep('THEN', 'badger stoat') + ] + sv = yarnlib.ScenarioValidator([scenario]) + sv.check_for_thens() + + +# vim: set ts=4 sw=4 et: |