Skip to content

Commit

Permalink
refs #6667 Extracted unit tests for the interfaces
Browse files Browse the repository at this point in the history
and added them to CMakeLists.txt
  • Loading branch information
abuts committed Jul 5, 2013
1 parent c177bb1 commit 5513e30
Show file tree
Hide file tree
Showing 5 changed files with 250 additions and 232 deletions.
5 changes: 4 additions & 1 deletion Code/Mantid/scripts/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
set ( TEST_PY_FILES test/ReducerTest.py )
set ( TEST_PY_FILES test/ReducerTest.py
test/DgreduceTest.py
test/DirectEnergyConversionTest.py
)

# python unit tests
if (PYUNITTEST_FOUND)
Expand Down
222 changes: 3 additions & 219 deletions Code/Mantid/scripts/Inelastic/DirectEnergyConversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -1357,225 +1357,9 @@ def help(self,keyword=None) :
else:
raise ValueError('Instrument parameter file does not contain a definition for "%s". Cannot continue' % keyword)

#-----------------------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------------------
class DirectEnergyConversionTest(unittest.TestCase):
def __init__(self, methodName):
self.reducer = None
return super(DirectEnergyConversionTest, self).__init__(methodName)

def setUp(self):
if self.reducer == None or type(self.reducer) != type(DirectEnergyConversion):
self.reducer = DirectEnergyConversion("MAPS");
def tearDown(self):
pass

def test_build_subst_dictionary(self):
self.assertEqual(dict(), DirectEnergyConversion.build_subst_dictionary(""))
self.assertEqual(dict(),DirectEnergyConversion.build_subst_dictionary())

self.assertRaises(AttributeError,DirectEnergyConversion.build_subst_dictionary,10)
self.assertRaises(AttributeError,DirectEnergyConversion.build_subst_dictionary,"A=")
self.assertRaises(AttributeError,DirectEnergyConversion.build_subst_dictionary,"B=C;A=")

rez=dict();
rez['A']='B';
self.assertEqual(rez, DirectEnergyConversion.build_subst_dictionary(rez))

myDict = DirectEnergyConversion.build_subst_dictionary("A=B")
self.assertEqual(myDict['B'],'A')

myDict = DirectEnergyConversion.build_subst_dictionary("A=B;C=DD")
self.assertEqual(myDict['B'],'A')
self.assertEqual(myDict['DD'],'C')
myDict = DirectEnergyConversion.build_subst_dictionary("A=B=C=DD")
self.assertEqual(myDict['B'],'A')
self.assertEqual(myDict['DD'],'A')
self.assertEqual(myDict['C'],'A')

myDict = DirectEnergyConversion.build_subst_dictionary("A = B = C=DD")
self.assertEqual(myDict['B'],'A')
self.assertEqual(myDict['DD'],'A')
self.assertEqual(myDict['C'],'A')

#def test_build_coupled_keys_dict_simple(self):
# params = ["];

def test_init_reducer(self):
tReducer = self.reducer
self.assertTrue(tReducer._idf_values_read)

tReducer.initialise("MAP",True);
self.assertEqual(tReducer.instr_name,"MAP")

#config.setFacility("SNS")
#config.setString('default.facility','SNS')
tReducer.instr_name = 'SEQ'
self.assertTrue(tReducer._idf_values_read)
self.assertEqual(tReducer.instr_name,"SEQ")
self.assertEqual(tReducer.facility,'SNS')

tReducer.instr_name = 'MER'
self.assertEqual(tReducer.instr_name,"MER")
self.assertEqual(tReducer.facility,'ISIS')

self.assertRaises(KeyError,setattr,tReducer,'instr_name','NonExistingInstrument')


def test_set_non_default_wrong_value(self):
tReducer = self.reducer
# should do nothing as already initialized above
tReducer.initialise("MAP")

# non-existing property can not be set!
self.assertRaises(KeyError,tReducer.set_input_parameters,non_existing_property="Something_Meaningfull")

def test_set_non_default_simple_value(self):
tReducer = self.reducer
# should do nothing as already initialized above
tReducer.initialise("MAP");

prop_changed=tReducer.set_input_parameters(van_mass=100,det_cal_file='det4to1_1912.dat')
self.assertTrue("van_mass" in prop_changed)
self.assertTrue("det_cal_file" in prop_changed)

self.assertEqual(tReducer.van_mass,100);
self.assertEqual(tReducer.det_cal_file,'det4to1_1912.dat');

self.assertAlmostEqual(tReducer.van_sig,0.,7)
kw=dict();
kw["vanadium-mass"]=200
kw["diag_van_median_sigma"]=1
kw["det_cal_file"]=None
kw["save_format"]=''
prop_changed=tReducer.set_input_parameters(**kw)

self.assertTrue("van_mass" in prop_changed,"vanadium-mass should correspond to van_mass")
self.assertTrue("van_sig" in prop_changed," diag_van_median_sigma should correspond to van_sig ")

self.assertEqual(tReducer.van_mass,200);
self.assertEqual(tReducer.det_cal_file,None);
self.assertAlmostEqual(tReducer.van_sig,1.,7)



def test_set_non_default_comples_value(self):
tReducer = self.reducer
# should do nothing as already initialized above, but if not will initiate the instrument
tReducer.initialise("MAP");

self.assertEqual(tReducer.norm_mon_integration_range,[1000.,2000.]," Default integration range on MAPS should be as described in MAPS_Parameters.xml file")
self.assertEqual(tReducer.ei_mon_spectra,[41474,41475]," Default ei monitors on MAPS should be as described in MAPS_Parameters.xml file")

self.assertRaises(KeyError,tReducer.set_input_parameters,mon_norm_range=1)
self.assertRaises(KeyError,tReducer.set_input_parameters,mon_norm_range=[10,100,100])

kw=dict();
kw["norm_mon_integration_range"]=[50,1050]
kw["ei-mon1-spec"]=10
prop_changed=tReducer.set_input_parameters(**kw)

self.assertAlmostEqual(tReducer.norm_mon_integration_range,[50,1050],7)
self.assertEqual(tReducer.ei_mon_spectra,[10,41475])

self.assertTrue("norm_mon_integration_range" in prop_changed,"mon_norm_range should change")
self.assertTrue("ei_mon_spectra" in prop_changed,"changing ei-mon1-spec should change ei_mon_spectra")

def test_set_non_default_comples_value_synonims(self):
tReducer = self.reducer
# should do nothing as already initialized above, but if not will initiate the instrument
tReducer.initialise("MAP");
#
kw = dict();
kw["test_ei2_mon_spectra"]=10000
prop_changed=tReducer.set_input_parameters(**kw)

self.assertEqual(tReducer.ei_mon_spectra,[41474,10000])
self.assertTrue("ei_mon_spectra" in prop_changed,"changing test_ei2_mon_spectra should change ei_mon_spectra")

prop_changed=tReducer.set_input_parameters(test_mon_spectra_composite=[10000,2000])

self.assertEqual(tReducer.ei_mon_spectra,[10000,2000])
self.assertTrue("ei_mon_spectra" in prop_changed,"changing test_mon_spectra_composite should change ei_mon_spectra")

def test_set_get_mono_range(self):
tReducer = self.reducer
# should do nothing as already initialized above, but if not will initiate the instrument
tReducer.initialise("MAP");

energy_incident = 100
tReducer.incident_energy = energy_incident
hi_frac = tReducer.monovan_hi_frac
lo_frac = tReducer.monovan_lo_frac
tReducer.monovan_integr_range = None
self.assertEqual(tReducer.monovan_integr_range,[lo_frac*energy_incident,hi_frac*energy_incident])

def test_comlex_get(self):
tReducer = self.reducer

van_rmm = tReducer.van_rmm;
self.assertEqual(50.9415,van_rmm)

def test_comlex_set(self):
tReducer = self.reducer

tReducer.energy_bins='-30,3,10'
self.assertEqual([-30,3,10],tReducer.energy_bins)

tReducer.energy_bins=[-20,4,100]
self.assertEqual([-20,4,100],tReducer.energy_bins)

tReducer.map_file = "some_map"
self.assertEqual("some_map.map",tReducer.map_file)
tReducer.monovan_mapfile = "other_map"
self.assertEqual("other_map.map",tReducer.monovan_mapfile)

tReducer.monovan_mapfile = "other_map.myExt"
self.assertEqual("other_map.myExt",tReducer.monovan_mapfile)

tReducer.save_format = 'unknown'
self.assertTrue(tReducer.save_format is None)

tReducer.save_format = '.spe'
self.assertEqual('.spe',tReducer.save_format)

def test_set_format(self):
tReducer = self.reducer

tReducer.save_format = '';
self.assertTrue(tReducer.save_format is None)

#self.assertRaises(KeyError,tReducer.energy_bins=20,None)
def test_default_warnings(self):
tReducer = self.reducer

keys_changed=['somethins_else1','sample_mass','sample_rmm','somethins_else2']

self.assertEqual(0,tReducer.check_abs_norm_defaults_changed(keys_changed))

keys_changed=['somethins_else1','sample_rmm','somethins_else2']
self.assertEqual(1,tReducer.check_abs_norm_defaults_changed(keys_changed))

keys_changed=['somethins_else1','somethins_else2']
self.assertEqual(2,tReducer.check_abs_norm_defaults_changed(keys_changed))
def test_do_white(self) :
tReducer = self.reducer
monovan = 1000
data = None
name = tReducer.make_ckpt_name('do_white',monovan,data,'t1')
self.assertEqual('do_white1000t1',name)


#def test_diag_call(self):
# tReducer = self.reducer
# # should do nothing as already initialized above, but if not will initiate the instrument
# tReducer.initialise("MAP")

# tReducet.di


#-----------------------------------------------------------------
if __name__=="__main__":
unittest.main()
if __name__=="__main__":
pass
#unittest.main()
4 changes: 2 additions & 2 deletions Code/Mantid/scripts/Inelastic/dgreduce.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
Reducer = None

# Statement used at debug time to pull changes in DirectEnergyConversion into Mantid
DRC=reload(DRC)
#DRC=reload(DRC)

def setup(instname=None,reload=False):
"""
Expand Down Expand Up @@ -140,7 +140,7 @@ def arb_units(wb_run,sample_run,ei_guess,rebin,map_file='default',monovan_run=No
# --------------------------------------------------------------------------------------------------------
# Deal with mandatory parameters for this and may be some top level procedures
# --------------------------------------------------------------------------------------------------------
if isinstance(sample_run,api.Workspace):
if isinstance(sample_run,api.Workspace) or (isinstance(sample_run,str) and sample_run in mtd):
Reducer.log('DGreduce run for: '+Reducer.instr_name+' Run for workspace name: '+str(sample_run))
else:
Reducer.log('DGreduce run for: '+Reducer.instr_name+' Run number/s: '+str(sample_run))
Expand Down
49 changes: 49 additions & 0 deletions Code/Mantid/scripts/test/DgreduceTest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
class DgreduceTest(unittest.TestCase):
def __init__(self, methodName):
setup("MAPS")
return super(DgreduceTest, self).__init__(methodName)

def setUp(self):
pass

def tearDown(self):
pass

def test_run_help(self):
self.assertRaises(ValueError,help,'rubbish')
help("monovan_lo_bound")
def test_process_legacy_parameters(self):
kw=dict();
kw["hardmaskOnly"]="someFileName"
kw["someKeyword"] ="aaaa"
kw["normalise_method"] ="Monitor-1"
params = process_legacy_parameters(**kw);
self.assertEqual(len(params),4)
self.assertTrue("someKeyword" in params);
self.assertTrue("hard_mask_file" in params);
self.assertTrue("use_hard_mask_only" in params)
self.assertEqual(params['normalise_method'],'monitor-1')

def test_setup(self):

setup('mari')
self.assertTrue(not (Reducer is None))

self.assertEqual(Reducer.instr_name,'MAR')

Reducer.save_format = ''
self.assertTrue(Reducer.save_format is None)

Reducer.save_format = 'none'
self.assertTrue(Reducer.save_format is None)

Reducer.save_format = []
self.assertTrue(Reducer.save_format is None)

def test_setup_empty(self):
# clear up singleton
global Reducer
Reducer = None


setup(None)

0 comments on commit 5513e30

Please sign in to comment.