import unittest from nd2reader.artificial import ArtificialND2 from nd2reader.label_map import LabelMap from nd2reader.raw_metadata import RawMetadata class TestRawMetadata(unittest.TestCase): def setUp(self): self.raw_text, self.locations = ArtificialND2.create_label_map_bytes() self.label_map = LabelMap(self.raw_text) self.metadata = RawMetadata(None, self.label_map) def test_parse_roi_shape(self): self.assertEqual(self.metadata._parse_roi_shape(3), 'rectangle') self.assertEqual(self.metadata._parse_roi_shape(9), 'circle') self.assertIsNone(self.metadata._parse_roi_shape(-1)) def test_parse_roi_type(self): self.assertEqual(self.metadata._parse_roi_type(3), 'reference') self.assertEqual(self.metadata._parse_roi_type(2), 'background') self.assertEqual(self.metadata._parse_roi_type(4), 'stimulation') self.assertIsNone(self.metadata._parse_roi_type(-1)) def test_dict(self): self.assertTrue(type(self.metadata.__dict__) is dict) def test_parsed_metadata(self): metadata = self.metadata.get_parsed_metadata() self.assertTrue(type(metadata) is dict) required_keys = ["height", "width", "date", "fields_of_view", "frames", "z_levels", "total_images_per_channel", "channels", "pixel_microns"] for required in required_keys: self.assertTrue(required in metadata) # it should now be stored, see if that dict is returned metadata['height'] = 1 self.metadata._metadata_parsed['height'] = 1 second_metadata = self.metadata.get_parsed_metadata() self.assertDictEqual(metadata, second_metadata)