def test_c(self):
     """Test when level control and measured time series are not in balance."""
     computer = SluiceErrorComputer()
     level_control_timeseries = [TimeseriesStub((datetime(2011, 7, 8), 4.0))]
     measured_timeseries = [TimeseriesStub((datetime(2011, 7, 8), 2.0))]
     sluice_error = computer.compute(datetime(2011, 7, 8),
                                     datetime(2011, 7, 9),
                                     level_control_timeseries,
                                     measured_timeseries)
     self.assertEqual(TimeseriesStub((datetime(2011, 7, 8), 2)), sluice_error)
    def test_d(self):
        """Test when level control and measured time series are not in balance.

        There are multiple events for the level control and measured timeseries.
        """
        date = datetime(2011, 7, 8)
        level_control_timeseries = [ts_factory(date, 4.0, 2.0)]
        measured_timeseries = [ts_factory(date, 3.0, 0.0)]
        computer = SluiceErrorComputer()
        sluice_error = computer.compute(date, date + timedelta(2),
                                        level_control_timeseries,
                                        measured_timeseries)
        self.assertEqual(ts_factory(date, 1.0, 2.0), sluice_error)
    def test_e(self):
        """Test when level control and measured time series are not in balance.

        There are multiple level control and measured timeseries.
        """
        date = datetime(2011, 7, 8)
        tomorrow = date + timedelta(1)
        level_control_timeseries = \
            [ts_factory(date, 4.0), ts_factory(tomorrow, -4.0)]
        measured_timeseries = [ts_factory(date, 3.0), ts_factory(tomorrow, -2.0)]
        computer = SluiceErrorComputer()
        sluice_error = computer.compute(date, tomorrow + timedelta(1),
                                        level_control_timeseries,
                                        measured_timeseries)
        self.assertEqual(ts_factory(date, 1.0, -2.0), sluice_error)
    def test_db(self):
        """Test when level control and measured time series are not in balance.

        There are multiple events for the level control and measured
        timeseries. The date of the last event is at the end date.
        """
        today = datetime(2011, 7, 13)
        tomorrow = today + timedelta(1)
        level_control_timeseries = [ts_factory(today, 4.0, 2.0)]
        measured_timeseries = [ts_factory(today, 3.0, 0.0)]
        computer = SluiceErrorComputer()
        sluice_error = computer.compute(today, tomorrow,
                                        level_control_timeseries,
                                        measured_timeseries)
        self.assertEqual(ts_factory(today, 1.0), sluice_error)
 def test_a(self):
     """Test when there are no level control and measured time series."""
     computer = SluiceErrorComputer()
     sluice_error = computer.compute(datetime(2011, 7, 8),
                                     datetime(2011, 7, 9), [], [])
     self.assertEqual(TimeseriesStub(), sluice_error)