package com.zachklipp.captivate.test.captive_portal; import com.zachklipp.captivate.captive_portal.PortalDetector.OverrideMode; import junit.framework.TestCase; public class PortalDetectorTest extends TestCase { private MockPortalDetector mDetector; private MockPortalDetectorObserver mObserver; @Override protected void setUp() { mObserver = new MockPortalDetectorObserver(); mDetector = new MockPortalDetector(); mDetector.addObserver(mObserver); } public void testOverrideAlwaysDetect() { mDetector.setTestingOverride(OverrideMode.ALWAYS_DETECT); mDetector.checkForPortal(); assertEquals(1, mObserver.getDetectedPortals().length); assertEquals(0, mObserver.getDetectedNoPortalCount()); } public void testOverrideNeverDetect() { mDetector.setTestingOverride(OverrideMode.NEVER_DETECT); mDetector.checkForPortal(); assertEquals(0, mObserver.getDetectedPortals().length); assertEquals(1, mObserver.getDetectedNoPortalCount()); } public void testExceptionHandling() { @SuppressWarnings("serial") final RuntimeException testException = new RuntimeException() { }; mDetector = new MockPortalDetector() { @Override protected void onCheckForPortal() { throw testException; } }; mDetector.addObserver(mObserver); try { mDetector.checkForPortal(); } catch (RuntimeException e) { if (testException == e) { fail("Exception not handled, is thrown instead"); } else { throw e; } } assertEquals(0, mObserver.getDetectedPortals().length); assertEquals(1, mObserver.getDetectedNoPortalCount()); } }