///////////////////////////////////////////////////////////////////////////////
//
// 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-04-14
//  Contact:  http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////
/* -*- ttcn3 -*- */

/** @file C:\Users\eantwuh\workspace\SIPeval\MBT_Qtronic_Testcases.ttcn
 *
 * @author Conformiq TTCN3 Script Backend
 * @date Wed Apr 14 13:17:47 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(QtronicHarnessAlt());
        qtronic_send_UserInput_to_userIn(UserInputTemplate1);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate2);
        harnessTimer.stop;
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate3);
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate4);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate5);
        harnessTimer.stop;
        oldtimer := 0.0;
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate1 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate2 :=
    {
        op := "INVITE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPResp SIPRespTemplate3 :=
    {
        status := 180,
        cseq := ""
    }
    template SIPResp SIPRespTemplate4 :=
    {
        status := 486,
        cseq := "INVITE"
    }
    template SIPReq SIPReqTemplate5 :=
    {
        op := "ACK",
        param_ := "sip:127.0.0.1:5061"
    }
    /* 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(QtronicHarnessAlt());
        qtronic_send_UserInput_to_userIn(UserInputTemplate6);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate7);
        harnessTimer.stop;
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate8);
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate9);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate10);
        harnessTimer.stop;
        oldtimer := 0.0;
        qtronic_send_SIPReq_to_netIn(SIPReqTemplate11);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPResp_from_netOut(SIPRespTemplate12);
        harnessTimer.stop;
        oldtimer := 0.0;
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate6 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate7 :=
    {
        op := "INVITE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPResp SIPRespTemplate8 :=
    {
        status := 180,
        cseq := ""
    }
    template SIPResp SIPRespTemplate9 :=
    {
        status := 200,
        cseq := "INVITE"
    }
    template SIPReq SIPReqTemplate10 :=
    {
        op := "ACK",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate11 :=
    {
        op := "BYE",
        param_ := "sip:127.0.0.1"
    }
    template SIPResp SIPRespTemplate12 :=
    {
        status := 200,
        cseq := "BYE"
    }
    /* 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(QtronicHarnessAlt());
        qtronic_send_UserInput_to_userIn(UserInputTemplate13);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate14);
        harnessTimer.stop;
        oldtimer := 0.0;
        harnessTimer.start((0.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate15);
        harnessTimer.stop;
        oldtimer := 0.500000000;
        harnessTimer.start((1.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate16);
        harnessTimer.stop;
        oldtimer := 1.500000000;
        harnessTimer.start((3.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate17);
        harnessTimer.stop;
        oldtimer := 3.500000000;
        harnessTimer.start((7.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate18);
        harnessTimer.stop;
        oldtimer := 7.500000000;
        harnessTimer.start((8.0 - oldtimer) + SLACK);
        qtronic_receive_TimeOutIndication_from_userOut(TimeOutIndicationTemplate19);
        harnessTimer.stop;
        oldtimer := 8.0;
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate13 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate14 :=
    {
        op := "INVITE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate15 :=
    {
        op := "INVITE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate16 :=
    {
        op := "INVITE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate17 :=
    {
        op := "INVITE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate18 :=
    {
        op := "INVITE",
        param_ := "sip:127.0.0.1:5061"
    }
    template TimeOutIndication TimeOutIndicationTemplate19 :=
    {
        
    }
    /* 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(QtronicHarnessAlt());
        qtronic_send_UserInput_to_userIn(UserInputTemplate20);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate21);
        harnessTimer.stop;
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate22);
        oldtimer := 0.0;
        qtronic_send_UserInput_to_userIn(UserInputTemplate23);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate24);
        harnessTimer.stop;
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate25);
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate26);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate27);
        harnessTimer.stop;
        oldtimer := 0.0;
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate20 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate21 :=
    {
        op := "INVITE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPResp SIPRespTemplate22 :=
    {
        status := 180,
        cseq := ""
    }
    template UserInput UserInputTemplate23 :=
    {
        input1 := "cancel",
        input2 := ""
    }
    template SIPReq SIPReqTemplate24 :=
    {
        op := "CANCEL",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPResp SIPRespTemplate25 :=
    {
        status := 200,
        cseq := "CANCEL"
    }
    template SIPResp SIPRespTemplate26 :=
    {
        status := 487,
        cseq := "INVITE"
    }
    template SIPReq SIPReqTemplate27 :=
    {
        op := "ACK",
        param_ := "sip:127.0.0.1:5061"
    }
    /* 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(QtronicHarnessAlt());
        qtronic_send_UserInput_to_userIn(UserInputTemplate28);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate29);
        harnessTimer.stop;
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate30);
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate31);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate32);
        harnessTimer.stop;
        oldtimer := 0.0;
        qtronic_send_UserInput_to_userIn(UserInputTemplate33);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate34);
        harnessTimer.stop;
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate35);
        oldtimer := 0.0;
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate28 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate29 :=
    {
        op := "INVITE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPResp SIPRespTemplate30 :=
    {
        status := 180,
        cseq := ""
    }
    template SIPResp SIPRespTemplate31 :=
    {
        status := 200,
        cseq := "INVITE"
    }
    template SIPReq SIPReqTemplate32 :=
    {
        op := "ACK",
        param_ := "sip:127.0.0.1:5061"
    }
    template UserInput UserInputTemplate33 :=
    {
        input1 := "bye",
        input2 := ""
    }
    template SIPReq SIPReqTemplate34 :=
    {
        op := "BYE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPResp SIPRespTemplate35 :=
    {
        status := 200,
        cseq := ""
    }
    /* 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(QtronicHarnessAlt());
        qtronic_send_UserInput_to_userIn(UserInputTemplate36);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate37);
        harnessTimer.stop;
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate38);
        oldtimer := 0.0;
        qtronic_send_UserInput_to_userIn(UserInputTemplate39);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate40);
        harnessTimer.stop;
        oldtimer := 0.0;
        harnessTimer.start((0.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate41);
        harnessTimer.stop;
        oldtimer := 0.500000000;
        harnessTimer.start((1.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate42);
        harnessTimer.stop;
        oldtimer := 1.500000000;
        harnessTimer.start((3.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate43);
        harnessTimer.stop;
        oldtimer := 3.500000000;
        harnessTimer.start((7.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate44);
        harnessTimer.stop;
        oldtimer := 7.500000000;
        harnessTimer.start((8.0 - oldtimer) + SLACK);
        qtronic_receive_TimeOutIndication_from_userOut(TimeOutIndicationTemplate45);
        harnessTimer.stop;
        oldtimer := 8.0;
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate36 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate37 :=
    {
        op := "INVITE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPResp SIPRespTemplate38 :=
    {
        status := 180,
        cseq := ""
    }
    template UserInput UserInputTemplate39 :=
    {
        input1 := "cancel",
        input2 := ""
    }
    template SIPReq SIPReqTemplate40 :=
    {
        op := "CANCEL",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate41 :=
    {
        op := "CANCEL",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate42 :=
    {
        op := "CANCEL",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate43 :=
    {
        op := "CANCEL",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate44 :=
    {
        op := "CANCEL",
        param_ := "sip:127.0.0.1:5061"
    }
    template TimeOutIndication TimeOutIndicationTemplate45 :=
    {
        
    }
    /* 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(QtronicHarnessAlt());
        qtronic_send_UserInput_to_userIn(UserInputTemplate46);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate47);
        harnessTimer.stop;
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate48);
        oldtimer := 0.0;
        qtronic_send_SIPResp_to_netIn(SIPRespTemplate49);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate50);
        harnessTimer.stop;
        oldtimer := 0.0;
        qtronic_send_UserInput_to_userIn(UserInputTemplate51);
        oldtimer := 0.0;
        harnessTimer.start((0.0 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate52);
        harnessTimer.stop;
        oldtimer := 0.0;
        harnessTimer.start((0.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate53);
        harnessTimer.stop;
        oldtimer := 0.500000000;
        harnessTimer.start((1.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate54);
        harnessTimer.stop;
        oldtimer := 1.500000000;
        harnessTimer.start((3.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate55);
        harnessTimer.stop;
        oldtimer := 3.500000000;
        harnessTimer.start((7.500000000 - oldtimer) + SLACK);
        qtronic_receive_SIPReq_from_netOut(SIPReqTemplate56);
        harnessTimer.stop;
        oldtimer := 7.500000000;
        harnessTimer.start((8.0 - oldtimer) + SLACK);
        qtronic_receive_TimeOutIndication_from_userOut(TimeOutIndicationTemplate57);
        harnessTimer.stop;
        oldtimer := 8.0;
        setverdict(pass);
        deactivate(default_behaviour_ref);
        f_MBT_Qtronic_Demo_endTestCase();
    }
    template UserInput UserInputTemplate46 :=
    {
        input1 := "invite",
        input2 := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate47 :=
    {
        op := "INVITE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPResp SIPRespTemplate48 :=
    {
        status := 180,
        cseq := ""
    }
    template SIPResp SIPRespTemplate49 :=
    {
        status := 200,
        cseq := "INVITE"
    }
    template SIPReq SIPReqTemplate50 :=
    {
        op := "ACK",
        param_ := "sip:127.0.0.1:5061"
    }
    template UserInput UserInputTemplate51 :=
    {
        input1 := "bye",
        input2 := ""
    }
    template SIPReq SIPReqTemplate52 :=
    {
        op := "BYE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate53 :=
    {
        op := "BYE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate54 :=
    {
        op := "BYE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate55 :=
    {
        op := "BYE",
        param_ := "sip:127.0.0.1:5061"
    }
    template SIPReq SIPReqTemplate56 :=
    {
        op := "BYE",
        param_ := "sip:127.0.0.1:5061"
    }
    template TimeOutIndication TimeOutIndicationTemplate57 :=
    {
        
    }
    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());
    }
}
