⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testidgenerator.java

📁 A Java web application, based on Struts and Hibernate, that serves as an online running log. Users m
💻 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 + -