로드 중...
검색 중...
일치하는 항목 없음
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파일정보 gdx파일 =신규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] +50805_50824+ 모델 이름);
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 = 기호.번호레코드;
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, 기호.번호레코드, ""에 기록이 없을 것으로 예상됩니다+ 모델 이름);
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(문자열 kin상징.기록 찾기(키).)
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 string[] 키)
GAMSDatabase AddDatabaseFromGDX(문자열 gdxFileName, 문자열 데이터베이스 이름=null, 문자열 inModelName=null)
정적 무효 준비(문자열 dir)
디렉토리 존재 여부를 확인하여 준비하십시오. 존재하는 경우 (비재귀적으로) 모든 내용을 삭제합니다...
static void 초기화TestFrom(문자열 파일 이름, 문자열 하위 디렉터리)
fileName에서 클래스 속성을 초기화하고 디렉토리 하위 디렉토리 준비