import sys,unittest from pathlib import Path HERE=Path(__file__).resolve().parents[1];sys.path.insert(0,str(HERE)) import make_items as m READER=HERE.parents[3]/'metin2-server/src/server/db/src/ProtoReader.cpp' def row(vnum,t,st,anti='NONE',flags='NONE',wear='NONE',applies=('APPLY_NONE','0')*3,values=('0',)*6,refine=('0','0')): return [str(vnum),'x',t,st,'1',anti,flags,wear,'NONE','10','20',refine[0],refine[1],'0','LEVEL','120','LIMIT_NONE','0',*applies,*values,'0','0','-1',''] @unittest.skipUnless(READER.is_file(),'needs ../metin2-server') class ConvertTests(unittest.TestCase): E=m.enums(READER) if READER.is_file() else None def test_weapon_kept_without_unknown_flags(self): s,c,kept=m.convert(row(320,'ITEM_WEAPON','WEAPON_SWORD','ANTI_MUDANG | ANTI_WOLFMAN','ITEM_TUNABLE','WEAR_WEAPON', ('APPLY_ATT_SPEED','18','APPLY_ATTBONUS_BOSS','5','APPLY_NONE','0'),refine=('321','81')),self.E,{320}) self.assertTrue(kept);self.assertEqual(s[5],'ANTI_MUDANG');self.assertEqual(s[7],'WEAR_WEAPON') self.assertEqual(s[18:22],['APPLY_ATT_SPEED','18','APPLY_ATTBONUS_BOSS','5']) # ported apply kept self.assertEqual(s[11:13],['0','0']) # the +1 item is not imported self.assertEqual(c[1:3],[self.E['type'].index('ITEM_WEAPON'),0]);self.assertEqual(c[4],1<