def test_units(self): case = create_case() self.assertEqual(case.unit_system, EclUnitTypeEnum.ECL_METRIC_UNITS) # We do not really have support for writing anything else than the # default MERIC unit system. To be able to test the read functionality # we therefor monkey-patch the summary files in place. with TestAreaContext("unit_test"): case = create_case("UNITS") case.fwrite() case2 = EclSum("UNITS") kw_list = [] f = EclFile("UNITS.SMSPEC") for kw in f: if kw.name == "INTEHEAD": kw[0] = 3 kw_list.append(kw.copy()) f.close() with openFortIO("UNITS.SMSPEC", mode = FortIO.WRITE_MODE) as f: for kw in kw_list: kw.fwrite(f) case = EclSum("UNITS") self.assertEqual(case.unit_system, EclUnitTypeEnum.ECL_LAB_UNITS)
def test_save_kw(self): with TestAreaContext("python/ecl_file/save_kw"): data = range(1000) kw = EclKW("MY_KEY", len(data), EclDataType.ECL_INT) for index, val in enumerate(data): kw[index] = val clean_dump = "my_clean_file" fortio = FortIO(clean_dump, FortIO.WRITE_MODE) kw.fwrite(fortio) fortio.close() test_file = "my_dump_file" fortio = FortIO(test_file, FortIO.WRITE_MODE) kw.fwrite(fortio) fortio.close() self.assertFilesAreEqual(clean_dump, test_file) ecl_file = EclFile(test_file, flags=EclFileFlagEnum.ECL_FILE_WRITABLE) loaded_kw = ecl_file["MY_KEY"][0] self.assertTrue(kw.equal(loaded_kw)) ecl_file.save_kw(loaded_kw) ecl_file.close() self.assertFilesAreEqual(clean_dump, test_file) ecl_file = EclFile(test_file) loaded_kw = ecl_file["MY_KEY"][0] self.assertTrue(kw.equal(loaded_kw))
def test_ecl_index(self): with TestAreaContext("python/ecl_file/context"): kw1 = EclKW("KW1", 100, EclDataType.ECL_INT) kw2 = EclKW("KW2", 100, EclDataType.ECL_FLOAT) kw3 = EclKW("KW3", 100, EclDataType.ECL_CHAR) kw4 = EclKW("KW4", 100, EclDataType.ECL_STRING(23)) with openFortIO("TEST", mode=FortIO.WRITE_MODE) as f: kw1.fwrite(f) kw2.fwrite(f) kw3.fwrite(f) kw4.fwrite(f) ecl_file = EclFile("TEST") ecl_file.write_index("INDEX_FILE") ecl_file.close() ecl_file_index = EclFile("TEST", 0, "INDEX_FILE") for kw in ["KW1", "KW2", "KW3", "KW4"]: self.assertIn(kw, ecl_file_index) with self.assertRaises(IOError): ecl_file.write_index("does-not-exist/INDEX") with self.assertRaises(IOError): ecl_file_index = EclFile("TEST", 0, "index_does_not_exist") os.mkdir("path") shutil.copyfile("TEST", "path/TEST") ecl_file = EclFile("path/TEST") ecl_file.write_index("path/index") with CWDContext("path"): ecl_file = EclFile("TEST", 0, "index")
def test_fwrite(self): #work_area = TestArea("python/ecl_file/fwrite") with TestAreaContext("python/ecl_file/fwrite"): rst_file = EclFile(self.test_file) fortio = FortIO("ECLIPSE.UNRST", FortIO.WRITE_MODE) rst_file.fwrite(fortio) fortio.close() rst_file.close() self.assertFilesAreEqual("ECLIPSE.UNRST", self.test_file)
def test_fwrite( self ): #work_area = TestArea("python/ecl_file/fwrite") with TestAreaContext("python/ecl_file/fwrite"): rst_file = EclFile(self.test_file) fortio = FortIO("ECLIPSE.UNRST", FortIO.WRITE_MODE) rst_file.fwrite(fortio) fortio.close() rst_file.close() self.assertFilesAreEqual("ECLIPSE.UNRST", self.test_file)
def test_ecl_index(self): with TestAreaContext("python/ecl_file/context"): kw1 = EclKW( "KW1" , 100 , EclDataType.ECL_INT) kw2 = EclKW( "KW2" , 100 , EclDataType.ECL_FLOAT) kw3 = EclKW( "KW3" , 100 , EclDataType.ECL_CHAR) kw4 = EclKW( "KW4" , 100 , EclDataType.ECL_STRING(23)) with openFortIO("TEST" , mode = FortIO.WRITE_MODE) as f: kw1.fwrite( f ) kw2.fwrite( f ) kw3.fwrite( f ) kw4.fwrite( f ) ecl_file = EclFile("TEST") ecl_file.write_index("INDEX_FILE") ecl_file.close() ecl_file_index = EclFile("TEST", 0, "INDEX_FILE") for kw in ["KW1","KW2","KW3","KW4"]: self.assertIn( kw , ecl_file_index ) with self.assertRaises(IOError): ecl_file.write_index("does-not-exist/INDEX") os.mkdir("read-only") os.chmod("read-only", 0o444) with self.assertRaises(IOError): ecl_file.write_index("read-only/INDEX") with self.assertRaises(IOError): ecl_file_index = EclFile("TEST", 0, "index_does_not_exist") shutil.copyfile( "INDEX_FILE" , "INDEX_perm_denied") os.chmod("INDEX_perm_denied", 0o000) with self.assertRaises(IOError): ecl_file_index = EclFile("TEST", 0, "INDEX_perm_denied") os.mkdir("path") shutil.copyfile("TEST" , "path/TEST") ecl_file = EclFile("path/TEST") ecl_file.write_index("path/index") with CWDContext("path"): ecl_file = EclFile("TEST" , 0 , "index")
def test_kw_write(self): with TestAreaContext("python/ecl_kw/writing"): data = [random.random() for i in range(10000)] kw = EclKW("TEST", len(data), EclDataType.ECL_DOUBLE) i = 0 for d in data: kw[i] = d i += 1 pfx = 'EclKW(' self.assertEqual(pfx, repr(kw)[:len(pfx)]) fortio = FortIO("ECL_KW_TEST", FortIO.WRITE_MODE) kw.fwrite(fortio) fortio.close() fortio = FortIO("ECL_KW_TEST") kw2 = EclKW.fread(fortio) self.assertTrue(kw.equal(kw2)) ecl_file = EclFile("ECL_KW_TEST", flags=EclFileFlagEnum.ECL_FILE_WRITABLE) kw3 = ecl_file["TEST"][0] self.assertTrue(kw.equal(kw3)) ecl_file.save_kw(kw3) ecl_file.close() fortio = FortIO("ECL_KW_TEST", FortIO.READ_AND_WRITE_MODE) kw4 = EclKW.fread(fortio) self.assertTrue(kw.equal(kw4)) fortio.seek(0) kw4.fwrite(fortio) fortio.close() ecl_file = EclFile("ECL_KW_TEST") kw5 = ecl_file["TEST"][0] self.assertTrue(kw.equal(kw5))
def test_save(self): #work_area = TestArea("python/ecl_file/save") with TestAreaContext("python/ecl_file/save", store_area=False) as work_area: work_area.copy_file(self.test_file) rst_file = EclFile("ECLIPSE.UNRST", flags=EclFileFlagEnum.ECL_FILE_WRITABLE) swat0 = rst_file["SWAT"][0] swat0.assign(0.75) rst_file.save_kw(swat0) rst_file.close() self.assertFilesAreNotEqual("ECLIPSE.UNRST", self.test_file) rst_file1 = EclFile(self.test_file) rst_file2 = EclFile("ECLIPSE.UNRST", flags=EclFileFlagEnum.ECL_FILE_WRITABLE) swat1 = rst_file1["SWAT"][0] swat2 = rst_file2["SWAT"][0] swat2.assign(swat1) rst_file2.save_kw(swat2) self.assertTrue(swat1.equal(swat2)) rst_file1.close() rst_file2.close() # Random failure .... self.assertFilesAreEqual("ECLIPSE.UNRST", self.test_file)
def test_save(self): #work_area = TestArea("python/ecl_file/save") with TestAreaContext("python/ecl_file/save", store_area=False) as work_area: work_area.copy_file(self.test_file) rst_file = EclFile("ECLIPSE.UNRST", flags=EclFileFlagEnum.ECL_FILE_WRITABLE) swat0 = rst_file["SWAT"][0] swat0.assign(0.75) rst_file.save_kw(swat0) rst_file.close() self.assertFilesAreNotEqual("ECLIPSE.UNRST",self.test_file) rst_file1 = EclFile(self.test_file) rst_file2 = EclFile("ECLIPSE.UNRST", flags=EclFileFlagEnum.ECL_FILE_WRITABLE) swat1 = rst_file1["SWAT"][0] swat2 = rst_file2["SWAT"][0] swat2.assign(swat1) rst_file2.save_kw(swat2) self.assertTrue(swat1.equal(swat2)) rst_file1.close() rst_file2.close() # Random failure .... self.assertFilesAreEqual("ECLIPSE.UNRST", self.test_file)
# We do not really have support for writing anything else than the # default MERIC unit system. To be able to test the read functionality # we therefor monkey-patch the summary files in place. with TestAreaContext("unit_test"): case = create_case("UNITS") case.fwrite() case2 = EclSum("UNITS") kw_list = [] f = EclFile("UNITS.SMSPEC") for kw in f: if kw.name == "INTEHEAD": kw[0] = 3 kw_list.append(kw.copy()) f.close() with openFortIO("UNITS.SMSPEC", mode=FortIO.WRITE_MODE) as f: for kw in kw_list: kw.fwrite(f) case = EclSum("UNITS") self.assertEqual(case.unit_system, EclUnitTypeEnum.ECL_LAB_UNITS) def test_numpy_vector(self): case = create_case() with self.assertRaises(KeyError): case.numpy_vector("NO_SUCH_KEY") numpy_vector = case.numpy_vector("FOPT") self.assertEqual(len(numpy_vector), len(case))