Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1import os 

2import sqlite3 

3import unittest 

4from astropy.time import Time, TimeDelta 

5from lsst.utils import getPackageDir 

6import lsst.utils.tests 

7from lsst.utils.tests import getTempFilePath 

8 

9from lsst.sims.cloudModel import CloudData 

10 

11class TestCloudModel(unittest.TestCase): 

12 

13 def setUp(self): 

14 self.th = Time('2020-01-01', format='isot', scale='tai') 

15 self.cloud_db = os.path.join(getPackageDir('sims_cloudModel'), 'data', 'cloud.db') 

16 self.num_original_values = 29201 

17 

18 def test_basic_information_after_creation(self): 

19 cloudData = CloudData(self.th, cloud_db=self.cloud_db) 

20 self.assertEqual(cloudData.start_time, self.th) 

21 cloudData = CloudData(self.th, cloud_db=self.cloud_db, offset_year = 1) 

22 self.assertEqual(cloudData.start_time, Time('2021-01-01', format='isot', scale='tai')) 

23 

24 def test_information_after_initialization(self): 

25 # Test setting cloud_db explicitly. 

26 cloudData = CloudData(self.th, cloud_db=self.cloud_db) 

27 cloudData.read_data() 

28 self.assertEqual(cloudData.cloud_values.size, self.num_original_values) 

29 self.assertEqual(cloudData.cloud_dates.size, self.num_original_values) 

30 # Test that find built-in module automatically. 

31 cloudData = CloudData(self.th) 

32 cloudData.read_data() 

33 self.assertEqual(cloudData.cloud_dates.size, self.num_original_values) 

34 

35 def test_get_clouds(self): 

36 cloudData = CloudData(self.th, cloud_db=self.cloud_db) 

37 cloudData.read_data() 

38 dt = TimeDelta(700000, format='sec') 

39 self.assertEqual(cloudData(self.th + dt), 0.5) 

40 dt = TimeDelta(701500, format='sec') 

41 self.assertEqual(cloudData(self.th + dt), 0.5) 

42 dt = TimeDelta(705000, format='sec') 

43 self.assertEqual(cloudData(self.th + dt), 0.375) 

44 dt = TimeDelta(6306840, format='sec') 

45 self.assertEqual(cloudData(self.th + dt), 0.0) 

46 

47 def test_get_clouds_using_different_start_month(self): 

48 # Just changing the starting month 

49 t2 = Time('2020-05-24', format='isot', scale='tai') 

50 cloud1 = CloudData(t2) 

51 self.assertEqual(cloud1.start_time, self.th) 

52 cloud1.read_data() 

53 dt = TimeDelta(700000, format='sec') 

54 self.assertEqual(cloud1(t2 + dt), 0.0) 

55 dt = TimeDelta(6306840, format='sec') 

56 self.assertEqual(cloud1(t2 + dt), 0.25) 

57 

58 def test_alternate_db(self): 

59 with getTempFilePath('.alt_cloud.db') as tmpdb: 

60 cloud_dbfile = tmpdb 

61 cloud_table = [] 

62 cloud_table.append("cloudId INTEGER PRIMARY KEY") 

63 cloud_table.append("c_date INTEGER") 

64 cloud_table.append("cloud DOUBLE") 

65 with sqlite3.connect(cloud_dbfile) as conn: 

66 cur = conn.cursor() 

67 cur.execute("DROP TABLE IF EXISTS Cloud") 

68 cur.execute("CREATE TABLE Cloud({})".format(",".join(cloud_table))) 

69 cur.executemany("INSERT INTO Cloud VALUES(?, ?, ?)", [(1, 9997, 0.5), (2, 10342, 0.125)]) 

70 cur.close() 

71 cloud1 = CloudData(self.th, tmpdb) 

72 cloud1.read_data() 

73 self.assertEqual(cloud1.cloud_values.size, 2) 

74 self.assertEqual(cloud1.cloud_values[1], 0.125) 

75 

76class TestMemory(lsst.utils.tests.MemoryTestCase): 

77 pass 

78 

79def setup_module(module): 

80 lsst.utils.tests.init() 

81 

82if __name__ == "__main__": 82 ↛ 83line 82 didn't jump to line 83, because the condition on line 82 was never true

83 lsst.utils.tests.init() 

84 unittest.main()