19from게임
가져오기GamsWorkspace, GamsSet
91defsame_gdx_dump(ws, gdxfile, 예상_결과):
94os.path.join(ws.system_directory,
"gdxdump"),
95os.path.join(ws.working_directory, gdxfile),
98cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE
100결과, 오류 = p.communicate()
104 반환re.sub(
r"\s",
"", result.lower()) == re.sub(
105 r"\s",
"", Expect_result.lower()
109defcheck_alias_logic(슬롯 사이트 추천, db):
113f
"GamsDatabase 'prefix'에는 5개의 기호가 있어슬롯 사이트 추천: i, j, ij, a, aa."
118 올림예외(f
"접두사: 별칭 'ii'를 요청할 때 'i'를 설정해슬롯 사이트 추천.")
120 올림예외(f
"접두사: 별칭 'jj'를 요청할 때 'j'를 설정해슬롯 사이트 추천.")
121 ifdb[
"iijj"].이름 !=
"ij":
123f
"접두사: 별칭 'iijj'를 요청할 때 'ij'를 설정해슬롯 사이트 추천."
127 if 아님db.check_domains():
128 올림예외(f
"접두사: 확인 도메인은 true여슬롯 사이트 추천.")
129 if 아님isinstance(db[
"아아"].domains[0], GamsSet):
130 올림예외(f
"접두사: 'aa'의 도메인[0]은 집합이어슬롯 사이트 추천.")
131 ifdb[
"아아"].도메인[0].이름 !=
"나":
132 올림예외(f
"접두사: 'aa'의 도메인[0]은 'i'여슬롯 사이트 추천.")
134db[
"ii"].delete_record(
"i1")
135 ifdb.check_domains():
137f
"접두사: 'i1' 제거 후 check_domains()는 False여슬롯 사이트 추천."
139db[
"ii"].add_record(
"i1")
140 if 아님db.check_domains():
142f
"접두사: 'i1'을 다시 추가한 후 check_domains()가 True여슬롯 사이트 추천."
146if__name__ ==
"__main__":
147sys_dir = sys.argv[1]
iflen(sys.argv) > 1
그밖에 없음
148work_dir = sys.argv[2]
iflen(sys.argv) > 2
그밖에 없음
149ws = GamsWorkspace(system_directory=sys_dir,working_directory=work_dir)
153작업 = ws.add_job_from_string(GAMS_DATA)
155check_alias_logic(
"job.out_db ", job.out_db)
156job.out_db.export(
"outdb.gdx")
157 if 아님same_gdx_dump(ws,
"outdb.gdx", GDX_DUMP1):
158 올림예외(
"gdxdump 'outdb.gdx'의 예상치 못한 결과입니다.")
161db = ws.add_database(source_database=job.out_db)
162check_alias_logic(
"db ",db)
164 if 아님same_gdx_dump(ws,
"db.gdx", GDX_DUMP1):
165 올림예외(
"gdxdump 'db.gdx'의 예상치 못한 결과입니다.")
166db2 = ws.add_database()
167ii = db2.add_set_dc(db[
"ii"].이름, [
"*"], DB[
"ii"].text)
168db[
"ii"].copy_symbol(ii)
171aa = db2.add_parameter_dc(db[
"아아"].이름, [ii], db[
"아아"].text)
172aa_orig.copy_symbol(aa)
174 if 아님same_gdx_dump(ws,
"db2.gdx", GDX_DUMP2):
175 올림예외(
"gdxdump 'db2.gdx'의 예상치 못한 결과입니다.")
179 ifaa_orig.domains[0].name !=
"나":
180 올림예외(
"도메인 세트는 원본 세트여슬롯 사이트 추천.")
181 ifaa_orig.domains_as_strings[0] !=
"ii":
182 올림예외(
"문자열 형식의 도메인은 별칭 이름이어슬롯 사이트 추천.")