defl/tests/test_math.py

84 lines
2.6 KiB
Python
Raw Normal View History

2024-09-11 11:14:03 -04:00
#!/usr/bin/env python
import json
import time
import defl
from defl import DotDict, cl, log, Assert
from defl.testing_ import Tester
tester = Tester(name=__file__)
@tester.add()
def rollingAverage():
print()
avg = defl.RollingAverage()
assert avg.window == None
assert avg.add(2) == 2, avg
assert avg.add(4) == 3, avg
assert avg.add(6) == 4, avg
@tester.add()
def rollingAverage1():
print()
avg = defl.RollingAverage(window=1)
assert avg.window == 1
assert avg.add(4) == 4, repr(avg)
assert avg.add(2) == 2, repr(avg)
assert avg.add(6) == 6, repr(avg)
assert avg.add(10) == 10, repr(avg)
assert avg.add(20) == 20, repr(avg)
@tester.add()
def rollingAverage2():
print()
avg = defl.RollingAverage(window=2)
assert avg.window == 2
assert avg.add(4) == 4, repr(avg)
assert avg.add(2) == 3, repr(avg)
assert avg.add(8) == 5, repr(avg)
assert avg.add(10) == 9, repr(avg)
assert avg.add(20) == 15, repr(avg)
@tester.add()
def rollingAverage4():
print()
avg = defl.RollingAverage(window=4)
assert avg.window == 4
assert avg.add(2) == 2, repr(avg)
assert avg.add(4) == 3, repr(avg)
assert avg.add(6) == 4, repr(avg)
assert avg.add(8) == 5, repr(avg)
val = 5
for i in range(10, 100, 2):
assert avg.add(i) == (val := val + 2), repr(avg)
@tester.add()
def baseMaker():
base10 = defl.BaseNumberSystemMaker(tokens='0123456789')
res = [''.join(base10.fromInt(i)) for i in range(12)]
Assert(res) == ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11']
base2 = defl.BaseNumberSystemMaker(tokens='01')
res = [''.join(base2.fromInt(i)) for i in range(12)]
Assert(res) == ['0', '1', '10', '11', '100', '101', '110', '111', '1000', '1001', '1010', '1011']
base2 = defl.BaseNumberSystemMaker(tokens='01')
res = [base2.fromInt(i) for i in range(12)]
Assert(res) == [['0'], ['1'], ['1', '0'], ['1', '1'], ['1', '0', '0'], ['1', '0', '1'], ['1', '1', '0'],
['1', '1', '1'], ['1', '0', '0', '0'], ['1', '0', '0', '1'], ['1', '0', '1', '0'],
['1', '0', '1', '1']]
base2 = defl.BaseNumberSystemMaker(tokens='012')
res = [''.join(base2.fromInt(i)) for i in range(12)]
Assert(res) == ['0', '1', '2', '10', '11', '12', '20', '21', '22', '100', '101', '102']
base10 = defl.BaseNumberSystemMaker(tokens='0123456789')
for i in range(9999):
ba = base10.fromInt(i)
Assert(ba) == [x for x in str(i)]
Assert(base10.toInt(ba)) == i
log.info(tester.run())
tester.exitWithStatus()