59{
60cout <<"---------- 도메인 확인 중 ------------"<< endl;
61
62
63벡터<string> 식물"시애틀", "샌디에이고"};
64벡터<string> 시장"뉴욕", "시카고", "토피카"};
65map<string, double> 용량"시애틀", 350.0 }, { "샌디에고", 600.0 } };
66map<string, double> 수요"뉴욕", 325.0 }, { "시카고", 300.0 }, { "토피카", 275.0 } };
67맵<튜플<문자열, 문자열>,더블> 거리
68make_tuple<문자열,문자열> ("시애틀", "뉴욕"), 2.5 },
69make_tuple<string,string> ("시애틀", "시카고"), 1.7 },
70make_tuple<string,string> ("시애틀", "토피카"), 1.8 },
71make_tuple<string,string> ("샌디에고", "뉴욕"), 2.5 },
72make_tuple<string,string> ("샌디에고", "시카고"), 1.8 },
73make_tuple<string,string> ("샌디에이고", "토피카"), 1.4 }
74};
75
76
77 시도해 보세요{
79 if(인수 > 1)
82
84
85
87 for (자동식물: 식물)
90 for (자동시장: 시장)
92
93
95 for (문자열식물: 식물)
97
98
100cout <<"*** 다음에서 예기치 않은 도메인 위반이 발생했습니다."<< endl;
101 반환1;
102}
103
104
106 for (문자열시장: 시장)
108
109
111cout <<"*** b에서 예기치 않은 도메인 위반"<< endl;
112 반환1;
113}
114
115
117 for (자동t : 거리)
118 자동튜플 = t.first;
119 자동t1 = get<0>(튜플);
120 자동t2 = get<1>(튜플);
122}
123
124
126cout <<"*** d에서 예기치 않은 도메인 위반"<< endl;
127 반환1;
128}
129
130
132cout <<"*** DB에서 예기치 않은 도메인 위반"<< endl;
133 반환1;
134}
135
136
143
144
146cout <<"*** DB에 대한 도메인 위반이 인식되지 않음"<< endl;
147 반환1;
148}
150cout <<"*** 인식되지 않는 도메인 위반"<< endl;
151 반환1;
152}
154cout <<"*** d에 대한 도메인 위반이 인식되지 않음"<< endl;
155 반환1;
156}
157
158
160cout <<"*** b에서 예기치 않은 도메인 위반"<< endl;
161 반환1;
162}
163
164
165 intdvCnt = 0;
166cout <<"다음 도메인 위반:"<< endl;
168cout <<" > ";
169 for (부울vi: sdv.violInd())
170cout << (vi ?"사실입니다":"거짓");
171cout <<"<> ";
172 for (문자열k: sdv.violRec().keys())
173cout << k <<" ";
174cout <<"<<"<< endl;
175dvCnt++;
176}
177 if(dvCnt != 2)
178cout <<"*** a에 대한 도메인 위반 횟수는 2여야 하지만 "<< dvCnt << endl;
179 반환1;
180}
181
182
183dvCnt = 0;
184cout <<"d의 도메인 위반:"<< endl;
186cout <<" > ";
187 for (부울vi: sdv.violInd())
188cout << (vi ?"사실입니다":"거짓");
189 if(vi)
190dvCnt++;
191}
192cout <<"<> ";
193 for (문자열k: sdv.violRec().keys())
194cout << k <<" ";
195cout <<"<<"<< endl;
196}
197 if(dvCnt != 3)
198cout <<"*** a에 대한 도메인 위반 횟수는 3이어야 하지만 확인했습니다. "<< dvCnt << endl;
199 반환1;
200}
201
202
203dvCnt = 0;
204cout <<"DB의 도메인 위반:"<< endl;
206cout <<" > "+ DDV.violSym().name() +": "<< endl;
208cout <<" ";
209 for (부울vi: sdv.violInd())
210cout << vi <<" ";
211 if(vi)
212dvCnt++;
213}
214cout <<"<> ";
215 for (문자열k: sdv.violRec().keys())
216cout << k <<" ";
217cout <<"<<"<< endl;
218}
219}
220 if(dvCnt != 5)
221cout <<"*** db에 대한 도메인 위반 횟수는 5여야 하지만 확인했습니다. "<< dvCnt << endl;
222 반환1;
223}
224
225
226dvCnt = 0;
227cout <<"DB의 도메인 위반:"<< endl;
229cout <<" > "+ DDV.violSym().name() +": "<< endl;
231cout <<" ";
232 for (부울vi: sdv.violInd())
233cout << vi <<" ";
234cout <<"<> ";
235 for (문자열k: sdv.violRec().keys())
236cout << k <<" ";
237cout <<"<<"<< endl;
238dvCnt++;
239}
240}
241 if(dvCnt != 3)
242cout <<"*** db에 대한 도메인 위반 횟수는 3이어야 하는데 "<< dvCnt << endl;
243 반환1;
244}
245
246dvCnt = 0;
247cout <<"DB의 도메인 위반:"<< endl;
249cout <<" > "+ DDV.violSym().name() +": "<< endl;
251cout <<" ";
252 for (부울vi: sdv.violInd())
253cout << vi <<" ";
254cout <<"<> ";
255 for (문자열k: sdv.violRec().keys())
256cout << k <<" ";
257cout <<"<<"<< endl;
258dvCnt++;
259}
260}
261 if(dvCnt != 2)
262cout <<"*** db에 대한 도메인 위반 횟수는 2여야 하는데 "<< dvCnt << endl;
263 반환1;
264}
265
266
267 부울sawException =거짓;
268 시도해 보세요{
270}잡기(...) {
271sawException =참;
274}
275 if(!sawException)
276cout <<"*** 기본적으로 도메인 위반이 포함된 슬롯 무료체험데이터베이스를 내보낼 수 없어야 합니다."<< endl;
277 반환1;
278}
279
280
283
284
286 if(!item.isRelaxed())
288 if(domSet.
이름() ==
"나") {
290 if(find(plants.begin(), Plants.end(), uel.key(0)) == Plants.end())
291cout <<"*** 예상치 못한 uel "+ uel.key(0) +" 도메인 i에서 발견됨"<< endl;
292 반환1;
293}
294}그밖에 if(domSet.name() =="j") {
296 if(find(markets.begin(), market.end(), uel.key(0)) == market.end())
297cout <<"*** 예상치 못한 uel "+ uel.key(0) +" 도메인 j에서 발견됨"<< endl;
298 반환1;
299}
300}그밖에{
301cout <<"*** GAMSSet i 및 j가 필요했지만 발견됨"+ domSet.name() << endl;
302 반환1;
303}
304}
305 그밖에
306{
307cout <<"*** GAMSSet을 도메인으로 예상했지만 완화된 도메인을 찾았습니다. "+ item.name() << endl;
308 반환1;
309}
310}
311
312
313
314
315
316
317
321cout <<"별칭 집합의 요소:"<< endl;
323cout <<" > "+ item.key(0) << endl;
324
327
328
330cout <<"빈 UEL을 추가한 후 테스트 세트의 요소:"<< endl;
331cout <<
" > "<< 테스트세트.
번호레코드() << endl;
332
333
335cout <<"기록 'a'는 'a'와 동일해야 합니다:"<< endl;
337
338
339
340테스트세트.
추가기록(
"123456789012345678901234567890123456789012345678901234567890123").
setText(
"알았어");
341
342sawException =거짓;
343 시도해 보세요{
344테스트세트.
추가기록(
"1234567890123456789012345678901234567890123456789012345678901234").
setText(
"괜찮지 않음");
345}잡기(...) {
346sawException =참;
347}
348 if(!sawException)
349cout <<"*** 63자를 초과하는 레코드를 추가하는 것은 불가능해야 합니다."<< endl;
350 반환1;
351}
352
353
354테스트DB.
추가세트(
"텍스트 확인",
"12345678901234567890123456789012345678901234567890123 45678901234567890123456789012345678901234567890123456789012345678901 23456789012345678901234567890123456789012345678901234567890123456789 012345678901234567890123456789012345678901234567890123456789012345");
355sawException =거짓;
356 시도해 보세요{
357테스트DB.
추가세트(
"textNotOK",
"123456789012345678901234567890123456789012345678901234 56789012345678901234567890123456789012345678901234567890123456789012 34567890123456789012345678901234567890123456789012345678901234567890 123456789012345678901234567890123456789012345678901234567890123456");
358}잡기(...) {
359sawException =참;
360}
361 if(!sawException)
362cout <<"*** 255자를 초과하는 설명 텍스트를 추가하는 것은 불가능해야 합니다."<< endl;
363 반환1;
364}
365
366테스트세트.
추가기록(
"알았어").
setText(
"12345678901234567890123456789012345678901234567890123 45678901234567890123456789012345678901234567890123456789012345678901 23456789012345678901234567890123456789012345678901234567890123456789 012345678901234567890123456789012345678901234567890123456789012345");
367sawException =거짓;
368 시도해 보세요{
369테스트세트.
추가기록(
"안 돼요").
setText(
"123456789012345678901234567890123456789012345678901234 56789012345678901234567890123456789012345678901234567890123456789012 34567890123456789012345678901234567890123456789012345678901234567890 123456789012345678901234567890123456789012345678901234567890123456");
370}잡기(...) {
371sawException =사실;
372}
373 if(!sawException)
374cout <<"*** 255자를 초과하는 설명 텍스트를 추가하는 것은 불가능해야 합니다."<< endl;
375 반환1;
376}
377
378
380testSet.
추가기록(
"인용문\"");
381sawException =거짓;
382 시도해 보세요{
384}잡기(...) {
385sawException =참;
386}
387 if(!sawException)
388cout <<"*** 레코드에 작은따옴표와 큰따옴표를 추가하는 것은 불가능해야 합니다."<< endl;
389 반환1;
390}
391
394cout <<"슬롯 무료체험예외 발생: "<< ex.what() << endl;
395}잡기(예외 &ex)
396cout << ex.what() << endl;
397}
398
399 반환0;
400}
std::벡터< GAMSDatabaseDomainViolation > getDatabaseDVs(int maxViol=0, int maxViolPerSym=0)
GAMSSet addSet(const std::string &name, const int 차원, const std::string &explanatoryText="", GAMSEnum::SetType setType=GAMSEnum::SetType::Multi)
GAMSParameter addParameter(const std::string &name, const int 차원, const std::string &explanatoryText="")
void doExport(const std::string &filePath="")
GAMSSet getSet(const std::string &name)
GAMSParameter getParameter(const std::string &name)
void setSuppressAutoDomainChecking(bool value)
void setValue(const double val)
GAMSParameterRecord addRecord(const std::벡터< std::string > &keys)
void setText(const std::string &text)
GAMSSetRecord findRecord(const std::벡터< std::string > &keys)
GAMSSetRecord addRecord(const std::벡터< std::string > &keys)
std::벡터< GAMSSymbolDomainViolation > getSymbolDVs(int maxViol=0)
std::string & name() const
int numberRecords() const
std::벡터< GAMSDomain > 도메인()
void setSystemDirectory(const std::string &systemDir)
std::string getDataText()