///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2018 Ericsson Telecom AB
//
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// which accompanies this distribution, and is available at
// http://www.eclipse.org/legal/epl-v10.html
///////////////////////////////////////////////////////////////////////////////
//
//  File:     MBT_Qtronic_Testcases.ttcn
//  Rev:      <RnXnn>
//  Prodnr:   CNL 113 659
//  Updated:  2010-10-01
//  Contact:  http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////

/* -*- ttcn3 -*- */

/** @file C:\Users\eantwuh\workspace\SIPsim\MBT_Qtronic_Testcases.ttcn
 *
 * @author Conformiq TTCN3 Script Backend 0.1
 * @date Thu Sep 30 14:32:36 CEST 2010
 *
 * WARNING! This file has been automatically generated using
 * Ericsson Qtronic TTCN3 Script Backend (based on the original Conformiq Backend).DO NOT EDIT.
 */

module MBT_Qtronic_Testcases
{
    import from MBT_Qtronic_Types all;
    import from MBT_Qtronic_TestHarness all;
    /* User provided imports begin */
    import from MBT_Qtronic_Demo all; import from EPTF_MBT_LGen_Definitions all;
    /* User provided imports end */
    /* Qtronic generated alt step */
    altstep QtronicDefaultAlt() runs on Qtronic_CT
    {
        [] any port.receive
        {
            harnessTimer.stop;
            setverdict(fail);
            f_MBT_Qtronic_Demo_endTestCase();
            stop;
        }
        [] harnessTimer.timeout
        {
            setverdict(fail);
            f_MBT_Qtronic_Demo_endTestCase();
            stop;
        }
    }
    /* Generated test case #1 */
    testcase Test_Case_1() runs on Qtronic_CT
    {
        var float oldtimer := 0.0;
        var float SLACK := 10.0;
        var default default_behaviour_ref;
        f_MBT_Qtronic_Demo_beginTestCase();
        default_behaviour_ref := activate(QtronicDefaultAlt());
        log("Structural feature: method: main()");
        log("Structural feature: method: SIPClient.SIPClient()");
        log("Structural feature: method: SIPClient.run()");
        log("Structural feature: state: SIPClient.initial-state-0");
        log("Structural feature: transition: SIPClient.initial-state-0->SIPClient.Init-9");
        log("Structural feature: state: SIPClient.Init");
        qtronic_send_UserInput_to_userIn(UserInputTemplate1);
        oldtimer := 0.0;
        log("Structural feature: transition: SIPClient.Init->SIPClient.Calling-0");
        log("Structural feature: method: SIPClient.Invite()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate2);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate3);
        oldtimer := 0.0;
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate4);
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.Calling");
        log("Structural feature: state: SIPClient.Calling.initial-state-7");
        log("Structural feature: transition: SIPClient.Calling.initial-state-7->SIPClient.Calling.Wait-16");
        log("Structural feature: state: SIPClient.Calling.Wait");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate5);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Calling->SIPClient.Ringing-1");
        log("Structural feature: state: SIPClient.Ringing");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate6);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Ringing->SIPClient.final-state-6-7");
        log("Structural feature: method: SIPClient.Ack()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate7);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.final-state-6");
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate1 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate2 :=
    {
        bName := "Behavior_SIP",
        iName := "INVITE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := -1
        }
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate3 :=
    {
        stepName := "SIPAppLib: StepFunction_init",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate4 :=
    {
        stepName := "SIPAppLib: StepFunction_handleINVITE",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate5 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            1
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate6 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            37
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate7 :=
    {
        bName := "Behavior_SIP",
        iName := "ACK",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    /* Generated test case #2 */
    testcase Test_Case_2() runs on Qtronic_CT
    {
        var float oldtimer := 0.0;
        var float SLACK := 10.0;
        var default default_behaviour_ref;
        f_MBT_Qtronic_Demo_beginTestCase();
        default_behaviour_ref := activate(QtronicDefaultAlt());
        log("Structural feature: method: main()");
        log("Structural feature: method: SIPClient.SIPClient()");
        log("Structural feature: method: SIPClient.run()");
        log("Structural feature: state: SIPClient.initial-state-0");
        log("Structural feature: transition: SIPClient.initial-state-0->SIPClient.Init-9");
        log("Structural feature: state: SIPClient.Init");
        qtronic_send_UserInput_to_userIn(UserInputTemplate8);
        oldtimer := 0.0;
        log("Structural feature: transition: SIPClient.Init->SIPClient.Calling-0");
        log("Structural feature: method: SIPClient.Invite()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate9);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate10);
        oldtimer := 0.0;
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate11);
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.Calling");
        log("Structural feature: state: SIPClient.Calling.initial-state-7");
        log("Structural feature: transition: SIPClient.Calling.initial-state-7->SIPClient.Calling.Wait-16");
        log("Structural feature: state: SIPClient.Calling.Wait");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate12);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Calling->SIPClient.Ringing-1");
        log("Structural feature: state: SIPClient.Ringing");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate13);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Ringing->SIPClient.Ready-2");
        log("Structural feature: method: SIPClient.Ack()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate14);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Requirement: requirement: Acknowledge established call with ACK");
        log("Structural feature: state: SIPClient.Ready");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate15);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingRequest(String)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: transition: SIPClient.Ready->SIPClient.final-state-3-6");
        log("Structural feature: method: SIPClient.SendOK(String)");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate16);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Requirement: requirement: Terminating/Send OK in response to BYE");
        log("Structural feature: state: SIPClient.final-state-3");
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate8 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate9 :=
    {
        bName := "Behavior_SIP",
        iName := "INVITE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := -1
        }
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate10 :=
    {
        stepName := "SIPAppLib: StepFunction_init",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate11 :=
    {
        stepName := "SIPAppLib: StepFunction_handleINVITE",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate12 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            1
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate13 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            5
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate14 :=
    {
        bName := "Behavior_SIP",
        iName := "ACK",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate15 :=
    {
        stepName := "SIPAppLib: StepFunction_createBYE",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate16 :=
    {
        bName := "Behavior_SIP",
        iName := "200",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    /* Generated test case #3 */
    testcase Test_Case_3() runs on Qtronic_CT
    {
        var float oldtimer := 0.0;
        var float SLACK := 10.0;
        var default default_behaviour_ref;
        f_MBT_Qtronic_Demo_beginTestCase();
        default_behaviour_ref := activate(QtronicDefaultAlt());
        log("Structural feature: method: main()");
        log("Structural feature: method: SIPClient.SIPClient()");
        log("Structural feature: method: SIPClient.run()");
        log("Structural feature: state: SIPClient.initial-state-0");
        log("Structural feature: transition: SIPClient.initial-state-0->SIPClient.Init-9");
        log("Structural feature: state: SIPClient.Init");
        qtronic_send_UserInput_to_userIn(UserInputTemplate17);
        oldtimer := 0.0;
        log("Structural feature: transition: SIPClient.Init->SIPClient.Calling-0");
        log("Structural feature: method: SIPClient.Invite()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate18);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate19);
        oldtimer := 0.0;
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate20);
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.Calling");
        log("Structural feature: state: SIPClient.Calling.initial-state-7");
        log("Structural feature: transition: SIPClient.Calling.initial-state-7->SIPClient.Calling.Wait-16");
        log("Structural feature: state: SIPClient.Calling.Wait");
        log("Structural feature: transition: SIPClient.Calling.Wait->SIPClient.Calling.junction-state-8-14");
        log("Structural feature: method: SIPClient.RetransmittedRequest()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate21);
        harnessTimer.stop;
        oldtimer := 0.500000000;
        log("Requirement: requirement: 17.1.1.2 INVITE timers/Resends INVITE after A timeout");
        log("Structural feature: state: SIPClient.Calling.junction-state-8");
        log("Structural feature: transition: SIPClient.Calling.junction-state-8->SIPClient.Calling.Wait-15");
        log("Structural feature: state: SIPClient.Calling.Wait");
        log("Structural feature: transition: SIPClient.Calling.Wait->SIPClient.Calling.junction-state-8-14");
        log("Structural feature: method: SIPClient.RetransmittedRequest()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((1.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate22);
        harnessTimer.stop;
        oldtimer := 1.500000000;
        log("Requirement: requirement: 17.1.1.2 INVITE timers/Resends INVITE after A timeout");
        log("Structural feature: state: SIPClient.Calling.junction-state-8");
        log("Structural feature: transition: SIPClient.Calling.junction-state-8->SIPClient.Calling.Wait-15");
        log("Structural feature: state: SIPClient.Calling.Wait");
        log("Structural feature: transition: SIPClient.Calling.Wait->SIPClient.Calling.junction-state-8-14");
        log("Structural feature: method: SIPClient.RetransmittedRequest()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((3.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate23);
        harnessTimer.stop;
        oldtimer := 3.500000000;
        log("Requirement: requirement: 17.1.1.2 INVITE timers/Resends INVITE after A timeout");
        log("Structural feature: state: SIPClient.Calling.junction-state-8");
        log("Structural feature: transition: SIPClient.Calling.junction-state-8->SIPClient.Calling.Wait-15");
        log("Structural feature: state: SIPClient.Calling.Wait");
        log("Structural feature: transition: SIPClient.Calling.Wait->SIPClient.Calling.junction-state-8-14");
        log("Structural feature: method: SIPClient.RetransmittedRequest()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((7.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate24);
        harnessTimer.stop;
        oldtimer := 7.500000000;
        log("Requirement: requirement: 17.1.1.2 INVITE timers/Resends INVITE after A timeout");
        log("Structural feature: state: SIPClient.Calling.junction-state-8");
        log("Structural feature: transition: SIPClient.Calling.junction-state-8->SIPClient.Calling.Wait-15");
        log("Structural feature: state: SIPClient.Calling.Wait");
        log("Structural feature: transition: SIPClient.Calling->SIPClient.final-state-1-3");
        log("Requirement: requirement: 17.1.1.2 INVITE timers/Terminates INVITE cycle after B timeout");
        log("Structural feature: method: SIPClient.TimeOut()");
        harnessTimer.start((8.0 - oldtimer) + SLACK);
        qtronic_receive_TimeOutIndication_from_userOut(TimeOutIndicationTemplate25);
        harnessTimer.stop;
        oldtimer := 8.0;
        log("Structural feature: state: SIPClient.final-state-1");
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate17 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate18 :=
    {
        bName := "Behavior_SIP",
        iName := "INVITE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := -1
        }
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate19 :=
    {
        stepName := "SIPAppLib: StepFunction_init",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate20 :=
    {
        stepName := "SIPAppLib: StepFunction_handleINVITE",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate21 :=
    {
        bName := "Behavior_SIP",
        iName := "Retransmitted request",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate22 :=
    {
        bName := "Behavior_SIP",
        iName := "Retransmitted request",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate23 :=
    {
        bName := "Behavior_SIP",
        iName := "Retransmitted request",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate24 :=
    {
        bName := "Behavior_SIP",
        iName := "Retransmitted request",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template TimeOutIndication TimeOutIndicationTemplate25 :=
    {
        
    }
    /* Generated test case #4 */
    testcase Test_Case_4() runs on Qtronic_CT
    {
        var float oldtimer := 0.0;
        var float SLACK := 10.0;
        var default default_behaviour_ref;
        f_MBT_Qtronic_Demo_beginTestCase();
        default_behaviour_ref := activate(QtronicDefaultAlt());
        log("Structural feature: method: main()");
        log("Structural feature: method: SIPClient.SIPClient()");
        log("Structural feature: method: SIPClient.run()");
        log("Structural feature: state: SIPClient.initial-state-0");
        log("Structural feature: transition: SIPClient.initial-state-0->SIPClient.Init-9");
        log("Structural feature: state: SIPClient.Init");
        qtronic_send_UserInput_to_userIn(UserInputTemplate26);
        oldtimer := 0.0;
        log("Structural feature: transition: SIPClient.Init->SIPClient.Calling-0");
        log("Structural feature: method: SIPClient.Invite()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate27);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate28);
        oldtimer := 0.0;
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate29);
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.Calling");
        log("Structural feature: state: SIPClient.Calling.initial-state-7");
        log("Structural feature: transition: SIPClient.Calling.initial-state-7->SIPClient.Calling.Wait-16");
        log("Structural feature: state: SIPClient.Calling.Wait");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate30);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Calling->SIPClient.Ringing-1");
        log("Structural feature: state: SIPClient.Ringing");
        qtronic_send_UserInput_to_userIn(UserInputTemplate31);
        oldtimer := 0.0;
        log("Structural feature: transition: SIPClient.Ringing->SIPClient.Canceling-12");
        log("Structural feature: state: SIPClient.Canceling");
        log("Structural feature: state: SIPClient.Canceling.initial-state-11");
        log("Structural feature: transition: SIPClient.Canceling.initial-state-11->SIPClient.Canceling.Wait-20");
        log("Structural feature: method: SIPClient.Cancel()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate32);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.Canceling.Wait");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate33);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int,int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Canceling->SIPClient.Waiting Response-10");
        log("Structural feature: state: SIPClient.Waiting Response");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate34);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int,int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Waiting Response->SIPClient.final-state-4-8");
        log("Structural feature: method: SIPClient.Ack()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate35);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.final-state-4");
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate26 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate27 :=
    {
        bName := "Behavior_SIP",
        iName := "INVITE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := -1
        }
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate28 :=
    {
        stepName := "SIPAppLib: StepFunction_init",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate29 :=
    {
        stepName := "SIPAppLib: StepFunction_handleINVITE",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate30 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            1
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template UserInput UserInputTemplate31 :=
    {
        input1 := "cancel",
        input2 := ""
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate32 :=
    {
        bName := "Behavior_SIP",
        iName := "CANCEL",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate33 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            5,
2        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate34 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            38,
4        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate35 :=
    {
        bName := "Behavior_SIP",
        iName := "ACK",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    /* Generated test case #5 */
    testcase Test_Case_5() runs on Qtronic_CT
    {
        var float oldtimer := 0.0;
        var float SLACK := 10.0;
        var default default_behaviour_ref;
        f_MBT_Qtronic_Demo_beginTestCase();
        default_behaviour_ref := activate(QtronicDefaultAlt());
        log("Structural feature: method: main()");
        log("Structural feature: method: SIPClient.SIPClient()");
        log("Structural feature: method: SIPClient.run()");
        log("Structural feature: state: SIPClient.initial-state-0");
        log("Structural feature: transition: SIPClient.initial-state-0->SIPClient.Init-9");
        log("Structural feature: state: SIPClient.Init");
        qtronic_send_UserInput_to_userIn(UserInputTemplate36);
        oldtimer := 0.0;
        log("Structural feature: transition: SIPClient.Init->SIPClient.Calling-0");
        log("Structural feature: method: SIPClient.Invite()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate37);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate38);
        oldtimer := 0.0;
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate39);
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.Calling");
        log("Structural feature: state: SIPClient.Calling.initial-state-7");
        log("Structural feature: transition: SIPClient.Calling.initial-state-7->SIPClient.Calling.Wait-16");
        log("Structural feature: state: SIPClient.Calling.Wait");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate40);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Calling->SIPClient.Ringing-1");
        log("Structural feature: state: SIPClient.Ringing");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate41);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Ringing->SIPClient.Ready-2");
        log("Structural feature: method: SIPClient.Ack()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate42);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Requirement: requirement: Acknowledge established call with ACK");
        log("Structural feature: state: SIPClient.Ready");
        qtronic_send_UserInput_to_userIn(UserInputTemplate43);
        oldtimer := 0.0;
        log("Structural feature: transition: SIPClient.Ready->SIPClient.Terminating-4");
        log("Structural feature: state: SIPClient.Terminating");
        log("Structural feature: state: SIPClient.Terminating.initial-state-9");
        log("Structural feature: transition: SIPClient.Terminating.initial-state-9->SIPClient.Terminating.Wait-17");
        log("Structural feature: method: SIPClient.Bye()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate44);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.Terminating.Wait");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate45);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Terminating->SIPClient.final-state-5-5");
        log("Requirement: requirement: Terminating/Wait for OK in response to BYE");
        log("Structural feature: state: SIPClient.final-state-5");
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate36 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate37 :=
    {
        bName := "Behavior_SIP",
        iName := "INVITE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := -1
        }
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate38 :=
    {
        stepName := "SIPAppLib: StepFunction_init",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate39 :=
    {
        stepName := "SIPAppLib: StepFunction_handleINVITE",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate40 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            1
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate41 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            5
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate42 :=
    {
        bName := "Behavior_SIP",
        iName := "ACK",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template UserInput UserInputTemplate43 :=
    {
        input1 := "bye",
        input2 := ""
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate44 :=
    {
        bName := "Behavior_SIP",
        iName := "BYE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate45 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            5
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    /* Generated test case #6 */
    testcase Test_Case_6() runs on Qtronic_CT
    {
        var float oldtimer := 0.0;
        var float SLACK := 10.0;
        var default default_behaviour_ref;
        f_MBT_Qtronic_Demo_beginTestCase();
        default_behaviour_ref := activate(QtronicDefaultAlt());
        log("Structural feature: method: main()");
        log("Structural feature: method: SIPClient.SIPClient()");
        log("Structural feature: method: SIPClient.run()");
        log("Structural feature: state: SIPClient.initial-state-0");
        log("Structural feature: transition: SIPClient.initial-state-0->SIPClient.Init-9");
        log("Structural feature: state: SIPClient.Init");
        qtronic_send_UserInput_to_userIn(UserInputTemplate46);
        oldtimer := 0.0;
        log("Structural feature: transition: SIPClient.Init->SIPClient.Calling-0");
        log("Structural feature: method: SIPClient.Invite()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate47);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate48);
        oldtimer := 0.0;
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate49);
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.Calling");
        log("Structural feature: state: SIPClient.Calling.initial-state-7");
        log("Structural feature: transition: SIPClient.Calling.initial-state-7->SIPClient.Calling.Wait-16");
        log("Structural feature: state: SIPClient.Calling.Wait");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate50);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Calling->SIPClient.Ringing-1");
        log("Structural feature: state: SIPClient.Ringing");
        qtronic_send_UserInput_to_userIn(UserInputTemplate51);
        oldtimer := 0.0;
        log("Structural feature: transition: SIPClient.Ringing->SIPClient.Canceling-12");
        log("Structural feature: state: SIPClient.Canceling");
        log("Structural feature: state: SIPClient.Canceling.initial-state-11");
        log("Structural feature: transition: SIPClient.Canceling.initial-state-11->SIPClient.Canceling.Wait-20");
        log("Structural feature: method: SIPClient.Cancel()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate52);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.Canceling.Wait");
        log("Structural feature: transition: SIPClient.Canceling.Wait->SIPClient.Canceling.junction-state-12-21");
        log("Structural feature: method: SIPClient.Cancel()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate53);
        harnessTimer.stop;
        oldtimer := 0.500000000;
        log("Requirement: requirement: 17.1.2.2 Non-INVITE timers/Resends CANCEL after E timeout");
        log("Structural feature: state: SIPClient.Canceling.junction-state-12");
        log("Structural feature: transition: SIPClient.Canceling.junction-state-12->SIPClient.Canceling.Wait-22");
        log("Structural feature: state: SIPClient.Canceling.Wait");
        log("Structural feature: transition: SIPClient.Canceling.Wait->SIPClient.Canceling.junction-state-12-21");
        log("Structural feature: method: SIPClient.Cancel()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((1.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate54);
        harnessTimer.stop;
        oldtimer := 1.500000000;
        log("Requirement: requirement: 17.1.2.2 Non-INVITE timers/Resends CANCEL after E timeout");
        log("Structural feature: state: SIPClient.Canceling.junction-state-12");
        log("Structural feature: transition: SIPClient.Canceling.junction-state-12->SIPClient.Canceling.Wait-22");
        log("Structural feature: state: SIPClient.Canceling.Wait");
        log("Structural feature: transition: SIPClient.Canceling.Wait->SIPClient.Canceling.junction-state-12-21");
        log("Structural feature: method: SIPClient.Cancel()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((3.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate55);
        harnessTimer.stop;
        oldtimer := 3.500000000;
        log("Requirement: requirement: 17.1.2.2 Non-INVITE timers/Resends CANCEL after E timeout");
        log("Structural feature: state: SIPClient.Canceling.junction-state-12");
        log("Structural feature: transition: SIPClient.Canceling.junction-state-12->SIPClient.Canceling.Wait-22");
        log("Structural feature: state: SIPClient.Canceling.Wait");
        log("Structural feature: transition: SIPClient.Canceling.Wait->SIPClient.Canceling.junction-state-12-21");
        log("Structural feature: method: SIPClient.Cancel()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((7.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate56);
        harnessTimer.stop;
        oldtimer := 7.500000000;
        log("Requirement: requirement: 17.1.2.2 Non-INVITE timers/Resends CANCEL after E timeout");
        log("Structural feature: state: SIPClient.Canceling.junction-state-12");
        log("Structural feature: transition: SIPClient.Canceling.junction-state-12->SIPClient.Canceling.Wait-22");
        log("Structural feature: state: SIPClient.Canceling.Wait");
        log("Structural feature: transition: SIPClient.Canceling->SIPClient.final-state-2-13");
        log("Requirement: requirement: 17.1.2.2 Non-INVITE timers/Terminates CANCEL cycle after F timeout");
        log("Structural feature: method: SIPClient.TimeOut()");
        harnessTimer.start((8.0 - oldtimer) + SLACK);
        qtronic_receive_TimeOutIndication_from_userOut(TimeOutIndicationTemplate57);
        harnessTimer.stop;
        oldtimer := 8.0;
        log("Structural feature: state: SIPClient.final-state-2");
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate46 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate47 :=
    {
        bName := "Behavior_SIP",
        iName := "INVITE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := -1
        }
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate48 :=
    {
        stepName := "SIPAppLib: StepFunction_init",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate49 :=
    {
        stepName := "SIPAppLib: StepFunction_handleINVITE",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate50 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            1
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template UserInput UserInputTemplate51 :=
    {
        input1 := "cancel",
        input2 := ""
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate52 :=
    {
        bName := "Behavior_SIP",
        iName := "CANCEL",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate53 :=
    {
        bName := "Behavior_SIP",
        iName := "CANCEL",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate54 :=
    {
        bName := "Behavior_SIP",
        iName := "CANCEL",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate55 :=
    {
        bName := "Behavior_SIP",
        iName := "CANCEL",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate56 :=
    {
        bName := "Behavior_SIP",
        iName := "CANCEL",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template TimeOutIndication TimeOutIndicationTemplate57 :=
    {
        
    }
    /* Generated test case #7 */
    testcase Test_Case_7() runs on Qtronic_CT
    {
        var float oldtimer := 0.0;
        var float SLACK := 10.0;
        var default default_behaviour_ref;
        f_MBT_Qtronic_Demo_beginTestCase();
        default_behaviour_ref := activate(QtronicDefaultAlt());
        log("Structural feature: method: main()");
        log("Structural feature: method: SIPClient.SIPClient()");
        log("Structural feature: method: SIPClient.run()");
        log("Structural feature: state: SIPClient.initial-state-0");
        log("Structural feature: transition: SIPClient.initial-state-0->SIPClient.Init-9");
        log("Structural feature: state: SIPClient.Init");
        qtronic_send_UserInput_to_userIn(UserInputTemplate58);
        oldtimer := 0.0;
        log("Structural feature: transition: SIPClient.Init->SIPClient.Calling-0");
        log("Structural feature: method: SIPClient.Invite()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate59);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate60);
        oldtimer := 0.0;
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate61);
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.Calling");
        log("Structural feature: state: SIPClient.Calling.initial-state-7");
        log("Structural feature: transition: SIPClient.Calling.initial-state-7->SIPClient.Calling.Wait-16");
        log("Structural feature: state: SIPClient.Calling.Wait");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate62);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Calling->SIPClient.Ringing-1");
        log("Structural feature: state: SIPClient.Ringing");
        qtronic_send_EPTF_MBT_TestStepRequest_to_fwIn(EPTF_MBT_TestStepRequestTemplate63);
        oldtimer := 0.0;
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: method: SIPClient.incomingResponse(int)");
        log("Structural feature: method: c_EPTF_MBT_TestStepRequest_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        log("Structural feature: method: f_EPTF_SIP_mapAnswerCode2SipTemplateCode(int)");
        log("Structural feature: transition: SIPClient.Ringing->SIPClient.Ready-2");
        log("Structural feature: method: SIPClient.Ack()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate64);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Requirement: requirement: Acknowledge established call with ACK");
        log("Structural feature: state: SIPClient.Ready");
        qtronic_send_UserInput_to_userIn(UserInputTemplate65);
        oldtimer := 0.0;
        log("Structural feature: transition: SIPClient.Ready->SIPClient.Terminating-4");
        log("Structural feature: state: SIPClient.Terminating");
        log("Structural feature: state: SIPClient.Terminating.initial-state-9");
        log("Structural feature: transition: SIPClient.Terminating.initial-state-9->SIPClient.Terminating.Wait-17");
        log("Structural feature: method: SIPClient.Bye()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate66);
        harnessTimer.stop;
        oldtimer := 0.0;
        log("Structural feature: state: SIPClient.Terminating.Wait");
        log("Structural feature: transition: SIPClient.Terminating.Wait->SIPClient.Terminating.junction-state-10-18");
        log("Structural feature: method: SIPClient.Bye()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((0.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate67);
        harnessTimer.stop;
        oldtimer := 0.500000000;
        log("Requirement: requirement: 17.1.2.2 Non-INVITE timers/Resends BYE after E timeout");
        log("Structural feature: state: SIPClient.Terminating.junction-state-10");
        log("Structural feature: transition: SIPClient.Terminating.junction-state-10->SIPClient.Terminating.Wait-19");
        log("Structural feature: state: SIPClient.Terminating.Wait");
        log("Structural feature: transition: SIPClient.Terminating.Wait->SIPClient.Terminating.junction-state-10-18");
        log("Structural feature: method: SIPClient.Bye()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((1.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate68);
        harnessTimer.stop;
        oldtimer := 1.500000000;
        log("Requirement: requirement: 17.1.2.2 Non-INVITE timers/Resends BYE after E timeout");
        log("Structural feature: state: SIPClient.Terminating.junction-state-10");
        log("Structural feature: transition: SIPClient.Terminating.junction-state-10->SIPClient.Terminating.Wait-19");
        log("Structural feature: state: SIPClient.Terminating.Wait");
        log("Structural feature: transition: SIPClient.Terminating.Wait->SIPClient.Terminating.junction-state-10-18");
        log("Structural feature: method: SIPClient.Bye()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((3.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate69);
        harnessTimer.stop;
        oldtimer := 3.500000000;
        log("Requirement: requirement: 17.1.2.2 Non-INVITE timers/Resends BYE after E timeout");
        log("Structural feature: state: SIPClient.Terminating.junction-state-10");
        log("Structural feature: transition: SIPClient.Terminating.junction-state-10->SIPClient.Terminating.Wait-19");
        log("Structural feature: state: SIPClient.Terminating.Wait");
        log("Structural feature: transition: SIPClient.Terminating.Wait->SIPClient.Terminating.junction-state-10-18");
        log("Structural feature: method: SIPClient.Bye()");
        log("Structural feature: method: c_EPTF_MBT_TestStepResponse_empty()");
        log("Structural feature: method: c_EPTF_FsmAddr_empty()");
        harnessTimer.start((7.500000000 - oldtimer) + SLACK);
        qtronic_receive_EPTF_MBT_TestStepResponse_from_fwOut(EPTF_MBT_TestStepResponseTemplate70);
        harnessTimer.stop;
        oldtimer := 7.500000000;
        log("Requirement: requirement: 17.1.2.2 Non-INVITE timers/Resends BYE after E timeout");
        log("Structural feature: state: SIPClient.Terminating.junction-state-10");
        log("Structural feature: transition: SIPClient.Terminating.junction-state-10->SIPClient.Terminating.Wait-19");
        log("Structural feature: state: SIPClient.Terminating.Wait");
        log("Structural feature: transition: SIPClient.Terminating->SIPClient.final-state-1-11");
        log("Requirement: requirement: 17.1.2.2 Non-INVITE timers/Terminates BYE cycle after F timeout");
        log("Structural feature: method: SIPClient.TimeOut()");
        harnessTimer.start((8.0 - oldtimer) + SLACK);
        qtronic_receive_TimeOutIndication_from_userOut(TimeOutIndicationTemplate71);
        harnessTimer.stop;
        oldtimer := 8.0;
        log("Structural feature: state: SIPClient.final-state-1");
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate58 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate59 :=
    {
        bName := "Behavior_SIP",
        iName := "INVITE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := -1
        }
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate60 :=
    {
        stepName := "SIPAppLib: StepFunction_init",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate61 :=
    {
        stepName := "SIPAppLib: StepFunction_handleINVITE",
        stepArgs := {
            
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate62 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            1
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepRequest EPTF_MBT_TestStepRequestTemplate63 :=
    {
        stepName := "SIPAppLib: StepFunction_createResponse",
        stepArgs := {
            5
        },
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        },
        lock := -1
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate64 :=
    {
        bName := "Behavior_SIP",
        iName := "ACK",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template UserInput UserInputTemplate65 :=
    {
        input1 := "bye",
        input2 := ""
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate66 :=
    {
        bName := "Behavior_SIP",
        iName := "BYE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate67 :=
    {
        bName := "Behavior_SIP",
        iName := "BYE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate68 :=
    {
        bName := "Behavior_SIP",
        iName := "BYE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate69 :=
    {
        bName := "Behavior_SIP",
        iName := "BYE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template EPTF_MBT_TestStepResponse EPTF_MBT_TestStepResponseTemplate70 :=
    {
        bName := "Behavior_SIP",
        iName := "BYE",
        addr := {
            entityGroupName := "MBT_EntityType",
            eIdx := 0,
            fIdx := 0
        }
    }
    template TimeOutIndication TimeOutIndicationTemplate71 :=
    {
        
    }
    control
    {
        execute(Test_Case_1());
        execute(Test_Case_2());
        execute(Test_Case_3());
        execute(Test_Case_4());
        execute(Test_Case_5());
        execute(Test_Case_6());
        execute(Test_Case_7());
    }
}
