python: rewrite of tests using ParseContext.

test_state: recalled slash test and made it work.

...

test_parse_deck ok.
This commit is contained in:
Steinar Foss
2019-10-08 16:14:37 +02:00
parent b6824af640
commit 223fe5e7df
2 changed files with 36 additions and 20 deletions

View File

@@ -3,6 +3,9 @@ import opm.io
import os.path
import sys
from opm.io.parser import Parser, ParseContext
from opm.io.ecl_state import EclipseState
class TestParse(unittest.TestCase):
REGIONDATA = """
@@ -32,31 +35,36 @@ FIPNUM
self.spe3fn = 'tests/spe3/SPE3CASE1.DATA'
self.norne_fname = os.path.abspath('examples/data/norne/NORNE_ATW2013.DATA')
"""
def test_parse(self):
spe3 = opm.io.parse(self.spe3fn)
self.assertEqual('SPE 3 - CASE 1', spe3.state.title)
"""
deck = Parser().parse(self.spe3fn)
state = EclipseState(deck)
self.assertEqual('SPE 3 - CASE 1', state.title)
def test_parse_with_recovery(self):
recovery = [("PARSE_RANDOM_SLASH", opm.io.action.ignore)]
spe3 = opm.io.parse(self.spe3fn, recovery=recovery)
parse_context = ParseContext( recovery )
deck = Parser().parse(self.spe3fn, parse_context)
state = EclipseState(deck)
def test_parse_with_multiple_recoveries(self):
recoveries = [ ("PARSE_RANDOM_SLASH", opm.io.action.ignore),
("FOO", opm.io.action.warn),
("PARSE_RANDOM_TEXT", opm.io.action.throw) ]
spe3 = opm.io.parse(self.spe3fn, recovery=recoveries)
parse_context = ParseContext(recoveries)
deck = Parser().parse(self.spe3fn, parse_context)
state = EclipseState(deck)
def test_throw_on_invalid_recovery(self):
recoveries = [ ("PARSE_RANDOM_SLASH", 3.14 ) ]
with self.assertRaises(TypeError):
opm.io.parse(self.spe3fn, recovery=recoveries)
parse_context = ParseContext(recoveries)
deck = Parser().parse(self.spe3fn, parse_context)
with self.assertRaises(TypeError):
opm.io.parse(self.spe3fn, recovery="PARSE_RANDOM_SLASH")
parse_context = ParseContext("PARSE_RANDOM_SLASH")
deck = Parser().parse(self.spe3fn, parse_context)
def test_data(self):
pass
@@ -64,14 +72,13 @@ FIPNUM
#self.assertEqual([3,3,1,2], regtest.props()['OPERNUM'])
def test_parse_norne(self):
state = opm.io.parse(self.norne_fname, recovery=[('PARSE_RANDOM_SLASH', opm.io.action.ignore)])
"""
es = state.state
parse_context = ParseContext( [('PARSE_RANDOM_SLASH', opm.io.action.ignore)] )
deck = Parser().parse(self.norne_fname, parse_context)
es = EclipseState( deck )
self.assertEqual(46, es.grid().getNX())
self.assertEqual(112, es.grid().getNY())
self.assertEqual(22, es.grid().getNZ())
"""
self.assertEqual(46, es.grid().nx)
self.assertEqual(112, es.grid().ny)
self.assertEqual(22, es.grid().nz)
if __name__ == "__main__":
unittest.main()

View File

@@ -1,8 +1,11 @@
import unittest
import json
import opm
import opm.io
import os.path
from opm.io.parser import Parser, ParseContext
class TestParse(unittest.TestCase):
DECK_ADDITIONAL_KEYWORDS = """
@@ -61,14 +64,20 @@ FIPNUM
def test_parser_fail_without_extension(self):
error_recovery = [("PARSE_RANDOM_SLASH", opm.io.action.ignore)]
with self.assertRaises(ValueError):
opm.io.load_deck_string(self.DECK_ADDITIONAL_KEYWORDS,
recovery=error_recovery )
parse_context = ParseContext(error_recovery)
deck = Parser().parse_string(self.DECK_ADDITIONAL_KEYWORDS, parse_context)
def test_parser_extension(self):
error_recovery = [("PARSE_RANDOM_SLASH", opm.io.action.ignore)]
deck = opm.io.load_deck_string(self.DECK_ADDITIONAL_KEYWORDS,
keywords=self.KEYWORDS,
recovery=error_recovery )
parse_context = ParseContext(error_recovery)
parser = Parser()
for kw in self.KEYWORDS:
parser.add_keyword(json.dumps(kw))
deck = parser.parse_string(self.DECK_ADDITIONAL_KEYWORDS, parse_context)
self.assertIn( 'TESTKEY0', deck )
self.assertIn( 'TESTKEY1', deck )
self.assertIn( 'TESTKEY2', deck )