pytest for my Single Linked list in python
Update 9-2-19 reformatted code, so it is in a html <pre><code> tag for easier styling and copy-pasting for users.
I'm modifying my single linked list yet again, and I realized, if someone did stumble across my list, and want to play with it , or use it to try something out, they don't see what tests I did on it.
So before I go and change it up any more, I'm going to put the test on here. I don't think anyone is really seeing my blog, but maybe someday. And one of the main reasons I did this blog, is because when I started learning-- it was, and still is, just terribly hard to find examples of code that I can look at and actually read. Hoping to help someone who wants to learn this stuff.
pytest-installed in a virtual environment runs this fine. I'm not sure why, but without the virtual environment it has issues running the test. If I find out why, I'll update.
But first! A diagram! Zed would remind me that the nodes are not 'inside' each other. So if you get where I was going with the pictures, they aren't inside each other. :)
---code block--
--end code block--
I'm modifying my single linked list yet again, and I realized, if someone did stumble across my list, and want to play with it , or use it to try something out, they don't see what tests I did on it.
So before I go and change it up any more, I'm going to put the test on here. I don't think anyone is really seeing my blog, but maybe someday. And one of the main reasons I did this blog, is because when I started learning-- it was, and still is, just terribly hard to find examples of code that I can look at and actually read. Hoping to help someone who wants to learn this stuff.
pytest-installed in a virtual environment runs this fine. I'm not sure why, but without the virtual environment it has issues running the test. If I find out why, I'll update.
But first! A diagram! Zed would remind me that the nodes are not 'inside' each other. So if you get where I was going with the pictures, they aren't inside each other. :)
from SLList import*
def test_pop():
## remove the last item in the linked list
colors = SLList()
colors.push("Magenta")
colors.push("Alizarin")
colors.push("yellow")
assert colors.pop() == "yellow"
#assert colors.get(2) == None
assert colors.get(1) == "Alizarin"
assert colors.pop() == "Alizarin"
#assert colors.get(2) == None
assert colors.get(0) == "Magenta"
assert colors.pop() == "Magenta"
#assert colors.pop() == None
assert colors.get(0) == None
#print(zero)
def test_get():
colors = SLList()
assert colors.get(0) == None
colors.push("Yellow")
assert colors.get(0) == "Yellow"
colors.push("Olive")
assert colors.get(1) == "Olive"
colors.push("Jade")
assert colors.get(2) == "Jade"
assert colors.get(3) == None
assert colors.pop() == "Jade"
assert colors.pop() == "Olive"
def test_insert():
colors = SLList()
colors.push("blue")
assert colors.get(0) == "blue"
colors.insert("new color", 0)
assert colors.get(0) == "new color"
assert colors.get(1) == "blue"
colors.push("yellow")
assert colors.count() == 3
assert colors.get(2) == "yellow"
colors.insert("orange", 2)
assert colors.get(2) == "orange"
assert colors.get(3) == "yellow"
assert colors.count() == 4
def test_remove():
colors = SLList()
colors.push("blue") #0
colors.push("yellow") #1
colors.remove(0) #<--- fail.
colors.push("green") #2
colors.push("orange") #3
colors.push("Trillium") #4
colors.remove(1)
assert colors.count() == 3
assert colors.get(1) == "orange"
assert colors.remove(9) == None
colors.remove(0)
assert colors.count() == 2
assert colors.get(0) == "orange"
assert colors.get(1) == "Trillium"
assert colors.get(2) == None
colors.insert("umber", 1)
assert colors.get(1) == "umber"
colors.remove(0)
assert colors.count() == 2
def test_first():
# copy and pasted remove test. It does a ton of maniputaltion
# to the list, so it's like an extra test to combine the two.
colors = SLList()
colors.push("blue") #0
colors.push("yellow") #1
colors.remove(0) #<--- fail.
colors.push("green") #2
colors.push("orange") #3
colors.push("Trillium") #4
colors.remove(1)
assert colors.count() == 3
assert colors.get(1) == "orange"
assert colors.remove(9) == None
colors.remove(0)
assert colors.count() == 2
assert colors.get(0) == "orange"
assert colors.get(1) == "Trillium"
assert colors.get(2) == None
colors.insert("umber", 1)
assert colors.get(1) == "umber"
colors.remove(0)
assert colors.count() == 2
#assert colors.first == '[orange, None]' <-- returns address not string repr.
#assert colors.first() == "orange" # <-- fail, returns umber
# oh! I had a remove 0, so yes it should return umber
assert colors.first() == "umber"
def test_last():
# going to use the pop test to check this one
colors = SLList()
colors.push("Magenta")
colors.push("Alizarin")
colors.push("yellow")
assert colors.pop() == "yellow"
assert colors.last() == "Alizarin"
assert colors.get(1) == "Alizarin"
assert colors.pop() == "Alizarin"
assert colors.last() == "Magenta"
assert colors.get(0) == "Magenta"
assert colors.pop() == "Magenta"
assert colors.last() == None
assert colors.get(0) == None
def test_unshift():
# copy paste 'insert' test to try out this one:
colors = SLList()
colors.push("blue")
assert colors.get(0) == "blue"
colors.insert("new color", 0)
assert colors.get(0) == "new color"
assert colors.get(1) == "blue"
colors.push("yellow")
assert colors.count() == 3
assert colors.get(2) == "yellow"
colors.insert("orange", 2)
assert colors.get(2) == "orange"
assert colors.get(3) == "yellow"
assert colors.count() == 4
######### testing unshift on manipulated list #####
#!!!! Using colors.unshift() in the assert removes item too
assert colors.unshift() == "new color"
#!!!! the assert removed the 0 node
colors.unshift()
assert colors.count() == 2
assert colors.unshift() == "orange"
assert colors.count() == 1
assert colors.unshift() == "yellow"
assert colors.count() == 0
assert colors.unshift() == None
def test_non_string_types():
## store any valid object in this SLL
colors = SLList()
reds = ["Magenta", "lava", "fire", "passion"]
blues = ["Ocean", "Lake Michigan", "mood", "Summer skys"]
yellows = ["Daffodil", "school bus", "yield", "honey"]
colors.push(reds)
colors.push(blues)
colors.push(yellows)
assert colors.pop() == yellows
#assert colors.get(2) == None
assert colors.get(1) == blues
assert colors.pop() == blues
#assert colors.get(2) == None
assert colors.get(0) == reds
assert colors.pop() == reds
#assert colors.pop() == None
assert colors.get(0) == None
#print(zero)
dicts = SLList()
nums = {'by two': [2,4,6], 'by three': [3,6,9], 'by four': [4, 8, 12]}
tups = (1, 5, 20, 100)
hats = ['bolar', 'top', 'helmet', 'cap', 'feathered']
new_list = SLList()
dicts.push(nums)
dicts.push(tups)
dicts.push(hats)
dicts.push(new_list)
assert dicts.get(0) == nums
assert dicts.get(1) == tups
assert dicts.get(2) == hats
assert dicts.get(3) == new_list
assert isinstance(dicts.pop(), SLList)
--
Comments
Post a Comment