로드 중...
검색 중...
일치하는 항목 없음
크레이지 슬롯m
1함수별칭(varargin)
2
3% 인수에서 작업공간 정보 확인
4 if나긴 > 0
5wsInfo = 크레이지 슬롯control.WorkspaceInfo();
6wsInfo.systemDirectory = varargin1;
7ws = 크레이지 슬롯control.Workspace(wsInfo);
8 그밖에
9ws = 크레이지 슬롯control.Workspace();
10
11
12데이터 =
13 'i / i1*i3 /' 설정
14 ' j / j1*j3 /'
15 ' ij / #i:#j /'
16 '별칭 (i,ii), (j,jj), (ij,iijj);'
17 '매개변수'
18 ' a(i) / #i 1 /, 크레이지 슬롯(ii) / #ii 2 /;'};
19데이터 = 스프린트f('%s\n', 데이터:);
20
21gdxdump1 =
22 '$onempty'
23 ''
24 '설정 i(*) /'
25 '''i1'', '
26'''i2'', '
27'''i3''/;'
28''
29'j(*) 설정 /'
30'''j1'', '
31'''j2'', '
32'''j3''/;'
33''
34'ij(*,*) 설정 /'
35'''i1''.''j1'', '
36'''i2''.''j2'', '
37'''i3''.''j3''/;'
38''
39'별칭 (ii, i);'
40''
41'별칭(jj, j);'
42''
43'별칭(iijj, ij);'
44''
45'매개변수 a(i) /'
46'''i1'' 1, '
47'''i2'' 1, '
48'''i3''1 /;'
49''
50'매개변수 크레이지 슬롯(ii) /'
51'''i1'' 2, '
52'''i2'' 2, '
53'''i3''2 /;'
54''
55'$offempty'
56''};
57gdxdump1 = 스프린트f('%s\n', gdxdump1:);
58
59gdxdump2 =
60'$oneempty'
61''
62'설정 i(*) /'
63'''i1'', '
64'''i2'', '
65'''i3''/;'
66''
67'매개변수 크레이지 슬롯(i) /'
68'''i1'' 2, '
69'''i2'' 2, '
70'''i3''2 /;'
71''
72'$offempty'
73''};
74gdxdump2 = 스프린트f('%s\n', gdxdump2:);
75
76% 별칭을 포함하는 초기 데이터 생성
77% OO API는 별칭에 대해 알지 못하며 이를 세트로 검색합니다.
78j1 = ws.addJobFromString(데이터);
79j1.run();
80
81checkAliasLogic('j1.outDB', j1.outDB);
82
83j1.outDB.export('outDB.gdx');
84assert(SameGdxDump(ws, 'outDB.gdx', gdxdump1), 'gdxdump outDB.gdx의 예상치 못한 결과');
85
86% 복사 생성자는 별칭 및 기타를 보존해야 합니다.
87db = ws.addDatabase(j1.outDB);
88checkAliasLogic('db', db);
89db.export('db.gdx');
90assert(SameGdxDump(ws, 'db.gdx', gdxdump1), 'gdxdump db.gdx의 예상치 못한 결과');
91
92db2 = ws.addDatabase();
93ii = db2.addSet(db.getSet('ii').이름, db.getSet('ii').text, '*');
94db.getSet('ii').copySymbol(ii);
95
96aaOriginal = db.getParameter('아아');
97크레이지 슬롯 = db2.addParameter(db.getParameter('아아').이름, db.getParameter('아아').text, ii);
98aaOriginal.copySymbol(크레이지 슬롯);
99db2.export('db2.gdx');
100
101assert(SameGdxDump(ws, 'db2.gdx', gdxdump2), 'gdxdump db2.gdx의 예상치 못한 결과');
102
103% 도메인이 별칭인 경우 도메인은 별칭 세트를 반환해야 합니다.
104% 그러나 getDomainsAsStrings는 별칭 이름을 반환해야 합니다.
105assert(isa(aaOriginal.domains1, '설정'), '도메인설정세트여야 합니다');
106assert(strcmp(aaOriginal.domains1.name, 'i'), '도메인설정원본이어야 합니다설정');
107assert(strcmp(aaOriginal.domainsAsStrings1, 'ii'), '도메인은문자열별칭 이름이어야 합니다');
108
109
110함수 checkAliasLogic(접두사, aliasDB)
111% 기호 수 확인
112assert(aliasDB.numberOfSymbols == 5, '%s aliasDB에는 NrSymbols=5: i,j,ij,a,크레이지 슬롯가 있어야 합니다.', 접두사);
113assert(numel(aliasDB.symbols) == 5, '%s aliasDB에는 5개의 기호가 있습니다: i,j,ij,a,크레이지 슬롯.', 접두사);
114
115% 별칭 세트를 검색할 수 있는지 확인하세요
116assert(strcmp(aliasDB.getSet('ii').이름, 'i'), '%s 우리는 해야 합니다얻기 세트물어볼 때for별칭 ii.', 접두사);
117assert(strcmp(aliasDB.getSet('jj').이름, 'j'), '%s 우리는 해야 합니다얻기 세트j 물을 때for별칭 jj.', 접두사);
118assert(strcmp(aliasDB.getSet('iijj').이름, 'ij'), '%s 우리는 해야 합니다얻기 설정ij 물을 때for별명 iijj.', 접두사);
119
120% 도메인 로직 확인
121assert(aliasDB.checkDomains(), '%s 도메인 확인은 다음과 같아야 합니다.', 접두사);
122도메인 = aliasDB.getParameter('아아').도메인;
123assert(isa(도메인1, '크레이지 슬롯control.Set'), '크레이지 슬롯의 %s 도메인[0]은(는)세트', 접두사);
124assert(strcmp(도메인1.이름, 'i'), '크레이지 슬롯의 %s 도메인[0]은 i를 가리켜야 합니다.', 접두사);
125
126aliasDB.getSet('ii').deleteRecord('i1');
127assert(~aliasDB.checkDomains(), '%s 도메인 확인은 다음과 같아야 합니다.거짓i1 제거 후', 접두사);
128aliasDB.getSet('ii').addRecord('i1');
129assert(aliasDB.checkDomains(), '%s 도메인 확인은 다음과 같아야 합니다.i1을 다시 추가한 후', 접두사);
130
131
132함수 is_equal = SameGdxDump(ws, gdxfile, 예상 결과)
133cmd = 전체 파일(ws.systemDirectory(), 'gdxdump');
134cmd_arg = fullfile(ws.workingDirectory(), gdxfile);
135
136[상태, cmdout] = 시스템([cmd, ' ', cmd_arg]);
137cmdout = strsplit(cmdout, char(10));
138found_start = false;
139for i = numel(cmdout):-1:1
140iffound_start
141cmdout(i) = [];
142
143if strcmp(cmdouti, '$oneempty')
144found_start = true;
145
146
147expectedResult = strsplit(expectedResult, char(10));
148
149is_equal = true;
150if numel(expectedResult) ~= numel(cmdout)
151is_equal = false;
152반환
153
154for i = 1:numel(cmdout)
155if ~strcmp(cmdouti, 예상결과i)
156is_equal = false;
157반환
158
159
160