Public feed #726856

Stuff

public text v1 · immutable
Raw Edit
·published 2007-10-05 15:32 UTC
rendered paste body
if __name__ == "__main__":
    TOTAL_ITEMS = 1000
    SCREEN_SIZE = 10

    def mock_find(query, sorting=None, limit=None, offset=None, properties=[]):
        if limit is None or offset is None:
            raise RuntimeError("Unimplemented test.")

        result = []
        for index in range(offset, offset + limit):
            obj = datastore.DSObject(index, datastore.DSMetadata({}), '')
            result.append(obj)

        return result, TOTAL_ITEMS

    datastore.find = mock_find
    result_set = find({})

    print "Get first page"
    objects = result_set.read(SCREEN_SIZE)
    print [obj.object_id for obj in objects]
    assert range(0, SCREEN_SIZE) == [obj.object_id for obj in objects]
    print ""

    print "Scroll to 5th item"
    result_set.seek(5)
    objects = result_set.read(SCREEN_SIZE)
    print [obj.object_id for obj in objects]
    assert range(5, SCREEN_SIZE + 5) == [obj.object_id for obj in objects]
    print ""

    print "Scroll back to beginning"
    result_set.seek(0)
    objects = result_set.read(SCREEN_SIZE)
    print [obj.object_id for obj in objects]
    assert range(0, SCREEN_SIZE) == [obj.object_id for obj in objects]
    print ""

    print "Hit PgDn five times"
    for i in range(0, 5):
        result_set.seek((i + 1) * SCREEN_SIZE)
        objects = result_set.read(SCREEN_SIZE)
        print [obj.object_id for obj in objects]
        assert range((i + 1) * SCREEN_SIZE, (i + 2) * SCREEN_SIZE) == [obj.object_id for obj in objects]
    print ""

    print "Hit PgUp five times"
    for i in range(0, 5)[::-1]:
        result_set.seek(i * SCREEN_SIZE)
        objects = result_set.read(SCREEN_SIZE)
        print [obj.object_id for obj in objects]
        assert range(i * SCREEN_SIZE, (i + 1) * SCREEN_SIZE) == [obj.object_id for obj in objects]
    print ""