def test_unknown_data_type_extraction(self):
        """An error message is raised when an unknown attribute data type is extracted from line of code"""
        # Arrange
        e = Extractor().datatype_ext

        line = '@'

        # Act

        # Assert
        with self.assertRaises(ValueError) as context:
            e._extract_attribute_datatypes(line)
        self.assertTrue("No data type detected for '@'" in str(context.exception))
 def test_data_type_dictionary_extraction(self):
     """An attribute data type can be extracted from line of code"""
     e = Extractor().datatype_ext
     # Arrange
     expected = 'dict'
     line = "{"
     # Act
     actual = e._extract_attribute_datatypes(line)
     # Assert
     self.assertEqual(expected, actual)
    def test_data_type_int_extraction(self):
        e = Extractor().datatype_ext
        expected = 'int'
        line = '5'

        # Act
        actual = e._extract_attribute_datatypes(line)

        # Assert
        self.assertEqual(expected, actual)
    def test_data_type_str_extraction(self):
        e = Extractor().datatype_ext
        expected = 'str'
        line = "'test'"

        # Act
        actual = e._extract_attribute_datatypes(line)

        # Assert
        self.assertEqual(expected, actual)
    def test_data_type_tuple_extraction(self):
        e = Extractor().datatype_ext
        expected = 'tuple'
        line = '("a", "b")'

        # Act
        actual = e._extract_attribute_datatypes(line)

        # Assert
        self.assertEqual(expected, actual)