설명
이 모델은 EMP 라이브러리에 포함된 모든 모델과 그 성공을 실행합니다. 기여자: Jan-H. Jagla, 2009년 1월
소형 모델 유형 :슬롯 게임
카테고리 : 슬롯 게임 EMP 라이브러리
메인 파일 : goempgo.gms 포함: empmod.inc[html]
$title 'EMP 품질 보증 테스트' (GOEMPGO,SEQ=16)
$onText
이 모델은 EMP 라이브러리에 포함된 모든 모델과 해당 모델의 성공을 실행합니다.
기여자: Jan-H. 자글라, 2009년 1월
$offText
$eolCom //
$세트 슬래시 \
$if %system.filesys% == UNIX $set SLASH /
$prefix가 설정되지 않은 경우 $set PREFIX %system.platform%
$set GAMSLO %슬롯 게임lo%
$if %슬롯 게임ide% == 1 $set GAMSLO 2
$set 플래그 lo=%GAMSLO% etlim=1800 %슬롯 게임user1%
$set ALL all_emp.gms
$set FAIL failures_emp.gms
$set RMDIR rmdir.gms
$TRACE가 설정되지 않은 경우 $set TRACE emplib.trc // gtrace 파일 추적=%TRACE%
$ TRACEREP가 설정되지 않은 경우 $set TRACEREP emplib.rep // Gtrace 보고서 파일
$세트 TL 6
스칼라 라이센스 /0/;
$if '%LICENSE%' == '예' 라이센스 = 1;
$include empmod.inc
$설정되지 않은 경우 TEST $goTo alltests
m2(m) / %TEST% / 설정;
$goTo 단일 테스트
$label 모든 테스트
m2(m)을 설정합니다. m2(m) = 예;
$label 단일 테스트
솔버 설정 솔버 마스터 세트 / system.solverNames /
solverPlatformMap(solvers,*) / system.SolverPlatformMap /
mt modelTypes / system.modeltypes /
avail(solvers) 이 플랫폼에 사용 가능한 EMP 솔버';
$ifThen 솔버 설정
set SingleS(solvers) / %solver% /;
루프(싱글S,
abort$(notsolvers(singleS)) '솔버가 유효하지 않습니다.';
abort$(not sum(solverPlatformMap(singleS,'%system.platform%'),1)) '이 플랫폼에서는 솔버를 사용할 수 없습니다.';
abort$(not SolverCapabilities(singleS,'EMP')) '솔버가 EMP 모델을 풀 수 없습니다.';
avail(singleS) = 예;
);
$else
어베일(해결사)
= 해결사(해결사)
및 sum(solverPlatformMap(solvers,'%system.platform%'),1)
및 SolverCapability(solvers,'EMP');
$endIf
$onEmpty
세트
SkipM(m) 모델 건너뛰기 /
emphtm 'EMP 라이브러리 웹 페이지를 생성하지만 테스트는 생성하지 않는 유틸리티'
emputil 'EMP 라이브러리 파일을 생성하지만 테스트는 생성하지 않는 유틸리티'
Goempgo '테스트 그 자체'
/
SkipMstdo(m) 모델 stdout 확인 건너뛰기 /
epppython1 'Ply가 "LALR 테이블 생성 중"을 씁니다.'
/
SkipMstde(m) 모델 표준 오류 확인 건너뛰기 /
/
SkipMtrace(m) 모델 추적 확인 건너뛰기 /
/
SkipS(solvers) 솔버 건너뛰기 /
변환
케스트렐
/
SkipSstdo(solvers) 솔버 stdout 검사 건너뛰기 /
/
SkipSstde(solvers) 솔버 stderr 검사 건너뛰기 /
/
SkipSM(solvers,m) 모델-해석-조합 건너뛰기 /
LINDO.circlesp 'LINDO의 로컬 해석은 테스트에서 예상한 것만큼 정확하지 않습니다.'
RESHOP.(exc2x2emp) 'IEEE 754 정의되지 않은 작업이 포함된 모델에 대해 생각해야 함'
RESHOP.(scarfemp-primal) 'DUALVAR은 아직 지원되지 않습니다.'
RESHOP.(파이) 'DUALVAR은 아직 지원되지 않습니다.'
RESHOP.(hark-stack) 'DUALVAR은 아직 지원되지 않습니다.'
RESHOP.(two3emp) 'DUALVAR은 아직 지원되지 않습니다.'
RESHOP.(vidualvar) 'DUALVAR은 아직 지원되지 않습니다.'
$if %system.buildcode% == DEG LINDO.simplechance 'DEG의 비결정적 오류'
/
SkipSMtrace(solvers,m) 모델-솔버-조합 추적 검사 건너뛰기 /
DE.tr20 'DE는 첫 번째 및 세 번째 해결에서 9,14를 보고합니다.'
LINDO.tr20 'LINDO는 첫 번째와 세 번째 해결에서 9,14를 보고합니다'
/;
$off비어 있음
* DE 및 LINDO를 사용하여 비SP 모델 건너뛰기
SkipSM('DE' ,m) $= not sum(sm(s,m),ts('SP',s));
SkipSM('LINDO' ,m) $= not sum(sm(s,m),ts('SP',s));
* JAMS를 사용하여 SP 모델 건너뛰기
SkipSM('JAMS' ,m) $= sum(sm(s,m),ts('SP',s));
* LOGMIP을 사용한 논리 모델만 수행
SkipSM('LOGMIP',m) $= not sum(sm(s,m),ts('LOGMIP',s));
* ReSHOP을 사용하여 VI/equil 모델이 아닌 모델 건너뛰기
SkipSM('RESHOP' ,m) $= sum(sm(s,m),ts('VI',s))가 아니고 sum(sm(s,m),ts('EQUIL',s))도 아님
sum(sm(s,m),ts('BP',s))도 아니고 sum(sm(s,m),ts('EQUIL',s))도 아닙니다.
스칼라
RC / 0 /,
~ / 0 /,
오류 / 0 /,
표준 오류 / 0 /,
표준 출력 / 0 /;
파일폰 / 'onetest.gms' /
fstd / 'stdtest.gms' /
가을 / '%ALL%' /
실패 / '%실패%' /
frm / '%RMDIR%' /
FX;
$if %ALL% == all_emp.gms putclose fall '* 우리가 실행한 테스트입니다.' /;
$if %FAIL% == failures_emp.gms putclose ffail '* 실패한 테스트입니다.' / '*총 테스트 수: 0 실패한 테스트 수: 0';
putclose frm '* 성공적인 테스트 디렉터리 삭제' /;
폰.lcase = 1;
fstd.lcase = 1;
fall.lcase = 1;
fail.lcase = 1;
frm.lcase = 1;
fx.lcase = 1;
fall.ap = 1;
fail.ap = 1;
frm.ap = 1;
$set DIRNAME "'%PREFIX%_emp_' m.tl:0 '_' t.tl:0 '_'solvers.tl:0"
loop((sm(s,m2(m)),ts(t,s))$(건너뛰지 않음M(m) 및 (크지 않거나 라이선스가 부여되지 않음)),
loop(avail(solvers)$(skipS(solvers)가 아니고 SkipSM(solvers,m)이 아님),
tot = tot + 1;
//빈 디렉토리와 onetest 생성
put_utility fx 'shell' / 'rm -rf ' %DIRNAME% ' && mkdir ' %DIRNAME%;
폰 넣어
'$offCheckError레벨'
/ '$call emplib -q ' m.tl:0
/ '$if 오류 수준 1 $abort'
/ '$echo JobStart ' m.tl:0 ' >> %TRACE%'
/ '$call 슬롯 게임 ' m.tl:0 ' jt=' m.tl:0 ' emp='solvers.tl:0 ' Trace=%TRACE% %FLAGS%'
/ '$if 오류 수준 1 $set 오류 1'
put$(skipMtrace(m)가 아니고, SMtrace(solvers,m)이 아님)
/ '$call 슬롯 게임 %TRACE% a=gt ps=0 pw=255 tl=0 lo=2';
닫아두다
/ '$if 오류 수준 1 $set 오류 1'
/ '$if 설정 오류 스칼라 오류 /%err%/'
/ '$call 고양이 %TRACE% >> ..%SLASH%%TRACE%'
/ "$if %err% == 1 $abort '문제'";
// 이동 및 onetest 실행
put_utility fx 'shell' / 'mv -f onetest.gms ' %DIRNAME% ' && cd ' %DIRNAME% ' && 슬롯 게임 onetest lo=%GAMSLO% --err=0 gdx=..%SLASH%err >stdout.txt 2>stderr.txt';
rc=1;
Execute_load 'err' rc=err;
//stdout 및 stderr 테스트 생성
putclose fstd
'$offCheckError레벨'
/ '$call test -s stdout.txt'
/ '$if errorlevel 1 $set stdout 0'
/ '$call test -s stderr.txt'
/ '$if 오류 수준 1 $set stderr 0'
/ '스칼라 표준 출력 /%stdout%/'
/ ' 표준 오류 /%stderr%/;';
//stdout/err 테스트 실행
put_utility fx 'shell' / 'mv -f stdtest.gms ' %DIRNAME% ' && cd ' %DIRNAME% ' && 슬롯 게임 stdtest.gms lo=%GAMSLO% --stderr=1 --stdout=1 gdx=..%SLASH%std';
표준출력=1; 표준 오류=1;
Execute_load 'std' stderr,stdout;
//모든 테스트를 포함하는 파일 생성
fall '$call 슬롯 게임 goempgo %FLAGS% --prefix=%PREFIX% --test=' m.tl:0 ' --solver='solvers.tl:0 ;
if(라이센스가 있는 경우 ' --LICENSE=yes' 입력);
if(rc, put ' --ftrace=1' );
if(stdout 및 SkipMstdo(m)가 아님
SkipSstdo(solvers)가 아닌 ' --fstdout=1' );
if(stderr이고 건너뛰지Mstde(m)
SkipSstde(solvers)가 아닌 ' --fstderr=1' );
putclose ' --dir='%DIRNAME% /;
if (rc 또는 (stdout이고 SkipMstdo(m)이 아니고 SkipSstdo(solvers)가 아님)
또는 (skipMstde(m)이 아닌 stderr 및 SkipSstde(solvers)가 아닌),
오류 = 오류 + 1;
'tail -n1 %ALL% >> %FAIL%'를 실행합니다.
그렇지 않으면
putclose frm '$call rm -rf ' %DIRNAME%;
);
);
);
'슬롯 게임 %TRACE% a=gt ps=0 pw=255 o=%TRACEREP% tl=%TL% lo=0'을 실행합니다.
'슬롯 게임 %RMDIR% lo=0'을 실행합니다.
putclose ffail '*총 테스트 수: ', tot:0:0, ' 실패한 테스트 수: ', err:0:0;
'rm -f rmdir.* err.gdx std.gdx'를 실행합니다.
if ((err > 0),
put_utility 'log' / err:0:0, ' 중 ' ,tot:0:0, ' 테스트가 실패했습니다.';
put_utility 'log' / '%FAIL% 확인';
put_utility 'log' / '일부 테스트가 실패했습니다.';
그렇지 않으면
put_utility 'log' / '축하합니다! 모든 ', tot:0:0, ' 테스트가 통과되었습니다.'/;
);
put_utility 'log' / '모든 실행을 재현하려면 %ALL% 파일을 참조하세요.'/;