def test_read_line_state_read_param_tag(self):
        v = ApiaryValidator()
        v._parameters = ['test']
        state = _state_read_param_tag
        self._test_read_line(line=' ',
                             state=state,
                             validator=v,
                             expected_state=state)

        self._test_read_line(line=_TEST_PARAMETER_TAG,
                             state=state,
                             validator=v,
                             expected_error=ApiarySyntaxError())

        self._test_read_line(line=_TEST_PARAMETER_STRING,
                             state=state,
                             validator=v,
                             expected_state=state)

        self._test_read_line(line=_TEST_REQUEST_TAG,
                             state=state,
                             validator=v,
                             expected_state=_state_read_request_tag)

        self._test_read_line(line=_TEST_RESPONSE_TAG,
                             state=state,
                             validator=v,
                             expected_state=_state_read_response_tag)
    def test_read_line_state_read_param_tag(self):
        v = ApiaryValidator()
        v._parameters = ['test']
        state = _state_read_param_tag
        self._test_read_line(line=' ',
                             state=state,
                             validator=v,
                             expected_state=state)

        self._test_read_line(line=_TEST_PARAMETER_TAG,
                             state=state,
                             validator=v,
                             expected_error=ApiarySyntaxError())

        self._test_read_line(line=_TEST_PARAMETER_STRING,
                             state=state,
                             validator=v,
                             expected_state=state)

        self._test_read_line(line=_TEST_REQUEST_TAG,
                             state=state,
                             validator=v,
                             expected_state=_state_read_request_tag)

        self._test_read_line(line=_TEST_RESPONSE_TAG,
                             state=state,
                             validator=v,
                             expected_state=_state_read_response_tag)
    def test_check_if_parameter_is_defined(self):
        v = ApiaryValidator()
        v.state = _state_read_param_tag
        v._parameters = ['p1', 'p2', 'p3']

        valid, error = v._read_line('+ p1   (string) ... test parameter 1')
        self.assertTrue(valid)

        valid, error = v._read_line('       + p2 (string) ... test parameter 2')
        self.assertTrue(valid)

        valid, error = v._read_line('+ p4 (string) ... test parameter 3')
        self.assertFalse(valid)
        self.assertEqual(error.type, ApiaryParameterNotDefinedError(parameter='p4').type)
    def test_check_if_parameter_is_defined(self):
        v = ApiaryValidator()
        v.state = _state_read_param_tag
        v._parameters = ['p1', 'p2', 'p3']

        valid, error = v._read_line('+ p1   (string) ... test parameter 1')
        self.assertTrue(valid)

        valid, error = v._read_line(
            '       + p2 (string) ... test parameter 2')
        self.assertTrue(valid)

        valid, error = v._read_line('+ p4 (string) ... test parameter 3')
        self.assertFalse(valid)
        self.assertEqual(error.type,
                         ApiaryParameterNotDefinedError(parameter='p4').type)