Mercurial > hg > RemoteEditor > Eclipse
changeset 170:86894c5e5fef
*** empty log message ***
author | tkaito |
---|---|
date | Fri, 29 Aug 2008 18:16:03 +0900 |
parents | 31427856d0bd |
children | c61a52e12161 |
files | src/pathfinder/mergetest/test/RepCommandOptimizeTest.java |
diffstat | 1 files changed, 40 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- 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<REPCommand> optimize(LinkedList<REPCommand> inp){ + LinkedList<REPCommand> optimize(LinkedList<REPCommand> input){ LinkedList<REPCommand> output = new LinkedList<REPCommand>(); - LinkedList<REPCommand> input = new LinkedList<REPCommand>(); - 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<REPCommand> 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<REPCommand> 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<REPCommand> before, LinkedList<REPCommand> 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();