def test_unit_write_attribute(self): content_str = "my content str" archive = srcml.archive() outputStringBuffer = StringIO.StringIO() archive.open_write(stream=outputStringBuffer, close_stream=False) unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") self.assertIsNotNone(unit.srcml_revision(), "Didn't get a revision number.") unit.language = srcml.LANGUAGE_CXX unit.write_start_unit() unit.write_start_element("", "aardvark") unit.write_attribute("", "waffles", "waffleData") unit.write_string(content_str) unit.write_end_element() unit.write_end_unit() archive.write_unit(unit) archive.close() self.assertTrue(len(outputStringBuffer.getvalue()) > 0, "Didn't get any output.") rarchive = srcml.archive() rarchive.open_read(xml=outputStringBuffer.getvalue()) runit = rarchive.read_unit() code = runit.xml() # print runit.xml() self.assertTrue(code.find("waffles") != -1, "Incorrect unit content. Code:\"{0}\"".format(code)) rarchive.close()
def test_unit_revision(self): archive = srcml.archive() unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") self.assertIsNotNone(unit.srcml_revision(), "Didn't get a revision number.") unit = None archive = None
def test_create_unit(self): archive = srcml.archive() unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") self.assertTrue(isinstance(unit, srcml.unit), "Incorrect result type.") unit = None archive = None
def test_unit_hash(self): archive = srcml.archive() unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") expected = "Something" self.assertIsNone(unit.hash, "hash set when it shouldn't be.") unit.hash = expected self.assertEqual(unit.hash, expected, "hash has incorrect value..") unit = None archive = None
def test_unit_timestamp(self): archive = srcml.archive() unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") expected = "Something" self.assertIsNone(unit.timestamp, "timestamp set when it shouldn't be.") unit.timestamp = expected self.assertEqual(unit.timestamp, expected, "timestamp has incorrect value..") unit = None archive = None
def test_unit_filename(self): archive = srcml.archive() unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") expected = "Something" self.assertIsNone(unit.filename, "filename set when it shouldn't be.") unit.filename = expected self.assertEqual(unit.filename, expected, "filename has incorrect value..") unit = None archive = None
def test_unit_unparse_str(self): archive = srcml.archive() outputStringBuffer = StringIO.StringIO() archive.open_write(stream=outputStringBuffer, close_stream=False) unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") self.assertIsNotNone(unit.srcml_revision(), "Didn't get a revision number.") unit.language = srcml.LANGUAGE_CXX unit.parse(TestUnit.test_code) archive.write_unit(unit) archive.close() self.assertTrue(len(outputStringBuffer.getvalue()) > 0, "Didn't get any output.") rarchive = srcml.archive() rarchive.open_read(xml=outputStringBuffer.getvalue()) runit = rarchive.read_unit() code = runit.unparse() self.assertEqual(code, TestUnit.test_code) rarchive.close()
def test_unit_language(self): archive = srcml.archive() unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") expected = srcml.LANGUAGE_CXX self.assertIsNone(unit.language, "language set when it shouldn't be.") unit.language = expected self.assertEqual(unit.language, expected, "language has incorrect value..") unit = None archive = None
def test_unit_unparse_memory(self): archive = srcml.archive() outputStringBuffer = StringIO.StringIO() archive.open_write(stream=outputStringBuffer, close_stream=False) unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") self.assertIsNotNone(unit.srcml_revision(), "Didn't get a revision number.") unit.language = srcml.LANGUAGE_CXX unit.parse(TestUnit.test_code) archive.write_unit(unit) archive.close() self.assertTrue(len(outputStringBuffer.getvalue()) > 0, "Didn't get any output.") mem_buff = srcml.memory_buffer() rarchive = srcml.archive() rarchive.open_read(xml=outputStringBuffer.getvalue()) runit = rarchive.read_unit() runit.unparse(buff=mem_buff) code = str(mem_buff) self.assertEqual(code, TestUnit.test_code, "Mismatched code and test code. Code:\"{0}\" Expected: \"{1}\"".format(code, TestUnit.test_code)) rarchive.close()
def test_unit_parse_strlist(self): archive = srcml.archive() outputStringBuffer = StringIO.StringIO() archive.open_write(stream=outputStringBuffer, close_stream=False) unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") self.assertIsNotNone(unit.srcml_revision(), "Didn't get a revision number.") unit.language = srcml.LANGUAGE_CXX unit.parse(TestUnit.test_code.split("\n")) archive.write_unit(unit) archive.close() self.assertTrue(len(outputStringBuffer.getvalue()) > 0, "Didn't get any output.")
def test_unit_write_unit(self): archive = srcml.archive() outputStringBuffer = StringIO.StringIO() archive.open_write(stream=outputStringBuffer, close_stream=False) unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") self.assertIsNotNone(unit.srcml_revision(), "Didn't get a revision number.") unit.language = srcml.LANGUAGE_CXX unit.write_start_unit() # unit.write_string("blah blah blah") unit.write_end_unit() archive.write_unit(unit) archive.close() self.assertTrue(len(outputStringBuffer.getvalue()) > 0, "Didn't get any output.") rarchive = srcml.archive() rarchive.open_read(xml=outputStringBuffer.getvalue()) runit = rarchive.read_unit() code = runit.xml() self.assertTrue(len(code) > 0, "Incorrect unit content. Code:\"{0}\"".format(code)) rarchive.close()
def test_unit_parse_memory(self): archive = srcml.archive() outputStringBuffer = StringIO.StringIO() archive.open_write(stream=outputStringBuffer, close_stream=False) unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") self.assertIsNotNone(unit.srcml_revision(), "Didn't get a revision number.") mem_buff = srcml.memory_buffer() mem_buff._buff = ctypes.create_string_buffer(TestUnit.test_code) mem_buff._size = len(TestUnit.test_code) unit.language=srcml.LANGUAGE_CXX unit.parse(buff=mem_buff) archive.write_unit(unit) archive.close() mem_buff._buff = ctypes.c_char_p()
def test_unit_parse_filename(self): archive = srcml.archive() output_filename = "test_unit_parse_filename.cpp" strm = open(output_filename, "w") strm.write(TestUnit.test_code) strm.close() outputStringBuffer = StringIO.StringIO() archive.open_write(stream=outputStringBuffer, close_stream=False) unit = archive.create_unit() self.assertIsNotNone(unit, "Didn't get a unit.") self.assertIsNotNone(unit.srcml_revision(), "Didn't get a revision number.") unit.parse(filename=output_filename) archive.write_unit(unit) archive.close() self.assertTrue(len(outputStringBuffer.getvalue()) > 0, "Didn't get any output.") os.remove(output_filename)
# Example program using the python API to create an archive within a python StringIO # stream parse data.cpp into srcml and store it in the archive. # # Once complete, print the contents of the entire archive. import srcml, os, StringIO if __name__ == "__main__": # Create an archive to read from archive = srcml.archive() archive_data_stream = StringIO.StringIO() # Open an archive for writing using a custom stream # the parameter close_stream=False means that the # archive_data_stream will still be open for writing after # the archive is closed. archive.open_write(stream=archive_data_stream, close_stream=False) # Create a unit to parse data.cpp unit = archive.create_unit() # Parse the data using srcml. unit.parse(filename="data.cpp") # Write the unit into the archive.