/**
 *  @author   ETSI / STF481 / STF507 / STF517
 *  @version  $URL$
 *            $Id$
 *  @desc     Test Control file for Security Protocol 
 *  @copyright   ETSI Copyright Notification
 *               No part may be reproduced except as authorized by written permission.
 *               The copyright and the foregoing restriction extend to reproduction in all media.
 *               All rights reserved.
 *
 */
module ItsSecurity_TestControl {
    
    // LibItsGeoNetworking
    import from LibItsGeoNetworking_Pics all;
    
    // ItsSecurity
    import from ItsSecurity_TestCases all;
    import from LibItsSecurity_Pics all;
    
    // Test Execution
    control {
        
        /**
         * @desc Sending behaviour test cases
         * @see ETSI TS 103 096-2 V1.2.2 (2016-01) Clause 5.2 Sending behaviour
         */
        if (PICS_GN_SECURITY) {
            execute(TC_SEC_ITSS_SND_MSG_01_BV());
            
            /**
             * @desc Sending behaviour test cases for CAM profile
             * @see ETSI TS 103 096-2 V1.2.2 (2016-01) Clause 5.2.4 CAM profile
             */
            execute(TC_SEC_ITSS_SND_CAM_01_BV());
            execute(TC_SEC_ITSS_SND_CAM_02_BV());
            execute(TC_SEC_ITSS_SND_CAM_03_BV());
            execute(TC_SEC_ITSS_SND_CAM_04_BV());
            execute(TC_SEC_ITSS_SND_CAM_05_BV());
            execute(TC_SEC_ITSS_SND_CAM_06_BV());
            execute(TC_SEC_ITSS_SND_CAM_07_BV());
            execute(TC_SEC_ITSS_SND_CAM_08_BV());
            execute(TC_SEC_ITSS_SND_CAM_09_TI());
            execute(TC_SEC_ITSS_SND_CAM_10_BV());
            execute(TC_SEC_ITSS_SND_CAM_11_BV());
            execute(TC_SEC_ITSS_SND_CAM_12_BV());
            execute(TC_SEC_ITSS_SND_CAM_13_BV());
            execute(TC_SEC_ITSS_SND_CAM_14_BV());
            execute(TC_SEC_ITSS_SND_CAM_15_BV());
            execute(TC_SEC_ITSS_SND_CAM_16_BV());
            execute(TC_SEC_ITSS_SND_CAM_17_BV());
            execute(TC_SEC_ITSS_SND_CAM_18_BV());
            execute(TC_SEC_ITSS_SND_CAM_19_BV());
            execute(TC_SEC_ITSS_SND_CAM_20_BV());
            execute(TC_SEC_ITSS_SND_CAM_21_BV());
            execute(TC_SEC_ITSS_SND_CAM_22_BV());
            execute(TC_SEC_ITSS_SND_CAM_23_BV());
            execute(TC_SEC_ITSS_SND_CAM_24_BV());
            execute(TC_SEC_ITSS_SND_CAM_25_BV());
            execute(TC_SEC_ITSS_SND_CAM_26_BV());
            execute(TC_SEC_ITSS_SND_CAM_27_BV());
            
            /**
             * @desc Sending behaviour test cases for DENM profile
             * @see ETSI TS 103 096-2 V1.2.2 (2016-01) Clause 5.2.5 DENM profile
             */
            execute(TC_SEC_ITSS_SND_DENM_01_BV());
            execute(TC_SEC_ITSS_SND_DENM_02_BV());
            execute(TC_SEC_ITSS_SND_DENM_03_BV());
            execute(TC_SEC_ITSS_SND_DENM_04_BV());
            execute(TC_SEC_ITSS_SND_DENM_05_BV());
            execute(TC_SEC_ITSS_SND_DENM_06_BV());
            execute(TC_SEC_ITSS_SND_DENM_07_BV());
            execute(TC_SEC_ITSS_SND_DENM_08_BV());
            execute(TC_SEC_ITSS_SND_DENM_09_BV());
            execute(TC_SEC_ITSS_SND_DENM_10_BV());
            execute(TC_SEC_ITSS_SND_DENM_11_BV());
            execute(TC_SEC_ITSS_SND_DENM_12_BV());
            execute(TC_SEC_ITSS_SND_DENM_13_BV());
            execute(TC_SEC_ITSS_SND_DENM_14_BV());
            execute(TC_SEC_ITSS_SND_DENM_15_BV());
            execute(TC_SEC_ITSS_SND_DENM_16_BV());
            execute(TC_SEC_ITSS_SND_DENM_17_BV());
            execute(TC_SEC_ITSS_SND_DENM_18_BV());
            
            /**
             * @desc Sending behaviour test cases for DENM profile
             * @see ETSI TS 103 096-2 V1.2.2 (2016-01) Clause 5.2.6	Generic signed message profile
             */
            execute(TC_SEC_ITSS_SND_GENMSG_01_BV());
            execute(TC_SEC_ITSS_SND_GENMSG_02_BV());
            execute(TC_SEC_ITSS_SND_GENMSG_03_BV());
            execute(TC_SEC_ITSS_SND_GENMSG_04_BV());
            execute(TC_SEC_ITSS_SND_GENMSG_05_BV());
            execute(TC_SEC_ITSS_SND_GENMSG_06_BV());
            execute(TC_SEC_ITSS_SND_GENMSG_07_BV());
            execute(TC_SEC_ITSS_SND_GENMSG_08_BV());
            
            /**
             * @desc Sending behaviour test cases for certificates profile
             * @see ETSI TS 103 096-2 V1.3.32 (2018-01) Clause 5.2.7 Encrypted messages profile
             */
            if (PICS_SEC_ENCRYPTION_SUPPORT) {
                execute(TC_SEC_ITSS_SND_ENC_01_BV());  
                execute(TC_SEC_ITSS_SND_ENC_02_BV());  
                execute(TC_SEC_ITSS_SND_ENC_03_BV());  
                execute(TC_SEC_ITSS_SND_ENC_04_BV());  
                execute(TC_SEC_ITSS_SND_ENC_05_BV()); 
            }
            
            /**
             * @desc Sending behaviour test cases for certificates profile
             * @see ETSI TS 103 096-2 V1.3.32 (2018-01) Clause 5.2.8 Profiles for certificates
             */
            execute(TC_SEC_ITSS_SND_CERT_01_BV());            
            execute(TC_SEC_ITSS_SND_CERT_02_BV());
            execute(TC_SEC_ITSS_SND_CERT_03_BV());
            execute(TC_SEC_ITSS_SND_CERT_04_BV());
            execute(TC_SEC_ITSS_SND_CERT_05_BV());
            execute(TC_SEC_ITSS_SND_CERT_06_BV());
            execute(TC_SEC_ITSS_SND_CERT_07_BV());
            execute(TC_SEC_ITSS_SND_CERT_08_BV());
            execute(TC_SEC_ITSS_SND_CERT_09_BV());
            // TODO execute(TC_SEC_ITSS_SND_CERT_10_BV());
            execute(TC_SEC_ITSS_SND_CERT_11_BV());
            execute(TC_SEC_ITSS_SND_CERT_12_BV());
            execute(TC_SEC_ITSS_SND_CERT_13_BV());
            execute(TC_SEC_ITSS_SND_CERT_14_BV());
            execute(TC_SEC_ITSS_SND_CERT_15_BV());
            execute(TC_SEC_ITSS_SND_CERT_16_BV());
            execute(TC_SEC_ITSS_SND_CERT_17_BV());
            execute(TC_SEC_ITSS_SND_CERT_18_BV());
            execute(TC_SEC_ITSS_SND_CERT_19_BV());
            execute(TC_SEC_ITSS_SND_CERT_20_BV());
            execute(TC_SEC_ITSS_SND_CERT_21_BV());
        }
        
    } // End of 'control' statement
    
} // End of module ItsSecurity_TestControl