tictoc/tests/testInitSyntax.py

79 lines
1.7 KiB
Python

import pytest
import tictoc
import time
import math
@pytest.fixture
def t():
t = tictoc.init()
return t
class testFunctionality:
def testBasic(self, t):
t.tic()
print("test")
t.toc()
assert t.results.seconds > 0
def testOverwrite(self, t):
t.tic()
print("test")
t.toc()
firstResult = t.results.seconds
print("test2")
t.toc()
secondResult = t.results.seconds
assert firstResult < secondResult
class testInvalid:
def testNoInit(self):
with pytest.raises(Exception):
t.tic()
@pytest.mark.parametrize("sleepTime", [0.05, 0.5, 1])
class testAccuracy:
@pytest.fixture(scope="class")
def tol(self):
return 0.0006
def testSingleCall(self, t, sleepTime, tol):
t.tic()
time.sleep(sleepTime)
t.toc()
assert (t.results.seconds < sleepTime+tol)
def testMultipleCalls(self, t, sleepTime, tol):
t.tic()
time.sleep(sleepTime)
t.toc()
time.sleep(sleepTime)
t.toc()
assert (t.results.seconds < (sleepTime * 2)+tol)
class testConsistency:
def testMicros(self, t):
t.tic()
print("test")
t.toc()
assert t.results.micros == (math.floor(t.results.nanos * pow(10, -3)))
def testMillis(self, t):
t.tic()
print("test")
t.toc()
assert t.results.millis == (math.floor(t.results.nanos * pow(10, -6)))
def testSeconds(self, t):
t.tic()
print("test")
t.toc()
assert t.results.seconds == round(
(t.results.nanos * pow(10, -9)), 9
) # f64 vs u128, hence the round