defl/tests.old/test_sheet.py

100 lines
3.6 KiB
Python
Raw Permalink Normal View History

2024-09-11 11:14:03 -04:00
#!/usr/bin/env python
from dataclasses import dataclass, field
import sys, re, os, enum, itertools
from functools import partial, partialmethod
from time import sleep
from subprocess import Popen, PIPE, DEVNULL
from operator import itemgetter
from defl import log, cl, Path, Undefined, Null, Assert, Time, Obj, Dunder, IterableType, isIterableType, Run
from defl import CLIError
from defl._typing_ import *
import defl
import defl
from defl import log, cl, Assert
from defl.sheet_ import Sheet
from defl.testing_ import Tester, Test, TestState
tester = Tester(name=__file__)
@tester.add()
def getSet():
d = {'a': [1, 2, 3], 'b': (1.1, 2.2, 3.3), 'c': ['cat', 'dog', 'frog']}
s = Sheet(d)
slic = s['a', 'b']
Assert(slic) == {'a': [1, 2, 3], 'b': (1.1, 2.2, 3.3)}
s['a', 'b'] = {'a': [4, 5, 6], 'b': (4.4, 5.5, 6.6)}
Assert(s.toDict()) == {'a': [4, 5, 6], 'b': (4.4, 5.5, 6.6), 'c': ['cat', 'dog', 'frog']}
s[('a', )] = [[5, 6, 7]]
Assert(s.toDict()) == {'a': [5, 6, 7], 'b': (4.4, 5.5, 6.6), 'c': ['cat', 'dog', 'frog']}
s['a'] = [8, 9, 10]
Assert(s.toDict()) == {'a': [8, 9, 10], 'b': (4.4, 5.5, 6.6), 'c': ['cat', 'dog', 'frog']}
s.r('a')[1] = 5
Assert(s.toDict()) == {'a': [8, 5, 10], 'b': (4.4, 5.5, 6.6), 'c': ['cat', 'dog', 'frog']}
s = Sheet({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
s['b', 'c'] = Sheet({'z': [5, 5, 5], 'y': [7, 7, 7]})
Assert(s.d) == {'a': [1, 2, 3], 'b': [5, 5, 5], 'c': [7, 7, 7]}
s = Sheet({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
s['b', 'c'] = Sheet([[5, 5, 5], [7, 7, 7]])
Assert(s.d) == {'a': [1, 2, 3], 'b': [5, 5, 5], 'c': [7, 7, 7]}
@tester.add()
def map():
s = Sheet({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
s['d'] = s.map['a', 'b'](lambda a, b: a * b)
Assert(s['d'].d) == {'d': [4, 10, 18]}
Assert(s.r('d')) == [4, 10, 18]
Assert(s['d'].d['d']) == [4, 10, 18]
@tester.add()
def rows():
s = Sheet({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
Assert([x for x in s]) == [{'a': 1, 'b': 4, 'c': 7}, {'a': 2, 'b': 5, 'c': 8}, {'a': 3, 'b': 6, 'c': 9}]
Assert(s.mapRow(lambda x: x['a'] * x['c'] - x['b'])) == [3, 11, 21]
@tester.add()
def mangle():
s = Sheet({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
Assert(s.toDict()) == {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
@tester.add()
def sort():
s = Sheet({'a': [1, 2, 3], 'b': [6, 5, 4], 'c': [7, 8, 9]})
sort = s.sort(lambda x: x['b'])
Assert(sort.d) == {'a': [3, 2, 1], 'b': [4, 5, 6], 'c': [9, 8, 7]}
@tester.add()
def init():
s1 = Sheet({'a': [1, 2, 3], 'b': [6, 5, 4], 'c': [7, 8, 9]})
Assert(Sheet([x for x in s1])) == s1
s2 = Sheet({'a': [1, 2, 3], 'b': [6, 5, 4], 'c': [7, 8, 9]})
Assert(Sheet([x for x in s2])) == s1
s2.r('a')[1] = 5
Assert(Sheet([x for x in s2])) != s1
@tester.add()
def filter():
s1 = Sheet({'a': [1, 2, 3], 'b': [6, 5, 4], 'c': [7, 8, 9]})
Assert(s1.filter(lambda x: x.a > 1 and x.c < 9).d) == {'a': [2], 'b': [5], 'c': [8]}
@tester.add()
def string():
s1 = Sheet({'a': [1, 22, 333], 'bbbb': [66666, 5555555, 4], 'c': [7, 8, 9]})
log.info(s1)
Assert(s1.str()) == '[a] [bbbb] [c]\n 1 66,666 7\n 22 5,555,555 8\n333 4 9'
s2 = Sheet({'a': [11, 2.22, 3.33], 'b': (1.12345, 2.23456, 3.34567)})
log.info(s2)
Assert(s2.str()) == ' [a] [b]\n11.00 1.12\n 2.22 2.23\n 3.33 3.35'
s2 = Sheet({'a': ['zdada', 'b', 'b'], 'b': (1.12345, 2.23456, 3.34567)})
log.info(s2)
Assert(s2.str()) == "[a] [b]\nzdada 1.12\nb 2.23\nb 3.35"
log.info(tester.run())
tester.exitWithStatus()