def test_error_if_missing_inline_data_name(self, invalid_line): contents = [ "_data_name_1 value_1", "_data_name_2 value_2", ] contents.insert(1, invalid_line) v = CIFValidator("\n".join(contents)) with pytest.raises(CIFParseError) as exception_info: v.validate() assert str(exception_info.value) == \ 'Missing inline data name on line 2: "{}"'.format(invalid_line)
def test_error_if_unmatched_data_items_in_loop(self, invalid_line): contents = [ "loop_", "_data_name_A", "_data_name_B ", "value_A1 value_B1" ] contents.insert(4, invalid_line) v = CIFValidator("\n".join(contents)) with pytest.raises(CIFParseError) as exception_info: v.validate() assert str(exception_info.value) == \ ('Unmatched data values to data names in loop ' 'on line 5: "{}"'.format(invalid_line))
def test_error_if_invalid_inline_data_value(self): contents = [ "_data_name_1 value_1", "_data_name_2 ", "_data_name_3 value_3" ] # test when final line of file v = CIFValidator("\n".join(contents[:2])) with pytest.raises(CIFParseError) as exception_info: v.validate() assert str(exception_info.value) == \ 'Invalid inline data value on line 2: "_data_name_2 "' # test when followed by another line v = CIFValidator("\n".join(contents)) with pytest.raises(CIFParseError) as exception_info: v.validate() assert str(exception_info.value) == \ 'Invalid inline data value on line 2: "_data_name_2 "'
def test_error_if_semicolon_data_item_not_closed(self): contents = [ "_data_name_1", ";", "# some comment inside the text field", "Unclosed text field", "_data_item_2" ] # test when field is terminated by end of file v = CIFValidator("\n".join(contents[:4])) with pytest.raises(CIFParseError) as exception_info: v.validate() assert str(exception_info.value) == \ 'Unclosed semicolon text field on line 4: "Unclosed text field"' # test when field is terminated by another data item v = CIFValidator("\n".join(contents)) with pytest.raises(CIFParseError) as exception_info: v.validate() assert str(exception_info.value) == \ 'Unclosed semicolon text field on line 4: "Unclosed text field"'
def test_valid_syntax_raises_no_exception(self, valid_contents): v = CIFValidator("\n".join(valid_contents)) assert v.validate() == True