-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTestSuite.py
More file actions
103 lines (86 loc) · 2.83 KB
/
TestSuite.py
File metadata and controls
103 lines (86 loc) · 2.83 KB
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
# NOTE from the developer:
# You only need to manipulate the codes BELOW, the rest of the codes
# are the core functionality of the program and requires no refactoring
import time
import math
from random import randint
# generates random data for testing purpose
def generateRandomTestData(dataLength, maxNumber):
randomTestData = []
for a in range(1, dataLength): randomTestData.append(randint(1, maxNumber))
return randomTestData
def bubbleSort(randomTestData):
for a in range(len(randomTestData) - 1, 0, -1):
for b in range(0, a):
if (randomTestData[b] > randomTestData[b + 1]):
temp = randomTestData[b]
randomTestData[b] = randomTestData[b + 1]
randomTestData[b + 1] = temp
return randomTestData
def assertTests(sortedArr):
for a in range(0, len(sortedArr) - 1):
if (sortedArr[a] > sortedArr [a + 1]):
return False
return True
def doIt(numberOfTests, maxNumber, dataLength, showSortedArray = False, runTest = True):
startTime = 0
endTime = 0
average = 0
longestTime = 0
shortestTime = 0
timeConsumed = 0
failedTests = 0
passedTests = 0
for a in range(0, numberOfTests):
# generate random data
randomTestData = generateRandomTestData(dataLength, maxNumber);
# get start time
startTime = math.ceil(time.time())
# run the sort
sortedArr = bubbleSort(randomTestData)
# get end time
endTime = math.ceil(time.time())
# calculate how much time was consumed
timeConsumed = (endTime - startTime)
# change the longest time
if (timeConsumed > longestTime): longestTime = timeConsumed
# change the shortest time
if (a == 1 or timeConsumed < shortestTime): shortestTime = timeConsumed
# add the time consumed to the average for later use
average += timeConsumed
if (showSortedArray):
message = ', '.join(str(a) for a in sortedArr)
else:
message = str(timeConsumed) +" second(s)"
if (runTest):
if (not assertTests(sortedArr)):
message = "test #"+ str(a) +": FAILED : "+ message
failedTests += 1
else:
message = "test #"+ str(a) +": PASSED : "+ message
passedTests += 1
else:
message = "test #"+ str(a) +": "+ message
print(message)
# compute average time consumed
average = average / numberOfTests
print("-------------")
print("Conducted: "+ str(numberOfTests) +" test(s).")
print("language: Python")
print("Data length: "+ str(dataLength))
print("Average time: " + str(average))
print("Shortest time:" + str(shortestTime))
print("Longest time:" + str(longestTime))
print("Failed tests:" + str(failedTests))
print("Passed tests:" + str(passedTests))
print("-------------")
# BELOW
ten = 10
hundred = 100
thousand = 1000
ten_thousand = 10000
hundred_thousand = 100000
million = 1000000
# very self-explanatory
# int numberOfTests, int maxNumber, int dataLength, boolean showSortedArray = False, boolean runTest = True
doIt(ten, million, hundred_thousand, runTest = False)