def test_full_run():
    '''
    test a wind series that has a constant average
    '''
    ts = [(datetime(2015, 1, 1, 1, 0), (10, 0)),
          (datetime(2015, 1, 1, 2, 0), (20, 0)),
          (datetime(2015, 1, 1, 3, 0), (10, 0)),
          (datetime(2015, 1, 1, 4, 0), (20, 0)),
          (datetime(2015, 1, 1, 5, 0), (10, 0)),
          (datetime(2015, 1, 1, 6, 0), (20, 0)),
          (datetime(2015, 1, 1, 7, 0), (10, 0)),
          (datetime(2015, 1, 1, 8, 0), (20, 0)),
          (datetime(2015, 1, 1, 9, 0), (10, 0)),
          (datetime(2015, 1, 1, 10, 0), (20, 0))]

    start_time = datetime(2015, 1, 1, 1)
    model_time = start_time

    running_av = RunningAverage(timeseries=ts)
    running_av.prepare_for_model_run(model_time)
    running_av.prepare_for_model_step(model_time)

    print "running_av"
    print running_av.ossm.timeseries[:]

    model_time = datetime(2015, 1, 1, 4, 0)
    running_av.prepare_for_model_run(model_time)
    running_av.prepare_for_model_step(model_time)

    print "running_av2"
    print running_av.ossm.timeseries[:]

    assert np.all(running_av.ossm.timeseries['value']['u'][3:9] == 15)
def test_full_run():
    '''
    test a wind series that has a constant average
    '''
    ts = [(datetime(2015, 1, 1, 1, 0), (10, 0)),
          (datetime(2015, 1, 1, 2, 0), (20, 0)),
          (datetime(2015, 1, 1, 3, 0), (10, 0)),
          (datetime(2015, 1, 1, 4, 0), (20, 0)),
          (datetime(2015, 1, 1, 5, 0), (10, 0)),
          (datetime(2015, 1, 1, 6, 0), (20, 0)),
          (datetime(2015, 1, 1, 7, 0), (10, 0)),
          (datetime(2015, 1, 1, 8, 0), (20, 0)),
          (datetime(2015, 1, 1, 9, 0), (10, 0)),
          (datetime(2015, 1, 1, 10, 0), (20, 0))]

    start_time = datetime(2015, 1, 1, 1)
    model_time = start_time

    running_av = RunningAverage(timeseries=ts)
    running_av.prepare_for_model_run(model_time)
    running_av.prepare_for_model_step(model_time)

    print "running_av"
    print running_av.ossm.timeseries[:]

    model_time = datetime(2015, 1, 1, 4, 0)
    running_av.prepare_for_model_run(model_time)
    running_av.prepare_for_model_step(model_time)

    print "running_av2"
    print running_av.ossm.timeseries[:]

    assert np.all(running_av.ossm.timeseries['value']['u'][3:9] == 15)
def test_full_run_extended():
    '''
    test algorithm resets two day running average with a new time
    '''
    ts = np.zeros((20, ), dtype=datetime_value_2d)
    ts[:] = [(datetime(2015, 1, 1, 1, 0), (10, 0)),
             (datetime(2015, 1, 1, 2, 0), (20, 0)),
             (datetime(2015, 1, 1, 3, 0), (10, 0)),
             (datetime(2015, 1, 1, 4, 0), (20, 0)),
             (datetime(2015, 1, 1, 5, 0), (10, 0)),
             (datetime(2015, 1, 1, 6, 0), (20, 0)),
             (datetime(2015, 1, 1, 7, 0), (10, 0)),
             (datetime(2015, 1, 1, 8, 0), (20, 0)),
             (datetime(2015, 1, 1, 9, 0), (10, 0)),
             (datetime(2015, 1, 1, 10, 0), (20, 0)),
             (datetime(2015, 1, 5, 1, 0), (10, 0)),
             (datetime(2015, 1, 5, 2, 0), (20, 0)),
             (datetime(2015, 1, 5, 3, 0), (10, 0)),
             (datetime(2015, 1, 5, 4, 0), (20, 0)),
             (datetime(2015, 1, 5, 5, 0), (10, 0)),
             (datetime(2015, 1, 5, 6, 0), (20, 0)),
             (datetime(2015, 1, 5, 7, 0), (10, 0)),
             (datetime(2015, 1, 5, 8, 0), (20, 0)),
             (datetime(2015, 1, 5, 9, 0), (10, 0)),
             (datetime(2015, 1, 5, 10, 0), (20, 0))]

    wm = Wind(filename=wind_file, units='mps')

    start_time = datetime(2015, 1, 1, 1)
    model_time = start_time

    running_av = RunningAverage(wind=wm)
    # running_av = RunningAverage(timeseries=ts)
    running_av.prepare_for_model_run(model_time)
    running_av.prepare_for_model_step(model_time)

    print "running_av"
    print running_av.ossm.timeseries[:]

    model_time = datetime(2015, 1, 5, 4, 0)
    running_av.prepare_for_model_run(model_time)
    running_av.prepare_for_model_step(model_time)

    print "running_av2"
    print running_av.ossm.timeseries[:]

    assert np.all(running_av.ossm.timeseries['value']['u'][:] == 15)
def test_full_run_extended():
    '''
    test algorithm resets two day running average with a new time
    '''
    ts = np.zeros((20,), dtype=datetime_value_2d)
    ts[:] = [(datetime(2015, 1, 1, 1, 0), (10, 0)),
             (datetime(2015, 1, 1, 2, 0), (20, 0)),
             (datetime(2015, 1, 1, 3, 0), (10, 0)),
             (datetime(2015, 1, 1, 4, 0), (20, 0)),
             (datetime(2015, 1, 1, 5, 0), (10, 0)),
             (datetime(2015, 1, 1, 6, 0), (20, 0)),
             (datetime(2015, 1, 1, 7, 0), (10, 0)),
             (datetime(2015, 1, 1, 8, 0), (20, 0)),
             (datetime(2015, 1, 1, 9, 0), (10, 0)),
             (datetime(2015, 1, 1, 10, 0), (20, 0)),
             (datetime(2015, 1, 5, 1, 0), (10, 0)),
             (datetime(2015, 1, 5, 2, 0), (20, 0)),
             (datetime(2015, 1, 5, 3, 0), (10, 0)),
             (datetime(2015, 1, 5, 4, 0), (20, 0)),
             (datetime(2015, 1, 5, 5, 0), (10, 0)),
             (datetime(2015, 1, 5, 6, 0), (20, 0)),
             (datetime(2015, 1, 5, 7, 0), (10, 0)),
             (datetime(2015, 1, 5, 8, 0), (20, 0)),
             (datetime(2015, 1, 5, 9, 0), (10, 0)),
             (datetime(2015, 1, 5, 10, 0), (20, 0))]

    wm = Wind(filename=wind_file, units='mps')

    start_time = datetime(2015, 1, 1, 1)
    model_time = start_time

    running_av = RunningAverage(wind=wm)
    # running_av = RunningAverage(timeseries=ts)
    running_av.prepare_for_model_run(model_time)
    running_av.prepare_for_model_step(model_time)

    print "running_av"
    print running_av.ossm.timeseries[:]

    model_time = datetime(2015, 1, 5, 4, 0)
    running_av.prepare_for_model_run(model_time)
    running_av.prepare_for_model_step(model_time)

    print "running_av2"
    print running_av.ossm.timeseries[:]

    assert np.all(running_av.ossm.timeseries['value']['u'][:] == 15)