Files
opm-common/tests/schedule.py
Joakim Hove 5eed642924 Fix testing of times:
- The first seven timesteps were specified as steps of length 365/7.0 days,
   when converted to seconds one second was lost due to rounding. This has been
   changed by using integer length TSTEP.

 - assertEqual() statements use full datetime; which has been shifted one full
   day forward to account for rounding errors due to the lost seconds.

 - EclipseState.getFirstRestartStep( ) is changed because we have configured to
   get restart data for the first report step every year, and that is now step 7
   instead of step 8.
2018-02-08 18:53:15 +01:00

53 lines
1.4 KiB
Python

import unittest
import datetime as dt
import sunbeam
spe3 = sunbeam.parse('spe3/SPE3CASE1.DATA')
class TestSchedule(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.spe3 = sunbeam.parse('spe3/SPE3CASE1.DATA')
cls.sch = cls.spe3.schedule
def testWells(self):
self.assertEqual(2, len(self.sch.wells))
with self.assertRaises(KeyError):
self.sch['foo']
def testContains(self):
self.assertTrue('PROD' in self.sch)
self.assertTrue('INJ' in self.sch)
self.assertTrue('NOT' not in self.sch)
self.assertFalse('NOT' in self.sch)
def testStartEnd(self):
self.assertEqual(dt.datetime(2015, 1, 1), self.sch.start)
self.assertEqual(dt.datetime(2029, 12, 28), self.sch.end)
def testTimesteps(self):
timesteps = self.sch.timesteps
self.assertEqual(176, len(timesteps))
self.assertEqual(dt.datetime(2016, 1, 1), timesteps[7])
def testGroups(self):
g1 = self.sch.group()['G1'].wells
self.assertEqual(2, len(g1))
def head(xs): return next(iter(xs))
inje = head(filter(sunbeam.Well.injector(0), g1))
prod = head(filter(sunbeam.Well.producer(0), g1))
self.assertEqual(self.sch['INJ'], inje)
self.assertEqual(self.sch['PROD'], prod)
with self.assertRaises(KeyError):
self.sch.group()['foo']
if __name__ == "__main__":
unittest.main()