annotate test/RepCommandOptimizeTest.java @ 492:d2afd4efdd2d

remove unMergedCmds, use sentList instead.
author one
date Sat, 23 Oct 2010 16:15:14 +0900
parents 0b6b838befeb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
1 package test;
e4ed00c82422 optimizer test
kent
parents:
diff changeset
2
421
f8916a96a373 (no commit message)
one
parents: 387
diff changeset
3 // import static org.junit.Assert.*;
387
6f356d160e58 IPv6 any address
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 331
diff changeset
4
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
5 import java.util.LinkedList;
e4ed00c82422 optimizer test
kent
parents:
diff changeset
6 import java.util.List;
e4ed00c82422 optimizer test
kent
parents:
diff changeset
7
421
f8916a96a373 (no commit message)
one
parents: 387
diff changeset
8 // import org.junit.Test;
387
6f356d160e58 IPv6 any address
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 331
diff changeset
9
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
10 import rep.REPCommand;
e4ed00c82422 optimizer test
kent
parents:
diff changeset
11 import rep.REP;
423
0b6b838befeb minor test fix
one
parents: 421
diff changeset
12 // import rep.optimizers.NullOptimizer;
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
13 import rep.optimizers.DeleteInsertOptimizer;
e4ed00c82422 optimizer test
kent
parents:
diff changeset
14 import rep.optimizers.REPCommandOptimizer;
e4ed00c82422 optimizer test
kent
parents:
diff changeset
15
e4ed00c82422 optimizer test
kent
parents:
diff changeset
16
e4ed00c82422 optimizer test
kent
parents:
diff changeset
17
e4ed00c82422 optimizer test
kent
parents:
diff changeset
18 public class RepCommandOptimizeTest {
e4ed00c82422 optimizer test
kent
parents:
diff changeset
19 //テストコマンド (command,string,lineno,eid)
e4ed00c82422 optimizer test
kent
parents:
diff changeset
20 static String[] test1 = {
271
kono
parents: 226
diff changeset
21 Integer.toString(REP.REPCMD_DELETE.id),"d","1","1",
kono
parents: 226
diff changeset
22 Integer.toString(REP.REPCMD_INSERT.id),"B","3","2",
kono
parents: 226
diff changeset
23 Integer.toString(REP.REPCMD_INSERT.id),"B","1","3",
kono
parents: 226
diff changeset
24 Integer.toString(REP.REPCMD_INSERT.id),"C","3","4",
kono
parents: 226
diff changeset
25 Integer.toString(REP.REPCMD_DELETE.id),"d","13","5",
kono
parents: 226
diff changeset
26 Integer.toString(REP.REPCMD_DELETE.id),"d","3","6",
kono
parents: 226
diff changeset
27 Integer.toString(REP.REPCMD_DELETE.id),"d","1","7",
kono
parents: 226
diff changeset
28 Integer.toString(REP.REPCMD_INSERT.id),"A","5","8",
kono
parents: 226
diff changeset
29 Integer.toString(REP.REPCMD_DELETE.id),"d","1","9",
331
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
30 Integer.toString(REP.REPCMD_DELETE.id),"d","0","10",
271
kono
parents: 226
diff changeset
31 Integer.toString(REP.REPCMD_INSERT.id),"B","10","11",
kono
parents: 226
diff changeset
32 Integer.toString(REP.REPCMD_INSERT.id),"C","3","13",
kono
parents: 226
diff changeset
33 Integer.toString(REP.REPCMD_DELETE.id),"d","2","14",
331
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
34 Integer.toString(REP.REPCMD_DELETE.id),"d","0","14",
271
kono
parents: 226
diff changeset
35 Integer.toString(REP.REPCMD_DELETE.id),"d","3","15",
kono
parents: 226
diff changeset
36 Integer.toString(REP.REPCMD_DELETE.id),"d","1","16",
331
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
37 Integer.toString(REP.REPCMD_INSERT.id),"A","0","17",
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
38 Integer.toString(REP.REPCMD_INSERT.id),"K","0","17",
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
39 Integer.toString(REP.REPCMD_DELETE.id),"d","1","18",
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
40 Integer.toString(REP.REPCMD_NOP.id),"","0","19",
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
41 Integer.toString(REP.REPCMD_NOP.id),"","0","20",
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
42 };
e4ed00c82422 optimizer test
kent
parents:
diff changeset
43
e4ed00c82422 optimizer test
kent
parents:
diff changeset
44 static private String[] text1d = {
e4ed00c82422 optimizer test
kent
parents:
diff changeset
45 "aaa", "bbb", "ccc", "ddd", "eee",
e4ed00c82422 optimizer test
kent
parents:
diff changeset
46 "fff", "ggg", "hhh", "iii", "jjj",
e4ed00c82422 optimizer test
kent
parents:
diff changeset
47 "kkk", "lll", "mmm", "nnn", "ooo",
e4ed00c82422 optimizer test
kent
parents:
diff changeset
48 "ppp", "qqq", "rrr", "sss", "ttt",
e4ed00c82422 optimizer test
kent
parents:
diff changeset
49 "uuu", "vvv", "www", "xxx", "yyy", "zzz"
e4ed00c82422 optimizer test
kent
parents:
diff changeset
50 };
e4ed00c82422 optimizer test
kent
parents:
diff changeset
51
e4ed00c82422 optimizer test
kent
parents:
diff changeset
52 static private String[] text2d = {
e4ed00c82422 optimizer test
kent
parents:
diff changeset
53 "aaa", "bbb", "ccc", "ddd", "eee",
e4ed00c82422 optimizer test
kent
parents:
diff changeset
54 "fff", "ggg", "hhh", "iii", "jjj",
e4ed00c82422 optimizer test
kent
parents:
diff changeset
55 "kkk", "lll", "mmm", "nnn", "ooo",
e4ed00c82422 optimizer test
kent
parents:
diff changeset
56 "ppp", "qqq", "rrr", "sss", "ttt",
e4ed00c82422 optimizer test
kent
parents:
diff changeset
57 "uuu", "vvv", "www", "xxx", "yyy", "zzz"
331
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
58 };
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
59
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
60 private static int err=0;
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
61
e4ed00c82422 optimizer test
kent
parents:
diff changeset
62 public static List<REPCommand> makeCommandList(String[] str){
e4ed00c82422 optimizer test
kent
parents:
diff changeset
63 int seq = 0;
e4ed00c82422 optimizer test
kent
parents:
diff changeset
64 LinkedList<REPCommand> cmdlist = new LinkedList<REPCommand>();
e4ed00c82422 optimizer test
kent
parents:
diff changeset
65 try{
e4ed00c82422 optimizer test
kent
parents:
diff changeset
66 for( int i = 0;i < str.length; i+=4){
e4ed00c82422 optimizer test
kent
parents:
diff changeset
67 int cmd = Integer.parseInt(str[i]);
e4ed00c82422 optimizer test
kent
parents:
diff changeset
68 int lineno = Integer.parseInt(str[i+2]);
e4ed00c82422 optimizer test
kent
parents:
diff changeset
69
e4ed00c82422 optimizer test
kent
parents:
diff changeset
70 int sid = Integer.parseInt(str[i+3]);
e4ed00c82422 optimizer test
kent
parents:
diff changeset
71 int eid = sid;
e4ed00c82422 optimizer test
kent
parents:
diff changeset
72 cmdlist.add(new REPCommand(cmd, sid, eid, seq++, lineno, str[i+1].length(), str[i+1]));
e4ed00c82422 optimizer test
kent
parents:
diff changeset
73 }
e4ed00c82422 optimizer test
kent
parents:
diff changeset
74 }catch(Exception e){
e4ed00c82422 optimizer test
kent
parents:
diff changeset
75 e.printStackTrace();
e4ed00c82422 optimizer test
kent
parents:
diff changeset
76 }
e4ed00c82422 optimizer test
kent
parents:
diff changeset
77 return cmdlist;
e4ed00c82422 optimizer test
kent
parents:
diff changeset
78 }
e4ed00c82422 optimizer test
kent
parents:
diff changeset
79
e4ed00c82422 optimizer test
kent
parents:
diff changeset
80
e4ed00c82422 optimizer test
kent
parents:
diff changeset
81 public static void printCmdList(List<REPCommand> list){
e4ed00c82422 optimizer test
kent
parents:
diff changeset
82 for(REPCommand r: list){
e4ed00c82422 optimizer test
kent
parents:
diff changeset
83 System.out.println(r.toString());
e4ed00c82422 optimizer test
kent
parents:
diff changeset
84 }
e4ed00c82422 optimizer test
kent
parents:
diff changeset
85 System.out.println("Total = " + list.size());
e4ed00c82422 optimizer test
kent
parents:
diff changeset
86 }
e4ed00c82422 optimizer test
kent
parents:
diff changeset
87
e4ed00c82422 optimizer test
kent
parents:
diff changeset
88 public static void printText(Text text){
e4ed00c82422 optimizer test
kent
parents:
diff changeset
89 text.printAllText();
e4ed00c82422 optimizer test
kent
parents:
diff changeset
90 }
e4ed00c82422 optimizer test
kent
parents:
diff changeset
91
387
6f356d160e58 IPv6 any address
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 331
diff changeset
92
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
93 public static void main(String[] s){
387
6f356d160e58 IPv6 any address
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 331
diff changeset
94 RepCommandOptimizeTest t = new RepCommandOptimizeTest();
6f356d160e58 IPv6 any address
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 331
diff changeset
95 t.main0();
6f356d160e58 IPv6 any address
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 331
diff changeset
96 }
6f356d160e58 IPv6 any address
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 331
diff changeset
97
421
f8916a96a373 (no commit message)
one
parents: 387
diff changeset
98 // @Test
387
6f356d160e58 IPv6 any address
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 331
diff changeset
99 public void main0(){
6f356d160e58 IPv6 any address
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 331
diff changeset
100
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
101 REPCommandOptimizer rco;
e4ed00c82422 optimizer test
kent
parents:
diff changeset
102
e4ed00c82422 optimizer test
kent
parents:
diff changeset
103 if (true) rco = new DeleteInsertOptimizer(); //
423
0b6b838befeb minor test fix
one
parents: 421
diff changeset
104 //else rco = new NullOptimizer(); // なにも最適化しない
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
105
e4ed00c82422 optimizer test
kent
parents:
diff changeset
106 List<REPCommand> cmdlist;
e4ed00c82422 optimizer test
kent
parents:
diff changeset
107
e4ed00c82422 optimizer test
kent
parents:
diff changeset
108 cmdlist = makeCommandList(test1);
331
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
109 int total = 0;
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
110 while(cmdlist.size()>0) {
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
111 Text text1 = new Text(text1d);
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
112 Text text2 = new Text(text2d);
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
113 java.util.Collections.shuffle(cmdlist);
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
114 test(rco, cmdlist, text1, text2);
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
115 total++;
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
116 cmdlist.remove(0);
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
117 }
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
118 System.out.println("Errors "+err+"/"+total+".");
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
119
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
120 }
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
121
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
122 private static void test(REPCommandOptimizer rco, List<REPCommand> cmdlist,
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
123 Text text1, Text text2) {
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
124 List<REPCommand> result; // optimize
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
125 // this command list is applied to a text. and print the text.
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
126 text1.edit(cmdlist);
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
127 result = rco.optimize(cmdlist);
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
128 // this command list applied to other text, and print it.
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
129 text2.edit(result);
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
130 // check two texts.
421
f8916a96a373 (no commit message)
one
parents: 387
diff changeset
131 // assertEquals(text1.equals(text2),true);
331
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
132 if(!text1.equals(text2)){
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
133 System.out.println("two texts not match");
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
134 print(cmdlist, result, text1, text2);
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
135 err++;
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
136 }
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
137 }
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
138
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
139 private static void print(List<REPCommand> cmdlist,
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
140 List<REPCommand> result,
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
141 Text text1, Text text2) {
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
142
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
143 // print non optimized command list
e4ed00c82422 optimizer test
kent
parents:
diff changeset
144 System.out.println("---------- CmdList before optimized ----------");
e4ed00c82422 optimizer test
kent
parents:
diff changeset
145 printCmdList(cmdlist);
e4ed00c82422 optimizer test
kent
parents:
diff changeset
146
e4ed00c82422 optimizer test
kent
parents:
diff changeset
147 // print optimized command list.
e4ed00c82422 optimizer test
kent
parents:
diff changeset
148 System.out.println("---------- CmdList after optimized ----------");
e4ed00c82422 optimizer test
kent
parents:
diff changeset
149 printCmdList(result);
e4ed00c82422 optimizer test
kent
parents:
diff changeset
150
331
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
151 System.out.println("---------- Text difference ------------------");
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
152 int max = max(text1.size(),text2.size());
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
153 for(int i=0;i<max;i++) {
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
154 System.out.println(i+":\t"+text1.get(i)+"\t"+text2.get(i));
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
155 }
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
156 }
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
157
331
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
158
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
159
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
160 private static int max(int size, int size2) {
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
161 return size>size2?size:size2;
f9fa876d3539 Optimizer test
kono
parents: 271
diff changeset
162 }
226
e4ed00c82422 optimizer test
kent
parents:
diff changeset
163
e4ed00c82422 optimizer test
kent
parents:
diff changeset
164 }
421
f8916a96a373 (no commit message)
one
parents: 387
diff changeset
165