def test_pairs(self): it = basicList.pairs() assert next(it) == basicList assert next(it) == ilinkedlist.new((2, 3, 4)) assert next(it) == ilinkedlist.new((3, 4)) assert next(it) == ilinkedlist.new((4, )) with pytest.raises(StopIteration): next(it)
def test_setItem(self): assert basicList.setItem(1, 66) == ilinkedlist.new((1, 66, 3, 4))
def test_rmul(self): assert 2 * basicList == ilinkedlist.new((1, 2, 3, 4, 1, 2, 3, 4))
def test_getitemSlice(self): """Slicing works.""" assert basicList[0:2] == ilinkedlist.new((1, 2))
def test_pop(self): assert basicList.pop() == (1, ilinkedlist.new((2, 3, 4))) assert basicList.pop(2) == (3, ilinkedlist.new((1, 2, 4)))
def test_remove(self): assert basicList.remove(3) == ilinkedlist.new((1, 2, 4)) with pytest.raises(ValueError): basicList.remove(10)
def test_delItemSliceStep(self): assert (ilinkedlist.new( (1, 10, 2, 20, 3, 30, 4)).delItem(slice(1, 6, 2)) == basicList)
def test_delItem(self): assert basicList.delItem(1) == ilinkedlist.new((1, 3, 4))
def test_member(self): assert ilinkedlist.new((-1, 0, 1, 2, 3, 4)).member(1) == basicList
def test_add(self): """Concatenation.""" assert (basicList + ilinkedlist.new((3, 4, 5)) == ilinkedlist.new( (1, 2, 3, 4, 3, 4, 5)))
def test_gt(self): assert basicList > ilinkedlist.nil assert basicList > ilinkedlist.new((0, 1, -1))
def test_lt(self): assert not (basicList < ilinkedlist.nil) assert basicList < ilinkedlist.new((0, 1, 3))
def test_eq(self): """Equality.""" assert basicList == ilinkedlist.new((1, 2, 3, 4)) assert basicList != ilinkedlist.new((2, 1, 0))
def test_tail(self): """Get the tail of a list.""" assert basicList.tail(1) == ilinkedlist.new((2, 3, 4))
def test_getitemSliceNegative(self): """Slicing works with negative numbers.""" assert basicList[:-1] == ilinkedlist.new((1, 2, 3))
def test_setItemSlice(self): assert (basicList.setItem(slice(1, 3), (10, 11, 12)) == ilinkedlist.new( (1, 10, 11, 12, 4)))
def test_setItemSliceStep(self): assert (ilinkedlist.new( (1, 2, 3, 4, 5, 6)).setItem(slice(1, 5, 2), (10, 20)) == ilinkedlist.new( (1, 10, 3, 20, 5, 6)))
def test_memberEq(self): assert (basicList.member(2, lambda x, elem: x < elem) == ilinkedlist.new( (3, 4)))
def test_delItemSlice(self): assert (ilinkedlist.new( (1, 20, 30, 2, 3, 4)).delItem(slice(1, 3)) == basicList)
def test_count(self): assert ilinkedlist.new((0, 0, 1, 1, 1)).count(1) == 3
def test_insert(self): assert basicList.insert(1, 40) == ilinkedlist.new((1, 40, 2, 3, 4))
def test_radd(self): assert (4, 5, 6) + basicList == ilinkedlist.new((4, 5, 6, 1, 2, 3, 4))
def test_sort(self): assert ilinkedlist.new((4, 1, 3, 2)).sort() == basicList
def test_mul(self): assert (basicList * 3 == ilinkedlist.new( (1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4)))
def test_splitAt(self): assert (basicList.splitAt(2) == (ilinkedlist.new( (1, 2)), ilinkedlist.new((3, 4))))
# but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. # TODO: # Consider adding functions from # https://www.gnu.org/software/guile/manual/html_node/SRFI_002d1.html. import pytest import ilinkedlist basicList = ilinkedlist.new((1, 2, 3, 4)) improperList = ilinkedlist.Pair(11, 93) def test_new(): """Make a linked list from an iterable.""" assert tuple(basicList) == (1, 2, 3, 4) def test_reverse(): assert tuple(ilinkedlist.reverse((0, 1, 2))) == (2, 1, 0) def test_isList(): """isList returns False for a non-list.""" assert ilinkedlist.isList(None) is False