# HG changeset patch # User tkaito # Date 1219929508 -32400 # Node ID 5c458f1a76797463b4acb4669813aee4c5345818 # Parent 34f770c7fd861c498451ca3b3d3b85de3406d548 *** empty log message *** diff -r 34f770c7fd86 -r 5c458f1a7679 src/pathfinder/mergetest/test/RepCommandOptimizeTest.java --- a/src/pathfinder/mergetest/test/RepCommandOptimizeTest.java Thu Aug 28 22:13:08 2008 +0900 +++ b/src/pathfinder/mergetest/test/RepCommandOptimizeTest.java Thu Aug 28 22:18:28 2008 +0900 @@ -1,6 +1,7 @@ package pathfinder.mergetest.test; import java.util.LinkedList; +import java.util.List; import pathfinder.mergetest.Text; @@ -15,16 +16,18 @@ static String[] test1 = { Integer.toString(REP.REPCMD_INSERT),"TEST0","3","1", Integer.toString(REP.REPCMD_INSERT),"TEST1","3","2", - Integer.toString(REP.REPCMD_INSERT),"TEST2","3","3" + Integer.toString(REP.REPCMD_DELETE),"TEST2","3","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","3","8" + }; - //String[] test2 = new String[test1.length]; + static LinkedList cmdlist = new LinkedList(); - static LinkedList cmdlist = new LinkedList(); - Text text = new Text(); - - //REPコマンドの生成 void makeCommand(String[] str){ int seq = 0; try{ @@ -40,30 +43,26 @@ e.printStackTrace(); } } - //生成したコマンドのリストを表示 - void printCmdList(){ - System.out.println("---------- CmdList ----------"); - for(REPCommand r: cmdlist){ - System.out.println(r.toString()); - } - } - - void edit(){ - for(REPCommand r : cmdlist){ - text.edit(r); + + LinkedList optimize(LinkedList inp){ + LinkedList output = new LinkedList(); + LinkedList input = new LinkedList(); + /*for(int i = 0; i < inp.size(); i++){ + output.add(inp.get(i)); + }*/ + output = reverse(inp); + input = reverse(inp); + for(int i = 0; i < input.size(); i++){ + REPCommand r = input.get(i); + switch(r.cmd){ + case REP.REPCMD_INSERT: + break; + case REP.REPCMD_DELETE: + optimizedAddDelete(output,r,i); + break; + } } - } - - void printText(){ - System.out.println("------------ Text -----------"); - text.printAllText(); - } - LinkedList optimize(LinkedList input){ - LinkedList output = new LinkedList(); - for(REPCommand r : input){ - optimizedAdd(output,r); - } - + //return input; return reverse(output); } @@ -74,53 +73,77 @@ } return reverse; } + private void optimizedAddDelete(LinkedList output, REPCommand r, int ln) { + int lineno = r.lineno; + for(int i = ln; i < output.size(); i++){ + REPCommand s = output.get(i); + switch(s.cmd){ + case REP.REPCMD_INSERT: + if(s.lineno < lineno){ + s.lineno ++; + + if(s.lineno == lineno){ + output.remove(s); + i = output.size(); + } + } + break; + case REP.REPCMD_DELETE: + /*if(s.lineno == lineno){ + input.remove(s); + }*/ + break; + } + } + } + void printCmdList(LinkedList before, LinkedList after){ + System.out.println("---------- CmdList1 ----------"); + for(REPCommand r: before){ + System.out.println(r.toString()); + } + System.out.println("---------- CmdList2 ----------"); + for(REPCommand s: after){ + System.out.println(s.toString()); + } + } - private void optimizedAdd(LinkedList output, REPCommand r) { - switch(r.cmd){ - case REP.REPCMD_INSERT: - optimizedAddInsert(output,r);break; - case REP.REPCMD_DELETE: - optimizedAddDelete(output,r);break; + Text text1 = new Text(); + Text text2 = new Text(); + + void edit(LinkedList before, LinkedList after){ + for(REPCommand r : before){ + text1.edit(r); + } + for(REPCommand s : after){ + text2.edit(s); + } + } + + void printText(){ + System.out.println("------------ Text1 -----------"); + text1.printAllText(); + System.out.println("------------ Text2 -----------"); + text2.printAllText(); + } + + void checkText(){ + System.out.println("----------- Check -----------"); + if(!text1.equals(text2)){ + System.out.println("It isn't equal."); + }else{ + System.out.println("Equal."); } } - private void optimizedAddDelete(LinkedList output, REPCommand r) { - for(REPCommand s : output){ - switch(r.cmd){ - case REP.REPCMD_INSERT: - break; - case REP.REPCMD_DELETE: - break; - } - } - - } - private void optimizedAddInsert(LinkedList output, REPCommand r) { - int lineno = r.lineno; - for(int i = 0; i < output.size(); i++){ - REPCommand s = output.get(i); - switch(s.cmd){ - case REP.REPCMD_INSERT: - break; - case REP.REPCMD_DELETE: - if(s.lineno == lineno){ - output.remove(s); - } - break; - } - } - } + public static void main(String[] s){ RepCommandOptimizeTest rco = new RepCommandOptimizeTest(); rco.makeCommand(test1); java.util.Collections.shuffle(cmdlist); - rco.printCmdList(); - rco.edit(); + rco.printCmdList(cmdlist, rco.optimize(cmdlist)); + rco.edit(cmdlist, rco.optimize(cmdlist)); rco.printText(); - //java.util.Collections.shuffle(cmdlist); - for ( int i = 0; i < 10; ++i ) { - System.out.println(cmdlist.get(i)); - } + rco.checkText(); } }