로드 중...
검색 중...
일치하는 항목 없음
TestGAMSSymbolRecord.cs
1사용 중시스템;
2사용 중System.Collections.Generic;
3사용 중시스템.IO;
4사용 중System.Linq;
5사용 중슬롯 나라;
6사용 중NLog;
7사용 중NUnit.Framework;
8
9네임스페이스GamsApiTests
10{
11[테스트 고정 장치]
13{
14
15 정적읽기 전용 문자열 PROPERTIES_FILE ="test.properties";
16 정적문자열 WorkingDir;
17 정적 GAMSWorkspaceInfowsInfo =;
18 정적 슬롯 나라작업공간ws =;
20 정적로거 로거 = LogManager.GetCurrentClassLogger();
21
22[OneTimeSetUp]
23 공개 정적 공허OneTimeSetup()
24{
25로거.디버그("TestGAMSSymbolRecord | OneTimeSetup");
26workingDir =가정부 관리인.gamsAbsoluteWorkingDir;
27 가정부 관리인.initializeTestFrom(PROPERTIES_FILE,"TestGAMSSymbolRecord");
28로거.디버그("TestGAMSSymbolRecord | oneTimeSetup");
29}
30
31[설정]
32 공개 공허설정()
33{
34ws =;
35db =;
36}
37
38[분해]
39 공개 공허분해()
40{
41 if(db !=)
42db.폐기();
43}
44
45[테스트]
46 공개 무효TestDisposedSymbolRecord()
47{
48로거.디버그("TestGAMSSymbolRecord 입력 중 | testDisposedSymbolRecord");
49문자열 testDir = HouseKeeper.gamsWorkingDir + Path.DirectorySeparatorChar +"testDisposedSymbolRecord";
52
53 GAMSJob직업 = ws.AddJobFromGamsLib("trnsport");
54직업.실행();
56
57 GAMSSymbol기호 = db.GetSet("나");
58 GAMSSymbolRecord기록 = 기호.기록 찾기("시애틀");
59기록.열쇠(0);
60 // 언제
62기록 =;
63 // 그럼
64Assert.Throws<NullReferenceException>(() => 레코드.다음으로 이동());
65}
66
67[테스트]
68 공개 무효TestDisposedAllSymbolRecords()
69{
70로거.디버그("TestGAMSSymbolRecord 입력 중 | testDisposedAllSymbolRecords");
71문자열 testDir = HouseKeeper.gamsWorkingDir + Path.DirectorySeparatorChar +"testDisposedAllSymbolRecords";
74
75 GAMSJob직업 = ws.AddJobFromGamsLib("trnsport");
76직업.실행();
78
79 foreach (GAMSSetRecord기록db.GetSet("j"))
80{
81 // 언제
82 GAMSSetRecord기록2 = 기록;
84레코드2 =;
85
86 시도
87{
88 //그러면
89Console.WriteLine(record2.텍스트);
90어설션.실패("폐기 후 GAMSSetRecord에 대한 작업을 기대하지 마십시오");
91}
92 잡기(NullReferenceException e)
93{
94Assert.True(record2 ==, "GAMSSetRecord 개체가 삭제된 후 null이 될 것으로 예상됩니다.");
95}
96 휴식;
97}
98
99
100 foreach (GAMSParameterRecord기록indb.GetParameter("b"))
101{
102 // 언제
103 GAMSParameterRecord기록2 = 기록;
105레코드2 =;
106
107 시도
108{
109 // 그럼
110record2.Key(0);
111어설션.실패("폐기 후 GAMSParameterRecord에 대한 작업을 기대하지 마세요");
112}
113 잡기(NullReferenceException e)
114{
115Assert.True(record2 ==, "GAMSParameterRecord 개체가 삭제된 후 null이 될 것으로 예상합니다.");
116
117}
118 휴식;
119}
120
121{
123 GAMSVariableRecordseattle_topeka = x.기록 찾기("시애틀", "토페카");
125record.Key(0);
126 // 언제
128기록 =;
129 // 그럼
130 시도해 보세요
131{
132Console.WriteLine(기록.레벨);
133어설션.실패("폐기 후 GAMSVariableRecord에 대한 작업을 기대하지 마세요");
134}
135 잡기(NullReferenceException e)
136{
137Assert.True(레코드 ==, "GAMSVariableRecord 개체가 삭제된 후 null이 될 것으로 예상합니다.");
138}
139}
140}
141
142[테스트]
143 공개 무효TestOrderOfDisposedSymbolRecords()
144{
145로거.디버그("TestGAMSSymbolRecord 입력 | testOrderOfDisposedSymbolRecords");
146문자열 testDir = HouseKeeper.gamsWorkingDir + Path.DirectorySeparatorChar +"testOrderOfDisposedSymbolRecords";
149
150 GAMSJob직업 = ws.AddJobFromGamsLib("trnsport");
151직업.실행();
153
156rec1.MoveNext();
157
158문자열[] 키1 = rec1.Keys;
159 더블값1 = Rec1.;
160
161 GAMSParameterRecordrec2 = rec1;
162 // 언제
164rec2 =;
165rec1 =;
166 //그러면
167 시도해 보세요
168{
169rec1.MoveNext();
170어설션.실패("삭제 후 GAMParameterRecord에 대한 작업을 기대하지 마세요");
171}
172 잡기(NullReferenceException e)
173{
174Assert.True((rec1 ==&& Rec2 ==), "GAMSParameterRecord 개체가 삭제된 후 null이 될 것으로 예상합니다.");
175}
176
177rec1 = d.첫 번째 레코드();
178rec1.MoveNext();
179
180
181 //그러면
182Assert.True(값1 == Rec1., "같으면 같음을 기대합니까??");
183Assert.True(rec1.Key(0).Equals(keys1[0]),"같을 것으로 기대합니까??");
184Assert.True(rec1.Key(1).Equals(keys1[1]),"같으면 같음을 기대합니까??");
185
186 //그러면
187 시도해 보세요
188{
189rec2.MoveNext();
190어설션.실패("삭제 후 GAMParameterRecord에 대한 작업을 기대하지 마세요");
191}
192 잡기(NullReferenceException e)
193{
194Assert.True((rec1 !=&& Rec2 ==), "GAMSParameterRecord 개체가 삭제된 후 null이 될 것으로 예상합니다.");
195}
196}
197
198[테스트]
199 공개 무효TestEquivalentSymbolRecord()
200{
201로거.디버그("TestGAMSSymbolRecord 입력 | testEquivalentSymbolRecord");
202문자열 testDir = HouseKeeper.gamsWorkingDir + Path.DirectorySeparatorChar +"testEquivalentSymbolRecord";
205
206 GAMSJob직업 = ws.AddJobFromGamsLib("trnsport");
207직업.실행();
209
210{// 언제
211 GAMSSymbol기호 = db.GetSet("나");
213 GAMSSymbolRecordrec2 = 기호.첫번째 기록();
214 GAMSSymbolRecordrec3 = 기호.기록 찾기("시애틀");
215 // 그럼
216Assert.True(rec1.같음(rec2),"rec1과 rec2가 동일할 것으로 예상합니다");
217Assert.True(rec1.같음(rec3),"rec1과 rec3이 동등할 것으로 예상합니다");
218Assert.False(rec1 == rec2,"rec1과 rec2는 동일한 C# 개체가 아닙니다.");
219Assert.False(rec1 == rec3,"rec1과 rec3은 동일한 C# 개체가 아닙니다.");
220 // 언제, 그러면
221 GAMSSymbolRecordrec4 = 기호.마지막 기록();
222Assert.False(rec1.같음(rec4),"rec1과 rec4는 동일하지 않습니다.");
223Assert.False(rec1 == rec4,"rec1과 rec4는 동일한 C# 개체가 아닙니다.");
224 // 언제, 그렇다면
225 GAMSSetRecordrec5 = 디비.GetSet("나").마지막 기록();
226Assert.True(rec5.Equals(rec4),"rec5와 rec4가 동등할 것으로 예상합니다");
227Assert.False(rec5 == rec4,"rec5와 rec4는 동일한 C# 개체가 아닙니다.");
228 // 언제, 그렇다면
229 GAMSSetRecordrec6 = DB.GetSet("나").기록 찾기("시애틀");
230Assert.True(rec6.Equals(rec1),"rec6과 rec1이 동일할 것으로 예상합니다");
231Assert.False(rec6 == rec1,"rec6과 rec1은 동일한 C# 개체가 아닙니다.");
232}
233{// 언제
234 GAMSSetRecordrec1 = DB.GetSet("나").첫 번째 레코드();
236 // 그럼
237Assert.False(rec1.Equals(rec2),"rec1과 rec2가 동등할 것으로 예상합니다");
238Assert.False(rec1 == rec2,"rec1과 rec2는 동일한 C# 개체가 아닙니다.");
239}
240{// 언제
243 foreach (GAMSParameterRecordrecinb)
244{
245 // 그럼
246 if(rec.Key(0).Equals("토피카"))
247{
248Assert.True(rec.Equals(lastRec),"LastRec과 Rec가 동등할 것으로 기대합니다");
249Assert.False(rec == lastRec,"rec과 lastRec는 동일한 C# 개체가 아닙니다.");
250}
251}
252
253문자열[] 슬라이스 =신규문자열[]" ", "시카고"};
255 // 언제
256 GAMSParameterRecordlastSlicedRecord = d.마지막 기록(슬라이스);
257 GAMSParameterRecord기록 = d.기록 찾기("샌디에고", "시카고");
258Assert.True(lastSlicedRecord.Equals(레코드),"LastRec과 Rec가 동등할 것으로 기대합니다");
259Assert.False(lastSlicedRecord == 기록,"lastSlicedRecord와 레코드는 동일한 C# 개체가 아닙니다.");
260}
261{// 언제
262 GAMSequation비용 = db.GetEquation("비용");
263 GAMSequationRecordfirstRec = 비용.첫 번째 레코드();
264 GAMSequationRecordlastRec = 비용.마지막 기록();
265Assert.True(lastRec.Equals(firstRec),"cost에는 1개의 레코드만 있습니다. LastRec과 firstRec가 동일할 것으로 예상합니다.");
266Assert.False(lastRec == firstRec,"lastRec과 firstRec는 동일한 C# 개체가 아닙니다.");
267}
268{// 언제
270 GAMSVariableRecordfirstRec = x.기록 찾기("시애틀", "토페카");
271문자열[] 슬라이스 =신규문자열[]" ", "토페카"};
272 // 언제
273 GAMSVariableRecordfirstSlicedRec = x.첫번째 기록(슬라이스);
274Assert.True(firstSlicedRec.Equals(firstRec),"firstSlicedRec과 firstRec가 동등할 것으로 기대합니다");
275Assert.False(firstSlicedRec == firstRec,"firstSlicedRec과 firstRec는 동일한 C# 개체가 아닙니다.");
276}
277{// 제공됨
278 GAMSVariableRecordr1 = 디비.GetVariable("x").기록 찾기("시애틀", "뉴욕");
279 GAMSVariableRecordr2 = 디비.GetVariable("x").기록 찾기("시애틀", "뉴욕");
280 GAMSVariableRecordr3 = r1;
282 // 언제, 그러면
283Assert.True(r1.Equals(r2),"r1과 r2가 동등할 것으로 기대합니다");
284Assert.False(r1 == r2,"다른 메모리 참조를 가진 r1과 r2를 기대합니다");
285Assert.True(r1.Equals(r3),"r1과 r3이 동등할 것으로 기대합니다");
286Assert.True(r1 == r3,"같은 메모리 참조를 가진 r1과 r3을 기대합니다");
287
288Assert.True(r1.Equals(r4),"r1과 r4가 동등할 것으로 예상합니다");
289Assert.False(r1 == r4,"다른 메모리 참조를 가진 r1과 r4를 기대합니다");
290}
291로거.디버그("TestGAMSSymbolRecord 종료 | testEquivalentSymbolRecord");
292}
293
294[테스트]
295 공개 무효TestEquivalentSymbolRecord_IteratingRecord()
296{
297로거.디버그("TestGAMSSymbolRecord 입력 | testEquivalentSymbolRecord_IteratingRecord");
298
299 //주어진
300문자열 testDir = HouseKeeper.gamsWorkingDir + Path.DirectorySeparatorChar +"testEquivalentSymbol";
303
304 GAMSJob직업 = ws.AddJobFromGamsLib("trn스포츠");
305직업.실행();
307
308{// 언제
309 GAMSSetj = 디비.GetSet("j");
310 GAMSSetRecord토피카 = j.기록 찾기("토페카");
311 GAMSSetRecordny = j.기록 찾기("뉴욕");
312 GAMSSetRecord시카고 = j.기록 찾기("시카고");
313
315Assert.True(record.Equals(ny),"ny가 첫 번째 레코드로 예상되며 레코드와 동일할 것으로 예상됩니다.");
316 int수 = 0;
317 // 그럼
318 할 것
319{
320 if(record.Key(0).Equals("뉴욕"))
321{
322Assert.True(record.Equals(ny),"record와 ny가 동등할 것으로 기대합니다");
323}
324 그밖에 if(record.Key(0).Equals("시카고"))
325{
326Assert.True(record.Equals(시카고),"기록과 시카고가 동등할 것으로 기대합니다");
327}
328 그밖에 if(record.Key(0).Equals("토페카"))
329{
330Assert.True(record.Equals(topeka),"레코드와 토피카가 동등할 것으로 기대합니다");
331}
332 그밖에
333{
334어설션.실패("[(뉴욕),(시카고),(토피카)] 이외의 다른 키를 가진 b 레코드를 기대하지 마십시오");
335}
336Assert.AreEqual(1, Record.Keys.Length,"1차원의 기록을 기대합니다");
337카운트++;
338}그동안(record.MoveNext());
339Assert.AreEqual(3, 개수,"j로부터 3개의 반복 레코드를 기대합니다.");
340}
341{//언제
343 GAMSParameterRecordseattle_chicago = d.기록 찾기("시애틀", "시카고");
344 foreach (GAMSParameterRecord기록ind)
345{
346 if((record.Key(0).Equals("시애틀") && 레코드.키(1).Equals("시카고")))
347{
348Assert.True(record.Equals(seattle_chicago),"기록과 seattle_chicago가 동등할 것으로 기대합니다");
349}
350 그밖에
351{
352Assert.False(record.Equals(seattle_chicago),"record와 seattle_chicago는 동일하지 않습니다.");
353}
354}
355}
356{//언제
358 GAMSVariableRecordseattle_topeka = x.기록 찾기("시애틀", "토페카");
359 foreach (GAMSVariableRecord기록inx)
360{
361 if((record.Key(0).Equals("시애틀") && 레코드.키(1).Equals("토페카")))
362{
363Assert.True(record.Equals(seattle_topeka),"기록과 seattle_chicago가 동등할 것으로 기대합니다");
364}
365 그밖에
366{
367Assert.False(record.Equals(seattle_topeka),"record와 seattle_chicago는 동일하지 않습니다.");
368}
369}
370}
371{// 언제
372 GAMSequation공급 = DB.GetEquation("공급");
373 GAMSequationRecord샌디에고 = 공급.기록 찾기("샌디에고");
374 GAMSequationRecord시애틀 = 공급.기록 찾기("시애틀");
375 // 그럼
376 foreach (GAMSequationRecord기록in공급)
377{
378 if(record.Key(0).Equals("샌디에고"))
379{
380Assert.True(record.Equals(sandiego),"record와 ny가 동등할 것으로 기대합니다");
381}
382 그밖에 if(record.Key(0).Equals("시애틀"))
383{
384Assert.True(record.Equals(시애틀),"기록과 시카고가 동등할 것으로 기대합니다");
385}
386 그밖에
387{
388어설션.실패("[(san-diego),(seattle)] 이외의 키를 사용하여 b 레코드를 기대하지 마십시오.");
389}
390}
391}
392
393로거.디버그("TestGAMSSymbolRecord 종료 | testEquivalentSymbolRecord_IteratingRecord");
394}
395
396[테스트]
397 공개 무효TestGetKeys()
398{
399로거.디버그("TestGAMSSymbolRecord 입력 | testGetKeys");
400
401문자열 testDir = HouseKeeper.gamsWorkingDir + Path.DirectorySeparatorChar +"testGetKeys";
404
405 GAMSJob직업 = ws.AddJobFromGamsLib("trnsport");
406직업.실행();
408
409 // 언제, 그렇다면
410 GAMSSymbolRecordrec_i = db.GetSet("나").마지막 기록();
411Assert.AreEqual(rec_i..길이, 1,"1차원을 기대합니다");
412Assert.True(rec_i.[0].Equals("샌디에고"), "(sandiego)가 i의 마지막 기록의 키로 기대됩니다.");
413
415Assert.AreEqual(rec_d..길이, 2,"2차원의 d를 기대합니다");
416Assert.True(rec_d.[0].Equals("샌디에고"), "d의 마지막 레코드 키로 (샌디에고, 토피카)를 기대합니다");
417Assert.True(rec_d.[1].Equals("토피카"), "d의 마지막 레코드 키로 (샌디에고, 토피카)를 기대합니다");
418
420Assert.AreEqual(rec_f..길이, 0,"차원이 0인 스칼라 f를 기대합니다");
421
423Assert.AreEqual(rec_x..길이, 2,"2차원의 x를 기대합니다");
424Assert.True(rec_x.[0].Equals("샌디에고"), "x의 마지막 레코드 키로 (샌디에고, 토피카)를 기대합니다");
425Assert.True(rec_x.[1].Equals("토페카"), "x의 마지막 레코드 키로 (샌디에고, 토피카)를 기대합니다");
426
427 GAMSSymbolRecordrec_cost = db.GetEquation("비용").마지막 기록();
428Assert.AreEqual(rec_cost..길이, 0,"0차원으로 비용 예상");
429
430 GAMSSymbolRecordrec_demand = db.GetEquation("수요").마지막 기록();
431Assert.AreEqual(rec_demand..길이, 1,"1차원으로 수요 예상");
432Assert.True(rec_demand.[0].Equals("토페카"), "d의 마지막 레코드 키로 (topeka)를 기대합니다");
433
434로거.디버그("TestGAMSSymbolRecord 종료 | testGetKeys");
435}
436
437[테스트]
438 공개 무효TestGetKey_index()
439{
440로거.디버그("TestGAMSSymbolRecord 입력 중 | testGetKey_index");
441문자열 testDir = HouseKeeper.gamsWorkingDir + Path.DirectorySeparatorChar +"testGetKeysIndex";
444
445 GAMSJob직업 = ws.AddJobFromGamsLib("trnsport");
446직업.실행();
448
449 // 언제, 그렇다면
450 GAMSSymbolRecordrec_i = db.GetSet("나").첫번째 기록();
451Assert.True(rec_i.열쇠(0).Equals("시애틀"), "(시애틀)이 i의 마지막 기록의 키로 예상됩니다.");
452
453 // 언제, 그렇다면
455Assert.True(rec_d.열쇠(0).Equals("샌디에고"), "d의 마지막 레코드 키로 (샌디에고, 토피카)를 기대합니다");
456Assert.True(rec_d.열쇠(1).Equals("토피카"), "d의 마지막 레코드 키로 (샌디에고, 토피카)를 기대합니다");
457
458 // 언제, 그렇다면
460Assert.True(rec_x.열쇠(0).Equals("샌디에고"), "x의 마지막 레코드 키로 (샌디에고, 토피카)를 기대합니다");
461Assert.True(rec_x.열쇠(1).Equals("토페카"), "x의 마지막 레코드 키로 (샌디에고, 토피카)를 기대합니다");
462
463 // 언제, 그렇다면
464 GAMSSymbolRecordrec_demand = db.GetEquation("수요").첫 번째 레코드();
465Assert.True(rec_demand.열쇠(0).Equals("뉴욕"), "마지막 수요 기록의 열쇠로 (뉴욕)을 기대합니다");
466
467로거.디버그("TestGAMSSymbolRecord 종료 | testGetKey_index");
468}
469
471 //[테스트]
472 //공개 무효 TestGetSymbol()
473 //{
474 // logger.Debug("TestGAMSSymbolRecord 입력 | testGetKey_index");
475 // 문자열 testDir = HouseKeeper.gamsWorkingDir + Path.DirectorySeparatorChar + "testGetKeys";
476 // HouseKeeper.prepare(testDir);
477 // GAMSWorkspace ws = new GAMSWorkspace(testDir, HouseKeeper.gamsSystemDir, DebugLevel.Off);
478
479 // GAMSJob 작업 = ws.AddJobFromGamsLib("trnsport");
480 // 작업.실행();
481 // GAMSDatabase db = job.OutDB;
482
483 // // 언제, 그렇다면
484 // GAMSSymbol i = db.GetSet("i");
485 // GAMSSymbolRecord rec_i1 = i.FirstRecord();
486 // GAMSSymbolRecord rec_i2 = db.GetSet("i").FirstRecord();
487 // Assert.True(rec_i1.getSymbol().Equals(i));
488 // Assert.True(rec_i2.getSymbol().Equals(i));
489
490 // // 언제, 그렇다면
491 // GAMSSymbol <?> d = db.GetParameter("d");
492 // GAMSSymbolRecord rec_d1 = d.LastRecord();
493 // GAMSSymbolRecord rec_d2 = db.GetParameter("d").LastRecord();
494 // Assert.True(rec_d1.getSymbol().Equals(d));
495 // Assert.True(rec_d2.getSymbol().Equals(d));
496
497 // // 언제, 그렇다면
498 // GAMSSymbol <?> x = db.GetVariable("x");
499 // GAMSSymbolRecord rec_x1 = x.LastRecord();
500 // GAMSSymbolRecord rec_x2 = db.GetVariable("x").LastRecord();
501 // Assert.True(rec_x1.getSymbol().Equals(x));
502 // Assert.True(rec_x2.getSymbol().Equals(x));
503
504 // // 언제, 그렇다면
505 // GAMSSymbol <?> 수요 = db.GetEquation("수요");
506 // GAMSSymbolRecord rec_demand1 = 수요.FirstRecord();
507 // GAMSSymbolRecord rec_demand2 = db.GetEquation("수요").FirstRecord();
508 // Assert.True(rec_demand1.getSymbol().Equals(수요));
509 // Assert.True(rec_demand2.getSymbol().Equals(수요));
510
511 // logger.Debug("TestGAMSSymbolRecord 종료 | testGetKey_index");
512 //}
513
514}
515}
516
GAMSVariable GetVariable(문자열 변수 식별자)
GAMSParameter GetParameter(문자열 매개변수 식별자)
GAMSSet GetSet(string setIdentifier)
GAMSequation GetEquation(문자열 방정식 식별자)
새 GAMSEquationRecord FindRecord(params 문자열[] 키)
새 GAMSequationRecord FirstRecord()
새 GAMSequationRecord 마지막 레코드()
슬롯 나라데이터베이스 OutDB
void Run(GAMSOptions gamsOptions=null, GAMSCheckpoint 체크포인트=null, TextWriter 출력=null, Boolean createOutDB=true)
새 GAMSParameterRecord 마지막 레코드()
새 GAMSParameterRecord FindRecord(params 문자열[] 키)
새 GAMSParameterRecord FirstRecord()
새 GAMSSetRecord 마지막 레코드()
새 GAMSSetRecord FirstRecord()
새 GAMSSetRecord FindRecord(params 문자열[] 키)
bool Equals(객체 obj) 재정의
문자열 키(int 인덱스)
GAMSSymbolRecord FirstRecord()
GAMSSymbolRecord FindRecord(params string[] 키)
GAMSSymbolRecord 마지막 레코드()
새 GAMSVariableRecord FindRecord(params 문자열[] 키)
새 GAMSVariableRecord FirstRecord()
새 GAMSVariableRecord 마지막 레코드()
GAMSJob AddJobFromGamsLib(문자열 모델, GAMSCheckpoint 체크포인트=null, 문자열 jobName=null)
static void prepare(String dir)
디렉토리 존재 여부를 확인하여 준비하세요. 존재하는 경우 (비재귀적으로) 모든 내용을 삭제합니다...
static void 초기화TestFrom(문자열 파일 이름, 문자열 하위 디렉터리)
fileName에서 클래스 속성을 초기화하고 디렉토리 하위 디렉토리 준비