예제 #1
0
    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()
예제 #2
0
 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
예제 #3
0
 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
예제 #4
0
 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
예제 #5
0
 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
예제 #6
0
 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
예제 #7
0
    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()
예제 #8
0
 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
예제 #9
0
    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()
예제 #10
0
 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.")
예제 #11
0
    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()
예제 #12
0
 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()
예제 #13
0
 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.