public void testStateMachineEventHandlingOutgoing() { CStateMachine sm1 = new CStateMachine(_manager); sm1.getState().makeCall("1234", 0); Assert.AreEqual(EStateId.CONNECTING, sm1.getStateId()); Assert.AreEqual(false, sm1.Incoming); Assert.AreEqual("1234", sm1.CallingNo); Assert.AreEqual(sm1.RuntimeDuration, TimeSpan.Zero); sm1.getState().onAlerting(); Assert.AreEqual(EStateId.ALERTING, sm1.getStateId()); Assert.AreEqual(false, sm1.Counting); Assert.AreEqual(sm1.RuntimeDuration, TimeSpan.Zero); sm1.getState().onConnect(); Assert.AreEqual(EStateId.ACTIVE, sm1.getStateId()); Assert.AreEqual(true, sm1.Counting); //Assert.AreNotEqual(sm1.RuntimeDuration.ToString(), TimeSpan.Zero.ToString()); sm1.getState().onReleased(); Assert.AreEqual(EStateId.RELEASED, sm1.getStateId()); Assert.AreEqual(true, sm1.Counting); //Assert.AreNotEqual(sm1.RuntimeDuration.ToString(), TimeSpan.Zero.ToString()); }
public void testStateMachineCreateSequence() { CStateMachine sm = new CStateMachine(_manager); Assert.AreEqual(-1, sm.Session); Assert.AreEqual(TimeSpan.Zero, sm.Duration); Assert.AreEqual(EStateId.IDLE, sm.getStateId()); // changing state sm.changeState(EStateId.INCOMING); Assert.AreEqual(EStateId.INCOMING, sm.getStateId()); Assert.AreEqual("INCOMING", sm.getStateName()); sm.changeState(EStateId.ALERTING); Assert.AreEqual(EStateId.ALERTING, sm.getStateId()); Assert.AreEqual("ALERTING", sm.getStateName()); sm.changeState(EStateId.CONNECTING); Assert.AreEqual(EStateId.CONNECTING, sm.getStateId()); Assert.AreEqual("CONNECTING", sm.getStateName()); sm.changeState(EStateId.RELEASED); Assert.AreEqual(EStateId.RELEASED, sm.getStateId()); Assert.AreEqual("RELEASED", sm.getStateName()); sm.destroy(); // Second sm = new CStateMachine(_manager); Assert.AreEqual(-1, sm.Session); Assert.AreEqual(TimeSpan.Zero, sm.Duration); Assert.AreEqual(EStateId.IDLE, sm.getStateId()); // changing state sm.changeState(EStateId.INCOMING); Assert.AreEqual(EStateId.INCOMING, sm.getStateId()); Assert.AreEqual("INCOMING", sm.getStateName()); sm.changeState(EStateId.ALERTING); Assert.AreEqual(EStateId.ALERTING, sm.getStateId()); Assert.AreEqual("ALERTING", sm.getStateName()); sm.changeState(EStateId.CONNECTING); Assert.AreEqual(EStateId.CONNECTING, sm.getStateId()); Assert.AreEqual("CONNECTING", sm.getStateName()); sm.changeState(EStateId.RELEASED); Assert.AreEqual(EStateId.RELEASED, sm.getStateId()); Assert.AreEqual("RELEASED", sm.getStateName()); sm.destroy(); // third sm = new CStateMachine(_manager); Assert.AreEqual(-1, sm.Session); Assert.AreEqual(TimeSpan.Zero, sm.Duration); Assert.AreEqual(EStateId.IDLE, sm.getStateId()); // changing state sm.changeState(EStateId.INCOMING); Assert.AreEqual(EStateId.INCOMING, sm.getStateId()); Assert.AreEqual("INCOMING", sm.getStateName()); sm.changeState(EStateId.ALERTING); Assert.AreEqual(EStateId.ALERTING, sm.getStateId()); Assert.AreEqual("ALERTING", sm.getStateName()); sm.changeState(EStateId.CONNECTING); Assert.AreEqual(EStateId.CONNECTING, sm.getStateId()); Assert.AreEqual("CONNECTING", sm.getStateName()); sm.changeState(EStateId.RELEASED); Assert.AreEqual(EStateId.RELEASED, sm.getStateId()); Assert.AreEqual("RELEASED", sm.getStateName()); sm.destroy(); }
public void testStateMachineEventHandlingIncoming() { CStateMachine sm1 = new CStateMachine(_manager); sm1.getState().incomingCall("1234",""); Assert.AreEqual(EStateId.INCOMING, sm1.getStateId()); Assert.AreEqual(true, sm1.Incoming); Assert.AreEqual("1234", sm1.CallingNo); Assert.AreEqual(sm1.RuntimeDuration.ToString(), TimeSpan.Zero.ToString()); sm1.getState().acceptCall(sm1.Session); Assert.AreEqual(EStateId.ACTIVE, sm1.getStateId()); Assert.AreEqual(true, sm1.Counting); //Assert.AreNotEqual(sm1.RuntimeDuration.ToString(), TimeSpan.Zero.ToString()); sm1.getState().onReleased(); Assert.AreEqual(EStateId.RELEASED, sm1.getStateId()); Assert.AreEqual(true, sm1.Counting); //Assert.AreNotEqual(sm1.RuntimeDuration.ToString(), TimeSpan.Zero.ToString()); }
public void testOutgoingCall() { CStateMachine sm1 = new CStateMachine(_manager); Assert.AreEqual(EStateId.IDLE, sm1.getStateId()); Assert.AreEqual(false, sm1.Incoming); sm1.changeState(EStateId.CONNECTING); Assert.AreEqual(EStateId.CONNECTING, sm1.getStateId()); Assert.AreEqual(false, sm1.Incoming); Assert.AreEqual(sm1.RuntimeDuration, TimeSpan.Zero); sm1.changeState(EStateId.ALERTING); Assert.AreEqual(EStateId.ALERTING, sm1.getStateId()); Assert.AreEqual(false, sm1.Incoming); Assert.AreEqual(sm1.RuntimeDuration, TimeSpan.Zero); sm1.changeState(EStateId.ACTIVE); Assert.AreEqual(EStateId.ACTIVE, sm1.getStateId()); Assert.AreEqual("ACTIVE", sm1.getStateName()); Assert.AreEqual(false, sm1.Incoming); Assert.AreEqual(true, sm1.Counting); Assert.AreNotSame(sm1.RuntimeDuration, TimeSpan.Zero); sm1.destroy(); }
public void testMultipleStateMachinesSequence() { CStateMachine sm1 = new CStateMachine(_manager); Assert.AreEqual(-1, sm1.Session); Assert.AreEqual(TimeSpan.Zero, sm1.Duration); Assert.AreEqual(EStateId.IDLE, sm1.getStateId()); // changing state sm1.changeState(EStateId.INCOMING); Assert.AreEqual(EStateId.INCOMING, sm1.getStateId()); sm1.destroy(); CStateMachine sm2 = new CStateMachine(_manager); Assert.AreEqual(-1, sm2.Session); Assert.AreEqual(TimeSpan.Zero, sm2.Duration); Assert.AreEqual(EStateId.IDLE, sm2.getStateId()); sm2.changeState(EStateId.ALERTING); Assert.AreEqual(EStateId.ALERTING, sm2.getStateId()); sm2.destroy(); CStateMachine sm3 = new CStateMachine(_manager); Assert.AreEqual(-1, sm3.Session); Assert.AreEqual(TimeSpan.Zero, sm3.Duration); Assert.AreEqual(EStateId.IDLE, sm3.getStateId()); sm3.changeState(EStateId.CONNECTING); Assert.AreEqual(EStateId.CONNECTING, sm3.getStateId()); sm3.destroy(); Assert.AreEqual(EStateId.IDLE, sm1.getStateId()); Assert.AreEqual(EStateId.IDLE, sm2.getStateId()); Assert.AreEqual(EStateId.IDLE, sm3.getStateId()); }
public void testCallFeaturesCallWaiting() { // out call CStateMachine sm2 = new CStateMachine(_manager); sm2.getState().makeCall("4444", 0); Assert.AreEqual(EStateId.CONNECTING, sm2.getStateId()); Assert.AreEqual(false, sm2.Incoming); Assert.AreEqual("4444", sm2.CallingNo); sm2.getState().onAlerting(); Assert.AreEqual(EStateId.ALERTING, sm2.getStateId()); Assert.AreEqual(false, sm2.Counting); sm2.getState().onConnect(); Assert.AreEqual(EStateId.ACTIVE, sm2.getStateId()); Assert.AreEqual(true, sm2.Counting); // inc call CStateMachine sm1 = new CStateMachine(_manager); sm1.getState().incomingCall("1234",""); Assert.AreEqual(EStateId.INCOMING, sm1.getStateId()); Assert.AreEqual(true, sm1.Incoming); Assert.AreEqual("1234", sm1.CallingNo); Assert.AreEqual(sm1.RuntimeDuration.ToString(), TimeSpan.Zero.ToString()); // check what happens here? sm1.getState().acceptCall(sm1.Session); Assert.AreEqual(EStateId.ACTIVE, sm1.getStateId()); Assert.AreEqual(true, sm1.Counting); // this should be done automatically by call manager // Here we do not test call manager //Assert.AreEqual(EStateId.HOLDING, sm2.getStateId()); sm1.getState().endCall(sm1.Session); sm2.getState().endCall(sm2.Session); Assert.AreEqual(EStateId.IDLE, sm1.getStateId()); Assert.AreEqual(EStateId.IDLE, sm2.getStateId()); sm1.getState().onReleased(); sm2.getState().onReleased(); Assert.AreEqual(EStateId.IDLE, sm1.getStateId()); Assert.AreEqual(EStateId.IDLE, sm2.getStateId()); }
public void testCallFeaturesCallHoldMultiple() { CStateMachine sm1 = new CStateMachine(_manager); sm1.getState().incomingCall("1234",""); Assert.AreEqual(EStateId.INCOMING, sm1.getStateId()); Assert.AreEqual(true, sm1.Incoming); Assert.AreEqual("1234", sm1.CallingNo); Assert.AreEqual(sm1.RuntimeDuration.ToString(), TimeSpan.Zero.ToString()); sm1.getState().acceptCall(sm1.Session); Assert.AreEqual(EStateId.ACTIVE, sm1.getStateId()); Assert.AreEqual(true, sm1.Counting); sm1.getState().holdCall(sm1.Session); Assert.AreEqual(EStateId.ACTIVE, sm1.getStateId()); // still ACTIVE (waiting confirmation) sm1.getState().onHoldConfirm(); Assert.AreEqual(EStateId.HOLDING, sm1.getStateId()); // next call CStateMachine sm2 = new CStateMachine(_manager); sm2.getState().makeCall("4444", 0); Assert.AreEqual(EStateId.CONNECTING, sm2.getStateId()); Assert.AreEqual(false, sm2.Incoming); Assert.AreEqual("4444", sm2.CallingNo); sm2.getState().onAlerting(); Assert.AreEqual(EStateId.ALERTING, sm2.getStateId()); Assert.AreEqual(false, sm2.Counting); sm2.getState().onConnect(); Assert.AreEqual(EStateId.ACTIVE, sm2.getStateId()); Assert.AreEqual(true, sm2.Counting); sm2.getState().holdCall(sm2.Session); Assert.AreEqual(EStateId.ACTIVE, sm2.getStateId()); // still ACTIVE (waiting confirmation) sm2.getState().onHoldConfirm(); Assert.AreEqual(EStateId.HOLDING, sm2.getStateId()); // release first sm1.getState().onReleased(); Assert.AreEqual(EStateId.RELEASED, sm1.getStateId()); sm2.getState().onHoldConfirm(); Assert.AreEqual(EStateId.HOLDING, sm2.getStateId()); sm2.getState().endCall(sm2.Session); Assert.AreEqual(EStateId.IDLE, sm2.getStateId()); sm2.getState().onReleased(); Assert.AreEqual(EStateId.IDLE, sm2.getStateId()); }
public void testCallFeaturesCallHold() { CStateMachine sm1 = new CStateMachine(_manager); sm1.getState().incomingCall("1234",""); Assert.AreEqual(EStateId.INCOMING, sm1.getStateId()); Assert.AreEqual(true, sm1.Incoming); Assert.AreEqual("1234", sm1.CallingNo); Assert.AreEqual(sm1.RuntimeDuration.ToString(), TimeSpan.Zero.ToString()); sm1.getState().acceptCall(sm1.Session); Assert.AreEqual(EStateId.ACTIVE, sm1.getStateId()); Assert.AreEqual(true, sm1.Counting); sm1.getState().holdCall(sm1.Session); Assert.AreEqual(EStateId.ACTIVE, sm1.getStateId()); // still ACTIVE (waiting confirmation) sm1.getState().onHoldConfirm(); Assert.AreEqual(EStateId.HOLDING, sm1.getStateId()); // check twice hold sm1.getState().holdCall(sm1.Session); Assert.AreEqual(EStateId.HOLDING, sm1.getStateId()); sm1.getState().retrieveCall(sm1.Session); Assert.AreEqual(EStateId.ACTIVE, sm1.getStateId()); sm1.getState().holdCall(sm1.Session); Assert.AreEqual(EStateId.ACTIVE, sm1.getStateId()); // still ACTIVE (waiting confirmation) sm1.getState().onHoldConfirm(); Assert.AreEqual(EStateId.HOLDING, sm1.getStateId()); sm1.destroy(); Assert.AreEqual(EStateId.IDLE, sm1.getStateId()); }