"""
Identifier:     ifs_sim/tests/test_ifs_sim.py
Name:           test_ifs_sim.py
Description:    Test ifs sim.
Author:         Zhaojun Yan
Created:        2024-04-09
Modified-History:
    2024-04-09, Zhaojun Yan, created

"""

import unittest
import os
from csst_ifs_sim import csst_ifs_sim

import sys

class TestDemoFunction(unittest.TestCase):
    def test_ifs_sim_1(self):
        """
        Aim
        ---
        Test ifs sim function: SCI case.

        Criteria
        --------
        Pass if the demo function returns `1`.

        Details
        -------
        The demo function returns the length of the input argument list.
        This case aims to test whether the demo function returns `1` if input is `None`.
        """
        # demo function test
        dir_path = os.path.join(os.environ['UNIT_TEST_DATA_ROOT'],'ifs_sim/')
        print(dir_path)
        print(sys.version )
        ###configfile = dir_path+'IFS_inputdata/configData/IFS_sim_C90.config'
        
        configfile = './csst_ifs_sim/ifs_data/IFS_sim_C90.config'
      
        sourcein = 'SCI'
        print(configfile)
        
        debug=True 
        
        result_path=dir_path+'ifs_sim_result'
        
        csst_ifs_sim.runIFSsim(sourcein, configfile, dir_path, result_path, 1, debug,'no')
        
        self.assertEqual(
            1 , 1,
            "case 1: SCI sim passes.",
        )
        
        ##############################################################
    def test_ifs_sim_2(self):
        """
        Aim
        ---
        Test ifs sim function: SCI case.

        Criteria
        --------
        Pass if the demo function returns `1`.

        Details
        -------
        The demo function returns the length of the input argument list.
        This case aims to test whether the demo function returns `1` if input is `None`.
        """
        # demo function test
        dir_path = os.path.join(os.environ['UNIT_TEST_DATA_ROOT'],'ifs_sim/')
        print(dir_path)
        print(sys.version )
        ###configfile = dir_path+'IFS_inputdata/configData/IFS_sim_C90.config'
        
        configfile = './csst_ifs_sim/ifs_data/IFS_sim_C90.config'
      
        sourcein = 'BIAS'
        print(configfile)
                
        debug=True        
        result_path=dir_path+'ifs_sim_result'
        
        csst_ifs_sim.runIFSsim(sourcein,  configfile, dir_path, result_path, 1, debug,'no')
        
        self.assertEqual(
            1 , 1,
            "case 2:  sim passes.",
        )
        
        ###################################################################
    def test_ifs_sim_3(self):
        """
        Aim
        ---
        Test ifs sim function: SCI case.

        Criteria
        --------
        Pass if the demo function returns `1`.

        Details
        -------
        The demo function returns the length of the input argument list.
        This case aims to test whether the demo function returns `1` if input is `None`.
        """
        # demo function test
        dir_path = os.path.join(os.environ['UNIT_TEST_DATA_ROOT'],'ifs_sim/')
        print(dir_path)
        print(sys.version )
        ###configfile = dir_path+'IFS_inputdata/configData/IFS_sim_C90.config'
        
        configfile = './csst_ifs_sim/ifs_data/IFS_sim_C90.config'
      
        sourcein = 'DARK'
        print(configfile)
                
        debug=True        
        result_path=dir_path+'ifs_sim_result'
        
        csst_ifs_sim.runIFSsim(sourcein,  configfile, dir_path, result_path, 1, debug,'no')
        
        self.assertEqual(
            1 , 1,
            "case 3:  sim passes.",
        )
            
    ###################################################################
    def test_ifs_sim_4(self):
        """
        Aim
        ---
        Test ifs sim function: SCI case.

        Criteria
        --------
        Pass if the demo function returns `1`.

        Details
        -------
        The demo function returns the length of the input argument list.
        This case aims to test whether the demo function returns `1` if input is `None`.
        """
        # demo function test
        dir_path = os.path.join(os.environ['UNIT_TEST_DATA_ROOT'],'ifs_sim/')
        print(dir_path)
        print(sys.version )
        ###configfile = dir_path+'IFS_inputdata/configData/IFS_sim_C90.config'
        
        configfile = './csst_ifs_sim/ifs_data/IFS_sim_C90.config'
      
        sourcein = 'LAMP'
        print(configfile)
                
        debug=True        
        
        result_path=dir_path+'ifs_sim_result'
        
        csst_ifs_sim.runIFSsim(sourcein,  configfile, dir_path, result_path, 1, debug,'no')
        
        self.assertEqual(
            1 , 1,
            "case 4:  sim passes.",
        )  
        
    ###################################################################
    def test_ifs_sim_5(self):
        """
        Aim
        ---
        Test ifs sim function: SCI case.

        Criteria
        --------
        Pass if the demo function returns `1`.

        Details
        -------
        The demo function returns the length of the input argument list.
        This case aims to test whether the demo function returns `1` if input is `None`.
        """
        # demo function test
        dir_path = os.path.join(os.environ['UNIT_TEST_DATA_ROOT'],'ifs_sim/')
        print(dir_path)
        print(sys.version )
        ###configfile = dir_path+'IFS_inputdata/configData/IFS_sim_C90.config'
        
        configfile = './csst_ifs_sim/ifs_data/IFS_sim_C90.config'
      
        sourcein = 'LAMP'
        print(configfile)
                
        debug=True        
        result_path=dir_path+'ifs_sim_result'
        
        csst_ifs_sim.runIFSsim(sourcein,  configfile, dir_path, result_path, 1, debug,'yes')
        self.assertEqual(
            1 , 1,
            "case 5:  sim passes.",
        )
        
    ###################################################################
    def test_ifs_sim_6(self):
        """
        Aim
        ---
        Test ifs sim function: SCI case.

        Criteria
        --------
        Pass if the demo function returns `1`.

        Details
        -------
        The demo function returns the length of the input argument list.
        This case aims to test whether the demo function returns `1` if input is `None`.
        """
        # demo function test
        dir_path = os.path.join(os.environ['UNIT_TEST_DATA_ROOT'],'ifs_sim/')
        print(dir_path)
        print(sys.version )
        ###configfile = dir_path+'IFS_inputdata/configData/IFS_sim_C90.config'
        
        configfile = './csst_ifs_sim/ifs_data/IFS_sim_C90.config'
      
        sourcein = 'FLAT'
        print(configfile)
                
        debug=True        
        
        result_path=dir_path+'ifs_sim_result'
        
        csst_ifs_sim.runIFSsim(sourcein,  configfile, dir_path, result_path, 1, debug, 'no')
        self.assertEqual(
            1 , 1,
            "case 6:  sim passes.",
        )
            
         