[Scummvm-cvs-logs] SF.net SVN: scummvm:[51718] tools/branches/gsoc2010-decompiler/decompiler/ test
pidgeot at users.sourceforge.net
pidgeot at users.sourceforge.net
Wed Aug 4 03:12:42 CEST 2010
Revision: 51718
http://scummvm.svn.sourceforge.net/scummvm/?rev=51718&view=rev
Author: pidgeot
Date: 2010-08-04 01:12:41 +0000 (Wed, 04 Aug 2010)
Log Message:
-----------
Improve a codegen test, reset engine in cfg_test.h
Modified Paths:
--------------
tools/branches/gsoc2010-decompiler/decompiler/test/cfg_test.h
tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h
Modified: tools/branches/gsoc2010-decompiler/decompiler/test/cfg_test.h
===================================================================
--- tools/branches/gsoc2010-decompiler/decompiler/test/cfg_test.h 2010-08-04 00:33:54 UTC (rev 51717)
+++ tools/branches/gsoc2010-decompiler/decompiler/test/cfg_test.h 2010-08-04 01:12:41 UTC (rev 51718)
@@ -199,7 +199,9 @@
TS_ASSERT(gr->_type == kBreak);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/break-do-while.dmp");
insts = d->disassemble();
@@ -214,7 +216,9 @@
TS_ASSERT(gr->_type == kBreak);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/break-do-while2.dmp");
insts = d->disassemble();
@@ -250,7 +254,9 @@
TS_ASSERT(gr->_type == kNormal);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/continue-do-while.dmp");
insts = d->disassemble();
@@ -265,7 +271,9 @@
TS_ASSERT(gr->_type == kContinue);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/continue-do-while2.dmp");
insts = d->disassemble();
@@ -299,7 +307,9 @@
TS_ASSERT(gr->_type == kIfCond);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/break-do-while.dmp");
insts = d->disassemble();
@@ -314,7 +324,9 @@
TS_ASSERT(gr->_type == kIfCond);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/break-do-while2.dmp");
insts = d->disassemble();
@@ -329,7 +341,9 @@
TS_ASSERT(gr->_type == kIfCond);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/continue-do-while.dmp");
insts = d->disassemble();
@@ -344,7 +358,9 @@
TS_ASSERT(gr->_type == kIfCond);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/continue-do-while2.dmp");
insts = d->disassemble();
@@ -380,7 +396,9 @@
}
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/if-no-else.dmp");
insts = d->disassemble();
@@ -418,7 +436,9 @@
TS_ASSERT(gr->_type == kDoWhileCond);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/nested-do-while.dmp");
insts = d->disassemble();
@@ -435,7 +455,9 @@
TS_ASSERT(gr->_type == kDoWhileCond);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/nested-while.dmp");
insts = d->disassemble();
@@ -452,7 +474,9 @@
TS_ASSERT(gr->_type == kWhileCond);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/nested-while2.dmp");
insts = d->disassemble();
@@ -469,7 +493,9 @@
TS_ASSERT(gr->_type == kWhileCond);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/while-in-do-while.dmp");
insts = d->disassemble();
@@ -486,7 +512,9 @@
TS_ASSERT(gr->_type == kDoWhileCond);
}
delete c;
+ delete engine;
+ engine = new Scumm::v6::Engine();
d = engine->getDisassembler();
d->open("decompiler/test/while-in-do-while2.dmp");
insts = d->disassemble();
@@ -503,7 +531,6 @@
TS_ASSERT(gr->_type == kDoWhileCond);
}
delete c;
-
delete engine;
}
Modified: tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h
===================================================================
--- tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h 2010-08-04 00:33:54 UTC (rev 51717)
+++ tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h 2010-08-04 01:12:41 UTC (rev 51718)
@@ -199,12 +199,13 @@
delete engine;
}
- // This test requires script-48.dmp from Sam & Max: Hit The Road.
+ // This test requires script-30 and script-48.dmp from Sam & Max: Hit The Road.
+ // 6e48faca13e1f6df9341567608962744 *script-30.dmp
// 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");
+ d->open("decompiler/test/script-30.dmp");
std::vector<Instruction> insts = d->disassemble();
delete d;
ControlFlow *c = new ControlFlow(insts, engine);
@@ -220,16 +221,43 @@
while (gr->_prev != NULL)
gr = gr->_prev;
// Find vertex to test
- while (gr->_start->_address != 0x1A3)
+ while (gr->_start->_address != 0x91)
gr = gr->_next;
- TS_ASSERT(gr->_code.size() == 3);
+ TS_ASSERT(gr->_code.size() == 2);
TS_ASSERT(removeSpaces(gr->_code[0]._line).compare("}else{") == 0);
- TS_ASSERT(removeSpaces(gr->_code[2]._line).substr(0, 2).compare("if") == 0);
+ TS_ASSERT(removeSpaces(gr->_code[1]._line).substr(0, 2).compare("if") == 0);
delete cg;
delete c;
delete engine;
+
+ engine = new Scumm::v6::Engine();
+ d = engine->getDisassembler();
+ d->open("decompiler/test/script-48.dmp");
+ insts = d->disassemble();
+ delete d;
+ c = new ControlFlow(insts, engine);
+ c->createGroups();
+ g = c->analyze();
+ cg = engine->getCodeGenerator(ns);
+ cg->generate(g);
+
+ v = boost::vertices(g).first;
+ gr = GET(*v);
+ // Find first node
+ while (gr->_prev != NULL)
+ gr = gr->_prev;
+ // Find vertex to test
+ while (gr->_start->_address != 0x191)
+ gr = gr->_next;
+
+ TS_ASSERT(gr->_code.size() == 1);
+ TS_ASSERT(removeSpaces(gr->_code[0]._line).substr(0, 7).compare("}elseif") == 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