설명
이 테스트는 Connect 에이전트 RawExcelReader의 정확성을 확인합니다. 기고자: Michael Bussieck, 2022년 3월
소형 모델 유형 :슬롯 사이트 추천
카테고리 : 슬롯 사이트 추천 테스트 라이브러리
메인 파일 : carxr.gms
$title '테스트 연결 에이전트 RawExcelReader' (CARXR,SEQ=893)
$onText
이 테스트는 Connect 에이전트 RawExcelReader의 정확성을 확인합니다.
기고자: Michael Bussieck, 2022년 3월
$offText
* 주요 플랫폼(Windows, Linux, Mac)에서는 GMSPYTHONLIB가 자동으로 설정됩니다.
* sysdir/GMSPython에서 내부 Python 설치를 사용합니다.
$if setEnv GMSPYTHONLIB $abort.noError 내장 코드 Python을 사용할 준비가 되지 않았습니다.
$log --- Python 라이브러리 %sysEnv.GMSPYTHONLIB% 사용
$onEchoV > t.gms
s(*) 통합 문서 시트 설정 / '%S%1' Sheet1, '%S%2' Sheet2 /;
w(*) 통합 문서 시트를 이름으로 설정 / 'Sheet1', 'Sheet2' /;
ws(*,*) 설정 통합 문서 맵 / '%S%1'.'Sheet1', '%S%2'.'Sheet2' /;
c(*) 열 설정 / %C%1*%C%3 /;
r(*) 행 설정 / %R%1*%R%14 /;
$설정되지 않은 경우 MERGEF $set MERGEF ""
$설정되지 않은 경우 병합 $set 병합 ""
$onUNDF
매개변수 vf(*,*,*) 숫자 값이 포함된 셀 /
%S%1.%R%1 .%C%1 1,
%S%1.%R%1 .%C%2 1,
%S%1.%R%1%MERGEF%.%C%3 1,
%S%1.%R%2 .%C%2 2,
%S%1.%R%3 .%C%1 39448,
%S%1.%R%3 .%C%2 3,
%S%1.%R%4 .%C%1 +Inf,
%S%1.%R%4 .%C%2 4,
%S%1.%R%5 .%C%1 -Inf,
%S%1.%R%5 .%C%2 5,
%S%1.%R%6 .%C%1 해당 없음,
%S%1.%R%6 .%C%2 6,
%S%1.%R%7 .%C%1 해당 없음,
%S%1.%R%7 .%C%2 7,
%S%1.%R%8 .%C%1 Eps,
%S%1.%R%8 .%C%2 8,
%S%1.%R%9 .%C%1 Eps,
%S%1.%R%9 .%C%2 9,
%S%1.%R%10.%C%1 Undf,
%S%1.%R%10.%C%2 10,
%S%1.%R%11.%C%1 39448,
%S%1.%R%11.%C%2 11 /;
$offUNDF
설명 텍스트가 있는 vs(*,*,*) 셀 설정 /
%S%1. %R%4.%C%1 정보,
%S%1. %R%5.%C%1 -inf,
%S%1. %R%6.%C%1 나,
%S%1. %R%7.%C%1난,
%S%1. %R%8.%C%1eps,
%S%1. %R%9.%C%1 Eps,
%S%1.%R%10.%C%1 undef,
%S%2. %R%1.%C%1 짧음,
%S%2. %R%2.%C%1 a23456789012345678901234567890123456789012345678901234567890123,
%S%2. %R%3.%C%1 a234567890123456789012345678901234567890123456789012345678901234,
%S%2. %R%4.%C%1 a234567890123456789012345678901234567890123456789012345678901~1,
%S%2. %R%5.%C%1 a23456789012345678901234567890123456789012345678901234567890123 4567890123456789012345678901234567890123456789012345678901234567 890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234
%S%2. %R%6%MERGES%.%C%1 병합
%S%2. %R%11.%C%1 "너무 길어서 슬롯 사이트 추천에서 표현할 수 없는 일부 라벨입니다."
%S%2. %R%12.%C%1 "이 라벨은 너무 길어서 슬롯 사이트 추천에서 표현할 수 없는 라벨입니다."
%S%2. %R%13.%C%1 "너무 길어서 슬롯 사이트 추천에 표시할 수 없는 또 다른 라벨입니다."
%S%2. %R%14.%C%1 "세 번째 라벨은 너무 길어서 슬롯 사이트 추천에서 표현할 수 없습니다."
/;
%vu%(*,*,*,*) 잠재적인 슬롯 사이트 추천 라벨이 있는 셀 설정 /
%S%1.%R%1.%C%1.'참' 참,
%S%1.%R%1.%C%2.'1' 1,
%S%1.%R%1%MERGEF%.%C%3.'1' 1,
%S%1.%R%2.%C%1.'거짓' 거짓,
%S%1.%R%2.%C%2.'2' 2,
%S%1.%R%3.%C%1.'2008-01-01 00:00:00' '2008-01-01 00:00:00',
%S%1.%R%3.%C%2.'3' 3,
%S%1.%R%4.%C%1.'inf' 정보,
%S%1.%R%4.%C%2.'4' 4,
%S%1.%R%5.%C%1.'-inf' -inf,
%S%1.%R%5.%C%2.'5' 5,
%S%1.%R%6.%C%1.'나' na,
%S%1.%R%6.%C%2.'6' 6,
%S%1.%R%7.%C%1.'nan' 난,
%S%1.%R%7.%C%2.'7' 7,
%S%1.%R%8.%C%1.'eps'eps,
%S%1.%R%8.%C%2.'8' 8,
%S%1.%R%9.%C%1.'eps' Eps,
%S%1.%R%9.%C%2.'9' 9,
%S%1.%R%10.%C%1.'undef' undef,
%S%1.%R%10.%C%2.'10' 10,
%S%1.%R%11.%C%1.'39448' 39448,
%S%1.%R%11.%C%2.'11' 11,
%S%2.%R%1.%C%1.'짧다' 짧다,
%S%2.%R%2.%C%1.'a23456789012345678901234567890123456789012345678901234567890123' a23456789012345678901234567890123456789012345678901234567890123,
%S%2.%R%3.%C%1.'a234567890123456789012345678901234567890123456789012345678901~1' a234567890123456789012345678901234567890123456789012345678901234,
%S%2.%R%4.%C%1.'a234567890123456789012345678901234567890123456789012345678901~2' a234567890123456789012345678901234567890123456789012345678901~1,
%S%2.%R%5.%C%1.'a234567890123456789012345678901234567890123456789012345678901~3' a23456789012345678901234567890123456789012345678901234567890123 4567890123456789012345678901234567890123456789012345678901234567 890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234
%S%2.%R%6%MERGES%.%C%1.'병합' 병합
%S%2.%R%11.%C%1.'~1 이후 슬롯 사이트 추천에서 표현할 수 없는 라벨입니다.' "너무 길어서 슬롯 사이트 추천에서 표현할 수 없는 라벨입니다."
%S%2.%R%12.%C%1.'~2 이후 슬롯 사이트 추천에서 표시할 수 없는 레이블입니다.' "또한 너무 길어서 슬롯 사이트 추천에서 표시할 수 없는 레이블입니다."
%S%2.%R%13.%C%1.'슬롯 사이트 추천에서 표현할 수 없는 또 다른 라벨입니다. sin~1' "너무 길어 슬롯 사이트 추천에서 표현할 수 없는 또 다른 라벨입니다."
%S%2.%R%14.%C%1.'슬롯 사이트 추천에서 표현할 수 없는 세 번째 라벨입니다.sin~1' "너무 길어 슬롯 사이트 추천에서 표현할 수 없는 세 번째 라벨입니다."
/;
$offEcho
*** 예상 오류 테스트 ***
$log 기존 기호 이름에 대한 예외 발생 테스트
$onEmbeddedCode 연결:
- Python코드:
코드: |
connect.container.addParameter("vf")
- RawExcelReader:
파일: carxr.xlsx
$offEmbeddedCode
$if errorFree $abort '오류 예상'
$clearErrors
$log 기존 기호 이름에 대한 예외 발생 테스트(빈 파일)
$onEmbeddedCode 연결:
- Python코드:
코드: |
connect.container.addSet("r")
openpyxl 가져오기
wb = openpyxl.Workbook()
wb.save("carxr_empty.xlsx")
- RawExcelReader:
파일: carxr_empty.xlsx
$offEmbeddedCode
$if errorFree $abort '오류 예상'
$clearErrors
*********************************************************
$call.checkErrorLevel 슬롯 사이트 추천 t.gms lo=%슬롯 사이트 추천lo% gdx refnomerge.gdx --vu=vu --S=S --R=R --C=C
$call.checkErrorLevel 게임 t.gms lo=%슬롯 사이트 추천lo% gdx refmerge.gdx --vu=vu --S=S --R=R --C=C --MERGEF="*R11" --MERGES="*R10"
$onEmbeddedCode 연결:
- RawExcelReader:
파일: carxr.xlsx
- GDXWriter:
파일: ctxrxoutnomerge.gdx
$offEmbeddedCode
$onEmbeddedCode 연결:
- RawExcelReader:
파일: carxr.xlsx
mergedCells: 참
- GDXWriter:
파일: ctxrxoutmerge.gdx
$offEmbeddedCode
$call.checkErrorLevel gdxdiff refnomerge.gdx ctxrxoutnomerge.gdx > %system.NullFile%
$call.checkErrorLevel gdxdiff refmerge.gdx ctxrxoutmerge.gdx > %system.NullFile%
$call.checkErrorLevel 슬롯 사이트 추천 t.gms lo=%슬롯 사이트 추천lo% gdx refnomerge.gdx --vu=vux --S=sxx --R=rxx --C=cxx
$call.checkErrorLevel 슬롯 사이트 추천 t.gms lo=%슬롯 사이트 추천lo% gdx refmerge.gdx --vu=vux --S=sxx --R=rxx --C=cxx --MERGEF="*rxx11" --MERGES="*rxx10"
$onEmbeddedCode 연결:
- RawExcelReader:
파일: carxr.xlsx
시트라벨: sxx
rowLabel: rxx
컬럼 라벨: cxx
vu이름: vux
- GDXWriter:
파일: ctxrxoutnomerge.gdx
$offEmbeddedCode
$onEmbeddedCode 연결:
- RawExcelReader:
파일: carxr.xlsx
mergedCells: 참
시트라벨: sxx
rowLabel: rxx
컬럼 라벨: cxx
vu이름: vux
- GDXWriter:
파일: ctxrxoutmerge.gdx
$offEmbeddedCode
$call.checkErrorLevel gdxdiff refnomerge.gdx ctxrxoutnomerge.gdx > %system.NullFile%
$call.checkErrorLevel gdxdiff refmerge.gdx ctxrxoutmerge.gdx > %system.NullFile%
$onEcho > uelcheck.gms
set test(*) / i1*i5 '테스트' /;
별칭(*,S,R,C,U);
vu(S,R,C,U), vuX(S,R,C)를 설정합니다.
$onEmbeddedCode 연결:
- 슬롯 사이트 추천리더:
기호:
- 이름 : 테스트
- Python코드:
코드: |
팬더를 PD로 가져오기
df = connect.container['test'].records
df.iloc[0] = 'uni_0': 'i1', 'element_text': '"테스트"'
df.iloc[1] = 'uni_0': 'i2', 'element_text': "'test'"
df.iloc[2] = 'uni_0': 'i3', 'element_text': 't\'e"s\'t'
df.iloc[3] = 'uni_0': 'i4', 'element_text': 'te\tst'
df.iloc[4] = 'uni_0': 'i5', 'element_text': 'te\nst'
df.to_excel('x.xlsx')
- RawExcelReader:
파일: x.xlsx
- 슬롯 사이트 추천작성기:
기호:
- 이름 : vu
$offEmbeddedCode vu
옵션 vux<vu;
$eolCom !
abort$(not vux('S1','R2','C3')) 'uel을 기대합니다'; ! "테스트"
abort$(not vux('S1','R3','C3')) 'uel을 기대합니다'; ! '테스트'
abort$vux('S1','R4','C3') '유엘이 없을 것으로 예상됩니다.'; ! 넌 그렇지 않아
abort$vux('S1','R5','C3') '유엘이 없을 것으로 예상됩니다.'; ! 탭 st
abort$vux('S1','R6','C3') '유엘이 없을 것으로 예상됩니다.'; ! NEWLINE st
$offEcho
$call.checkErrorLevel 슬롯 사이트 추천 uelcheck.gms lo=2
$log 빈 파일이 있는 테스트 에이전트(일부 기호에는 빈 DataFrame이 있음)
$onEmbeddedCode 연결:
- RawExcelReader:
파일: carxr_empty.xlsx
c이름: col
r이름: 행
이름: sht
- Python코드:
코드: |
data_vf = 연결.컨테이너['vf'].records
data_vs = 연결.컨테이너['vs'].records
data_vu = 연결.컨테이너['vu'].records
예상_vf = ['sht', '행', '열', '값']
예상_vs = ['sht', '행', '열', '요소_텍스트']
예상_vu = ['sht', '행', '열', 'uni', 'element_text']
data_vf가 None이거나 data_vf.empty가 아닌 경우:
raise Exception("빈 DataFrame으로 >vf<가 예상됩니다.")
data_vs가 None이거나 data_vs.empty가 아닌 경우:
raise Exception("빈 DataFrame으로 >vs<가 예상됩니다.")
data_vu가 None이거나 data_vu.empty가 아닌 경우:
raise Exception("빈 DataFrame으로 >vu<가 예상됩니다.")
if (data_vf.columns != Expect_vf).any() :
raise Exception("DataFrame >vf<에 대한 예기치 않은 열")
if (data_vs.columns != Expect_vs).any() :
raise Exception("DataFrame >vs<에 대한 예기치 않은 열")
if (data_vu.columns != Expect_vu).any() :
raise Exception("DataFrame >vu<에 대한 예기치 않은 열")
$offEmbeddedCode