#!/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 @tester.add() def humanUnits(): h = defl.ByteUnitFormat().human Assert(h(1)) == (1, 'B') Assert(h(1024 * 22)) == (22, 'K') Assert(h(1024 * 1024 * 333)) == (333, 'M') Assert(h(1024 * 1024 * 1024 * 4)) == (4, 'G') Assert(h(1024 * 1024 * 1024 * 1024 * 5)) == (5, 'T') Assert(h(1024 * 1024 * 1024 * 1024 * 1024 * 6)) == (6, 'P') Assert(h(1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 6)) == (6144.0, 'P') h = defl.ByteUnitFormat(fmt=lambda x, y: f'{x:,.0f}{y}').human Assert(h(1)) == '1B' Assert(h(1024 * 22)) == '22K' Assert(h(1024 * 1024 * 333)) == '333M' Assert(h(1024 * 1024 * 1024 * 4)) == '4G' Assert(h(1024 * 1024 * 1024 * 1024 * 5)) == '5T' Assert(h(1024 * 1024 * 1024 * 1024 * 1024 * 6)) == '6P' Assert(h(1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 6)) == '6,144P' log.info(tester.run()) tester.exitWithStatus()