/**
 *    @author   ETSI / STF484
 *    @version  $URL$
 *              $Id$
 *    @desc     CAM Testcases (TP version: 0.0.1)
 *
 */

module ItsSpatem_TestCases {
    
    // LibItsMapemSpatem
    import from LibItsMapemSpatem_TestSystem all;
    
    // LibItsMapemSpatem
    import from ItsSpatem_TpFunctions all;
    
    group spateMessageDissemination { 
        
        group spateMessageFormat { 
            
            /**
             * @desc Check that protocolVersion is set to 1 and messageID is set to 4
             * <pre>
             * Pics Selection: PICS_RSU_ROLE and PICS_SPATEM_GENERATION
             * Initial conditions: 
             *   with {
             *        the IUT being in the "initial state"
             *        and the IUT sending SPATEM
             *    }
             * Expected behaviour:
             *    ensure that {
             *        when { 
             *            a SPATEM is generated
             *        }
             *        then {
             *            the IUT sends a valid SPATEM
             *                containing ITS PDU header
             *                    containing protocolVersion
             *                        indicating value '1'
             *                    and containing messageID
             *                        indicating value '4'
             *        }
             *    }
             * </pre>
             * 
             * @version   1.0.4
             * @see       ETSI TS 103 191-2 v0.0.1 TP_IS_TLM_MSGF_BV_01
             * @reference ETSI TS 103 301 V1.0.4 Clause 5.3
             */
            testcase TC_IS_TLM_MSGF_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem {
                
                f_IS_TLM_MSGF_BV_01();
                
            } // End of testcase TC_IS_TLM_MSGF_BV_01
            
        } // End of group spateMessageFormat
        
        group spateEventGeneration { 
            
            /**
             * @desc Check that TLM Service generates a new SPATEM on reception of a valid AppSPATEM _Start request
             * <pre>
             * Pics Selection: PICS_RSU_ROLE and PICS_SPATEM_GENERATION
             * Initial conditions: 
             *   with {
             *        the IUT being in the "initial state"
             *        and the IUT has not sent any SPATEM yet
             *    }
             * Expected behaviour:
             *    ensure that {
             *        when { 
             *            the IUT receives an AppSPATEM_Start request from the application layer
             *        }
             *        then {
             *            the IUT sends a valid SPATEM
             *        }
             *    }
             * </pre>
             * 
             * @version   1.0.4
             * @see       ETSI TS 103 191-2 v0.0.1 TP_IS_TLM_EVGN_BV_01
             * @reference ETSI TS 103 301 V1.0.4 Clause 5.4.2
             */
            testcase TC_IS_TLM_EVGN_BV_01() runs on ItsMapemSpatem system ItsMapemSpatemSystem {
                
                f_IS_TLM_EVGN_BV_01();
                
            } // End of testcase TC_IS_TLM_EVGN_BV_01
            
            /**
             * @desc Check that TLM Service generates SPATEM are time ordered
             * <pre>
             * Pics Selection: PICS_RSU_ROLE and PICS_SPATEM_GENERATION
             * Initial conditions: 
             *   with {
             *        the IUT being in the "initial state"
             *        and the IUT has sent a SPATEM
             *    }
             * Expected behaviour:
             *    ensure that {
             *        when { 
             *            several SPATEM are generated
             *        }
             *        then {
             *            the IUT sends SPATEM in time order
             *        }
             *    }
             * </pre>
             * 
             * @version   1.0.4
             * @see       ETSI TS 103 191-2 v0.0.1 TP_IS_TLM_EVGN_BV_02
             * @reference ETSI TS 103 301 V1.0.4 Clause 5.4.2
             */
            testcase TC_IS_TLM_EVGN_BV_02() runs on ItsMapemSpatem system ItsMapemSpatemSystem {
                
                f_IS_TLM_EVGN_BV_02();
                
            } // End of testcase TC_IS_TLM_EVGN_BV_02
            
            /**
             * @desc Check that TLM Service terminates on reception of a valid AppSPATEM _Stop request
             * <pre>
             * Pics Selection: PICS_RSU_ROLE and PICS_SPATEM_GENERATION
             * Initial conditions: 
             *   with {
             *        the IUT being in the "initial state"
             *        and the IUT sending SPATEM
             *    }
             * Expected behaviour:
             *    ensure that {
             *        when { 
             *            the IUT receives an AppSPATEM _Stop request from the application layer
             *        }
             *        then {
             *            the IUT stops sending SPATEM
             *        }
             *    }
             * </pre>
             * 
             * @version   1.0.4
             * @see       ETSI TS 103 191-2 v0.0.1 TP_IS_TLM_EVGN_BV_03
             * @reference ETSI TS 103 301 V1.0.4 Clause 5.4.2
             */
            testcase TC_IS_TLM_EVGN_BV_03() runs on ItsMapemSpatem system ItsMapemSpatemSystem { // TODO Move ito spateEventTermination goup
                
                f_IS_TLM_EVGN_BV_03();
                
            } // End of testcase TC_IS_TLM_EVGN_BV_03
            
            /**
             * @desc Check that TLM Service generates a new SPATEM on reception of a valid AppSPATEM_Trigger request
             * <pre>
             * Pics Selection: PICS_RSU_ROLE and PICS_SPATEM_GENERATION
             * Initial conditions: 
             *   with {
             *        the IUT being in the "initial state"
             *        and the IUT sending SPATEM
             *    }
             * Expected behaviour:
             *    ensure that {
             *        when { 
             *            the IUT receives an AppSPATEM _Stop request from the application layer
             *        }
             *        then {
             *            the IUT stops sending SPATEM
             *        }
             *    }
             * </pre>
             * 
             * @version   1.0.4
             * @see       ETSI TS 103 191-2 v0.0.1 TP_IS_TLM_EVGN_BV_04
             * @reference ETSI TS 103 301 V1.0.4 Clause 5.4.2
             */
            testcase TC_IS_TLM_EVGN_BV_04() runs on ItsMapemSpatem system ItsMapemSpatemSystem {
                
                f_IS_TLM_EVGN_BV_04();
                
            } // End of testcase TC_IS_TLM_EVGN_BV_04
            
        } // End of group spateEventGeneration
        
        group spateCommunication {
            
            /**
             * @desc Check that TLM Service provides the destination area in SPATEM
             * <pre>
             * Pics Selection: PICS_RSU_ROLE and PICS_SPATEM_GENERATION
             * Initial conditions: 
             *   with {
             *        the IUT being in the "initial state"
             *        and the IUT sending SPATEM
             *    }
             * Expected behaviour:
             *    ensure that {
             *        when { 
             *            a SPATEM is generated
             *        }
             *        then {
             *            the IUT sends a valid SPATEM
             *                containg spat
             *                    containing regional
             *                        containing at least on region
             *                            indicating a regionId
             *                            and indication a regExtValue
             *        }
             *    }
             * </pre>
             * 
             * @version   1.0.4
             * @see       ETSI TS 103 191-2 v0.0.1 TP_IS_TLM_COMM_BV_01
             * @reference ETSI TS 103 301 V1.0.4 Clause 5.4.3.2
             */
            testcase TC_IS_TLM_COMM_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem {
                
                f_IS_TLM_COMM_BV_01();
                
            } // End of testcase TC_IS_TLM_COMM_BV_01
            
            /**
             * @desc Check that SPATEM uses BTP_B packet
             * <pre>
             * Pics Selection: PICS_RSU_ROLE and PICS_SPATEM_GENERATION
             * Initial conditions: 
             *   with {
             *        the IUT being in the "initial state"
             *        and the IUT sending SPATEM
             *    }
             * Expected behaviour:
             *    ensure that {
             *        when { 
             *            a SPATEM is generated
             *        }
             *        then {
             *            the IUT sends a valid SPATEM
             *                encapsulated in a BTP-B packet
             *        }
             *    }
             * </pre>
             * 
             * @version   1.0.4
             * @see       ETSI TS 103 191-2 v0.0.1 TP_IS_TLM_COMM_BV_02_01
             * @reference ETSI TS 103 301 V1.0.4 Clause 5.4.3.2
             */
            testcase TC_IS_TLM_COMM_BV_02_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem {
                
                f_IS_TLM_COMM_BV_02_01();
                
            } // End of testcase TC_IS_TLM_COMM_BV_02_01
            
            /**
             * @desc Check that the destination port for SPATEM is set to 2004
             * <pre>
             * Pics Selection: PICS_RSU_ROLE and PICS_SPATEM_GENERATION
             * Initial conditions: 
             *   with {
             *        the IUT being in the "initial state"
             *        and the IUT sending SPATEM
             *    }
             * Expected behaviour:
             *    ensure that {
             *        when { 
             *            a SPATEM is generated
             *        }
             *        then {
             *            the IUT sends a valid SPATEM
             *                encapsulated in a BTP packet
             *                   containing a destination port value set to 2004
             *                   and containing a destination port info value set to 0
             *        }
             *    }
             * </pre>
             * 
             * @version   1.0.4
             * @see       ETSI TS 103 191-2 v0.0.1 TP_IS_TLM_COMM_BV_02_02
             * @reference ETSI TS 103 301 V1.0.4 Clause 5.4.3.2
             */
            testcase TC_IS_TLM_COMM_BV_02_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem {
                
                f_IS_TLM_COMM_BV_02_02();
                
            } // End of testcase TC_IS_TLM_COMM_BV_02_02
            
            /**
             * @desc Check that TLM service encapsulates SPATEM in a GBC with the HeaderType field set to the value of 4
             * <pre>
             * Pics Selection: PICS_RSU_ROLE and PICS_SPATEM_GENERATION
             * Initial conditions: 
             *   with {
             *        the IUT being in the "initial state"
             *        and the IUT sending SPATEM
             *    }
             * Expected behaviour:
             *    ensure that {
             *        when { 
             *            a SPATEM is generated
             *        }
             *        then {
             *            the IUT sends a valid SPATEM
             *                encapsulated in a GBC packet
             *                    containing a correctly formatted Common Header
             *                        containing HeaderType field
             *                            indicating the value '4'
             *        }
             *    }
             * </pre>
             * 
             * @version   1.0.4
             * @see       ETSI TS 103 191-2 v0.0.1 TP_IS_TLM_COMM_BV_03
             * @reference ETSI TS 103 301 V1.0.4 Clause 5.4.3.2
             */
            testcase TC_IS_TLM_COMM_BV_03 () runs on ItsMapemSpatem system ItsMapemSpatemSystem {
                
                f_IS_TLM_COMM_BV_03();
                
            } // End of testcase TC_IS_TLM_COMM_BV_03
            
        } // End of group spateCommunication 
        
    } // End of group spateMessageDissemination
    
    group spateMessageProcessing {
            
            /**
             * @desc Check that the IUT can successfully process all mandatory fields of SPATEM received
             * <pre>
             * Pics Selection: not PICS_RSU_ROLE and PICS_SPATEM_RECEPTION
             * Initial conditions: 
             *   with {
             *        the IUT being in the "initial state"
             *        and the IUT having receive a valid SPATEM
             *    }
             * Expected behaviour:
             *    ensure that {
             *        when { 
             *            the IUT receives a valid SPATEM
             *        }
             *        then {
             *            the IUT forwards the SPATEM content to upper layers
             *            and the IUT forwards the SPATEM content to other facilities
             *        }
             *    }
             * </pre>
             * 
             * @version   1.0.4
             * @see       ETSI TS 103 191-2 v0.0.1 TP_IS_TLM_MSGF_BV_02
             * @reference ETSI TS 103 301 V1.0.4 Clause 5.3
             */
            testcase TC_IS_TLM_MSGF_BV_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem {
                    
                f_IS_TLM_MSGF_BV_02();
                
            } // End of testcase TC_IS_TLM_MSGF_BV_02
            
    } // End of group spateMessageProcessing
    
} // End of module ItsSpatem_TestCases
