Commits

extend empty selection test to check getdata behaves, re CAS-11239

gcwrap/python/scripts/tests/test_mstool.py

Modified
27 27 #
28 28 # Test suite for the CASA ms tool,
29 29 # using examples from ms.xml
30 30 #
31 31 ###########################################################################
32 32
33 33 import shutil
34 34 import os
35 35 import time
36 36 import unittest
37 -from numpy import array, testing, where
37 +from numpy import array, ndarray, testing, where
38 38 from math import ceil
39 39
40 40 from taskinit import mstool, cbtool
41 41
42 42 datadir = os.environ.get('CASAPATH').split()[0]+'/data/regression/'
43 43 datafile = os.path.join(datadir, "unittest/listobs/ngc5921_ut.ms")
44 44 print 'ms tool tests will use data from '+ datafile
45 45
46 46 class mstool_test_base(unittest.TestCase):
47 47
490 490 self.assertAlmostEqual(rec['data'][0][0][0], (3.1573812961578369+0j))
491 491 # test polarization conversion
492 492 self.ms.reset()
493 493 self.ms.selectpolarization(["XX"])
494 494 rec = self.ms.getdata(["axis_info", "data"])
495 495 testing.assert_array_equal(rec["axis_info"]["corr_axis"], ["XX"])
496 496 self.assertEqual(rec['data'].shape[0], 1)
497 497 self.assertAlmostEqual(rec['data'][0][0][0], (2.7459716796875+0j))
498 498 print
499 499
500 - def test_select_empty(self):
501 - """test ms.select with empty selection"""
500 + def test_select_getdata_empty(self):
501 + """test ms.select() and ms.getdata() with empty selection"""
502 502 self.assertTrue(self.ms.selectinit())
503 503 self.assertEqual(self.ms.nrow(True), 22653)
504 504
505 505 # This ms has scans 1-7 only. casacore will throw a MSSelectionNullSelection
506 + # ms.msselect should return false and the selection set to empty=0 rows
506 507 field = 'N5921_2'
507 508 scan = '9999'
508 509 sel={'field': field, 'scan': scan}
509 510 total_rows = 22653
510 511 self.assertEqual(False, self.ms.msselect(sel))
511 512 self.assertEqual(self.ms.nrow(True), 0)
512 513 self.assertEqual(self.ms.nrow(), total_rows)
513 514 self.assertEqual(self.ms.msselectedindices()['field'].size, 1)
514 515 self.assertEqual(self.ms.msselectedindices()['field'][0], 2)
515 516 self.assertEqual(self.ms.msselectedindices()['scan'].size, 1)
516 517 self.assertEqual(self.ms.msselectedindices()['scan'][0], int(scan))
518 + # ms.getdata should handle the empty selection gracefully and return an empty dict
519 + self.assertEqual({}, self.ms.getdata(["axis_info", "data"]))
520 +
517 521 self.ms.reset()
518 522 self.assertEqual(self.ms.nrow(True), total_rows)
519 523 self.assertEqual(self.ms.nrow(False), total_rows)
520 524 self.assertEqual(self.ms.msselectedindices()['field'].size, 0)
521 525 self.assertEqual(self.ms.msselectedindices()['scan'].size, 0)
526 + get_res = self.ms.getdata(["axis_info", "data"])
527 + self.assertTrue('data' in get_res)
528 + self.assertEqual(type(get_res['data']), ndarray)
529 + self.assertEqual(get_res['data'].shape, (2, 63, 22653))
522 530
523 531 def test_msseltoindex(self):
524 532 """test ms.msseltoindex"""
525 533 # select field id 2
526 534 rec = self.ms.msseltoindex(self.testms, field="N*")
527 535 self.assertEqual(rec['field'], [2])
528 536 print
529 537
530 538
531 539 # ------------------------------------------------------------------------------

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut