Commit c41c774afda57845fb9b4032ba6daad5fb5295f9

Authored by jean perrot
1 parent 047380aa

test ctselect add functionnal tests and invalide phase tests

Showing 1 changed file with 188 additions and 157 deletions
test/test_ctselect.py
... ... @@ -56,11 +56,9 @@ class Test(test):
56 56  
57 57 # Append tests
58 58 self.append(self._test_cmd, 'Test ctselect on command line')
59   - self.append(self._test_empty_ctselect_tool, 'CTSELECT - Test empty ctselect tool')
60   - self.append(self._test_saving_empty_does_nothing, 'CTSELECT - Test saving empty does nothing')
61   - self.append(self._test_with_parameters,'CTSELECT - Test with parameters')
  59 + self.append(self._test_init, 'CTSELECT - Test constructor and init')
  60 + self.append(self._test_save_empty_does_nothing, 'CTSELECT - Test save empty does nothing')
62 61 self.append(self._test_time_selection,'CTSELECT - Test time_selection')
63   - self.append(self._test_for_ctselect_copy,'CTSELECT - Test ctselect copy')
64 62 self.append(self._test_set_emin_emax, 'CTSELECT - Test set emin emax')
65 63 self.append(self._test_clear,'CTSELECT - Test Clear')
66 64 self.append(self._test_copy,'CTSELECT - Test Copy')
... ... @@ -79,7 +77,14 @@ class Test(test):
79 77 self.append(self._test_phase_selection_2inter, 'CTSELECT - Test phase_selection 2 interval')
80 78 self.append(self._test_phase_selection_first_inter, 'CTSELECT - Test phase_selection first interval')
81 79 self.append(self._test_phase_selection_second_inter, 'CTSELECT - Test phase_selection second interval')
82   - self.append(self._test_invalid_phase_value_string, 'CTSELECT - Test invalid phase value or string')
  80 + self.append(self._test_phase_invalid_min_negative,'CTSELECT - Test phase min negative value')
  81 + self.append(self._test_phase_invalid_max_negative,'CTSELECT - Test phase max negative value')
  82 + self.append(self._test_phase_invalid_minsupmax,'CTSELECT - Test phase min sup max')
  83 + self.append(self._test_phase_invalid_missmin,'CTSELECT - Test phase missing min value')
  84 + self.append(self._test_phase_invalid_missmax,'CTSELECT - Test phase missing max value')
  85 + self.append(self._test_phase_invalid_syntax,'CTSELECT - Test phase invalid syntax')
  86 + self.append(self._FuncTest_copy_none,'CTSELECT - Functionnal Test ctselect copy and none param')
  87 + self.append(self._Functest_with_parameters,'CTSELECT - Test with parameters')
83 88  
84 89 # Return
85 90 return
... ... @@ -299,8 +304,8 @@ class Test(test):
299 304 # Return
300 305 return
301 306  
302   - # Unit Test empty ctselect tool
303   - def _test_empty_ctselect_tool(self):
  307 + # Unit Test constructor and init ------------------------------------------------------------------
  308 + def _test_init(self):
304 309 """
305 310 Unit Test empty ctselect tool
306 311  
... ... @@ -315,16 +320,16 @@ class Test(test):
315 320 # Return
316 321 return
317 322  
318   - # Unit Test saving does nothing
319   - def _test_saving_empty_does_nothing(self):
  323 + # Unit Test save empty does nothing -----------------------------------------------------------------
  324 + def _test_save_empty_does_nothing(self):
320 325 """
321 326 Unit Test saving empty does nothing
322 327  
323 328 """
324   - select = self._setup(outobs='ctselect_py0.fits',logfile='ctselect_py0.log')
  329 + select = self._setup(outobs='ctselect_py_SaveEmpty.fits',logfile='ctselect_py_SaveEmpty.log')
325 330  
326 331 select.save()
327   - self.test_assert(not os.path.isfile('ctselect_py0.fits'),
  332 + self.test_assert(not os.path.isfile('ctselect_py_SaveEmpty.fits'),
328 333 'Check that no event list has been created')
329 334  
330 335 self._teardown(select)
... ... @@ -332,29 +337,7 @@ class Test(test):
332 337 # Return
333 338 return
334 339  
335   - # Unit Test with parameters
336   - def _test_with_parameters(self):
337   - """
338   - Unit Test with parameters
339   -
340   - """
341   - select = self._setup(inobs=self._events,tmin=500.0,tmax=1000.0,emin=0.2,emax=80,outobs='ctselect_py21.fits',logfile='ctselect_py21.log')
342   -
343   - # Run ctselect tool
344   - select.logFileOpen() # Make sure we get a log file
345   - select.run()
346   - select.save()
347   -
348   - # Check result file
349   - self._check_result_file('ctselect_py21.fits', 'with parameters')
350   -
351   -
352   - self._teardown(select)
353   -
354   - # Return
355   - return
356   -
357   - # Unit Test time selection function --------------------------------------------
  340 + # Unit Test time selection function -----------------------------------------------------------------------
358 341 def _test_time_selection(self):
359 342 """
360 343 Unit Test time selection
... ... @@ -376,7 +359,7 @@ class Test(test):
376 359 # Return
377 360 return
378 361  
379   - # Unit Test set ebounds function -----------------------------------------------------
  362 + # Unit Test set ebounds function --------------------------------------------------------------------------
380 363 def _test_set_ebounds_usetresh_user(self):
381 364 """
382 365 Unit Test set ebounds with USER usetresh
... ... @@ -450,6 +433,8 @@ class Test(test):
450 433  
451 434 self._teardown(select)
452 435  
  436 + # Return
  437 + return
453 438  
454 439 # Unit Test for copy ---------------------------------------------------------------------------------
455 440 def _test_copy(self):
... ... @@ -472,78 +457,10 @@ class Test(test):
472 457  
473 458 self._teardown(select)
474 459  
475   -
476   - # Unit Test for ctselect copy
477   - def _test_for_ctselect_copy(self):
478   - """
479   - Unit Test for ctselect copy
480   -
481   - """
482   - select = self._setup(inobs=self._events,tmin=500.0,tmax=1000.0,emin=0.2,emax=80,outobs='ctselect_py1.fits',logfile='ctselect_py1.log')
483   -
484   - # Run ctselect tool
485   - select.logFileOpen() # Make sure we get a log file
486   - select.run()
487   - select.save()
488   -
489   - # Copy ctselect tool
490   - cpy_select = select.copy()
491   -
492   - # Check observation of ctselect copy
493   - self._check_obs(cpy_select.obs(), 'ctselect copy')
494   -
495   - # Execute copy of ctselect tool again, now with a higher chatter
496   - # level than before and without any selection. Since the tools
497   - # still holds the same selected observation container from before
498   - # the number of events will be identical.
499   - cpy_select['ra'] = 'NONE'
500   - cpy_select['dec'] = 'NONE'
501   - cpy_select['rad'] = 'NONE'
502   - cpy_select['tmin'] = 'NONE'
503   - cpy_select['tmax'] = 'NONE'
504   - cpy_select['emin'] = 'NONE'
505   - cpy_select['emax'] = 'NONE'
506   - cpy_select['outobs'] = 'ctselect_py2.fits'
507   - cpy_select['logfile'] = 'ctselect_py2.log'
508   - cpy_select['chatter'] = 3
509   - cpy_select['publish'] = True
510   - cpy_select.logFileOpen() # Needed to get a new log file
511   - cpy_select.execute()
512   -
513   - # Check result file
514   - self._check_result_file('ctselect_py2.fits','same selected obs container')
515   -
516   - # Execute again the copy of ctselect tool again, now using the pointing
517   - # information in the input observation. We also set the minimum values
518   - # to valid event selections, but since the maximum values are still
519   - # 'NONE', no event selections should occur.
520   - cpy_select['usepnt'] = True
521   - cpy_select['tmin'] = 500.0
522   - cpy_select['emin'] = 0.2
523   - cpy_select['usethres'] = 'USER'
524   - cpy_select['outobs'] = 'ctselect_py3.fits'
525   - cpy_select['logfile'] = 'ctselect_py3.log'
526   - cpy_select['chatter'] = 4
527   - cpy_select.logFileOpen() # Needed to get a new log file
528   - cpy_select.execute()
529   -
530   - # Check result file
531   - self._check_result_file('ctselect_py3.fits', 'max value still none')
532   -
533   - # Now clear copy of ctselect tool
534   - cpy_select.clear()
535   -
536   - # Check that cleared ctselect tool holds no observations and events
537   - self._check_obs(cpy_select.obs(),'cleared ctselect tool', nobs=0)
538   -
539   -
540   - self._teardown(select)
541   -
542 460 # Return
543 461 return
544   -
545   -
546   - # Unit Test check_infile function ---------------------------------------------------------------
  462 +
  463 + # Unit Test check_infile function ------------------------------------------------------------------------------------
547 464 def _test_check_infile_invalid_event_file(self):
548 465 """
549 466 Unit Test check_infile invalid event file
... ... @@ -722,7 +639,7 @@ class Test(test):
722 639 select.save()
723 640  
724 641 # Check result file
725   - self._check_result_file('ctselect_py_ExprSelection.fits', 'time selection',nevents=3)
  642 + self._check_result_file('ctselect_py_ExprSelection.fits', 'time selection',nevents=2)
726 643  
727 644  
728 645 self._teardown(select)
... ... @@ -842,106 +759,220 @@ class Test(test):
842 759 # Return
843 760 return
844 761  
845   -
846   - # Unit Test invalid phase value or string
847   - def _test_invalid_phase_value_string(self):
  762 + def _test_phase_invalid_min_negative(self):
848 763 """
849   - Unit Test invalid phase value or string
  764 + Unit Test invalid phase min value
850 765  
851 766 """
852   - select = self._setup(inobs=self._phased_events,rad=5,tmin='INDEF',tmax='INDEF',phase='0.8:0.3',outobs='ctselect_py12.fits',logfile='ctselect_py12.log')
853   -
854   - # Run ctselect tool
855   - select.logFileOpen() # Make sure we get a log file
856   - select.execute()
  767 + select = self._setup(inobs=self._phased_events,rad=5,tmin='INDEF',tmax='INDEF',phase='-0.1:0.3',outobs='ctselect_py_PhaseMinNegative.fits',logfile='ctselect_py_PhaseMinNegative.log')
857 768  
858 769 # Test invalid minimum phase value
859 770 self.test_try('Test invalid minimum phase value -0.1:0.3')
860 771 try:
861   - select['phase'] = '-0.1:0.3'
862   - select['outobs'] = 'ctselect_py13.fits'
863   - select['logfile'] = 'ctselect_py13.log'
864 772 select.logFileOpen()
865 773 select.execute()
866 774 self.test_try_failure('Exception not thrown for "-0.1:0.3"')
867 775 except ValueError:
868 776 self.test_try_success()
  777 +
  778 + self._teardown(select)
869 779  
870   - # Test invalid minimum phase value
871   - self.test_try('Test invalid minimum phase value 1.1:0.3')
872   - try:
873   - select['phase'] = '1.1:0.3'
874   - select['outobs'] = 'ctselect_py14.fits'
875   - select['logfile'] = 'ctselect_py14.log'
876   - select.logFileOpen()
877   - select.execute()
878   - self.test_try_failure('Exception not thrown for "1.1:0.3"')
879   - except ValueError:
880   - self.test_try_success()
  780 + # Return
  781 + return
  782 +
  783 + def _test_phase_invalid_max_negative(self):
  784 + """
  785 + Unit Test invalid phase max value
881 786  
882   - # Test invalid maximum phase value
883   - self.test_try('Test invalid maximum phase value 0.1:-0.3')
  787 + """
  788 + select = self._setup(inobs=self._phased_events,rad=5,tmin='INDEF',tmax='INDEF',phase='0.1:-0.3',outobs='ctselect_py_PhaseMaxNegative.fits',logfile='ctselect_py_PhaseMaxNegative.log')
  789 +
  790 + # Test invalid minimum phase value
  791 + self.test_try('Test invalid maximun phase value 0.1:-0.3')
884 792 try:
885   - select['phase'] = '0.1:-0.3'
886   - select['outobs'] = 'ctselect_py15.fits'
887   - select['logfile'] = 'ctselect_py15.log'
888 793 select.logFileOpen()
889 794 select.execute()
890 795 self.test_try_failure('Exception not thrown for "0.1:-0.3"')
891 796 except ValueError:
892 797 self.test_try_success()
  798 +
  799 + self._teardown(select)
893 800  
894   - # Test invalid maximum phase value
895   - self.test_try('Test invalid maximum phase value 0.1:1.1')
  801 + # Return
  802 + return
  803 +
  804 + def _test_phase_invalid_minsupmax(self):
  805 + """
  806 + Unit Test invalid phase value min sup max
  807 +
  808 + """
  809 + select = self._setup(inobs=self._phased_events,rad=5,tmin='INDEF',tmax='INDEF',phase='1.1:0.3',outobs='ctselect_py_PhaseMinSupMax.fits',logfile='ctselect_py_PhaseMinSupMax.log')
  810 +
  811 + # Test invalid minimum phase value
  812 + self.test_try('Test invalid phase value 1.1:0.3')
896 813 try:
897   - select['phase'] = '0.1:1.1'
898   - select['outobs'] = 'ctselect_py16.fits'
899   - select['logfile'] = 'ctselect_py16.log'
900 814 select.logFileOpen()
901 815 select.execute()
902   - self.test_try_failure('Exception not thrown for "0.1:1.1"')
  816 + self.test_try_failure('Exception not thrown for "1.1:0.3"')
903 817 except ValueError:
904 818 self.test_try_success()
  819 +
  820 + self._teardown(select)
  821 +
  822 + # Return
  823 + return
  824 +
  825 + def _test_phase_invalid_missmin(self):
  826 + """
  827 + Unit Test invalid phase missing min
  828 +
  829 + """
  830 + select = self._setup(inobs=self._phased_events,rad=5,tmin='INDEF',tmax='INDEF',phase='0.1:',outobs='ctselect_py_PhaseMissMin.fits',logfile='ctselect_py_PhaseMissMin.log')
905 831  
906   - # Test invalid phase string
907   - self.test_try('Test invalid phase string 0.1:')
  832 + # Test invalid minimum phase value
  833 + self.test_try('Test invalid phase value 0.1:')
908 834 try:
909   - select['phase'] = '0.1:'
910   - select['outobs'] = 'ctselect_py17.fits'
911   - select['logfile'] = 'ctselect_py17.log'
912 835 select.logFileOpen()
913 836 select.execute()
914 837 self.test_try_failure('Exception not thrown for "0.1:"')
915 838 except ValueError:
916 839 self.test_try_success()
  840 +
  841 + self._teardown(select)
  842 +
  843 + # Return
  844 + return
  845 +
  846 + def _test_phase_invalid_missmax(self):
  847 + """
  848 + Unit Test invalid phase missing max
917 849  
918   - # Test invalid phase string
919   - self.test_try('Test invalid phase string :1.0')
  850 + """
  851 + select = self._setup(inobs=self._phased_events,rad=5,tmin='INDEF',tmax='INDEF',phase=':1.0',outobs='ctselect_py_PhaseMissMax.fits',logfile='ctselect_py_PhaseMissMax.log')
  852 +
  853 + # Test invalid minimum phase value
  854 + self.test_try('Test invalid phase value :1.0')
920 855 try:
921   - select['phase'] = ':1.0'
922   - select['outobs'] = 'ctselect_py18.fits'
923   - select['logfile'] = 'ctselect_py18.log'
924 856 select.logFileOpen()
925 857 select.execute()
926 858 self.test_try_failure('Exception not thrown for ":1.0"')
927 859 except ValueError:
928 860 self.test_try_success()
  861 +
  862 + self._teardown(select)
  863 +
  864 + # Return
  865 + return
  866 +
  867 + def _test_phase_invalid_syntax(self):
  868 + """
  869 + Unit Test invalid phase syntax
929 870  
930   - # Test invalid phase string
931   - self.test_try('Test invalid phase string 0.1-1.0')
  871 + """
  872 + select = self._setup(inobs=self._phased_events,rad=5,tmin='INDEF',tmax='INDEF',phase='0.1-1.0',outobs='ctselect_py_PhaseSyntax.fits',logfile='ctselect_py_PhaseSyntax.log')
  873 +
  874 + # Test invalid minimum phase value
  875 + self.test_try('Test invalid phase syntax :1.0')
932 876 try:
933   - select['phase'] = '0.1-1.0'
934   - select['outobs'] = 'ctselect_py19.fits'
935   - select['logfile'] = 'ctselect_py19.log'
936 877 select.logFileOpen()
937 878 select.execute()
938   - self.test_try_failure('Exception not thrown for "0.1-1.0"')
  879 + self.test_try_failure('Exception not thrown for ":1.0"')
939 880 except ValueError:
940 881 self.test_try_success()
941   -
  882 +
942 883 self._teardown(select)
943 884  
944 885 # Return
945 886 return
946 887  
  888 + # Functionnal Test for ctselect -------------------------------------------------------------------------------------------------
  889 + def _FuncTest_copy_none(self):
  890 + """
  891 + Functionnal Test for ctselect copy and none
  892 +
  893 + """
  894 + select = self._setup(inobs=self._events,tmin=500.0,tmax=1000.0,emin=0.2,emax=80,outobs='ctselect_py_CopyNone.fits',logfile='ctselect_py_CopyNone.log')
  895 +
  896 + # Run ctselect tool
  897 + select.logFileOpen() # Make sure we get a log file
  898 + select.run()
  899 + select.save()
  900 +
  901 + # Copy ctselect tool
  902 + cpy_select = select.copy()
  903 +
  904 + # Check observation of ctselect copy
  905 + self._check_obs(cpy_select.obs(), 'Functionnal Test for ctselect copy and none')
  906 +
  907 + # Execute copy of ctselect tool again, now with a higher chatter
  908 + # level than before and without any selection. Since the tools
  909 + # still holds the same selected observation container from before
  910 + # the number of events will be identical.
  911 + cpy_select['ra'] = 'NONE'
  912 + cpy_select['dec'] = 'NONE'
  913 + cpy_select['rad'] = 'NONE'
  914 + cpy_select['tmin'] = 'NONE'
  915 + cpy_select['tmax'] = 'NONE'
  916 + cpy_select['emin'] = 'NONE'
  917 + cpy_select['emax'] = 'NONE'
  918 + cpy_select['outobs'] = 'ctselect_py_SameCont.fits'
  919 + cpy_select['logfile'] = 'ctselect_py_SameCont.log'
  920 + cpy_select['chatter'] = 3
  921 + cpy_select['publish'] = True
  922 + cpy_select.logFileOpen() # Needed to get a new log file
  923 + cpy_select.execute()
  924 +
  925 + # Check result file
  926 + self._check_result_file('ctselect_py_SameCont.fits','same selected obs container')
  927 +
  928 + # Execute again the copy of ctselect tool again, now using the pointing
  929 + # information in the input observation. We also set the minimum values
  930 + # to valid event selections, but since the maximum values are still
  931 + # 'NONE', no event selections should occur.
  932 + cpy_select['usepnt'] = True
  933 + cpy_select['tmin'] = 500.0
  934 + cpy_select['emin'] = 0.2
  935 + cpy_select['usethres'] = 'USER'
  936 + cpy_select['outobs'] = 'ctselect_py_MaxStillNone.fits'
  937 + cpy_select['logfile'] = 'ctselect_py_MaxStillNone.log'
  938 + cpy_select['chatter'] = 4
  939 + cpy_select.logFileOpen() # Needed to get a new log file
  940 + cpy_select.execute()
  941 +
  942 + # Check result file
  943 + self._check_result_file('ctselect_py_MaxStillNone.fits', 'max value still none')
  944 +
  945 + # Now clear copy of ctselect tool
  946 + cpy_select.clear()
  947 +
  948 + # Check that cleared ctselect tool holds no observations and events
  949 + self._check_obs(cpy_select.obs(),'cleared ctselect tool', nobs=0)
  950 +
  951 +
  952 + self._teardown(select)
  953 +
  954 + # Return
  955 + return
  956 +
  957 + # Functionnal Test with randoms parameters
  958 + def _Functest_with_parameters(self):
  959 + """
  960 + Unit Test with parameters
  961 +
  962 + """
  963 + select = self._setup(inobs=self._events,tmin=500.0,tmax=1000.0,emin=0.2,emax=80,outobs='ctselect_py_FuncParam.fits',logfile='ctselect_py_FuncParam.log')
  964 +
  965 + # Run ctselect tool
  966 + select.logFileOpen() # Make sure we get a log file
  967 + select.run()
  968 + select.save()
  969 +
  970 + # Check result file
  971 + self._check_result_file('ctselect_py_FuncParam.fits', 'with parameters')
  972 +
  973 +
  974 + self._teardown(select)
  975 +
  976 + # Return
  977 + return
947 978  
948 979 \ No newline at end of file
... ...