-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_driver.py
119 lines (88 loc) · 3.56 KB
/
test_driver.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# =============================================================================
#
# FILE: test_driver.py
# AUTHOR: Tan Duc Mai
# EMAIL: henryfromvietnam@gmail.com
# CREATED: 2022-04-13
# DESCRIPTION: A pytest for the Partlist class.
# I hereby declare that I completed this work without any improper help
# from a third party and without using any aids other than those cited.
#
# =============================================================================
# ------------------------------- Module Imports ------------------------------
# Third party
import pytest
# Local application/library specific imports
import main
# ---------------------------- Function Definitions ---------------------------
@pytest.fixture()
def partlist():
return main.CommandPrompt().partlist
def test_len(partlist):
# Safe case
assert len(partlist) == 24
# Dangerous case
with pytest.raises(AssertionError):
assert len(partlist) == 0
def test_get_part_using_name(partlist):
# Safe cases
assert isinstance(partlist.get_part_using_name('Toshiba P300'),
main.Storage)
assert isinstance(partlist.get_part_using_name('AMD Ryzen 5'),
main.CPU)
# Dangerous cases
with pytest.raises(main.icontract.errors.ViolationError):
partlist.get_part_using_name('')
with pytest.raises(main.icontract.errors.ViolationError):
partlist.get_part_using_name(2)
with pytest.raises(AssertionError):
assert isinstance(partlist.get_part_using_name('Toshiba'),
main.Storage)
with pytest.raises(AssertionError):
assert isinstance(partlist.get_part_using_name('AMD Ryzen 5'),
main.Memory)
def test_get_part_using_postion(partlist):
# Safe cases
assert isinstance(partlist.get_part_using_position(23),
main.Storage)
assert isinstance(partlist.get_part_using_position(2),
main.CPU)
# Dangerous cases
with pytest.raises(main.icontract.errors.ViolationError):
partlist.get_part_using_position('')
with pytest.raises(main.icontract.errors.ViolationError):
partlist.get_part_using_position(2.0)
with pytest.raises(AssertionError):
assert isinstance(partlist.get_part_using_position(3),
main.GraphicsCard)
with pytest.raises(AssertionError):
assert isinstance(partlist.get_part_using_position(25),
main.Memory)
def test_remove_part_using_name(partlist):
# Safe cases
partlist.remove_part_using_name('WD Red')
assert len(partlist) == 23
partlist.remove_part_using_name('AMD Ryzen 3')
assert len(partlist) == 22
# Dangerous cases
with pytest.raises(main.icontract.errors.ViolationError):
partlist.remove_part_using_name('')
partlist.remove_part_using_name('WD')
with pytest.raises(AssertionError):
assert len(partlist) == 21
def test_remove_part_using_postion(partlist):
# Safe cases
partlist.remove_part_using_position(12)
assert len(partlist) == 23
partlist.remove_part_using_position(-12)
assert len(partlist) == 22
# Dangerous cases
with pytest.raises(main.icontract.errors.ViolationError):
partlist.remove_part_using_position('')
with pytest.raises(main.icontract.errors.ViolationError):
partlist.remove_part_using_position(12.0)
partlist.remove_part_using_position(25)
with pytest.raises(AssertionError):
assert len(partlist) == 21