📄 testidgenerator.java
字号:
package net.sf.irunninglog.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import net.sf.irunninglog.junit.BaseTestCase;
public class TestIdGenerator extends BaseTestCase {
private static final int NUM_ITERATIONS = 100;
public TestIdGenerator(String name) {
super(name);
}
public void testIdGeneration1() {
long id = IdGenerator.generateId();
assertTrue(id >= 0);
}
public void testIdGeneration2() {
long id = IdGenerator.generateId();
assertTrue(id >= 0);
for (int i=0; i< 100; i++) {
long temp = IdGenerator.generateId();
assertTrue(temp >= 0);
assertEquals(id + 1, temp);
id = temp;
}
}
public void testIdGeneration3() {
Runner runner1 = new Runner();
Runner runner2 = new Runner();
runner1.start();
runner2.start();
while (runner1.isAlive() || runner2.isAlive()) { }
List results1 = runner1.getList();
List results2 = runner2.getList();
assertEquals(NUM_ITERATIONS, results1.size());
assertEquals(NUM_ITERATIONS, results2.size());
// Now, assure that each of the list has non-consecutive values, and
// that no values overlap
Long first = (Long) results1.get(0);
Long last = (Long) results1.get(NUM_ITERATIONS-1);
long value = last.longValue() - first.longValue();
assertTrue(value > NUM_ITERATIONS - 1);
for (int i = 0; i < results1.size(); i++) {
Object obj = results1.get(i);
assertTrue(results1.contains(obj));
assertFalse(results2.contains(obj));
}
first = (Long) results2.get(0);
last = (Long) results2.get(NUM_ITERATIONS - 1);
value = last.longValue() - first.longValue();
assertTrue(value > (NUM_ITERATIONS - 1));
for (int i = 0; i < results2.size(); i++) {
Object obj = results2.get(i);
assertTrue(results2.contains(obj));
assertFalse(results1.contains(obj));
}
}
private class Runner extends Thread {
private List mList = new ArrayList(NUM_ITERATIONS);
private boolean mRunning = true;
public void run() {
for (int i=0; i < NUM_ITERATIONS; i++) {
Long aLong = new Long(IdGenerator.generateId());
mList.add(aLong);
try{
sleep(1);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
mRunning = false;
}
public boolean isRunning() {
return mRunning;
}
public List getList() {
return Collections.unmodifiableList(mList);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -