def test_properties_when_no_arguments_provided(self): sys.argv = ["analyze_series"] cmd = AnalyzeSeriesCommand() self.assertIsNotNone(cmd._argument_parser) cmd._parse_options() self.assertEquals(sys.stdin, cmd._input_file) self.assertFalse(cmd._verbose)
def test_properties_when_arguments_provided(self): tf = tempfile.NamedTemporaryFile(mode="r") sys.argv = ["analyze_series", tf.name] verbosity = random_bool() if verbosity: sys.argv.append("--verbose") assert_last_point_in_control = random_bool() if assert_last_point_in_control: sys.argv.append("--assert-last-point-in-control") cmd = AnalyzeSeriesCommand() cmd._parse_options() self.assertEquals(tf.name, cmd._input_file.name) self.assertEquals(verbosity, cmd._verbose) self.assertEquals(assert_last_point_in_control, cmd._assert_last_point_in_control)
def setUp(self): self._analyze_series_cmd = AnalyzeSeriesCommand()
class AnalyzeSeriesCommandTest(unittest.TestCase): def setUp(self): self._analyze_series_cmd = AnalyzeSeriesCommand() def test_properties_when_no_arguments_provided(self): sys.argv = ["analyze_series"] cmd = AnalyzeSeriesCommand() self.assertIsNotNone(cmd._argument_parser) cmd._parse_options() self.assertEquals(sys.stdin, cmd._input_file) self.assertFalse(cmd._verbose) def test_properties_when_arguments_provided(self): tf = tempfile.NamedTemporaryFile(mode="r") sys.argv = ["analyze_series", tf.name] verbosity = random_bool() if verbosity: sys.argv.append("--verbose") assert_last_point_in_control = random_bool() if assert_last_point_in_control: sys.argv.append("--assert-last-point-in-control") cmd = AnalyzeSeriesCommand() cmd._parse_options() self.assertEquals(tf.name, cmd._input_file.name) self.assertEquals(verbosity, cmd._verbose) self.assertEquals(assert_last_point_in_control, cmd._assert_last_point_in_control) def test_parseOptions_called_when_executed(self): mock_parse_options = MagicMock() self._analyze_series_cmd._parse_options = mock_parse_options self._analyze_series_cmd.execute() mock_parse_options.assert_called_once_with() def test_data_series_is_analyzed(self): tf = tempfile.NamedTemporaryFile() control_chart = ControlChart(SERIES_UNDER_CONTROL) test_input = "" for val in SERIES_UNDER_CONTROL: test_input += " {} \n".format(str(val)) tf.write(test_input) tf.flush() sys.argv = ["analyze_series", tf.name, "--verbose"] (status, message) = self._analyze_series_cmd.execute() self.assertEquals(AnalyzeSeriesCommand.STATUS_SUCCESS, status) self.assertEquals("", message) expected_mean = control_chart.mean() actual_mean = self._analyze_series_cmd._control_chart.mean() self.assertAlmostEquals(expected_mean, actual_mean, places=3) def test_status_codes_are_reasonable(self): self.assertEquals(0, AnalyzeSeriesCommand.STATUS_SUCCESS) self.assertLess(0, AnalyzeSeriesCommand.STATUS_ASSERTION_FAILED) self.assertLess(0, AnalyzeSeriesCommand.STATUS_ERROR_IO) def test_exit_status_when_assert_last_point_in_control_not_set_and_out_of_control( self): self._analyze_series_cmd._read_data_from_file = MagicMock( return_value=SERIES_WITH_UCL_OUTLIERS) sys.argv = ["analyze_series"] (status, message) = self._analyze_series_cmd.execute() self.assertFalse( self._analyze_series_cmd._assert_last_point_in_control) self.assertEquals(AnalyzeSeriesCommand.STATUS_SUCCESS, status) self.assertEquals('', message) def test_exit_status_when_assert_last_point_in_control_is_set_and_non_last_point_out_of_control( self): self._analyze_series_cmd._read_data_from_file = MagicMock( return_value=SERIES_WITH_UCL_OUTLIERS) sys.argv = ["analyze_series", "--assert-last-point-in-control"] (status, message) = self._analyze_series_cmd.execute() self.assertTrue(self._analyze_series_cmd._assert_last_point_in_control) self.assertEquals(AnalyzeSeriesCommand.STATUS_SUCCESS, status) self.assertEquals('', message) def test_exit_status_when_assert_last_point_in_control_is_set_and_last_point_out_of_control( self): self._analyze_series_cmd._read_data_from_file = MagicMock( return_value=SERIES_WITH_LAST_POINT_OOC) sys.argv = ["analyze_series", "--assert-last-point-in-control"] (status, message) = self._analyze_series_cmd.execute() self.assertTrue(self._analyze_series_cmd._assert_last_point_in_control) self.assertEquals(AnalyzeSeriesCommand.STATUS_ASSERTION_FAILED, status) self.assertIsNotNone(message)
class AnalyzeSeriesCommandTest(unittest.TestCase): def setUp(self): self._analyze_series_cmd = AnalyzeSeriesCommand() def test_properties_when_no_arguments_provided(self): sys.argv = ["analyze_series"] cmd = AnalyzeSeriesCommand() self.assertIsNotNone(cmd._argument_parser) cmd._parse_options() self.assertEquals(sys.stdin, cmd._input_file) self.assertFalse(cmd._verbose) def test_properties_when_arguments_provided(self): tf = tempfile.NamedTemporaryFile(mode="r") sys.argv = ["analyze_series", tf.name] verbosity = random_bool() if verbosity: sys.argv.append("--verbose") assert_last_point_in_control = random_bool() if assert_last_point_in_control: sys.argv.append("--assert-last-point-in-control") cmd = AnalyzeSeriesCommand() cmd._parse_options() self.assertEquals(tf.name, cmd._input_file.name) self.assertEquals(verbosity, cmd._verbose) self.assertEquals(assert_last_point_in_control, cmd._assert_last_point_in_control) def test_parseOptions_called_when_executed(self): mock_parse_options = MagicMock() self._analyze_series_cmd._parse_options = mock_parse_options self._analyze_series_cmd.execute() mock_parse_options.assert_called_once_with() def test_data_series_is_analyzed(self): tf = tempfile.NamedTemporaryFile() control_chart = ControlChart(SERIES_UNDER_CONTROL) test_input = "" for val in SERIES_UNDER_CONTROL: test_input += " {} \n".format(str(val)) tf.write(test_input) tf.flush() sys.argv = ["analyze_series", tf.name, "--verbose"] (status, message) = self._analyze_series_cmd.execute() self.assertEquals(AnalyzeSeriesCommand.STATUS_SUCCESS, status) self.assertEquals("", message) expected_mean = control_chart.mean() actual_mean = self._analyze_series_cmd._control_chart.mean() self.assertAlmostEquals(expected_mean, actual_mean, places=3) def test_status_codes_are_reasonable(self): self.assertEquals(0, AnalyzeSeriesCommand.STATUS_SUCCESS) self.assertLess(0, AnalyzeSeriesCommand.STATUS_ASSERTION_FAILED) self.assertLess(0, AnalyzeSeriesCommand.STATUS_ERROR_IO) def test_exit_status_when_assert_last_point_in_control_not_set_and_out_of_control(self): self._analyze_series_cmd._read_data_from_file = MagicMock(return_value=SERIES_WITH_UCL_OUTLIERS) sys.argv = ["analyze_series"] (status, message) = self._analyze_series_cmd.execute() self.assertFalse(self._analyze_series_cmd._assert_last_point_in_control) self.assertEquals(AnalyzeSeriesCommand.STATUS_SUCCESS, status) self.assertEquals('', message) def test_exit_status_when_assert_last_point_in_control_is_set_and_non_last_point_out_of_control(self): self._analyze_series_cmd._read_data_from_file = MagicMock(return_value=SERIES_WITH_UCL_OUTLIERS) sys.argv = ["analyze_series", "--assert-last-point-in-control"] (status, message) = self._analyze_series_cmd.execute() self.assertTrue(self._analyze_series_cmd._assert_last_point_in_control) self.assertEquals(AnalyzeSeriesCommand.STATUS_SUCCESS, status) self.assertEquals('', message) def test_exit_status_when_assert_last_point_in_control_is_set_and_last_point_out_of_control(self): self._analyze_series_cmd._read_data_from_file = MagicMock(return_value=SERIES_WITH_LAST_POINT_OOC) sys.argv = ["analyze_series", "--assert-last-point-in-control"] (status, message) = self._analyze_series_cmd.execute() self.assertTrue(self._analyze_series_cmd._assert_last_point_in_control) self.assertEquals(AnalyzeSeriesCommand.STATUS_ASSERTION_FAILED, status) self.assertIsNotNone(message)