From 042d574fee759323f9f56c3ceb363557c7e57b28 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 7 Nov 2026 02:41:05 +0900 Subject: [PATCH] test(est): cover original text style boundary --- resources/tester/test_est_native_export.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/resources/tester/test_est_native_export.py b/resources/tester/test_est_native_export.py index 2012553c0..5fdd4c3ce 100644 --- a/resources/tester/test_est_native_export.py +++ b/resources/tester/test_est_native_export.py @@ -112,6 +112,24 @@ def test_quantity_document_edit_across_styles_and_separate_marker(): assert result == {"same": True, "tags": True} +def test_quantity_document_edit_across_actual_style_boundary_when_sample_exists(): + sample = Path("C:/Dasansoft/Est Plus 2/Data/ProjectData/main.estx") + if not sample.exists(): + pytest.skip("installed EST main sample unavailable") + script = """const fs=require('fs'),z=require('zlib'),m=require('./tools/est-test/import-estx.cjs'),w=require('./tools/est-test/export-quantity.cjs'),q=require('./tools/est-test/native-quantity.cjs'); + const p=m.importEstx(fs.readFileSync(process.argv[1])),old=p.quantitySheets.find(s=>s.Code==='N0000000113'); + const r=p.tables.MulMainDat.find(x=>x.Code===old.Code),b=Buffer.from(r.Editor.binary,'base64'); + const text=new TextDecoder('euc-kr').decode(b[0]===120?z.inflateSync(b):b),edited=structuredClone(old); + const i=edited.rows.findIndex(r=>r.LineData.includes('27.22 ='));if(i<0)throw Error('sample line missing'); + edited.rows[i].LineData=edited.rows[i].LineData.replace('27.22 =','27.22XY'); + const out=w.editDocument(text,old,edited),tags=x=>x.match(/<[^>]*>/g); + process.stdout.write(JSON.stringify({same:JSON.stringify(q.fromWpt(edited.Code,edited.Name,out,edited.items,edited.options))===JSON.stringify(edited),tags:JSON.stringify(tags(text))===JSON.stringify(tags(out))}));""" + result = json.loads( + subprocess.check_output(["node", "-e", script, str(sample)], cwd=ROOT).decode("utf-8") + ) + assert result == {"same": True, "tags": True} + + def test_multiple_quantity_text_segments_preserve_original_tags_when_sample_exists(): sample = Path("C:/Dasansoft/Est Plus 2/Data/ProjectData/main.estx") if not sample.exists():