casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables
test_sdflagmanager.py
Go to the documentation of this file.
00001 import os
00002 import sys
00003 import shutil
00004 from __main__ import default
00005 from tasks import *
00006 from taskinit import *
00007 import unittest
00008 #
00009 import listing
00010 from numpy import array
00011 
00012 import asap as sd
00013 from sdflagmanager import sdflagmanager
00014 from sdstat import sdstat
00015 
00016 class sdflagmanager_test(unittest.TestCase):
00017     """
00018     Basic unit tests for task sdflagmanager.
00019 
00020     The list of tests:
00021     test00   --- testing the mode 'list'
00022     test01   --- testing the mode 'save'
00023     test02   --- testing the mode 'restore'
00024     test03   --- testing the mode 'delete'
00025     test04   --- testing the mode 'rename'
00026     """
00027     # Data path of input/output
00028     datapath=os.environ.get('CASAPATH').split()[0] + '/data/regression/unittest/sdflagmanager/'
00029     # Input and output names
00030     infile = 'OrionS_rawACSmod_cal2123.asap'
00031     vdir = infile+'.flagversions'
00032     vdatafileprefix = vdir+'/flags.'
00033     vlistfile = vdir+'/FLAG_VERSION_LIST'
00034 
00035     def setUp(self):
00036         if os.path.exists(self.infile):
00037             shutil.rmtree(self.infile)
00038         shutil.copytree(self.datapath+self.infile, self.infile)
00039         if os.path.exists(self.vdir):
00040             shutil.rmtree(self.vdir)
00041 
00042         default(sdflagmanager)
00043 
00044     def tearDown(self):
00045         if os.path.exists(self.infile):
00046             shutil.rmtree(self.infile)
00047         if os.path.exists(self.vdir):
00048             shutil.rmtree(self.vdir)
00049 
00050     def test00(self):
00051         """Test 0: list"""
00052         infile = self.infile
00053         mode = "list"
00054         result = sdflagmanager(infile=infile,mode=mode)
00055         self.assertEqual(result, None, msg="The task returned '"+str(result)+"' instead of None")
00056 
00057         items = []
00058         for line in open(self.vlistfile, 'r'):
00059             items.append(line.split(' : '))
00060         self.assertEqual(len(items), 0, msg="The FLAG_VERSION_LIST must be empty.")
00061 
00062     def test01(self):
00063         """Test 1: save"""
00064         versionname = "v1"
00065         comment = "first_version"
00066         result = sdflagmanager(infile=self.infile,mode="save",versionname=versionname,comment=comment,merge="replace")
00067         self.assertEqual(result, None, msg="The task returned '"+str(result)+"' instead of None")
00068 
00069         vdatafile = self.vdatafileprefix+versionname
00070         self.assertTrue(os.path.exists(vdatafile))
00071         
00072         items = []
00073         for line in open(self.vlistfile, 'r'):
00074             items.append(line.strip().split(' : '))
00075         self.assertEqual(len(items), 1, msg="The FLAG_VERSION_LIST must contain just 1 version.")
00076 
00077         res = (items[0][0] == versionname) and (items[0][1] == comment)
00078         self.assertEqual(res, True, msg="The version name is not saved correctly.")
00079 
00080 
00081     def test02(self):
00082         """Test 2: restore"""
00083         versionname = "v1"
00084         comment = "first_version"
00085         result = sdflagmanager(infile=self.infile,mode="save",versionname=versionname,comment=comment,merge="replace")
00086         self.assertEqual(result, None, msg="The task returned '"+str(result)+"' instead of None")
00087 
00088         scan = sd.scantable(filename=self.infile, average=False)
00089         scan.flag(row=2)
00090         scan.flag_row(rows=[3])
00091         scan.save(self.infile, overwrite=True)
00092         del scan
00093 
00094         result = sdflagmanager(infile=self.infile,mode="restore",versionname=versionname,merge="replace")
00095         self.assertEqual(result, None, msg="The task returned '"+str(result)+"' instead of None")
00096 
00097         scan = sd.scantable(filename=self.infile, average=False)
00098         mask = scan.get_mask(2)
00099         res = True
00100         for i in range(len(mask)):
00101             if not mask[i]:
00102                 res = False
00103                 break
00104         self.assertTrue(res)
00105         self.assertFalse(scan._getflagrow(3))
00106         del scan
00107 
00108 
00109     def test03(self):
00110         """Test 3: delete"""
00111         versionnames = ["v1", "v2"]
00112         comments = ["first_version", "second_version"]
00113         for i in range(len(versionnames)):
00114             result = sdflagmanager(infile=self.infile,mode="save",versionname=versionnames[i],comment=comments[i],merge="replace")
00115 
00116         delvername = "v1"
00117         result = sdflagmanager(infile=self.infile,mode="delete",versionname=delvername)
00118         self.assertEqual(result, None, msg="The task returned '"+str(result)+"' instead of None")
00119 
00120         delvdatafile = self.vdatafileprefix+delvername
00121         self.assertFalse(os.path.exists(delvdatafile))
00122         
00123         items = []
00124         for line in open(self.vlistfile, 'r'):
00125             items.append(line.strip().split(' : '))
00126         self.assertEqual(len(items), 1, msg="The FLAG_VERSION_LIST must contain just 1 version.")
00127 
00128         res = (items[0][0] == versionnames[1]) and (items[0][1] == comments[1])
00129         self.assertEqual(res, True, msg="The version name is not deleted correctly.")
00130         
00131 
00132     def test04(self):
00133         """Test 4: rename"""
00134         oldname = "v1"
00135         oldcomment = "first_version"
00136         result = sdflagmanager(infile=self.infile,mode="save",versionname=oldname,comment=oldcomment,merge="replace")
00137         self.assertEqual(result, None, msg="The task returned '"+str(result)+"' instead of None")
00138 
00139         newname = "renamed_v1"
00140         newcomment = "renamed_first_version"
00141         result = sdflagmanager(infile=self.infile,mode="rename",oldname=oldname,versionname=newname,comment=newcomment)
00142         self.assertEqual(result, None, msg="The task returned '"+str(result)+"' instead of None")
00143         
00144         vdatafile = self.vdatafileprefix+newname
00145         self.assertTrue(os.path.exists(vdatafile))
00146         
00147         items = []
00148         for line in open(self.vlistfile, 'r'):
00149             items.append(line.strip().split(' : '))
00150         self.assertEqual(len(items), 1, msg="The FLAG_VERSION_LIST must contain just 1 version.")
00151 
00152         res = (items[0][0] == newname) and (items[0][1] == newcomment)
00153         self.assertEqual(res, True, msg="The version name is not renamed correctly.")
00154 
00155 
00156 
00157     def _compareBLparam(self,out,reference):
00158         # test if baseline parameters are equal to the reference values
00159         # currently comparing every lines in the files
00160         # TO DO: compare only "Fitter range" and "Baseline parameters"
00161         self.assertTrue(os.path.exists(out))
00162         self.assertTrue(os.path.exists(reference),
00163                         msg="Reference file doesn't exist: "+reference)
00164         self.assertTrue(listing.compare(out,reference),
00165                         'New and reference files are different. %s != %s. '
00166                         %(out,reference))
00167 
00168 
00169 
00170 
00171 
00172 def suite():
00173     return [sdflagmanager_test]