로드 중...
검색 중...
일치하는 항목 없음
TestGAMSIterator.cs
1사용 중시스템;
2사용 중System.Collections;
3사용 중System.Collections.Generic;
4사용 중시스템.IO;
5사용 중System.Linq;
7사용 중NLog;
8사용 중NUnit.Framework;
9
10네임스페이스GamsApiTests
11{
12[테스트 고정 장치]
14{
15
16 정적읽기 전용 문자열 PROPERTIES_FILE ="슬롯 사이트 추천properties";
17 정적문자열 WorkingDir;
19 정적문자열 testDir;
20 정적로거 로거 = LogManager.GetCurrentClassLogger();
21
22[OneTimeSetUp]
23 공개 정적 무효OneTimeSetup()
24{
25로거.디버그("TestGAMSIterator | OneTimeSetup");
26workingDir =가정부 관리인.gamsAbsoluteWorkingDir;
27 가정부 관리인.initializeTestFrom(속성_파일,"TestGAMSIterator");
28로거.디버그("TestGAMSIterator | oneTimeSetup");
29
30문자열 테스트 이름 = typeof(TestGAMSIterator).이름;
31 // 제공됨
32testDir = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, 테스트 이름);
34
35}
36
37[OneTimeTearDown]
38 공개 정적 공허OneTimeTearDown()
39{
40 가정부 관리인.delete(testDir);
41}
42
43 공개 정적IEnumerable<객체[]> TestData()
44{
45
46
47 객체[,] waterData =신규 객체[,] {
48{"수요", (int)gamsglobals.dt_par, 1,"", 8736 },
49{"교환", (int)gamsglobals.dt_par, 1,"", 7033 },
50{"w용량", (int)gamsglobals.dt_par, 2,"", 156 },
51{"w가격", (int)gamsglobals.dt_par, 2,"", 104 },
52{"wInflow", (int)gamsglobals.dt_par, 1,"", 52 },
53{"sw_Inflow", (int)gamsglobals.dt_par, 2,"", 624 }
54};
55 객체[,] mvData =신규 객체[,] {
56{"나", (int)gamsglobals.dt_set, 1,"", 200 },
57{"Q", (int)gamsglobals.dt_par, 2,"", 40000 },
58{"알파", (int)gamsglobals.dt_par, 1,"", 200 },
59{"ell", (int)gamsglobals.dt_par, 1,"", 200 },
60{"u", (int)gamsglobals.dt_par, 1,"", 200 },
61{"로", (int)gamsglobals.dt_par, 0,"", 1 }
62};
63 객체[,] 수요데이터 =신규 객체[,] {
64{"수요", (int)gamsglobals.dt_par, 1,"경우에 따라 시장 j의 수요", 3 },
65{"시장", (int)gamsglobals.dt_set, 1,"시장", 3 }
66};
67 객체[,] 수송데이터 =신규 객체[,] {
68{"나", (int)gamsglobals.dt_set, 1,"통조림 공장", 2 },
69{"j", (int)gamsglobals.dt_set, 1,"시장", 3 },
70{"a", (int)gamsglobals.dt_par, 1,"케이스에 있는 식물 i의 용량", 2 },
71{"b", (int)gamsglobals.dt_par, 1,"경우에 따라 시장 j의 수요", 3 },
72{"c", (int)gamsglobals.dt_par, 2,"케이스당 운송 비용 수천 달러", 6 },
73{"d", (int)gamsglobals.dt_par, 2,"수천 마일 단위의 거리", 6 },
74{"f", (int)gamsglobals.dt_par, 0,"1,000마일당 케이스당 화물(달러)", 1 },
75{"x", (int)gamsglobals.dt_var, 2,"케이스의 배송 수량", 6 },
76{"z", (int)gamsglobals.dt_var, 0,"총 운송 비용은 수천 달러입니다", 1},
77{"비용", (int)gamsglobals.dt_equ, 0,"목적 함수 정의", 1},
78{"공급", (int)gamsglobals.dt_equ, 1,"공장 i의 공급 제한을 준수하십시오", 2},
79{"수요", (int)gamsglobals.dt_equ, 1,"시장 j의 수요를 충족시키세요", 3}
80};
81 객체[,] UNStatisticsData =신규 객체[,] {
82{"국가", (int)gamsglobals.dt_set, 1,"", 255 },
83{"신뢰성", (int)gamsglobals.dt_set, 1,"", 7 },
84{"바르데프", (int)gamsglobals.dt_set, 1,"이것은 데이터 기록을 정의하는 데 사용됩니다.", 8 },
85{"연도", (int)gamsglobals.dt_set, 1,"", 51 },
86{"일", (int)gamsglobals.dt_set, 1,"", 32 },
87{"월", (int)gamsglobals.dt_set, 1,"", 13 },
88{"rectype", (int)gamsglobals.dt_set, 1,"", 8 },
89{"인구", (int)gamsglobals.dt_par, 6,"", 5972 }
90};
91 반환 신규목록<객체[]>
92{
93 신규 객체[] {"gamslib", "sddp", "water.gdx", 물데이터 ,
94 신규 객체[] {"gamslib", "pmeanvar", "mvdata.gdx", mvData ,
95 신규 객체[] {"데이터 라이브러리", "GDXInExample1", "DemandData.gdx", 수요데이터 ,
96 신규 객체[] {"데이터 라이브러리", "GDXInExample3", "Trnsport.gdx", 전송데이터 ,
97 신규 객체[] {"데이터 라이브러리", "GDXCOPY예19", "UNStatistics.gdx", UN통계데이터
98};
99}
100
101[테스트, TestCaseSource(nameof(TestData))]
102 공개 공허testDeleteSymbolDuringIteration(문자열 libraryName, 문자열 modelName, 문자열 gdxFileName,객체[,] 기호정보)
103{
104
105로거.디버그("TestGAMSIterator 입력 | testDeleteSymbolDuringIteration");
106 if(!가정부 관리인.PrepareDatabaseFrom(libraryName, modelName, testDir))
107{
108어설션.실패("실행할 수 없습니다 ["+ 라이브러리이름 +" "+ 모델이름 +"], 테스트에 사용할 수 있는 입력 gdx가 없습니다.");
109로거.디버그("TestGAMSIterator 종료 | testDeleteSymbolDuringIteration");
110 반환;
111}
112 GAMSWorkspaceInfowsInfo =신규 GAMSWorkspaceInfo();
113wsInfo.WorkingDirectory = testDir;
114wsInfo.SystemDirectory =가정부 관리인.gamsSystemDir;
115wsInfo.Debug =디버그레벨.끄기;
116
117ws =신규 슬롯 사이트 추천작업공간(wsInfo);
118파일정보 gdxFile =신규FileInfo(Path.Combine(testDir, gdxFileName));
120Assert.AreEqual(symbolsInfo.GetLength(0), db.NrSymbols, "기대합니다"+ 기호Info.GetLength(0) +"의 "기호"+ 모델 이름);
121
122 // 언제, 그러면
123 // GAMSDatabaseIterator iterator = (GAMSDatabaseIterator)db.iterator();
124IEnumerator iterator = db.GetEnumerator();
125 intnumberOfSymbols = db.NrSymbols;
126 int수 = 0;
127
128 그동안(iterator.MoveNext())
129{
130 GAMSSymbol기호 = (GAMSSymbol)iterator.Current;
131Assert.AreEqual(symbolsInfo[count, 0], db.GetSymbol((문자열)symbolsInfo[count, 0]).이름, "기대 기호:"+ 기호정보[수, 0]);
132 시도
133{
134 //iterator.remove(); //// 이 메서드는 .NET API에 존재하지 않습니다. 그러므로 여기서는 그냥 통과하도록 하겠습니다.
135 던지기 신규어설션예외("이것은 단지 테스트의 이 부분을 통과하기 위한 것입니다.");
136어설션.실패("기호 ["를 삭제할 수 없을 것으로 예상됩니다.+ 기호정보[수, 0] +50807_50826+ 모델 이름);
137}
138 잡기(AssertionException)
139{
140어설션.참();
141}
142db.GetSymbol((문자열)symbolsInfo[count, 0]);
143++count;
144}
145
146Assert.AreEqual(numberOfSymbols, db.NrSymbols, "기대합니다"+ numberOfSymbols +"의 "기호"+ 모델 이름);
147Assert.AreEqual(numberOfSymbols, 개수,"기대합니다"+ numberOfSymbols +"의 " 기호"+ 모델 이름);
148
149 // 정리
150db.폐기();
151
152로거.디버그("TestGAMSIterator 종료 | testDeleteSymbolDuringIteration");
153}
154
155[테스트, TestCaseSource(nameof(TestData))]
156 공개 무효testDeleteAllRecordsDuringIteration(문자열 libraryName, 문자열 modelName, 문자열 gdxFileName,객체[,] 기호정보)
157{
158로거.디버그("TestGAMSIterator 입력 | testDeleteAllRecordsDuringIteration");
159 if(!가정부 관리인.PrepareDatabaseFrom(libraryName, modelName, testDir))
160{
161어설션.실패("실행할 수 없습니다 ["+ 라이브러리이름 +" "+ 모델이름 +"], 테스트에 사용할 수 있는 입력 gdx가 없습니다.");
162로거.디버그("TestGAMSIterator 종료 | testDeleteAllRecordsDuringIteration");
163 반환;
164}
165 GAMSWorkspaceInfowsInfo =신규 GAMSWorkspaceInfo();
166wsInfo.WorkingDirectory = testDir;
167wsInfo.SystemDirectory =가정부 관리인.gamsSystemDir;
168wsInfo.Debug =디버그레벨.끄기;
169
170ws =신규 슬롯 사이트 추천작업공간(wsInfo);
171파일정보 gdxFile =신규FileInfo(Path.Combine(testDir, gdxFileName));
173Assert.AreEqual(symbolsInfo.GetLength(0), db.NrSymbols, "기대합니다"+ 기호Info.GetLength(0) +""의 기호+ 모델 이름);
174
175 // 언제, 그렇다면
176
177 for (inti = 0; i < 기호정보.GetLength(0); 나++)
178{
179 GAMSSymbol기호 = db.GetSymbol((문자열)symbolsInfo[i, 0]);
180 GAMSSymbolEnumerator반복자 = 기호.GetEnumerator();
181 intnumberOfRecords = 기호.NumberRecords;
182 intnumberOfDeletedRecords = 0;
183 그동안(반복자.다음으로 이동())
184{
185 GAMSSymbolRecordrec = 반복자.현재;
186문자열[] 키 = Rec.;
187기호.기록 삭제(키: 키);
188++numberOfDeletedRecords;
189Assert.AreEqual(numberOfRecords - numberOfDeletedRecords, 기호.번호레코드, "기록을 기대합니다"+ 키 +"와 "+ numberOfDeletedRecords +"이 "의 기록을 삭제했습니다.+ 모델 이름);
190 시도
191{
192상징.기록 찾기(키);
193어설션.실패("예상 기호"+ 키 +" 찾을 수 없습니다.");
194}
196{
197어설션.참(, "예상 기호"+ 키 +" 찾을 수 없습니다.");
198}
199}
200Assert.AreEqual(0, 기호.NumberRecords, ""에 기록이 없을 것으로 예상됩니다+ 모델 이름);
201}
202
203 // 정리
204db.폐기();
205
206로거.디버그("TestGAMSIterator 종료 | testDeleteAllRecordsDuringIteration");
207}
208
209[테스트, TestCaseSource(nameof(TestData))]
210 공개 공허testDeleteRecordDuringIteration(문자열 libraryName, 문자열 modelName, 문자열 gdxFileName,객체[,] 기호정보)
211{
212로거.디버그("TestGAMSIterator 입력 중 | testDeleteRecordDuringIteration");
213 if(!가정부 관리인.PrepareDatabaseFrom(libraryName, modelName, testDir))
214{
215어설션.실패("["을(를) 실행할 수 없습니다.+ 라이브러리이름 +" "+ 모델이름 +"], 테스트에 사용할 수 있는 입력 gdx가 없습니다.");
216로거.디버그("TestGAMSIterator 종료 중 | testDeleteRecordDuringIteration");
217 반환;
218}
219 GAMSWorkspaceInfowsInfo =신규 GAMSWorkspaceInfo();
220wsInfo.WorkingDirectory = testDir;
221wsInfo.SystemDirectory =가정부 관리인.gamsSystemDir;
222wsInfo.Debug =디버그레벨.끄기;
223
224ws =신규 슬롯 사이트 추천작업공간(wsInfo);
225파일정보 gdx파일 =신규FileInfo(Path.Combine(testDir, gdxFileName));
227Assert.AreEqual(symbolsInfo.GetLength(0), db.NrSymbols, "기대합니다"+ 기호Info.GetLength(0) +"의 " 기호"+ 모델 이름);
228
229 // 언제, 그렇다면
230 for (inti = 0; i < 기호정보.GetLength(0); 나++)
231{
232목록<string> myList =신규목록<문자열>();
233 GAMSSymbol기호 = db.GetSymbol((문자열)symbolsInfo[i, 0]);
234 GAMSSymbolEnumerator반복자 = 기호.GetEnumerator();
235 intnumberOfRecords = 기호.번호레코드;
236 int숫자 = 0;
237 intnumberOfDeletedRecords = 0;
238 그동안(반복자.다음으로 이동())
239{
240 GAMSSymbolRecordrec = 반복자.현재;
241문자열[] 키 = 추천열쇠;
243 if(숫자 % 3 == 0)
244{
245상징.기록 삭제(키: 키);
246++numberOfDeletedRecords;
247 시도해 보세요
248{
249상징.기록 찾기(키);
250어설션.실패("예상 기호"+ 키 +" 찾을 수 없습니다.");
251}
253{
254어설션.참(사실, "예상 기호"+ 키 +" 찾을 수 없습니다.");
255}
256}
257 그밖에
258{
259 intidx = 0;
260 foreach(문자열 k상징.기록 찾기(키).)
261{
262Assert.AreEqual(keys[idx++], k);
263}
264
265}
266Assert.AreEqual(numberOfRecords - numberOfDeletedRecords, 기호.번호레코드, "기록을 기대합니다"+ 키 +" 및 "+ numberOfDeletedRecords +"이 "의 기록을 삭제했습니다.+ 모델 이름);
267++숫자;
268
269}
270
271Assert.AreEqual(번호, 레코드 수, 기호.이름 + " 기대합니다 "+ 숫자 +" "의 레코드 반복+ 모델 이름);
272}
273
274 // 정리
275db.폐기();
276
277로거.디버그("TestGAMSIterator 종료 | testDeleteRecordDuringIteration");
278
279}
280}
281}
282
GAMSSymbol GetSymbol(문자열 기호 식별자)
bool DeleteRecord(params string[] 키)
GAMSSymbolEnumerator GetEnumerator()
GAMSSymbolRecord FindRecord(params 문자열[] 키)
GAMSDatabase AddDatabaseFromGDX(문자열 gdxFileName, 문자열 데이터베이스 이름=null, 문자열 inModelName=null)
static void prepare(String dir)
디렉토리 존재 여부를 확인하여 준비하십시오. 존재하는 경우 (비재귀적으로) 모든 내용을 삭제합니다...
static void 초기화TestFrom(문자열 파일 이름, 문자열 하위 디렉터리)
fileName에서 클래스 속성을 초기화하고 디렉토리 하위 디렉토리 준비