Tmp » History » Revision 5
Revision 4 (Николай Пакулин, 03/30/2015 06:10 PM) → Revision 5/6 (Николай Пакулин, 04/02/2015 05:19 PM)
h1. Кусочки кода
<pre>
static void assertTestString(CharSequence s) {
int pos = 0;
int len = s.length();
int rest = 0;
char fill = 0;
for (pos = 0; pos < len; pos++) {
if (rest == 0) {
fill = s.charAt(pos);
if (fill == 0) {
continue;
}
rest = fill - 1;
continue;
} else {
assertEquals("Position " + pos + ": expected symbol \\u"
+ new Integer(fill) + " got \\u"
+ new Integer(s.charAt(pos))
, fill, s.charAt(pos));
rest --;
}
}
assertEquals("expected "+ rest + " more characters",
0, rest);
}
</pre>
<pre>
@Test
public void testAssert() {
assertTestString("\u0000");
assertTestString("\u0001");
assertTestString("\u0002\u0002\u0003\u0003\u0003");
}
@Test
public void testAssertFail() {
String[] tests = new String[] {
"\u0002",
"\u0002\u0002\u0003"
};
for (int i = 0; i < tests.length; i++) {
try{
assertTestString(tests[i]);
}catch (AssertionError e) {
continue;
}
fail("Missed wrong string {" + tests[i] + "}");
}
}
</pre>
<pre>
public static class Worker implements Runnable{
MyStringBuilder target;
BlockingQueue<String> q;
public Worker(MyStringBuilder target, BlockingQueue<String> q) {
super();
this.target = target;
this.q = q;
}
@Override
public void run() {
String s = null;
while(true) {
try {
s = q.take();
System.out.println("Thread #" + Thread.currentThread().getId() + ":Taken " + s.length());
if (s.length() == 0) return;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
continue;
}
target.append(s);
}
}
}
</pre>