예제 #1
0
    def test_create(self):
        ensemble_config = EnsembleConfig()
        obs = EnkfObs(ensemble_config)
        self.assertEqual(len(obs), 0)
        self.assertFalse(obs.load(self.obs_config))
        self.assertEqual(len(obs), 0)

        time_map = TimeMap()
        obs = EnkfObs(ensemble_config, external_time_map=time_map)
        self.assertEqual(len(obs), 0)

        grid = EclGrid(self.grid)
        refcase = EclSum(self.refcase)

        history = History.alloc_from_refcase(refcase, False)
        obs = EnkfObs(ensemble_config, grid=grid, history=history)
        with self.assertRaises(IOError):
            obs.load("/does/not/exist")

        self.assertTrue(obs.load(self.obs_config))
        self.assertEqual(len(obs), 33)
        obs.clear()
        self.assertEqual(len(obs), 0)

        obs.load(self.obs_config)
        self.assertEqual(len(obs), 33)
        self.assertFalse("RFT2" in obs)
        obs.load(self.obs_config2)
        self.assertEqual(len(obs), 35)
        self.assertTrue("RFT2" in obs)
예제 #2
0
    def test_setitem(self):
        tm = TimeMap()
        tm[0] = datetime.date(2000,1,1)
        tm[1] = datetime.date(2000,1,2)
        self.assertEqual(2 , len(tm))

        self.assertEqual( tm[0] , datetime.date(2000,1,1) )
        self.assertEqual( tm[1] , datetime.date(2000,1,2) )
예제 #3
0
    def test_fscanf(self):
        tm = TimeMap()
    
        with self.assertRaises(IOError):
            tm.fload( "Does/not/exist" )

        with TestAreaContext("timemap/fload1") as work_area:
            with open("map.txt","w") as fileH:
                fileH.write("10/10/2000\n")
                fileH.write("12/10/2000\n")
                fileH.write("14/10/2000\n")
                fileH.write("16/10/2000\n")
            
            tm.fload("map.txt")
            self.assertEqual( 4 , len(tm) )
            self.assertEqual( datetime.date(2000,10,10) , tm[0])
            self.assertEqual( datetime.date(2000,10,16) , tm[3])

        with TestAreaContext("timemap/fload2") as work_area:
            with open("map.txt","w") as fileH:
                fileH.write("10/10/200X\n")

            with self.assertRaises(Exception):    
                tm.fload("map.txt")

            self.assertEqual( 4 , len(tm) )
            self.assertEqual( datetime.date(2000,10,10) , tm[0])
            self.assertEqual( datetime.date(2000,10,16) , tm[3])


        with TestAreaContext("timemap/fload2") as work_area:
            with open("map.txt","w") as fileH:
                fileH.write("12/10/2000\n")
                fileH.write("10/10/2000\n")

            with self.assertRaises(Exception):    
                tm.fload("map.txt")

            self.assertEqual( 4 , len(tm) )
            self.assertEqual( datetime.date(2000,10,10) , tm[0])
            self.assertEqual( datetime.date(2000,10,16) , tm[3])
예제 #4
0
    def test_in(self):
        tm = TimeMap()
        tm[0] = datetime.date(2000,1,1)
        tm[1] = datetime.date(2000,1,2)
        tm[2] = datetime.date(2000,1,3)

        self.assertTrue( datetime.date(2000,1,1) in tm )
        self.assertTrue( datetime.date(2000,1,2) in tm )
        self.assertTrue( datetime.date(2000,1,3) in tm )

        self.assertFalse( datetime.date(2001,1,3) in tm )
        self.assertFalse( datetime.date(1999,1,3) in tm )
예제 #5
0
    def test_lookupDate(self):
        tm = TimeMap()
        tm[0] = datetime.date(2000,1,1)
        tm[1] = datetime.date(2000,1,2)
        tm[2] = datetime.date(2000,1,3)

        self.assertEqual( 0 , tm.lookupTime( datetime.date(2000,1,1)))
        self.assertEqual( 0 , tm.lookupTime( datetime.datetime(2000,1,1,0,0,0)))

        self.assertEqual( 2 , tm.lookupTime( datetime.date(2000,1,3)))
        self.assertEqual( 2 , tm.lookupTime( datetime.datetime(2000,1,3,0,0,0)))
        
        with self.assertRaises(ValueError):
            tm.lookupTime( datetime.date(1999,10,10))
예제 #6
0
    def test_fscanf(self):
        tm = TimeMap()
    
        with self.assertRaises(IOError):
            tm.fload( "Does/not/exist" )

        with TestAreaContext("timemap/fload1") as work_area:
            with open("map.txt","w") as fileH:
                fileH.write("10/10/2000\n")
                fileH.write("12/10/2000\n")
                fileH.write("14/10/2000\n")
                fileH.write("16/10/2000\n")
            
            tm.fload("map.txt")
            self.assertEqual( 4 , len(tm) )
            self.assertEqual( datetime.date(2000,10,10) , tm[0])
            self.assertEqual( datetime.date(2000,10,16) , tm[3])

        with TestAreaContext("timemap/fload2") as work_area:
            with open("map.txt","w") as fileH:
                fileH.write("10/10/200X\n")

            with self.assertRaises(Exception):    
                tm.fload("map.txt")

            self.assertEqual( 4 , len(tm) )
            self.assertEqual( datetime.date(2000,10,10) , tm[0])
            self.assertEqual( datetime.date(2000,10,16) , tm[3])


        with TestAreaContext("timemap/fload2") as work_area:
            with open("map.txt","w") as fileH:
                fileH.write("12/10/2000\n")
                fileH.write("10/10/2000\n")

            with self.assertRaises(Exception):    
                tm.fload("map.txt")

            self.assertEqual( 4 , len(tm) )
            self.assertEqual( datetime.date(2000,10,10) , tm[0])
            self.assertEqual( datetime.date(2000,10,16) , tm[3])
예제 #7
0
    def test_lookupDate(self):
        tm = TimeMap()
        tm[0] = datetime.date(2000,1,1)
        tm[1] = datetime.date(2000,1,2)
        tm[2] = datetime.date(2000,1,3)

        self.assertEqual( 0 , tm.lookupTime( datetime.date(2000,1,1)))
        self.assertEqual( 0 , tm.lookupTime( datetime.datetime(2000,1,1,0,0,0)))

        self.assertEqual( 2 , tm.lookupTime( datetime.date(2000,1,3)))
        self.assertEqual( 2 , tm.lookupTime( datetime.datetime(2000,1,3,0,0,0)))
        
        with self.assertRaises(ValueError):
            tm.lookupTime( datetime.date(1999,10,10))
예제 #8
0
 def test_empty(self):
     tm = TimeMap()
     last_step = tm.getLastStep( )
     self.assertEqual( last_step , -1 )
예제 #9
0
    def test_nearest_date_lookup(self):
        tm = TimeMap()
        with self.assertRaises(ValueError):
            tm.lookupTime(datetime.date( 1999 , 1 , 1))

        with self.assertRaises(ValueError):
            tm.lookupTime(datetime.date( 1999 , 1 , 1) , tolerance_seconds_before = 10 , tolerance_seconds_after = 10)

        tm[0] = datetime.date(2000,1,1)
        tm[1] = datetime.date(2000,2,1)
        tm[2] = datetime.date(2000,3,1)

        # Outside of total range will raise an exception, irrespective of
        # the tolerances used.
        with self.assertRaises(ValueError):
            tm.lookupTime(datetime.date( 1999 , 1 , 1) , tolerance_seconds_before = -1 , tolerance_seconds_after = -1)

        with self.assertRaises(ValueError):
            tm.lookupTime(datetime.date( 2001 , 1 , 1) , tolerance_seconds_before = -1 , tolerance_seconds_after = -1)

        self.assertEqual(0 , tm.lookupTime( datetime.datetime(2000 , 1 , 1 , 0 , 0 , 10) , tolerance_seconds_after = 15))
        self.assertEqual(1 , tm.lookupTime( datetime.datetime(2000 , 1 , 1 , 0 , 0 , 10) , tolerance_seconds_before = 3600*24*40))

        self.assertEqual(0 , tm.lookupTime( datetime.date( 2000 , 1 , 10) , tolerance_seconds_before = -1 , tolerance_seconds_after = -1))
        self.assertEqual(1 , tm.lookupTime( datetime.date( 2000 , 1 , 20) , tolerance_seconds_before = -1 , tolerance_seconds_after = -1))

        with self.assertRaises(ValueError):
            tm.lookupTime(datetime.date( 2001 , 10 , 1) , tolerance_seconds_before = 10 , tolerance_seconds_after = 10)
예제 #10
0
    def test_lookupDays(self):
        tm = TimeMap()

        with self.assertRaises(ValueError):
            tm.lookupDays( 0  )
        
        tm[0] = datetime.date(2000,1,1)
        tm[1] = datetime.date(2000,1,2)
        tm[2] = datetime.date(2000,1,3)

        self.assertEqual( 0 , tm.lookupDays( 0 ))
        self.assertEqual( 1 , tm.lookupDays( 1 ))
        self.assertEqual( 2 , tm.lookupDays( 2 ))

        with self.assertRaises(ValueError):
            tm.lookupDays( -1  )

        with self.assertRaises(ValueError):
            tm.lookupDays( 0.50  )

        with self.assertRaises(ValueError):
            tm.lookupDays( 3  )
예제 #11
0
    def test_time_map(self):
        with self.assertRaises(IOError):
            TimeMap("Does/not/exist")

    
        tm = TimeMap()
        with self.assertRaises(IndexError):
            t = tm[10]

        pfx = 'TimeMap('
        rep = repr(tm)
        print('repr(time_map) = "%s"' % repr(tm))
        self.assertEqual(pfx, rep[:len(pfx)])

        self.assertTrue( tm.update(0 , datetime.date(2000 , 1, 1)))
        self.assertEqual( tm[0] , datetime.date(2000 , 1, 1))
        
        self.assertTrue( tm.isStrict() )
        with self.assertRaises(Exception):
            tm.update(tm.update(0 , datetime.date(2000 , 1, 2)))

        tm.setStrict( False )
        self.assertFalse(tm.update(0 , datetime.date(2000 , 1, 2)))

        tm.setStrict( True )
        self.assertTrue( tm.update( 1 , datetime.date(2000 , 1, 2)))
        d = tm.dump()
        self.assertEqual( d , [(0 , datetime.date(2000,1,1) , 0),
                               (1 , datetime.date(2000,1,2) , 1)])
예제 #12
0
 def test_empty(self):
     tm = TimeMap()
     last_step = tm.getLastStep( )
     self.assertEqual( last_step , -1 )
예제 #13
0
    def test_nearest_date_lookup(self):
        tm = TimeMap()
        with self.assertRaises(ValueError):
            tm.lookupTime(datetime.date( 1999 , 1 , 1))

        with self.assertRaises(ValueError):
            tm.lookupTime(datetime.date( 1999 , 1 , 1) , tolerance_seconds_before = 10 , tolerance_seconds_after = 10)

        tm[0] = datetime.date(2000,1,1)
        tm[1] = datetime.date(2000,2,1)
        tm[2] = datetime.date(2000,3,1)

        # Outside of total range will raise an exception, irrespective of
        # the tolerances used.
        with self.assertRaises(ValueError):
            tm.lookupTime(datetime.date( 1999 , 1 , 1) , tolerance_seconds_before = -1 , tolerance_seconds_after = -1)

        with self.assertRaises(ValueError):
            tm.lookupTime(datetime.date( 2001 , 1 , 1) , tolerance_seconds_before = -1 , tolerance_seconds_after = -1)

        self.assertEqual(0 , tm.lookupTime( datetime.datetime(2000 , 1 , 1 , 0 , 0 , 10) , tolerance_seconds_after = 15))
        self.assertEqual(1 , tm.lookupTime( datetime.datetime(2000 , 1 , 1 , 0 , 0 , 10) , tolerance_seconds_before = 3600*24*40))

        self.assertEqual(0 , tm.lookupTime( datetime.date( 2000 , 1 , 10) , tolerance_seconds_before = -1 , tolerance_seconds_after = -1))
        self.assertEqual(1 , tm.lookupTime( datetime.date( 2000 , 1 , 20) , tolerance_seconds_before = -1 , tolerance_seconds_after = -1))

        with self.assertRaises(ValueError):
            tm.lookupTime(datetime.date( 2001 , 10 , 1) , tolerance_seconds_before = 10 , tolerance_seconds_after = 10)
예제 #14
0
    def test_lookupDays(self):
        tm = TimeMap()

        with self.assertRaises(ValueError):
            tm.lookupDays( 0  )
        
        tm[0] = datetime.date(2000,1,1)
        tm[1] = datetime.date(2000,1,2)
        tm[2] = datetime.date(2000,1,3)

        self.assertEqual( 0 , tm.lookupDays( 0 ))
        self.assertEqual( 1 , tm.lookupDays( 1 ))
        self.assertEqual( 2 , tm.lookupDays( 2 ))

        with self.assertRaises(ValueError):
            tm.lookupDays( -1  )

        with self.assertRaises(ValueError):
            tm.lookupDays( 0.50  )

        with self.assertRaises(ValueError):
            tm.lookupDays( 3  )
예제 #15
0
    def test_time_map(self):
        with self.assertRaises(IOError):
            TimeMap("Does/not/exist")

    
        tm = TimeMap()
        with self.assertRaises(IndexError):
            t = tm[10]
            
        self.assertTrue( tm.update(0 , datetime.date(2000 , 1, 1)))
        self.assertEqual( tm[0] , datetime.date(2000 , 1, 1))
        
        self.assertTrue( tm.isStrict() )
        with self.assertRaises(Exception):
            tm.update(tm.update(0 , datetime.date(2000 , 1, 2)))

        tm.setStrict( False )
        self.assertFalse(tm.update(0 , datetime.date(2000 , 1, 2)))

        tm.setStrict( True )
        self.assertTrue( tm.update( 1 , datetime.date(2000 , 1, 2)))
        d = tm.dump()
        self.assertEqual( d , [(0 , datetime.date(2000,1,1) , 0),
                               (1 , datetime.date(2000,1,2) , 1)])