# HG changeset patch # User kent # Date 1220157213 -32400 # Node ID e4ed00c8242267047359c52198d6d3852c5c5e15 # Parent e173411a249962df2b30495844a02be2086b3a5a optimizer test diff -r e173411a2499 -r e4ed00c82422 test/RepCommandOptimizeTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/RepCommandOptimizeTest.java Sun Aug 31 13:33:33 2008 +0900 @@ -0,0 +1,126 @@ +package test; + +import java.util.LinkedList; +import java.util.List; + +import rep.REPCommand; +import rep.REP; +import rep.optimizers.NullOptimizer; +import rep.optimizers.DeleteInsertOptimizer; +import rep.optimizers.REPCommandOptimizer; + + + +public class RepCommandOptimizeTest { + //テストコマンド (command,string,lineno,eid) + static String[] test1 = { + Integer.toString(REP.REPCMD_DELETE),"d","1","1", + Integer.toString(REP.REPCMD_INSERT),"B","3","2", + Integer.toString(REP.REPCMD_INSERT),"B","1","3", + Integer.toString(REP.REPCMD_INSERT),"C","3","4", + Integer.toString(REP.REPCMD_DELETE),"d","13","5", + Integer.toString(REP.REPCMD_DELETE),"d","3","6", + Integer.toString(REP.REPCMD_DELETE),"d","1","7", + Integer.toString(REP.REPCMD_INSERT),"A","5","8", + Integer.toString(REP.REPCMD_DELETE),"d","1","9", + Integer.toString(REP.REPCMD_DELETE),"d","1","10", + Integer.toString(REP.REPCMD_INSERT),"B","10","11", + Integer.toString(REP.REPCMD_INSERT),"B","1","12", + Integer.toString(REP.REPCMD_INSERT),"C","3","13", + Integer.toString(REP.REPCMD_DELETE),"d","2","14", + Integer.toString(REP.REPCMD_DELETE),"d","3","15", + Integer.toString(REP.REPCMD_DELETE),"d","1","16", + Integer.toString(REP.REPCMD_INSERT),"A","3","17", + Integer.toString(REP.REPCMD_DELETE),"d","1","18" + }; + + static private String[] text1d = { + "aaa", "bbb", "ccc", "ddd", "eee", + "fff", "ggg", "hhh", "iii", "jjj", + "kkk", "lll", "mmm", "nnn", "ooo", + "ppp", "qqq", "rrr", "sss", "ttt", + "uuu", "vvv", "www", "xxx", "yyy", "zzz" + }; + + static private String[] text2d = { + "aaa", "bbb", "ccc", "ddd", "eee", + "fff", "ggg", "hhh", "iii", "jjj", + "kkk", "lll", "mmm", "nnn", "ooo", + "ppp", "qqq", "rrr", "sss", "ttt", + "uuu", "vvv", "www", "xxx", "yyy", "zzz" + }; + + public static List makeCommandList(String[] str){ + int seq = 0; + LinkedList cmdlist = new LinkedList(); + try{ + for( int i = 0;i < str.length; i+=4){ + int cmd = Integer.parseInt(str[i]); + int lineno = Integer.parseInt(str[i+2]); + + int sid = Integer.parseInt(str[i+3]); + int eid = sid; + cmdlist.add(new REPCommand(cmd, sid, eid, seq++, lineno, str[i+1].length(), str[i+1])); + } + }catch(Exception e){ + e.printStackTrace(); + } + return cmdlist; + } + + + public static void printCmdList(List list){ + for(REPCommand r: list){ + System.out.println(r.toString()); + } + System.out.println("Total = " + list.size()); + } + + public static void printText(Text text){ + text.printAllText(); + } + + public static void main(String[] s){ + REPCommandOptimizer rco; + + if (true) rco = new DeleteInsertOptimizer(); // + else rco = new NullOptimizer(); // なにも最適化しない + + List result = new LinkedList(); + List cmdlist; + Text text1 = new Text(text1d); + Text text2 = new Text(text2d); + + cmdlist = makeCommandList(test1); + java.util.Collections.shuffle(cmdlist); + + // print non optimized command list + System.out.println("---------- CmdList before optimized ----------"); + printCmdList(cmdlist); + + // this command list is applied to a text. and print the text. + text1.edit(cmdlist); + System.out.println("---text which applied above commands---"); + printText(text1); + + // optimize + result = rco.optimize(cmdlist); + + // print optimized command list. + System.out.println("---------- CmdList after optimized ----------"); + printCmdList(result); + + // this command list applied to other text, and print it. + text2.edit(result); + System.out.println("---text which applied above commands---"); + printText(text1); + + // check two texts. + if(text1.equals(text2)){ + System.out.println("two texts match."); + }else{ + System.out.println("two texts not match"); + } + + } +} diff -r e173411a2499 -r e4ed00c82422 test/Text.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/Text.java Sun Aug 31 13:33:33 2008 +0900 @@ -0,0 +1,64 @@ +package test; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +import rep.REPCommand; +import rep.REP; + +public class Text { + + List strList; + + public Text(String[] _strings){ + strList = new LinkedList(Arrays.asList(_strings)); + } + public Text(List _strings){ + strList = new LinkedList(_strings); + } + + public String insert(int i, String str){ + assert 0 cmdlist){ + for (REPCommand cmd: cmdlist){ + edit(cmd); + } + } + + public int size(){ + return strList.size(); + } + public void printAllText(){ + for( String str: strList){ + System.out.println(str); + } + } + public boolean equals(Text _target){ + return strList.equals(_target.strList); + } +}