Spaces:
Sleeping
Sleeping
Download tests/test_equations.py from gui-sparim/teste_docs: direct link, hf CLI and curl.
- Browser
- Download file 4.77 kB
-
https://huggingface.co/spaces/gui-sparim/teste_docs/resolve/main/tests/test_equations.py
- Command line
-
hf download hf://spaces/gui-sparim/teste_docs/tests/test_equations.py
-
curl -L -o test_equations.py https://huggingface.co/spaces/gui-sparim/teste_docs/resolve/main/tests/test_equations.py
4.77 kB
| import copy | |
| import io | |
| import unittest | |
| import zipfile | |
| from lxml import etree | |
| from docx import Document | |
| from docx.oxml import parse_xml | |
| from docx.oxml.ns import qn | |
| from docx.enum.text import WD_ALIGN_PARAGRAPH | |
| from unittest.mock import patch | |
| from document.equations import cost_equations, depreciation_equations | |
| from document.generator import LaudoGenerator | |
| from document.public_text import public_text | |
| from document.footnotes import add_footnote, add_first_footnote | |
| from document.formatters import add_body_text | |
| from test_evolutivo_documento import fixture,resolved | |
| class DepreciationEquationTests(unittest.TestCase): | |
| def test_cost_formulas_preserve_percentage_conversion_and_first_occurrence_note(self): | |
| doc=Document();cost_equations(doc) | |
| formulas=list(doc.element.body.iter(qn('m:oMath'))) | |
| self.assertEqual(len(formulas),2) | |
| self.assertEqual([''.join(t.text or '' for t in m.iter(qn('m:t'))) for m in formulas], | |
| ['CUNIT = CUB × % CUB100','VC = A × CUNIT × (1 + BDI100) × Kd']) | |
| self.assertEqual(len(list(formulas[0].iter(qn('m:f')))),1) | |
| self.assertEqual(len(list(formulas[1].iter(qn('m:f')))),1) | |
| expression_xml=etree.tostring(formulas[0]) | |
| add_first_footnote(doc,r'%\s+CUB','Percentual de adequação do CUB.') | |
| self.assertEqual(etree.tostring(formulas[0]),expression_xml) | |
| self.assertEqual(len(list(doc.paragraphs[0]._p.iter(qn('w:footnoteReference')))),1) | |
| self.assertEqual(len(list(doc.paragraphs[1]._p.iter(qn('w:footnoteReference')))),0) | |
| for index in (1,3): | |
| self.assertEqual({r.font.size.pt for r in doc.paragraphs[index].runs},{8}) | |
| def test_editable_equations_keep_fraction_power_subscript_and_small_legends(self): | |
| doc=Document();depreciation_equations(doc) | |
| stream=io.BytesIO();doc.save(stream);stream.seek(0) | |
| reopened=Document(stream) | |
| math=list(reopened.element.body.iter(qn('m:oMath'))) | |
| self.assertEqual(len(math),3) | |
| self.assertEqual(len(list(math[0].iter(qn('m:f')))),1) | |
| self.assertEqual(len(list(math[0].iter(qn('m:sSup')))),1) | |
| self.assertEqual(len(list(math[2].iter(qn('m:sSub')))),1) | |
| texts=[''.join(t.text or '' for t in formula.iter(qn('m:t'))) for formula in math] | |
| self.assertEqual(texts,['Ross = q + q22','K = 1 − (1 − Ross) × (1 − H)','Kd = R + (1 − K) × (1 − R)']) | |
| self.assertEqual(len(reopened.paragraphs),6) | |
| for index in (0,2,4): | |
| self.assertEqual(reopened.paragraphs[index].alignment,WD_ALIGN_PARAGRAPH.CENTER) | |
| self.assertTrue(reopened.paragraphs[index].paragraph_format.keep_with_next) | |
| legend=reopened.paragraphs[index+1] | |
| self.assertEqual({r.font.size.pt for r in legend.runs},{8}) | |
| self.assertIn('dividindo o percentual',reopened.paragraphs[1].text) | |
| self.assertIn('estado de conservação',reopened.paragraphs[3].text) | |
| self.assertIn('percentual ÷ 100',reopened.paragraphs[5].text) | |
| def test_internal_references_stay_out_of_body_tables_and_footnotes(self): | |
| imported=resolved(fixture((2021,))) | |
| row=imported['avaliacoes'][0] | |
| row['observacoes']='Resultados preservados no MESA.' | |
| row['complementos']={'justificativa_fc':'Condição registrada no modelo MESA.'} | |
| original=copy.deepcopy(imported) | |
| doc=Document() | |
| with patch('document.evolutivo.matching_local',return_value=(None,'')): | |
| LaudoGenerator()._gerar_corpo(doc,{'avaliacoes_importadas':imported},{}) | |
| LaudoGenerator()._gerar_cabecalho(doc,{'modelo_avaliacao':'modelo MESA'}) | |
| add_footnote(doc,add_body_text(doc,'Referência técnica'),'Coeficientes da MESA preservados na avaliação.') | |
| stream=io.BytesIO();doc.save(stream) | |
| with zipfile.ZipFile(stream) as archive: | |
| for name in ['word/document.xml','word/footnotes.xml']: | |
| root=parse_xml(archive.read(name)) | |
| text=' '.join(t.text or '' for t in root.iter(qn('w:t'))) | |
| self.assertNotIn('MESA',text) | |
| self.assertNotIn('versão documental',text) | |
| self.assertNotIn('catálogo sincronizado',text) | |
| self.assertEqual(imported,original) | |
| def test_public_wording_preserves_technical_names_and_ordinary_words(self): | |
| self.assertEqual(public_text('Método de Ross-Heidecke; ABNT NBR 14653-2; CUB.'),'Método de Ross-Heidecke; ABNT NBR 14653-2; CUB.') | |
| self.assertEqual(public_text('modelo MESA'),'modelo estatístico') | |
| self.assertEqual(public_text('salvo no MESA'),'salvo na avaliação de origem') | |
| self.assertEqual(public_text('mesa de apoio'),'mesa de apoio') | |
| if __name__=='__main__': | |
| unittest.main() | |