예제 #1
0
    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_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)
예제 #3
0
    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_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)
예제 #7
0
 def setUp(self):
     self._analyze_series_cmd = AnalyzeSeriesCommand()
예제 #8
0
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)