var FetchStatus = zrequire('fetch_status');

var fetch_status = FetchStatus();

function reset() {
    fetch_status = FetchStatus();
}

function can_load_newer() {
    assert.equal(fetch_status.can_load_newer_messages(), true);
}

function blocked_newer() {
    assert.equal(fetch_status.can_load_newer_messages(), false);
}

function can_load_older() {
    assert.equal(fetch_status.can_load_older_messages(), true);
}

function blocked_older() {
    assert.equal(fetch_status.can_load_older_messages(), false);
}

(function test_basics() {
    reset();

    can_load_older();

    fetch_status.start_older_batch();

    blocked_older();
    can_load_newer();

    fetch_status.finish_older_batch({
        found_oldest: false,
    });

    can_load_older();
    can_load_newer();

    fetch_status.start_older_batch();

    blocked_older();
    can_load_newer();

    fetch_status.finish_older_batch({
        found_oldest: true,
    });

    blocked_older();
    can_load_newer();

    reset();

    can_load_older();
    can_load_newer();

    fetch_status.start_newer_batch();

    can_load_older();
    blocked_newer();

    fetch_status.finish_newer_batch({
        found_newest: false,
    });

    can_load_older();
    can_load_newer();

    fetch_status.start_newer_batch();

    can_load_older();
    blocked_newer();

    fetch_status.finish_newer_batch({
        found_newest: true,
    });

    can_load_older();
    blocked_newer();
}());
