def test_reads_meta_schema(self): temp_fs = fsopendir('temp://') filename = temp_fs.getsyspath('temp.h5') # use minimal descriptor to make the test simplier. descriptor = { 'pos': Int64Col(), 'name': StringCol(itemsize=255), 'type': StringCol(itemsize=255) } rows = [[('pos', float(i)), ('name', str(i)), ('type', str(i))] for i in range(2)] self._write_test_meta(temp_fs, 'schema', descriptor, rows) with open_file(filename, mode='r') as h5_file: ret = HDFReader._read_meta(h5_file) self.assertIn('schema', ret) self.assertEqual(len(ret['schema']), 3) # One for template, other for columns. self.assertEqual(ret['schema'][0], MPRowsFile.SCHEMA_TEMPLATE) self.assertEqual(len(ret['schema'][1]), len(MPRowsFile.SCHEMA_TEMPLATE)) self.assertEqual(len(ret['schema'][0]), len(MPRowsFile.SCHEMA_TEMPLATE)) pos_index = MPRowsFile.SCHEMA_TEMPLATE.index('pos') name_index = MPRowsFile.SCHEMA_TEMPLATE.index('name') self.assertEqual(ret['schema'][1][pos_index], 0) self.assertEqual(ret['schema'][2][pos_index], 1.0) self.assertEqual(ret['schema'][1][name_index], '0') self.assertEqual(ret['schema'][2][name_index], '1')
def test_reads_meta_children(self, fake_child): fake_child.return_value = {} temp_fs = fsopendir("temp://") filename = temp_fs.getsyspath("temp.h5") _create_h5(filename) with open_file(filename, mode="r") as h5_file: HDFReader._read_meta(h5_file) # _read_meta_child was called properly self.assertEqual(len(fake_child.mock_calls), 7) self.assertIn(call(h5_file, "about"), fake_child.mock_calls) self.assertIn(call(h5_file, "excel"), fake_child.mock_calls) self.assertIn(call(h5_file, "row_spec"), fake_child.mock_calls) self.assertIn(call(h5_file, "source"), fake_child.mock_calls) self.assertIn(call(h5_file, "comments"), fake_child.mock_calls) self.assertIn(call(h5_file, "geo"), fake_child.mock_calls) self.assertIn(call(h5_file, "schema"), fake_child.mock_calls)
def test_reads_meta_children(self, fake_child): fake_child.return_value = {} temp_fs = fsopendir('temp://') filename = temp_fs.getsyspath('temp.h5') _create_h5(filename) with open_file(filename, mode='r') as h5_file: HDFReader._read_meta(h5_file) # _read_meta_child was called properly self.assertEqual(len(fake_child.mock_calls), 7) self.assertIn(call(h5_file, 'about'), fake_child.mock_calls) self.assertIn(call(h5_file, 'excel'), fake_child.mock_calls) self.assertIn(call(h5_file, 'row_spec'), fake_child.mock_calls) self.assertIn(call(h5_file, 'source'), fake_child.mock_calls) self.assertIn(call(h5_file, 'comments'), fake_child.mock_calls) self.assertIn(call(h5_file, 'geo'), fake_child.mock_calls) self.assertIn(call(h5_file, 'schema'), fake_child.mock_calls)
def test_returns_default_template(self, fake_child): fake_child.return_value = {} temp_fs = fsopendir("temp://") filename = temp_fs.getsyspath("temp.h5") _create_h5(filename) with open_file(filename, mode="r") as h5_file: ret = HDFReader._read_meta(h5_file) expected_keys = ["about", "excel", "row_spec", "source", "comments", "geo", "schema"] self.assertEqual(sorted(expected_keys), sorted(ret.keys()))
def test_returns_default_template(self, fake_child): fake_child.return_value = {} temp_fs = fsopendir('temp://') filename = temp_fs.getsyspath('temp.h5') _create_h5(filename) with open_file(filename, mode='r') as h5_file: ret = HDFReader._read_meta(h5_file) expected_keys = [ 'about', 'excel', 'row_spec', 'source', 'comments', 'geo', 'schema' ] self.assertEqual(sorted(expected_keys), sorted(ret.keys()))
def test_reads_meta_schema(self): temp_fs = fsopendir("temp://") filename = temp_fs.getsyspath("temp.h5") # use minimal descriptor to make the test simplier. descriptor = {"pos": Int64Col(), "name": StringCol(itemsize=255), "type": StringCol(itemsize=255)} rows = [[("pos", float(i)), ("name", str(i)), ("type", str(i))] for i in range(2)] self._write_test_meta(temp_fs, "schema", descriptor, rows) with open_file(filename, mode="r") as h5_file: ret = HDFReader._read_meta(h5_file) self.assertIn("schema", ret) self.assertEqual(len(ret["schema"]), 3) # One for template, other for columns. self.assertEqual(ret["schema"][0], MPRowsFile.SCHEMA_TEMPLATE) self.assertEqual(len(ret["schema"][1]), len(MPRowsFile.SCHEMA_TEMPLATE)) self.assertEqual(len(ret["schema"][0]), len(MPRowsFile.SCHEMA_TEMPLATE)) pos_index = MPRowsFile.SCHEMA_TEMPLATE.index("pos") name_index = MPRowsFile.SCHEMA_TEMPLATE.index("name") self.assertEqual(ret["schema"][1][pos_index], 0) self.assertEqual(ret["schema"][2][pos_index], 1.0) self.assertEqual(ret["schema"][1][name_index], "0") self.assertEqual(ret["schema"][2][name_index], "1")