KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tctest > stringbuffer > StringBufferTestApp


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright
3  * notice. All rights reserved.
4  */

5 package com.tctest.stringbuffer;
6
7 import org.apache.commons.lang.ClassUtils;
8
9 import com.tc.object.config.ConfigVisitor;
10 import com.tc.object.config.DSOClientConfigHelper;
11 import com.tc.simulator.app.ApplicationConfig;
12 import com.tc.simulator.listener.ListenerProvider;
13 import com.tc.util.Assert;
14 import com.tctest.GenericTestApp;
15
16 import java.security.SecureRandom JavaDoc;
17 import java.util.ArrayList JavaDoc;
18 import java.util.Arrays JavaDoc;
19 import java.util.Iterator JavaDoc;
20 import java.util.List JavaDoc;
21 import java.util.Random JavaDoc;
22
23 public class StringBufferTestApp extends GenericTestApp {
24
25   public StringBufferTestApp(String JavaDoc appId, ApplicationConfig cfg, ListenerProvider listenerProvider) {
26     super(appId, cfg, listenerProvider, StringBuddy.class);
27   }
28
29   void testOp001(StringBuddy buffer, boolean validate) {
30     synchronized (buffer) {
31       if (validate) {
32         Assert.assertEquals("true", buffer.toString());
33       } else {
34         buffer.append(true);
35       }
36     }
37   }
38
39   void testOp002(StringBuddy buffer, boolean validate) {
40     synchronized (buffer) {
41       if (validate) {
42         Assert.assertEquals("x", buffer.toString());
43       } else {
44         buffer.append('x');
45       }
46     }
47   }
48
49   void testOp003(StringBuddy buffer, boolean validate) {
50     synchronized (buffer) {
51       if (validate) {
52         Assert.assertEquals("tim", buffer.toString());
53       } else {
54         buffer.append(new char[] { 't', 'i', 'm' });
55       }
56     }
57   }
58
59   void testOp004(StringBuddy buffer, boolean validate) {
60     synchronized (buffer) {
61       if (validate) {
62         Assert.assertEquals("666", buffer.toString());
63       } else {
64         buffer.append(new char[] { 'a', '6', '6', '6' }, 1, 3);
65       }
66     }
67   }
68
69   void testOp005(StringBuddy buffer, boolean validate) {
70     synchronized (buffer) {
71       if (validate) {
72         Assert.assertEquals(String.valueOf(Math.PI), buffer.toString());
73       } else {
74         buffer.append(Math.PI);
75       }
76     }
77   }
78
79   void testOp006(StringBuddy buffer, boolean validate) {
80     synchronized (buffer) {
81       if (validate) {
82         Assert.assertEquals(String.valueOf((float) 2.0), buffer.toString());
83       } else {
84         buffer.append((float) 2.0);
85       }
86     }
87   }
88
89   void testOp007(StringBuddy buffer, boolean validate) {
90     synchronized (buffer) {
91       if (validate) {
92         Assert.assertEquals(String.valueOf(0x7fffffff), buffer.toString());
93       } else {
94         buffer.append(Integer.MAX_VALUE);
95       }
96     }
97   }
98
99   void testOp008(StringBuddy buffer, boolean validate) {
100     synchronized (buffer) {
101       if (validate) {
102         Assert.assertEquals("42", buffer.toString());
103       } else {
104         buffer.append(42L);
105       }
106     }
107   }
108
109   void testOp009(StringBuddy buffer, boolean validate) {
110     String JavaDoc testString = "fetch me blocks, o' block provider";
111
112     synchronized (buffer) {
113       if (validate) {
114         Assert.assertEquals(testString, buffer.toString());
115       } else {
116         // make sure this append WILL grow the buffer.
117
Assert.assertTrue("buffer too large: " + buffer.capacity(), buffer.capacity() < testString.length());
118
119         buffer.append(testString);
120       }
121     }
122   }
123
124   void testOp010(StringBuddy buffer, boolean validate) {
125     synchronized (buffer) {
126       if (validate) {
127         Assert.assertEquals("timmy", buffer.toString());
128       } else {
129         // make sure this append will NOT grow the buffer.
130
Assert.assertTrue("buffer too small: " + buffer.capacity(), buffer.capacity() > "timmy".length());
131         buffer.append("timmy");
132       }
133     }
134   }
135
136   void testOp011(StringBuddy buffer, boolean validate) {
137     synchronized (buffer) {
138       if (validate) {
139         Assert.assertEquals("timmy", buffer.toString());
140       } else {
141         buffer.append(new ToStringObject("timmy"));
142       }
143     }
144   }
145
146   void testOp012(StringBuddy buffer, boolean validate) {
147     synchronized (buffer) {
148       if (validate) {
149         Assert.assertEquals("0xcafebabe 0xdecafbad 0xdeadbeef", buffer.toString());
150       } else {
151         buffer.append(new StringBuffer JavaDoc("0xcafebabe 0xdecafbad 0xdeadbeef"));
152       }
153     }
154   }
155
156   void testOp013(StringBuddy buffer, boolean validate) {
157     synchronized (buffer) {
158       if (validate) {
159         StringBuffer JavaDoc defaultStringBuffer = new StringBuffer JavaDoc();
160         Assert.eval(buffer.capacity() == defaultStringBuffer.capacity());
161       } else {
162         // no mutate
163
}
164     }
165   }
166
167   void testOp014(StringBuddy buffer, boolean validate) {
168     synchronized (buffer) {
169       if (validate) {
170         Assert.assertEquals(78, buffer.capacity());
171       } else {
172         buffer.append("sdfjkhrkj2h34kj32h4jk2ejknb2r902jfuoinkjfb252l3u54hb2kl5hb2l35i235ou82h34ku234");
173       }
174     }
175   }
176
177   void testOp015(StringBuddy buffer, boolean validate) {
178     synchronized (buffer) {
179       if (validate) {
180         Assert.assertEquals(69, buffer.capacity());
181       } else {
182         // no mutate
183
}
184     }
185   }
186
187   void testOp016(StringBuddy buffer, boolean validate) {
188     synchronized (buffer) {
189       if (validate) {
190         Assert.assertEquals('z', buffer.charAt(7));
191       } else {
192         buffer.append("aaaaaa zebra");
193       }
194     }
195   }
196
197   void testOp017(StringBuddy buffer, boolean validate) {
198     synchronized (buffer) {
199       if (validate) {
200         Assert.assertEquals("toy", buffer.toString());
201       } else {
202         buffer.append("tommy");
203         buffer.delete(2, 4);
204       }
205     }
206   }
207
208   void testOp018(StringBuddy buffer, boolean validate) {
209     synchronized (buffer) {
210       if (validate) {
211         Assert.assertEquals("joebob", buffer.toString());
212       } else {
213         buffer.append("joe-bob");
214         buffer.deleteCharAt(3);
215       }
216     }
217   }
218
219   void testOp019(StringBuddy buffer, boolean validate) {
220     synchronized (buffer) {
221       if (validate) {
222         Assert.assertEquals(356, buffer.capacity());
223       } else {
224         buffer.ensureCapacity(356);
225       }
226     }
227   }
228
229   void testOp020(StringBuddy buffer, boolean validate) {
230     synchronized (buffer) {
231       if (validate) {
232         char[] chars = new char[buffer.length()];
233         buffer.getChars(0, buffer.length(), chars, 0);
234         Assert.eval(Arrays.equals(chars, "steve is fuzzy and blue".toCharArray()));
235       } else {
236         buffer.append("steve is fuzzy and blue");
237       }
238     }
239   }
240
241   void testOp021(StringBuddy buffer, boolean validate) {
242     synchronized (buffer) {
243       if (validate) {
244         Assert.assertEquals(5, buffer.indexOf("bam"));
245       } else {
246         buffer.append("wham bam");
247       }
248     }
249   }
250
251   void testOp022(StringBuddy buffer, boolean validate) {
252     synchronized (buffer) {
253       if (validate) {
254         Assert.assertEquals(33, buffer.indexOf("Java", 4));
255       } else {
256         buffer.append("why can't I add methods to null? Java sucks");
257       }
258     }
259   }
260
261   void testOp023(StringBuddy buffer, boolean validate) {
262     synchronized (buffer) {
263       if (validate) {
264         Assert.assertEquals("Terracotta's distributed StringBuffer will not change the face of software", buffer
265             .toString());
266       } else {
267         buffer.append("Terracotta's distributed StringBuffer will change the face of software");
268         buffer.insert(43, "not ".toCharArray(), 0, 4);
269       }
270     }
271   }
272
273   void testOp024(StringBuddy buffer, boolean validate) {
274     synchronized (buffer) {
275       if (validate) {
276         Assert.assertEquals("Q. Is Steve dead sexy? true", buffer.toString());
277       } else {
278         buffer.append("Q. Is Steve dead sexy? ");
279         buffer.insert(buffer.length(), true);
280       }
281     }
282   }
283
284   void testOp025(StringBuddy buffer, boolean validate) {
285     synchronized (buffer) {
286       if (validate) {
287         Assert.assertEquals("@55FACE", buffer.toString());
288       } else {
289         buffer.append("55FACE");
290         buffer.insert(0, '@');
291       }
292     }
293   }
294
295   void testOp026(StringBuddy buffer, boolean validate) {
296     synchronized (buffer) {
297       if (validate) {
298         Assert.assertEquals("Dude, where's my character array?", buffer.toString());
299       } else {
300         buffer.append("Dude, my character array?");
301         buffer.insert(6, "where's ".toCharArray());
302       }
303     }
304   }
305
306   void testOp027(StringBuddy buffer, boolean validate) {
307     synchronized (buffer) {
308       if (validate) {
309         Assert.assertEquals(String.valueOf(Double.MAX_VALUE), buffer.toString());
310       } else {
311         buffer.insert(0, Double.MAX_VALUE);
312       }
313     }
314   }
315
316   void testOp028(StringBuddy buffer, boolean validate) {
317     synchronized (buffer) {
318       if (validate) {
319         Assert.assertEquals(String.valueOf(Float.NaN), buffer.toString());
320       } else {
321         buffer.insert(0, Float.NaN);
322       }
323     }
324   }
325
326   void testOp029(StringBuddy buffer, boolean validate) {
327     synchronized (buffer) {
328       if (validate) {
329         Assert.assertEquals("123456789", buffer.toString());
330       } else {
331         buffer.insert(0, 123456789);
332       }
333     }
334   }
335
336   void testOp030(StringBuddy buffer, boolean validate) {
337     synchronized (buffer) {
338       if (validate) {
339         Assert.assertEquals("123456789123456789", buffer.toString());
340       } else {
341         buffer.insert(0, 123456789123456789L);
342       }
343     }
344   }
345
346   void testOp031(StringBuddy buffer, boolean validate) {
347     synchronized (buffer) {
348       if (validate) {
349         Assert.assertEquals("yer mom", buffer.toString());
350       } else {
351         buffer.insert(0, new ToStringObject("yer mom"));
352       }
353     }
354   }
355
356   void testOp032(StringBuddy buffer, boolean validate) {
357     synchronized (buffer) {
358       if (validate) {
359         Assert.assertEquals("chicks dig unix, but not macs", buffer.toString());
360       } else {
361         buffer.insert(0, "chicks dig unix, but not macs");
362       }
363     }
364   }
365
366   void testOp033(StringBuddy buffer, boolean validate) {
367     synchronized (buffer) {
368       if (validate) {
369         Assert.assertEquals(12, buffer.lastIndexOf("ball"));
370       } else {
371         buffer.append("ball1 ball2 ball3");
372       }
373     }
374   }
375
376   void testOp034(StringBuddy buffer, boolean validate) {
377     synchronized (buffer) {
378       if (validate) {
379         Assert.assertEquals(4, buffer.lastIndexOf("1", 4));
380       } else {
381         buffer.append("ball1 ball2 ball3");
382       }
383     }
384   }
385
386   void testOp035(StringBuddy buffer, boolean validate) {
387     synchronized (buffer) {
388       if (validate) {
389         Assert.assertEquals(0, buffer.length());
390       } else {
391         // nothing
392
}
393     }
394   }
395
396   void testOp036(StringBuddy buffer, boolean validate) {
397     synchronized (buffer) {
398       if (validate) {
399         Assert.assertEquals(77, buffer.length());
400       } else {
401         buffer.append("I was in a HOT TUB! I was NORMAL! I was ITALIAN!! I enjoyed the EARTHQUAKE");
402       }
403     }
404   }
405
406   void testOp037(StringBuddy buffer, boolean validate) {
407     synchronized (buffer) {
408       if (validate) {
409         Assert.assertEquals("PUNK FUNK!! DISCO DUCK!! BIRTH CONTROL!!", buffer.toString());
410       } else {
411         buffer.append("PUNK ROCK!! DISCO DUCK!! BIRTH CONTROL!!");
412         buffer.replace(5, 8, "FUN");
413       }
414     }
415   }
416
417   void testOp038(StringBuddy buffer, boolean validate) {
418     synchronized (buffer) {
419       if (validate) {
420         Assert.assertEquals("StringBuffer is da bomb", buffer.toString());
421       } else {
422         buffer.append("YO");
423         buffer.replace(0, 2, "StringBuffer is da bomb");
424       }
425     }
426   }
427
428   void testOp039(StringBuddy buffer, boolean validate) {
429     synchronized (buffer) {
430       if (validate) {
431         Assert.assertEquals("redrum", buffer.toString());
432       } else {
433         buffer.append("murder");
434         buffer.reverse();
435       }
436     }
437   }
438
439   void testOp040(StringBuddy buffer, boolean validate) {
440     synchronized (buffer) {
441       if (validate) {
442         Assert.assertEquals("writing StringBuffer test rates about a 0 on a scale of 10", buffer.toString());
443       } else {
444         buffer.append("writing StringBuffer test rates about a 8 on a scale of 10");
445         buffer.setCharAt(40, '0');
446       }
447     }
448   }
449
450   void testOp041(StringBuddy buffer, boolean validate) {
451     synchronized (buffer) {
452       if (validate) {
453         Assert.assertEquals("no change", buffer.toString());
454       } else {
455         buffer.append("no change");
456         buffer.setLength(buffer.length());
457       }
458     }
459   }
460
461   void testOp042(StringBuddy buffer, boolean validate) {
462     synchronized (buffer) {
463       if (validate) {
464         Assert.assertEquals("changed? YES!", buffer.toString());
465       } else {
466         buffer.append("changed? NO");
467         buffer.setLength(9);
468         buffer.append("YES!");
469       }
470     }
471   }
472
473   void testOp043(StringBuddy buffer, boolean validate) {
474     synchronized (buffer) {
475       if (validate) {
476         // subSeqeunce and substring are the same operations
477
Assert.assertEquals("almost", buffer.subSequence(0, 6));
478         Assert.assertEquals("almost", buffer.substring(0, 6));
479
480         Assert.assertEquals("tests", buffer.substring(20));
481       } else {
482         buffer.append("almost done writing tests");
483       }
484     }
485   }
486
487   void testOp044(StringBuddy buffer, boolean validate) {
488     synchronized (buffer) {
489       if (validate) {
490         StringBuffer JavaDoc compare = new StringBuffer JavaDoc();
491         List JavaDoc vals = (List JavaDoc) sharedMap.get("random vals " + buffer.getClass().getName());
492         for (Iterator JavaDoc i = vals.iterator(); i.hasNext();) {
493           Integer JavaDoc r = (Integer JavaDoc) i.next();
494           compare.append(r.intValue());
495           compare.append(',');
496         }
497
498         Assert.assertEquals(compare.toString(), buffer.toString());
499       } else {
500         Random JavaDoc rnd = new SecureRandom JavaDoc();
501         List JavaDoc vals = new ArrayList JavaDoc();
502
503         final int n = 37 + rnd.nextInt(100);
504         for (int i = 0; i < n; i++) {
505           int r = rnd.nextInt();
506           vals.add(new Integer JavaDoc(r));
507           buffer.append(r);
508           buffer.append(',');
509         }
510
511         synchronized (sharedMap) {
512           sharedMap.put("random vals " + buffer.getClass().getName(), vals);
513         }
514       }
515     }
516   }
517
518   void testOp045(StringBuddy buffer, boolean validate) {
519     synchronized (buffer) {
520       // test that StringBuffer.getChars() to a managed array works
521
String JavaDoc str = "these are the characters jerky";
522
523       if (validate) {
524         char[] compare = (char[]) sharedMap.get("getChars destination " + buffer.getClass());
525         Assert.assertTrue(Arrays.equals(str.toCharArray(), compare));
526       } else {
527         buffer.append(str);
528         char[] dest = new char[str.length()];
529         synchronized (sharedMap) {
530           sharedMap.put("getChars destination " + buffer.getClass(), dest);
531         }
532         buffer.getChars(0, buffer.length(), dest, 0);
533       }
534     }
535   }
536
537   void testOp046(StringBuddy buffer, boolean validate) {
538     synchronized (buffer) {
539       if (validate) {
540         Assert.assertEquals(String.valueOf(0x80000000), buffer.toString());
541       } else {
542         buffer.append(Integer.MIN_VALUE);
543       }
544     }
545   }
546
547   private static final String JavaDoc GET_CHARS_STRING = "make me slow";
548
549   void testOp047(StringBuddy buffer, boolean validate) {
550     synchronized (buffer) {
551       // test that StringBuffer.getChars() works when the target array is managed *and* StringBuffer is managed
552

553       char[] target = (char[]) sharedMap.get("target array " + ClassUtils.getShortClassName(buffer.getClass()));
554
555       if (validate) {
556         Assert.assertTrue(Arrays.equals(GET_CHARS_STRING.toCharArray(), target));
557       } else {
558         buffer.append(GET_CHARS_STRING);
559         buffer.getChars(0, buffer.length(), target, 0);
560       }
561     }
562   }
563
564   void testOp048(StringBuddy buffer, boolean validate) {
565     synchronized (buffer) {
566       // test that StringBuffer.getChars() works when the target array is managed *and* StringBuffer is NOT managed
567

568       char[] target = (char[]) sharedMap.get("target array " + ClassUtils.getShortClassName(buffer.getClass()));
569
570       if (validate) {
571         Assert.assertTrue(Arrays.equals(GET_CHARS_STRING.toCharArray(), target));
572       } else {
573         StringBuffer JavaDoc unshared = new StringBuffer JavaDoc();
574         unshared.append(GET_CHARS_STRING);
575         synchronized (target) {
576           unshared.getChars(0, unshared.length(), target, 0);
577         }
578       }
579     }
580   }
581
582   void testStringBuilderToStringPerf(StringBuddy buddy, boolean validate) {
583     if (!validate) return;
584     if (!(buddy instanceof StringBuilderBuddy)) { return; }
585
586     Random JavaDoc r = new Random JavaDoc();
587     int rnd = r.nextInt();
588
589     StringBuilder JavaDoc builder = new StringBuilder JavaDoc();
590
591     byte[] bytes = new byte[100];
592     r.nextBytes(bytes);
593     for (int i = 0; i < bytes.length; i++) {
594       builder.append(bytes[i]);
595     }
596
597     if (validate) {
598       for (int i = 0; i < 250000; i++) {
599         builder = xorChars(builder);
600         String JavaDoc string = builder.toString();
601
602         // not that I think it matters, but this code should defeat any runtime optimization of the above toString()
603
if (string.hashCode() == rnd) {
604           System.err.println();
605         }
606       }
607     }
608   }
609
610   private static StringBuilder JavaDoc xorChars(StringBuilder JavaDoc builder) {
611     char[] dest = new char[builder.length()];
612     builder.getChars(0, builder.length(), dest, 0);
613     for (int i = 0; i < dest.length; i++) {
614       dest[i] = (char) (dest[dest.length - 1 - i] ^ dest[i]);
615     }
616     return new StringBuilder JavaDoc(new String JavaDoc(dest));
617   }
618
619   protected Object JavaDoc getTestObject(String JavaDoc test) {
620     List JavaDoc l = new ArrayList JavaDoc();
621     l.add(sharedMap.get("buffer"));
622     l.add(sharedMap.get("builder"));
623     return l.iterator();
624   }
625
626   protected void setupTestObject(String JavaDoc test) {
627     final StringBuddy buffer;
628     final StringBuddy builder;
629
630     if ("Op015".equals(test)) {
631       buffer = new StringBufferBuddy(new StringBuffer JavaDoc(69));
632       builder = new StringBuilderBuddy(new StringBuilder JavaDoc(69));
633     } else {
634       buffer = new StringBufferBuddy(new StringBuffer JavaDoc());
635       builder = new StringBuilderBuddy(new StringBuilder JavaDoc());
636     }
637
638     sharedMap.put("buffer", buffer);
639     sharedMap.put("builder", builder);
640
641     sharedMap.put("target array StringBuilderBuddy", new char[GET_CHARS_STRING.length()]);
642     sharedMap.put("target array StringBufferBuddy", new char[GET_CHARS_STRING.length()]);
643   }
644
645   private static final String JavaDoc BUFFER_TARGET_ARRAY = "buffer target array";
646   private static final String JavaDoc BUILDER_TARGET_ARRAY = "builder target array";
647
648   public static void visitL1DSOConfig(ConfigVisitor visitor, DSOClientConfigHelper config) {
649     String JavaDoc testClass = StringBufferTestApp.class.getName();
650     config.getOrCreateSpec(testClass);
651     String JavaDoc methodExpression = "* " + testClass + "*.*(..)";
652     config.addWriteAutolock(methodExpression);
653
654     config.addIncludePattern(StringBufferBuddy.class.getName());
655     config.addIncludePattern(StringBuilderBuddy.class.getName());
656
657   }
658
659   private static class ToStringObject {
660
661     private final String JavaDoc string;
662
663     ToStringObject(String JavaDoc string) {
664       super();
665       this.string = string;
666     }
667
668     public String JavaDoc toString() {
669       return this.string;
670     }
671
672   }
673
674 }
675
Popular Tags