# HG changeset patch # User tkaito # Date 1220001363 -32400 # Node ID 86894c5e5fefe7ec7d1f46e5c9dac5f655066149 # Parent 31427856d0bd493b488037ea782cc75f962d736e *** empty log message *** diff -r 31427856d0bd -r 86894c5e5fef src/pathfinder/mergetest/test/RepCommandOptimizeTest.java --- a/src/pathfinder/mergetest/test/RepCommandOptimizeTest.java Fri Aug 29 13:37:38 2008 +0900 +++ b/src/pathfinder/mergetest/test/RepCommandOptimizeTest.java Fri Aug 29 18:16:03 2008 +0900 @@ -12,15 +12,14 @@ public class RepCommandOptimizeTest { //テストコマンド (command,string,lineno,id) static String[] test1 = { - Integer.toString(REP.REPCMD_INSERT),"TEST0","3","1", - Integer.toString(REP.REPCMD_INSERT),"TEST1","3","2", - Integer.toString(REP.REPCMD_DELETE),"TEST2","1","3", - Integer.toString(REP.REPCMD_DELETE),"TEST0","3","4", - Integer.toString(REP.REPCMD_INSERT),"TEST1","3","5", - Integer.toString(REP.REPCMD_INSERT),"TEST2","2","6", - Integer.toString(REP.REPCMD_INSERT),"TEST0","1","7", - Integer.toString(REP.REPCMD_DELETE),"TEST1","10","8" - + Integer.toString(REP.REPCMD_INSERT),"A","1","1", + Integer.toString(REP.REPCMD_INSERT),"C","2","2", + Integer.toString(REP.REPCMD_INSERT),"A","3","3", + Integer.toString(REP.REPCMD_INSERT),"B","3","4", + Integer.toString(REP.REPCMD_DELETE),"?","2","5", + Integer.toString(REP.REPCMD_DELETE),"?","3","6", + Integer.toString(REP.REPCMD_INSERT),"B","3","7", + Integer.toString(REP.REPCMD_DELETE),"?","1","8" }; @@ -58,14 +57,11 @@ } } - LinkedList optimize(LinkedList inp){ + LinkedList optimize(LinkedList input){ LinkedList output = new LinkedList(); - LinkedList input = new LinkedList(); - output = reverse(inp); - input = reverse(inp); - for(int i = 0; i < input.size(); i++){ - REPCommand r = input.get(i); - //REPCommand d = output.get(i); + output = reverse(input); + for(int i = 0; i < output.size(); i++){ + REPCommand r = output.get(i); switch(r.cmd){ case REP.REPCMD_INSERT: break; @@ -86,27 +82,47 @@ } private void optimizedAddDelete(LinkedList output, REPCommand r, int ln) { int lineno = r.lineno; - REPCommand d = output.get(ln); + int minln = output.size(); for(int i = ln; i < output.size(); i++){ REPCommand s = output.get(i); if(s.cmd==REP.REPCMD_INSERT) { if(s.lineno < lineno){ - lineno ++; - if(s.lineno == lineno){ - output.remove(d); - output.remove(s); - break; + lineno --; + //System.out.println(ln); + }else if(s.lineno == lineno){ + if(s.lineno < minln){ + minln = s.lineno; } + output.remove(r); + output.remove(s); + break; } + }else if(s.cmd==REP.REPCMD_DELETE){ if(s.lineno < lineno){ - lineno --; + lineno ++; + //System.out.println("eid = " + r.eid + "lineno = " + lineno); } }else{ System.out.println("There are no such commands."); } } + lineNumberCorrection(output,minln); } + + private void lineNumberCorrection(LinkedList opt, int ln) { + int i = 0; + for(REPCommand o : opt){ + if(ln < o.lineno) i++; + } + if(i == opt.size()){ + for(int j = 0; j < opt.size(); j++){ + REPCommand c = opt.get(j); + c.lineno -= 1; + } + } + } + void printCmdList(LinkedList before, LinkedList after){ System.out.println("---------- CmdList1 ----------"); for(REPCommand r: before){ @@ -151,7 +167,7 @@ RepCommandOptimizeTest rco = new RepCommandOptimizeTest(); rco.makeCommand(test1); - java.util.Collections.shuffle(cmdlist); + //java.util.Collections.shuffle(cmdlist); rco.printCmdList(cmdlist, rco.optimize(cmdlist)); rco.edit(cmdlist, rco.optimize(cmdlist)); rco.printText();