def test_sum(self): for ecl_type in [EclDataType.ECL_CHAR, EclDataType.ECL_STRING(42)]: kw_string = EclKW("STRING", 100, ecl_type) with self.assertRaises(ValueError): kw_string.sum() kw_int = EclKW("INT", 4, EclDataType.ECL_INT) kw_int[0] = 1 kw_int[1] = 2 kw_int[2] = 3 kw_int[3] = 4 self.assertEqual(kw_int.sum(), 10) kw_d = EclKW("D", 4, EclDataType.ECL_DOUBLE) kw_d[0] = 1 kw_d[1] = 2 kw_d[2] = 3 kw_d[3] = 4 self.assertEqual(kw_d.sum(), 10) kw_f = EclKW("F", 4, EclDataType.ECL_FLOAT) kw_f[0] = 1 kw_f[1] = 2 kw_f[2] = 3 kw_f[3] = 4 self.assertEqual(kw_f.sum(), 10) kw_b = EclKW("F", 4, EclDataType.ECL_BOOL) kw_b[0] = False kw_b[1] = True kw_b[2] = False kw_b[3] = True self.assertEqual(kw_b.sum(), 2)
def test_string_padding(self): kw = EclKW("TEST_KW", 1, EclDataType.ECL_STRING(4)) kw[0] = "AB" self.assertEqual(kw[0], "AB ") kw = EclKW("TEST_KW", 1, EclDataType.ECL_CHAR) kw[0] = "ABCD" self.assertEqual(kw[0], "ABCD ")
def test_string_alloc(self): kw = EclKW("KW", 10, EclDataType.ECL_STRING(30)) for i in range(10): kw[i] = str(i)*30 for i in range(10): self.assertEqual(str(i)*30, kw[i])
def test_fprintf(self): with TestAreaContext("python.ecl_kw"): self.kw_test(EclDataType.ECL_INT, [0, 1, 2, 3, 4, 5], "%4d\n") self.kw_test(EclDataType.ECL_FLOAT, [0.0, 1.1, 2.2, 3.3, 4.4, 5.5], "%12.6f\n") self.kw_test(EclDataType.ECL_DOUBLE, [0.0, 1.1, 2.2, 3.3, 4.4, 5.5], "%12.6f\n") self.kw_test(EclDataType.ECL_BOOL, [True, True, True, False, True], "%4d\n") self.kw_test(EclDataType.ECL_CHAR, ["1", "22", "4444", "666666", "88888888"], "%-8s\n") for str_len in range(1000): self.kw_test(EclDataType.ECL_STRING(str_len), [str(i)*str_len for i in range(10)], "%s\n")
def test_string_write_read_formatted(self): for str_len in range(1000): with TestAreaContext("my_space"): kw = EclKW("TEST_KW", 10, EclDataType.ECL_STRING(str_len)) for i in range(10): kw[i] = str(i)*str_len file_name = "ecl_kw_test" with openFortIO(file_name, mode=FortIO.WRITE_MODE, fmt_file=True) as fortio: kw.fwrite(fortio) with openFortIO(file_name, fmt_file=True) as fortio: loaded_kw = EclKW.fread(fortio) self.assertEqual(kw, loaded_kw)
def test_abs(self): for ecl_type in [ EclDataType.ECL_CHAR, EclDataType.ECL_BOOL, EclDataType.ECL_STRING(32) ]: kw = EclKW("NAME", 10, ecl_type) with self.assertRaises(TypeError): abs_kw = abs(kw) kw = EclKW("NAME", 10, EclDataType.ECL_INT) for i in range(len(kw)): kw[i] = -i abs_kw = abs(kw) for i in range(len(kw)): self.assertEqual(kw[i], -i) self.assertEqual(abs_kw[i], i)
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_numpy(self): kw1 = EclKW("DOUBLE", 10, EclDataType.ECL_DOUBLE) view = kw1.numpyView() copy = kw1.numpyCopy() self.assertTrue(copy[ 0 ] == kw1[ 0 ]) self.assertTrue(view[ 0 ] == kw1[ 0 ]) kw1[ 0 ] += 1 self.assertTrue(view[ 0 ] == kw1[ 0 ]) self.assertTrue(copy[ 0 ] == kw1[ 0 ] - 1) for ecl_type in [ EclDataType.ECL_CHAR, EclDataType.ECL_BOOL, EclDataType.ECL_STRING(19)]: kw2 = EclKW("TEST_KW", 10, ecl_type) with self.assertRaises(ValueError): kw2.numpyView()