Source code for sqlobject.tests.test_slice

importpytest
fromsqlobjectimport IntCol, SQLObject
fromsqlobject.tests.dbtestimport setupClass, supports
########################################
# Slicing tests
########################################
[docs] deflistrange(*args): """Always return a list, for py3k compatibility""" return list(range(*args))
[docs] classCounter(SQLObject): number = IntCol(notNull=True)
[docs] classTestSlice:
[docs] defsetup_method(self, meth): setupClass(Counter) for i in range(100): Counter(number=i)
[docs] defcounterEqual(self, counters, value): if not supports('limitSelect'): pytest.skip("limitSelect isn't supported") assert [c.number for c in counters] == value
[docs] deftest_slice(self): self.counterEqual( Counter.select(None, orderBy='number'), listrange(100)) self.counterEqual( Counter.select(None, orderBy='number')[10:20], listrange(10, 20)) self.counterEqual( Counter.select(None, orderBy='number')[20:30][:5], listrange(20, 25)) self.counterEqual( Counter.select(None, orderBy='number')[20:30][1:5], listrange(21, 25)) self.counterEqual( Counter.select(None, orderBy='number')[:-10], listrange(0, 90)) self.counterEqual( Counter.select(None, orderBy='number', reversed=True), listrange(99, -1, -1)) self.counterEqual( Counter.select(None, orderBy='-number'), listrange(99, -1, -1))