defl/tests.old/test_configFormats.py
2025-04-28 14:44:03 -04:00

103 lines
2.5 KiB
Python
Executable File

#!/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 operator import itemgetter
from defl import log, cl, Path, Undefined, Null, Assert, Time, Obj, Dunder
from defl import CLIError
from defl._typing_ import *
import defl
from defl._configFormats_ import ConfigInput, ConfigOutput
from defl.markdown_ import *
from defl.testing_ import Test, Tester, TestState
tester = Tester(name=__file__)
markdownTestData = defl.Dath(__file__).parent / 'markdown.txt'
markdownTestData = markdownTestData.readText()
def genny(text):
yield defl.formatMultiLineStr(text, dedent=True, filt=True, join=False)
confIn = ConfigInput(text).markdown()
# print(defl.jdumps(confIn, colorize=True))
yield confIn
confOut = ConfigOutput(confIn).markdown()
# print(confOut)
assert isinstance(confOut, str)
yield defl.formatMultiLineStr(confOut, dedent=True, filt=True, join=False)
# @tester.add() # TODO
def mdList():
gen = genny("""
- 1
- 2
- 3
- 4
""")
dedent = next(gen)
outp = ['- 1', ' - 2', ' - 3', ' - 4']
Assert(dedent) == outp
Assert(next(gen)) == [
{
'typ': 'list',
'lines': ['1'],
'children': [
{'typ': 'list', 'lines': ['2']},
{'typ': 'list', 'lines': ['3']},
{'typ': 'list', 'lines': ['4']},
],
}
]
Assert(next(gen)) == a
# @tester.add() # TODO
def mdTable():
gen = genny(
"""
| a | bb |ccc |
| ------ | -----------|---|
| 1| 444| aaa|
| 22|55 |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb|
| 333|6|c|
"""
)
dedent = next(gen)
outp = [
'| a | bb |ccc |',
'| ------ | -----------|---|',
'| 1| 444| aaa|',
'| 22|55 |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb|',
'| 333|6|c|',
]
Assert(dedent) == outp
Assert(next(gen)) == [
{
'typ': 'table',
'lines': [
{'a': '1', 'bb': '444', 'ccc': 'aaa'},
{'a': '22', 'bb': '55', 'ccc': 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'},
{'a': '333', 'bb': '6', 'ccc': 'c'},
],
}
]
Assert(next(gen)) == outp
@tester.add()
def csv():
a = ['a,b,c', '1,2,3', '4,5,6']
res = ConfigInput.Csv(a)
Assert(res) == [{'a': '1', 'b': '2', 'c': '3'}, {'a': '4', 'b': '5', 'c': '6'}]
log.info(tester.run())
tester.exitWithStatus()