[Scummvm-cvs-logs] SF.net SVN: scummvm:[51546] tools/branches/gsoc2010-decompiler/decompiler/ test/codegen.h

pidgeot at users.sourceforge.net pidgeot at users.sourceforge.net
Sat Jul 31 20:10:44 CEST 2010


Revision: 51546
          http://scummvm.svn.sourceforge.net/scummvm/?rev=51546&view=rev
Author:   pidgeot
Date:     2010-07-31 18:10:44 +0000 (Sat, 31 Jul 2010)

Log Message:
-----------
Add test for block coalescing

Modified Paths:
--------------
    tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h

Modified: tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h
===================================================================
--- tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h	2010-07-31 18:10:18 UTC (rev 51545)
+++ tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h	2010-07-31 18:10:44 UTC (rev 51546)
@@ -199,4 +199,37 @@
 		delete engine;
 	}
 
+	// This test requires script-48.dmp from Sam & Max: Hit The Road.
+	// afd7dc5d377894b3b9d0504927adf1b1 *script-48.dmp
+	void testCoalescing() {
+		Scumm::v6::Engine *engine = new Scumm::v6::Engine();
+		Disassembler *d = engine->getDisassembler();
+		d->open("decompiler/test/script-48.dmp");
+		std::vector<Instruction> insts = d->disassemble();
+		delete d;
+		ControlFlow *c = new ControlFlow(insts, engine);
+		c->createGroups();
+		Graph g = c->analyze();
+		onullstream ns;
+		CodeGenerator *cg = engine->getCodeGenerator(ns);
+		cg->generate(g);
+
+		VertexIterator v = boost::vertices(g).first;
+		GroupPtr gr = GET(*v);
+		// Find first node
+		while (gr->_prev != NULL)
+			gr = gr->_prev;
+		// Find vertex to test
+		while (gr->_start->_address != 0x1A3)
+			gr = gr->_next;
+
+		TS_ASSERT(gr->_code.size() == 3);
+		TS_ASSERT(removeSpaces(gr->_code[0]._line).compare("}else{") == 0);
+		TS_ASSERT(removeSpaces(gr->_code[2]._line).substr(0, 2).compare("if") == 0);
+
+		delete cg;
+		delete c;
+		delete engine;
+	}
+
 };


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list