Esempio n. 1
0
def test_Race_Boggartgoblin():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Boggart goblin')
    assert(a.race == 'Boggart goblin')
    darkvision_ind = 0
    nimble_escape_ind = 0
    swamp_immunity_ind = 0
    bog_swimmer_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Darkvision'):
            darkvision_ind = 1
        if (b.trait_name == 'Nimble Escape'):
            nimble_escape_ind = 1
        if (b.trait_name == 'Swamp Immunity'):
            swamp_immunity_ind = 1
        if (b.trait_name == 'Bog Swimmer'):
            bog_swimmer_ind = 1
    assert(darkvision_ind == 1)
    assert(nimble_escape_ind == 1)
    assert(swamp_immunity_ind == 1)
    assert(bog_swimmer_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 2
0
def test_Race_Gremlingoblin():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Gremlin goblin')
    assert(a.race == 'Gremlin goblin')
    darkvision_ind = 0
    nimble_escape_ind = 0
    dangerous_tinker_ind = 0
    almost_fire_proof_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Darkvision'):
            darkvision_ind = 1
        if (b.trait_name == 'Nimble Escape'):
            nimble_escape_ind = 1
        if (b.trait_name == 'Dangerous Tinker'):
            dangerous_tinker_ind = 1
        if (b.trait_name == 'Almost Fire Proof'):
            almost_fire_proof_ind = 1
    assert(darkvision_ind == 1)
    assert(nimble_escape_ind == 1)
    assert(dangerous_tinker_ind == 1)
    assert(almost_fire_proof_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 3
0
def test_Race_Wingedkobold():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Winged kobold')
    assert(a.race == 'Winged kobold')
    darkvision_ind = 0
    pack_tactics_ind = 0
    slim_build_ind = 0
    sunlight_sensitivity_ind = 0
    flying_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Darkvision'):
            darkvision_ind = 1
        if (b.trait_name == 'Pack Tactics'):
            pack_tactics_ind = 1
        if (b.trait_name == 'Slim Build'):
            slim_build_ind = 1
        if (b.trait_name == 'Sunlight Sensitivity'):
            sunlight_sensitivity_ind = 1
        if (b.trait_name == 'Flying'):
            flying_ind = 1
    assert(darkvision_ind == 1)
    assert(pack_tactics_ind == 1)
    assert(slim_build_ind == 1)
    assert(sunlight_sensitivity_ind == 1)
    assert(flying_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 4
0
def test_Race_Greenskingoblin():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Greenskin goblin')
    assert(a.race == 'Greenskin goblin')
    darkvision_ind = 0
    nimble_escape_ind = 0
    mud_slinger_ind = 0
    run_for_it_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Darkvision'):
            darkvision_ind = 1
        if (b.trait_name == 'Nimble Escape'):
            nimble_escape_ind = 1
        if (b.trait_name == 'Mud Slinger'):
            mud_slinger_ind = 1
        if (b.trait_name == 'Run For It'):
            run_for_it_ind = 1
    assert(darkvision_ind == 1)
    assert(nimble_escape_ind == 1)
    assert(mud_slinger_ind == 1)
    assert(run_for_it_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 5
0
def test_Race_Polarbearkin():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Polar bearkin')
    assert(a.race == 'Polar bearkin')
    keen_smell_ind = 0
    winter_hide_ind = 0
    history_of_violence_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Keen Smell'):
            keen_smell_ind = 1
        if (b.trait_name == 'Winter Hide'):
            winter_hide_ind = 1
        if (b.trait_name == 'History of Violence'):
            history_of_violence_ind = 1
    assert(keen_smell_ind == 1)
    assert(winter_hide_ind == 1)
    assert(history_of_violence_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 6
0
def test_Race_Hilldwarf():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Hill dwarf')
    assert(a.race == 'Hill dwarf')
    darkvision_ind = 0
    dwarven_resillience_ind = 0
    dwarven_toughness_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Darkvision'):
            darkvision_ind = 1
        if (b.trait_name == 'Dwarven Resilience'):
            dwarven_resillience_ind = 1
        if (b.trait_name == 'Dwarven Toughness'):
            dwarven_toughness_ind = 1
    assert(darkvision_ind == 1)
    assert(dwarven_resillience_ind == 1)
    assert(dwarven_toughness_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 7
0
def test_Race_Brownbearkin():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Brown bearkin')
    assert(a.race == 'Brown bearkin')
    keen_smell_ind = 0
    protector_ind = 0
    powerful_build_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Keen Smell'):
            keen_smell_ind = 1
        if (b.trait_name == 'Protector'):
            protector_ind = 1
        if (b.trait_name == 'Powerful Build'):
            powerful_build_ind = 1
    assert(keen_smell_ind == 1)
    assert(protector_ind == 1)
    assert(powerful_build_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 8
0
def test_Race_Koalabearkin():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Koala bearkin')
    assert(a.race == 'Koala bearkin')
    keen_smell_ind = 0
    bear_drop_ind = 0
    iron_tummy_ind = 0
    tree_born_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Keen Smell'):
            keen_smell_ind = 1
        if (b.trait_name == 'Bear Drop'):
            bear_drop_ind = 1
        if (b.trait_name == 'Iron Tummy'):
            iron_tummy_ind = 1
        if (b.trait_name == 'Tree Born'):
            tree_born_ind = 1
    assert(keen_smell_ind == 1)
    assert(bear_drop_ind == 1)
    assert(iron_tummy_ind == 1)
    assert(tree_born_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 9
0
def test_Race_HalfOrc():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Half-Orc')
    assert(a.race == 'Half-Orc')
    darkvision_ind = 0
    relentless_ind = 0
    savage_attacks_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Darkvision'):
            darkvision_ind = 1
        if (b.trait_name == 'Relentless'):
            relentless_ind = 1
        if (b.trait_name == 'Savage Attacks'):
            savage_attacks_ind = 1
    assert(darkvision_ind == 1)
    assert(relentless_ind == 1)
    assert(savage_attacks_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 10
0
def test_Race_Tiefling():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Tiefling')
    assert(a.race == 'Tiefling')
    darkvision_ind = 0
    hellish_resistance_ind = 0
    infernal_legacy_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Darkvision'):
            darkvision_ind = 1
        if (b.trait_name == 'Hellish Resistance'):
            hellish_resistance_ind = 1
        if (b.trait_name == 'Infernal Legacy'):
            infernal_legacy_ind = 1
    assert(darkvision_ind == 1)
    assert(hellish_resistance_ind == 1)
    assert(infernal_legacy_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 11
0
def test_Race_Highelf():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='High elf')
    assert(a.race == 'High elf')
    darkvision_ind = 0
    fey_ancestry_ind = 0
    cantrip_ind = 0
    extra_language_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Darkvision'):
            darkvision_ind = 1
        if (b.trait_name == 'Fey Ancestry'):
            fey_ancestry_ind = 1
        if (b.trait_name == 'Cantrip'):
            cantrip_ind = 1
        if (b.trait_name == 'Extra Language'):
            extra_language_ind = 1
    assert(darkvision_ind == 1)
    assert(fey_ancestry_ind == 1)
    assert(cantrip_ind == 1)
    assert(extra_language_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 12
0
def test_Race_Halfelf():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Half-Elf')
    assert(a.race == 'Half-Elf')
    darkvision_ind = 0
    fey_ancestry_ind = 0
    skill_versatility_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Darkvision'):
            darkvision_ind = 1
        if (b.trait_name == 'Fey Ancestry'):
            fey_ancestry_ind = 1
        if (b.trait_name == 'Skill Versatility'):
            skill_versatility_ind = 1
    assert(darkvision_ind == 1)
    assert(fey_ancestry_ind == 1)
    assert(skill_versatility_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 13
0
def test_Race_Stouthalfling():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Stout halfling')
    assert(a.race == 'Stout halfling')
    brave_ind = 0
    halfling_nimbleness_ind = 0
    lucky_ind = 0
    stout_resilience_ind = 0
    for b in a.traitContainer.traits:
        if (b.trait_name == 'Brave'):
            brave_ind = 1
        if (b.trait_name == 'Halfling Nimbleness'):
            halfling_nimbleness_ind = 1
        if (b.trait_name == 'Lucky'):
            lucky_ind = 1
        if (b.trait_name == 'Stout Resilience'):
            stout_resilience_ind = 1
    assert(brave_ind == 1)
    assert(halfling_nimbleness_ind == 1)
    assert(lucky_ind == 1)
    assert(stout_resilience_ind == 1)
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 14
0
def test_Character_Checks():
    db = InvokePSQL()
    ctx = Ctx(app_username='******', logger_name="test_logger")
    a1 = Foe(db=db, ctx=ctx, foe_candidate='Skeleton')
    assert(a1)
    assert(a1.get_name() == "Skeleton")
    res = a1.check(skill='Strength', vantage='Normal', dc=5)
    assert(res is True or res is False)
    res = a1.check(skill='Strength', vantage='Advantage', dc=15)
    assert(res is True or res is False)
    res = a1.check(skill='Strength', vantage='Disadvantage', dc=10)
    assert(res is True or res is False)

    assert(res is True or res is False)
    res = a1.check(skill='Dexterity', vantage='Normal', dc=5)
    assert(res is True or res is False)
    res = a1.check(skill='Dexterity', vantage='Advantage', dc=15)
    assert(res is True or res is False)
    res = a1.check(skill='Dexterity', vantage='Disadvantage', dc=10)
    assert(res is True or res is False)

    assert(res is True or res is False)
    res = a1.check(skill='Constitution', vantage='Normal', dc=5)
    assert(res is True or res is False)
    res = a1.check(skill='Constitution', vantage='Advantage', dc=15)
    assert(res is True or res is False)
    res = a1.check(skill='Constitution', vantage='Disadvantage', dc=10)
    assert(res is True or res is False)

    assert(res is True or res is False)
    res = a1.check(skill='Intelligence', vantage='Normal', dc=5)
    assert(res is True or res is False)
    res = a1.check(skill='Intelligence', vantage='Advantage', dc=15)
    assert(res is True or res is False)
    res = a1.check(skill='Intelligence', vantage='Disadvantage', dc=10)
    assert(res is True or res is False)

    assert(res is True or res is False)
    res = a1.check(skill='Wisdom', vantage='Normal', dc=5)
    assert(res is True or res is False)
    res = a1.check(skill='Wisdom', vantage='Advantage', dc=15)
    assert(res is True or res is False)
    res = a1.check(skill='Wisdom', vantage='Disadvantage', dc=10)
    assert(res is True or res is False)

    assert(res is True or res is False)
    res = a1.check(skill='Charisma', vantage='Normal', dc=5)
    assert(res is True or res is False)
    res = a1.check(skill='Charisma', vantage='Advantage', dc=15)
    assert(res is True or res is False)
    res = a1.check(skill='Charisma', vantage='Disadvantage', dc=10)
    assert(res is True or res is False)

    assert(res is True or res is False)
    res = a1.check(skill='Athletics', vantage='Normal', dc=5)
    assert(res is True or res is False)
    res = a1.check(skill='Athletics', vantage='Advantage', dc=15)
    assert(res is True or res is False)
    res = a1.check(skill='Athletics', vantage='Disadvantage', dc=10)
    assert(res is True or res is False)
Esempio n. 15
0
def test_Foe_Default():
    db = InvokePSQL()
    ctx = Ctx(app_username='******', logger_name="test_logger")
    a1 = Foe(db=db, ctx=ctx)
    assert(a1)
    assert(a1.get_name())
    assert(a1.get_raw_ability_array())
    assert(a1.get_ability_array())
    assert(a1.level)
    assert(a1.get_alignment_str())
    assert(a1.get_alignment_abbrev())
    assert (a1.check_condition('blind') is False)
    assert (a1.check_condition('charmed') is False)
    assert (a1.check_condition('deafened') is False)
    assert (a1.check_condition('fatigued') is False)
    assert (a1.check_condition('frightened') is False)
    assert (a1.check_condition('grappled') is False)
    assert (a1.check_condition('incapacitated') is False)
    assert (a1.check_condition('invisible') is False)
    assert (a1.check_condition('paralyzed') is False)
    assert (a1.check_condition('petrified') is False)
    assert (a1.check_condition('poisoned') is False)
    assert (a1.check_condition('prone') is False)
    assert (a1.check_condition('stunned') is False)
    assert (a1.check_condition('unconscious') is False)
    assert(a1.alive is True)
    assert(a1.stabilized is True)
    assert(a1.exhaustion_level == 0)
    assert(a1.cur_movement > 10)
Esempio n. 16
0
def test_getAlignment():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx)
    alignmentObj = a.get_alignment(db=db)
    assert(len(a.race) > 3)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
Esempio n. 17
0
def gen_party(character_id_str, party_composition_id, name, ability_array_str,
              level, gender_candidate):
    db = InvokePSQL()
    Party(db=db,
          character_id_str=character_id_str,
          party_composition_id=party_composition_id,
          name=name,
          ability_array_str=ability_array_str,
          level=level,
          gender_candidate=gender_candidate)
Esempio n. 18
0
def gen_pc(race_candidate, class_candidate, ability_array_str, level, gender_candidate):
    print(f'Creating a {gender_candidate} level {level} {race_candidate} {class_candidate}'
          f' with abilities: {ability_array_str}')
    db = InvokePSQL()
    print("Debug info follows")
    a1 = PlayerCharacter(db=db, debug_ind=1, class_candidate=class_candidate,
                         race_candidate=race_candidate, ability_array_str=ability_array_str,
                         level=level, gender_candidate=gender_candidate)
    print("ClassEval info follows")
    for i in range(len(a1.get_class_eval())):
        for key, value in a1.get_class_eval()[i].items():
            print(f"{i} -- {str(key).ljust(25)}: {value}")
Esempio n. 19
0
def test_Race_Woodelf():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = CharacterRace(db=db, ctx=ctx, race_candidate='Wood elf')
    assert(a.race == 'Wood elf')
    assert(any([v != 0 for v in a.ability_bonuses]))
    alignmentObj = a.get_alignment(db=db)
    assert('abbreviation' in alignmentObj)
    assert('alignment' in alignmentObj)
    assert(a.get_skin_tone(db=db))
    assert(a.get_hair_color(db=db))
    assert(a.get_hair_type(db=db))
    assert(a.get_eye_color(db=db))
    assert(a.get_name(db=db, gender='U'))
Esempio n. 20
0
def test_character_spell_list():
    logger_name = 'character_test'
    ctx = Ctx(app_username='******', logger_name=logger_name)
    ctx.log_file_dir = os.path.expanduser('~/rpg/logs')
    db = InvokePSQL()
    a1 = PlayerCharacter(db=db,
                         ctx=ctx,
                         race_candidate='High elf',
                         class_candidate='Sorcerer',
                         ability_array_str='10,10,10,10,10,10')
    a1.set_name_str(group_str='Heroes', index_position=0)
    f1 = Foe(db=db, ctx=ctx, foe_candidate='Skeleton')
    f1.set_name_str(group_str='Opponents', index_position=0)
    assert a1
    assert (a1.level == 1)
def test_class_fighter():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = FighterPCClass(db=db, ctx=ctx)
    assert (a.name == 'Fighter')
    assert (a.hit_die == 10)
    assert (a.ability_sort_array == [0, 2, 1, 5, 4, 3])
    assert (a.source_material == 'SRD5')
    assert (a.archetype_label == 'Martial Archetype')
    assert (a.ranged_weapon == "Crossbow, light")
    assert (a.melee_weapon == "Glaive")
    assert (a.ranged_ammunition_type == "Bolt")
    assert (a.ranged_ammunition_amt == 20)
    assert (a.armor == "Chain mail")
    assert (a.shield is None)
    assert (a.background == "Soldier")
def test_class_druid():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = DruidPCClass(db=db, ctx=ctx)
    assert (a.name == 'Druid')
    assert (a.hit_die == 8)
    assert (a.ability_sort_array == [4, 2, 1, 3, 5, 0])
    assert (a.source_material == 'SRD5')
    assert (a.archetype_label == 'Druid Circle')
    assert (a.ranged_weapon is None)
    assert (a.melee_weapon == "Club")
    assert (a.ranged_ammunition_type is None)
    assert (a.ranged_ammunition_amt == 0)
    assert (a.armor == "Leather")
    assert (a.shield == "Shield")
    assert (a.background == "Hermit")
def test_class_cleric():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = ClericPCClass(db=db, ctx=ctx)
    assert (a.name == 'Cleric')
    assert (a.hit_die == 8)
    assert (a.ability_sort_array == [4, 2, 0, 1, 5, 3])
    assert (a.source_material == 'SRD5')
    assert (a.archetype_label == 'Divine Domain')
    assert (a.ranged_weapon == "Crossbow, light")
    assert (a.melee_weapon == "Warhammer")
    assert (a.ranged_ammunition_type == "Bolt")
    assert (a.ranged_ammunition_amt == 20)
    assert (a.armor == "Scale mail")
    assert (a.shield == "Shield")
    assert (a.background == "Acolyte")
def test_class_bard():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = BardPCClass(db=db, ctx=ctx)
    assert (a.name == 'Bard')
    assert (a.hit_die == 8)
    assert (a.ability_sort_array == [5, 1, 2, 0, 4, 3])
    assert (a.source_material == 'SRD5')
    assert (a.archetype_label == 'Bard College')
    assert (a.ranged_weapon == "Dagger")
    assert (a.melee_weapon == "Rapier")
    assert (a.ranged_ammunition_type == "Dagger")
    assert (a.ranged_ammunition_amt == 1)
    assert (a.armor == "Leather")
    assert (a.shield is None)
    assert (a.background == "Entertainer")
def test_class_barbarian():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = BarbarianPCClass(db=db, ctx=ctx)
    assert (a.name == 'Barbarian')
    assert (a.hit_die == 12)
    assert (a.ability_sort_array == [0, 2, 1, 4, 5, 3])
    assert (a.source_material == 'SRD5')
    assert (a.archetype_label == 'Primal Path')
    assert (a.ranged_weapon == "Javelin")
    assert (a.melee_weapon == "Greataxe")
    assert (a.ranged_ammunition_type == "Javelin")
    assert (a.ranged_ammunition_amt == 4)
    assert (a.armor is None)
    assert (a.shield is None)
    assert (a.background == "Outlander")
def test_class_wizard():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = WizardPCClass(db=db, ctx=ctx)
    assert (a.name == 'Wizard')
    assert (a.hit_die == 6)
    assert (a.ability_sort_array == [3, 1, 2, 4, 0, 5])
    assert (a.source_material == 'SRD5')
    assert (a.archetype_label == 'Arcane Tradition')
    assert (a.ranged_weapon is None)
    assert (a.melee_weapon == "Dagger")
    assert (a.ranged_ammunition_type is None)
    assert (a.ranged_ammunition_amt == 0)
    assert (a.armor is None)
    assert (a.shield is None)
    assert (a.background == "Sage")
def test_class_paladin():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = PaladinPCClass(db=db, ctx=ctx)
    assert (a.name == 'Paladin')
    assert (a.hit_die == 10)
    assert (a.ability_sort_array == [0, 5, 2, 4, 1, 3])
    assert (a.source_material == 'SRD5')
    assert (a.archetype_label == 'Sacred Oath')
    assert (a.ranged_weapon == "Javelin")
    assert (a.melee_weapon == "Greataxe")
    assert (a.ranged_ammunition_type == "Javelin")
    assert (a.ranged_ammunition_amt == 5)
    assert (a.armor == "Chain mail")
    assert (a.shield is None)
    assert (a.background == "Noble")
def test_class_monk():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = MonkPCClass(db=db, ctx=ctx)
    assert (a.name == 'Monk')
    assert (a.hit_die == 8)
    assert (a.ability_sort_array == [1, 4, 2, 0, 3, 5])
    assert (a.source_material == 'SRD5')
    assert (a.archetype_label == 'Monastic Tradition')
    assert (a.ranged_weapon == "Dart")
    assert (a.melee_weapon == "Shortsword")
    assert (a.ranged_ammunition_type == "Dart")
    assert (a.ranged_ammunition_amt == 10)
    assert (a.armor is None)
    assert (a.shield is None)
    assert (a.background == "Hermit")
def test_class_warlock():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = WarlockPCClass(db=db, ctx=ctx)
    assert (a.name == 'Warlock')
    assert (a.hit_die == 8)
    assert (a.ability_sort_array == [5, 2, 1, 4, 3, 0])
    assert (a.source_material == 'SRD5')
    assert (a.archetype_label == 'Otherworldly Patron')
    assert (a.ranged_weapon == "Crossbow, light")
    assert (a.melee_weapon == "Dagger")
    assert (a.melee_weapon_offhand == "Dagger")
    assert (a.ranged_ammunition_type == "Bolt")
    assert (a.ranged_ammunition_amt == 20)
    assert (a.armor == "Leather")
    assert (a.shield is None)
    assert (a.background == "Charlatan")
def test_class_sorcerer():
    ctx = Ctx(app_username='******')
    db = InvokePSQL()
    a = SorcererPCClass(db=db, ctx=ctx)
    assert (a.name == 'Sorcerer')
    assert (a.hit_die == 6)
    assert (a.ability_sort_array == [5, 2, 1, 4, 3, 0])
    assert (a.source_material == 'SRD5')
    assert (a.archetype_label == 'Sorcerous Origin')
    assert (a.ranged_weapon == "Crossbow, light")
    assert (a.melee_weapon == "Dagger")
    assert (a.melee_weapon_offhand == "Dagger")
    assert (a.ranged_ammunition_type == "Bolt")
    assert (a.ranged_ammunition_amt == 20)
    assert (a.armor is None)
    assert (a.shield is None)
    assert (a.background == "Hermit")