"""EST 테스트 앱 엑셀데이타를 EST로 변환 7개 탭(원본 TfrmExcelToEst — 셀 규칙·머리 줄 꼴·호표 만들기).""" from test_est_rea_parity import run def test_convert_tabs_and_heads(): result = run( "math", r"""(()=>{ const X=EstExcelToEst; const sheets={노임단가:[['L1',' 보통인부 ','','M2',172698,'']], 견적단가:[['','.펌프','','1','EA','1,500','500','1,000','0','']], 표준시장단가:[['C1','포장','t=5','m2',1000,300,600,100,0.3,'포함',''],], 단가산출:[['','산근 1 호표 : 거푸집 합판 (1 ㎡ 당)',100,60,40,0],['','합판 1*2',40,0,40,0],['','#.산근2|철근가공|D10|ton',9,9,0,0]], 일위대가:[['','No 5 호표 터파기','','','',0,10,0,10,0,0,0,0,''],['','인부','','0.1','인',100,10,100,10,0,0,0,0,''],['','[합계]','','','',0,10,0,0,0,0,0,0,'']]}; const cols=(n)=>Array.from({length:n},(_,i)=>String.fromCharCode(65+i)); const tabs={LaborcDat:{sheet:'노임단가',start:1,end:1,columns:cols(6)},EstiMateDat:{sheet:'견적단가',start:1,end:1,columns:cols(10)}, SilJukDat:{sheet:'표준시장단가',start:1,end:1,columns:cols(11)},CostMainDat:{sheet:'단가산출',start:1,end:3,columns:cols(6)}, HeadMainDat:{sheet:'일위대가',start:1,end:3,columns:cols(14)},StuffcDat:{sheet:'없는시트',start:1,end:1,columns:cols(18)}}; const r=X.convert(sheets,tabs,{name:'시험',wonga:[]}), t=r.project.tables; return {failed:r.failed, lab:[t.LaborcDat[0].Name,t.LaborcDat[0].Unite,t.LaborcDat[0].TC], est:[t.EstiMateDat[0].Name,t.EstiMateDat[0].TC,t.EstiMateDat[0].OTC,t.EstiMateDat[0].Code.slice(0,1)], sil:[t.SilJukDat[0].NCRatio,t.SilJukDat[0].Cost1,t.SilJukDat[0].ONC], cost:t.CostTitleDat.map(x=>[x.Name,x.Size,x.Unite]), line:t.CostMainDat[1].LineData, head:[t.HeadTitleDat.map(x=>x.Name),t.HeadMainDat.length], rows:t.EstMainDat.length, auto:r.project.options.AutoCalc}; })()""", ) assert result["failed"] == ["없는시트 시트가 없습니다."] assert result["lab"] == ["보통인부", "㎡", 172698] assert result["est"] == ["펌프", 1500, 1500, "N"] assert result["sil"] == [30, 1000, 300] assert result["cost"] == [["거푸집", "합판", "㎡"], ["철근가공", "D10", "ton"]] assert result["line"] == "합판 1×2" assert result["head"] == [["터파기"], 2] assert result["rows"] == 36 assert result["auto"] is False