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

📄 stumblerfunneltests.java

📁 一个基于PlaceLab的室内和室外的智能导航系统
💻 JAVA
字号:
package org.placelab.stumbler;import java.util.Hashtable;import org.placelab.core.Measurement;import org.placelab.spotter.FakeNMEAGPSSpotter;import org.placelab.spotter.SpotterException;import org.placelab.spotter.SyncSpotter;import org.placelab.test.TestResult;import org.placelab.test.Testable;public class StumblerFunnelTests implements Testable, StumblerFunnelUpdateListener {        private StumblerFunnel funnel;    private SpotterExtension gps;    private SpotterExtension dumb;    private TestResult result;    private Throwable oops = null;    private int seen = 0;        private class DumbMeasurement extends Measurement {        private int value;        DumbMeasurement(long timestamp, int value) {            super(timestamp);            this.value = value;        }        public int getValue() {            return value;        }    }        private class DumbStumblerSpotter extends SyncSpotter {        int timesCalled = 0;                public Measurement do_getMeasurement() {            return new DumbMeasurement(System.currentTimeMillis(), timesCalled);        }                protected Measurement getMeasurementImpl() {            timesCalled++;            return do_getMeasurement();        }        public void open() { ; }        public void close() { ; }        public long nextScanInterval() { return Integer.MAX_VALUE; }    }    public String getName() {        return "StumblerFunnelTests";    }        public void runTests(TestResult result) throws Throwable {        this.result = result;        setup();        synchronized(this) {	        try {	            this.wait();	        } catch(InterruptedException ie) { }        }        result.assertTrue(this, 4, seen, "updates seen");        if(oops != null) {            result.errorCaught(this, oops);        }    }        private void setup() {        gps = new SpotterExtension(new FakeNMEAGPSSpotter("stumbler"), true, 0);        dumb = new SpotterExtension(new DumbStumblerSpotter(), true, 0);        try {			gps.open();			dumb.open();		} catch (SpotterException e) {			e.printStackTrace();		}        funnel = new StumblerFunnel(2000);        funnel.addTriggerSpotter(gps);        funnel.addDependentSpotter(dumb);        funnel.addUpdateListener(this);        funnel.start();    }        public void stumblerUpdated(Hashtable measurements) {        try {            seen++;            if(measurements.size() == 0) {                // should never happen                result.fail(this, "empty measurement hashtable");            }            DumbMeasurement dm = (DumbMeasurement)measurements.get(dumb.getSpotter());            result.assertTrue(this, dm.getValue(), seen, "updates seen");            if(seen <= 2) {                result.assertTrue(this, measurements.containsKey(gps.getSpotter()), true, "fake gps existance");            } else {                result.assertTrue(this, measurements.containsKey(gps.getSpotter()), false, "fake gps (non)existance");            }            if(seen == 2) {                // move to letting the timeout push the updates rather than letting the fake gps do it            	gps.stopScanning();                gps.close();            } else if(seen == 4) {                // ok, all done here                funnel.shutdown();                synchronized(this) {                    this.notify();                }            }        } catch (Throwable t) {            oops = t;            funnel.shutdown();            synchronized(this) {                this.notify();            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -