00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071 import os
00072 import re
00073 import casac
00074 from tasks import *
00075 from taskinit import *
00076 import sha
00077 from __main__ import *
00078 import shutil
00079 import unittest
00080
00081 imagename = 'R1046_boxit'
00082 msgs = ''
00083 exp_basic_rgn = "boxit_expected_basic.rgn"
00084 exp_basic_mask = "boxit_expected_basic.mask"
00085 exp_minsize_rgn = "boxit_expected_minsize.rgn"
00086 exp_minsize_mask = "boxit_expected_minsize.mask"
00087 exp_diag_rgn = "boxit_expected_diag.rgn"
00088 exp_diag_mask = "boxit_expected_diag.mask"
00089 exp_boxstretch_rgn = "boxit_expected_boxstretch.rgn"
00090 exp_boxstretch_mask = "boxit_expected_boxstretch.mask"
00091
00092 List=[imagename,exp_basic_rgn,exp_basic_mask,exp_minsize_rgn,exp_minsize_mask,
00093 exp_diag_rgn,exp_diag_mask,exp_boxstretch_rgn,exp_boxstretch_mask]
00094
00095 def compare_region(expected_region_file, got_region_file):
00096
00097 f = open(expected_region_file, 'r')
00098 expected_sha1 = sha.sha(f.read()).hexdigest()
00099 f.close()
00100 f = open(got_region_file, 'r')
00101 got_sha1 = sha.sha(f.read()).hexdigest()
00102 f.close()
00103 return expected_sha1 == got_sha1
00104
00105 def compare_mask(expected_mask, got_mask, difference_image):
00106 if (not immath(imagename=[expected_mask, got_mask], mode='evalexpr', expr='IM0-IM1', outfile=difference_image)):
00107 return False
00108 if not ia.open(difference_image):
00109 return False
00110 pixels = ia.getchunk()
00111 ia.done()
00112 return not pixels.any()
00113
00114
00115 class boxit_test(unittest.TestCase):
00116
00117 def setUp(self):
00118 if(os.path.exists(List[0])):
00119 for file in List:
00120 os.system('rm -rf ' +file)
00121
00122 datapath=os.environ.get('CASAPATH').split()[0]+'/data/regression/boxit/'
00123 for file in List:
00124 os.system('cp -r ' +datapath+file +' ' +file)
00125
00126 def tearDown(self):
00127 for file in List:
00128 os.system('rm -rf ' +file)
00129
00130 def test_basic(self):
00131 """Boxit: Basic test to ensure correct region file is being written"""
00132 success = True
00133 test = "Basic boxit test to ensure correct region file is being written"
00134 global msgs, imagename
00135 regionfile = 'boxit_basic.box'
00136 mask = 'boxit_basic.mask'
00137 boxit(imagename=imagename, threshold=.5, regionfile=regionfile, maskname=mask)
00138 if (not compare_region(exp_basic_rgn, regionfile)):
00139 success = False
00140 msgs += test + ": region file not correctly written"
00141 if (not compare_mask(exp_basic_mask, mask, 'basic_mask_diff')):
00142 success = False
00143 msgs += test + ": mask not correctly written"
00144 self.assertTrue(success,msgs)
00145
00146 def test_minsize(self):
00147 """Boxit: Test of non-default minsize parameter"""
00148 success = True
00149 test = "Test of non-default minsize parameter"
00150 global msgs, imagename
00151 regionfile = "boxit_minsize.box"
00152 mask = "boxit_minsize.mask"
00153 boxit(imagename=imagename, threshold=.5, regionfile=regionfile, maskname=mask, minsize=10)
00154 if (not compare_region(exp_minsize_rgn, regionfile)):
00155 success = False
00156 msgs += test + ": did not write expected region file"
00157 if (not compare_mask(exp_minsize_mask, mask, 'minsize_mask_diff')):
00158 success = False
00159 msgs += test + ": mask not correctly written"
00160 self.assertTrue(success,msgs)
00161
00162 def test_diag(self):
00163 """Boxit: Test of non-default diag parameter"""
00164 success = True
00165 test = "Test of non-default diag parameter"
00166 global msgs, imagename
00167 regionfile = 'boxit_diag.box'
00168 mask = 'boxit_diag.mask'
00169 boxit(imagename=imagename, threshold=.5, regionfile=regionfile, maskname=mask, minsize=10, diag=True)
00170 if (not compare_region(exp_diag_rgn, regionfile)):
00171 success = False
00172 msgs += test + ": did not write expected region file"
00173 if (not compare_mask(exp_diag_mask, mask, 'diag_mask_diff')):
00174 success = False
00175 msgs += test + ": mask not correctly written"
00176 self.assertTrue(success,msgs)
00177
00178 def test_boxstretch(self):
00179 """Boxit: Test of non-default boxstretch parameter"""
00180 success = True
00181 test = "Test of non-default boxstretch parameter"
00182 global msgs, imagename
00183 regionfile = "boxit_boxtretch.box"
00184 mask = "boxit_boxtretch.mask"
00185 boxit(imagename=imagename, threshold=.5, regionfile=regionfile, maskname=mask, boxstretch=5)
00186 if (not compare_region(exp_boxstretch_rgn, regionfile)):
00187 success = False
00188 msgs += test + ": did not write expected region file"
00189 if (not compare_mask(exp_boxstretch_mask, mask, 'boxstretch_mask_diff')):
00190 success = False
00191 msgs += test + ": mask not correctly written"
00192 self.assertTrue(success,msgs)
00193
00194 def test_CAS_2059(self):
00195 '''Boxit: CAS-2059 confirm that imagename can contain dashes'''
00196 test = "CAS-2059: confirm imagename can contain dashes"
00197 success = True
00198 global msgs, imagename
00199 myimagename = "I+am-a*weird*name"
00200 shutil.copytree(imagename, myimagename)
00201 regionfile = 'boxit_basic_2.box'
00202 mask = 'boxit_basic_2.mask'
00203 boxit(imagename=myimagename, threshold=.5, regionfile=regionfile, maskname=mask)
00204 if (not compare_region(exp_basic_rgn, regionfile)):
00205 success = False
00206 msgs += test + ": region file not correctly written"
00207 if (not compare_mask(exp_basic_mask, mask, 'basic_mask_diff_2')):
00208 success = False
00209 msgs += test + ": mask not correctly written"
00210
00211 self.assertTrue(success,msgs)
00212
00213
00214 def suite():
00215 return [boxit_test]