public void OnEnter_CreatesAndRunsProcess()
    {
        IPointerUpInputProcessStateConstArg arg   = CreateMockArg();
        TestAbsPointerUpInputProcessState   state = new TestAbsPointerUpInputProcessState(arg);

        state.OnEnter();

        IUIAdaptorInputProcess process = state.GetProcess_Test();

        process.Received(1).Run();
    }
    public void OnExit_SetsProcessNull()
    {
        IPointerUpInputProcessStateConstArg arg   = CreateMockArg();
        TestAbsPointerUpInputProcessState   state = new TestAbsPointerUpInputProcessState(arg);

        state.SetProcess_Test(Substitute.For <IUIAdaptorInputProcess>());
        Assert.That(state.GetProcess_Test(), Is.Not.Null);

        state.OnExit();

        Assert.That(state.GetProcess_Test(), Is.Null);
    }
    public void ExpireProcess_ProcessIsNotRunning_DoesNotCallItExpire()
    {
        IPointerUpInputProcessStateConstArg arg   = CreateMockArg();
        TestAbsPointerUpInputProcessState   state = new TestAbsPointerUpInputProcessState(arg);
        IUIAdaptorInputProcess process            = Substitute.For <IUIAdaptorInputProcess>();

        process.IsRunning().Returns(false);
        state.SetProcess_Test(process);

        state.ExpireProcess();

        process.DidNotReceive().Expire();
    }
    public void OnExit_ProcessIsRunning_CallsItStop()
    {
        IPointerUpInputProcessStateConstArg arg   = CreateMockArg();
        TestAbsPointerUpInputProcessState   state = new TestAbsPointerUpInputProcessState(arg);
        IUIAdaptorInputProcess process            = Substitute.For <IUIAdaptorInputProcess>();

        process.IsRunning().Returns(true);
        state.SetProcess_Test(process);

        state.OnExit();

        process.Received(1).Stop();
    }