Example #1
0
 def test_parse_pt_04(self):
     with self.assertRaises(pt.MonsterError):
         mill_pt = pt.parse_pt(pt_path='tests/in/mill.pt',
                               alias=self.alias,
                               monsters=padptdb.read_monsters(
                                   'tests/data/db/monstererror.csv',
                                   'tests/data/db/icons'))
Example #2
0
 def test_parse_pt_02(self):
     """Assume that tests/in/pterror.pt does not exist.
     """
     with self.assertRaises(pt.PTError):
         mill_pt = pt.parse_pt(pt_path='tests/in/pterror.pt',
                               alias=self.alias,
                               monsters=self.monsters)
Example #3
0
 def test_parse_pt_00(self):
     mill_pt = pt.parse_pt('tests/in/mill.pt', self.alias, self.monsters)
     self.assertEqual(
         mill_pt,
         pt.PT(title='ミル降臨',
               party_a=(pt.Member(monster=self.monsters[2903],
                                  assist=self.monsters[2012]),
                        pt.Member(monster=self.monsters[2948], assist=None),
                        pt.Member(monster=self.monsters[1730],
                                  assist=self.monsters[3162]),
                        pt.Member(monster=self.monsters[2948], assist=None),
                        pt.Member(monster=self.monsters[2948],
                                  assist=None)),
               party_b=(pt.Member(monster=self.monsters[2903],
                                  assist=self.monsters[923]),
                        pt.Member(monster=self.monsters[2752], assist=None),
                        pt.Member(monster=self.monsters[2948], assist=None),
                        pt.Member(monster=self.monsters[2948], assist=None),
                        pt.Member(monster=self.monsters[2948],
                                  assist=None)),
               note=('1F: Aディオス\n'
                     '2F: Bアヴァロン\n'
                     '3F: Aハーデス,ディオス\n'
                     '4F: Bディオス\n'
                     '5F: Aラー\n'
                     '6F: Aディオス\n'
                     '7F: Bディオス\n'
                     '8F: A0コンボ,Bタナトス,A0コンボ,B0コンボ,A0コンボ,Bディオス\n')))
Example #4
0
 def test_parse_pt_01(self):
     friday_pt = pt.parse_pt('tests/in/friday.pt', self.alias,
                             self.monsters)
     self.assertEqual(
         friday_pt,
         pt.PT(title='金曜ダンジョン(超地獄級)',
               party_a=(pt.Member(monster=self.monsters[2657], assist=None),
                        pt.Member(monster=self.monsters[2368], assist=None),
                        pt.Member(monster=self.monsters[2179], assist=None),
                        pt.Member(monster=self.monsters[2179], assist=None),
                        pt.Member(monster=self.monsters[2006],
                                  assist=None)),
               party_b=(pt.Member(monster=self.monsters[2657],
                                  assist=None), ),
               note=('1F: ハンジ,赤オーディン\n'
                     '2F: 赤オーディン\n'
                     '3F: 五右衛門\n'
                     '4F: 崩す\n')))
Example #5
0
def main():
    argparser = argparse.ArgumentParser(
        description='generates a walkthrough sheet.')
    argparser.add_argument('-u',
                           '--update',
                           action='store_true',
                           help='updates database')
    argparser.add_argument('pt', nargs='?', help='pt file to be parsed')
    argparser.add_argument('out', nargs='?', help='path of the output file')
    args = argparser.parse_args()

    if not args.update and args.pt is None:
        argparser.print_help()
    else:

        def get_conf_path(resource):
            return os.path.join(os.path.expanduser('~/.padpt'), resource)

        try:
            padpt_conf = conf.read_conf(get_conf_path('padpt.conf'))
        except FileNotFoundError as e:
            sys.exit('{} does not exist.'.format(e.filename))
        except configparser.Error:
            sys.exit('There is an error in padpt.conf')

        def get_data_path(resource):
            return os.path.join(os.path.dirname(sys.modules['padpt'].__file__),
                                'data', resource)

        monsters_csv_path = get_data_path('db/monsters.csv')
        icons_dir = get_data_path('db/icons')
        if args.update:
            if not os.path.exists(icons_dir):
                os.makedirs(icons_dir)
            try:
                update.update_data(url=padpt_conf['PadPT']['DB_URL'],
                                   monsters_csv_path=monsters_csv_path,
                                   icons_dir=icons_dir)
            except KeyError as e:
                sys.exit('There is an error in padpt.conf')
            except urllib.error.URLError as e:
                sys.exit('Failed to download {}'.format(
                    padpt_conf['PadPT']['DB_URL']))
        if args.pt is not None:
            try:
                sheet.generate_sheet(
                    pt=pt.parse_pt(
                        pt_path=args.pt,
                        alias=conf.read_alias(get_conf_path('alias.csv')),
                        monsters=padptdb.read_monsters(monsters_csv_path,
                                                       icons_dir)),
                    timestamp=str(datetime.date.today()),
                    font_path=padpt_conf['PadPT']['Font'],
                    png_path=get_data_path('png'),
                    out_path=(args.out if args.out is not None else
                              os.path.splitext(args.pt)[0] + '.png'))
            except FileNotFoundError as e:
                sys.exit('{} does not exist.'.format(e.filename))
            except pt.PTError as e:
                sys.exit('{} has a syntax error.'.format(e.pt_path))
            except pt.AliasError as e:
                sys.exit('{} is undefined in alias.csv.'.format(e.get_name()))
            except pt.MonsterError as e:
                sys.exit('The monster whose monster ID is {}'
                         'is not registerd with your monster DB.'.format(
                             e.get_monster_id()))
            except KeyError as e:
                sys.exit('There is an error in padpt.conf')
Example #6
0
 def test_parse_pt_03(self):
     with self.assertRaises(pt.AliasError):
         mill_pt = pt.parse_pt(pt_path='tests/in/aliaserror.pt',
                               alias=self.alias,
                               monsters=self.monsters)