package com.zachklipp.captivate.test.captive_portal; import com.zachklipp.captivate.captive_portal.PortalDetector.OverrideMode; import com.zachklipp.captivate.state_machine.PortalStateMachine; import com.zachklipp.captivate.state_machine.PortalStateMachine.State; import junit.framework.TestCase; public class PortalStateMachineTest extends TestCase { private MockPortalDetector mDetector = new MockPortalDetector(); private PortalStateMachine machine; @Override protected void setUp() { machine = new PortalStateMachine(mDetector); } public void testInitialState() { assertCurrentState(State.UNKNOWN); } public void testNoPortalDetected() { mDetector.setTestingOverride(OverrideMode.NEVER_DETECT); mDetector.checkForPortal(); assertCurrentState(State.NO_PORTAL); } public void testPortalDetected() { mDetector.setTestingOverride(OverrideMode.ALWAYS_DETECT); mDetector.checkForPortal(); assertCurrentState(State.SIGNIN_REQUIRED); mDetector.checkForPortal(); assertCurrentState(State.SIGNIN_REQUIRED); } public void testPortalDetectedThenSignedIn() { mDetector.setTestingOverride(OverrideMode.ALWAYS_DETECT); mDetector.checkForPortal(); assertCurrentState(State.SIGNIN_REQUIRED); mDetector.setTestingOverride(OverrideMode.NEVER_DETECT); mDetector.checkForPortal(); assertCurrentState(State.SIGNED_IN); } public void testPortalDetectedThenSigningIn() { mDetector.setTestingOverride(OverrideMode.ALWAYS_DETECT); mDetector.checkForPortal(); assertCurrentState(State.SIGNIN_REQUIRED); machine.startSignIn(); assertCurrentState(State.SIGNING_IN); mDetector.setTestingOverride(OverrideMode.NEVER_DETECT); mDetector.checkForPortal(); assertCurrentState(State.SIGNED_IN); } private void assertCurrentState(State expected) { assertSame(expected, machine.getCurrentState()); } }