예제 #1
0
def test_expansion_description_card_order():
    # test that the expansions cards lists cards
    # in alphabetical order, like they are printed,
    # and that accents don't matter
    options = main.parse_opts([
        "--expansions",
        "Hinterlands",
        "--expansion-dividers",
        "--language",
        "fr",
        "--only-type-any",
        "Expansion",
    ])
    options = main.clean_opts(options)
    options.data_path = "."
    cards = main.read_card_data(options)
    cards = main.filter_sort_cards(cards, options)
    card_names = [c.strip() for c in cards[0].description.split("|")]
    # The 26 french card names of the Hinterlands expansion should be sorted as if no accent
    assert len(card_names) == 26
    assert card_names == sorted(
        card_names,
        key=lambda s: "".join(c for c in unicodedata.normalize("NFD", s)
                              if unicodedata.category(c) != "Mn"),
    )
예제 #2
0
def test_exclude_expansion():
    # test that we can use --exclude-expansion or
    # --exclude-expansions, that we can have multiple
    # items with a single flag, that * syntax
    # works, that we can use either the
    # cardset tag or name, and that capitalization
    # doesn't matter
    options = main.parse_opts([
        "--expansions",
        "adventures",
        "dominion*",
        "intrigue*",
        "--exclude-expansions",
        "dominiOn1stEditIon",
        "intrigue 2nd*",
        "--exclude-expansion",
        "dominion 2nd edition",
    ])
    options = main.clean_opts(options)
    options.data_path = "."
    cards = main.read_card_data(options)
    cards = main.filter_sort_cards(cards, options)
    card_sets = set(x.cardset.lower() for x in cards)
    assert card_sets == {
        "adventures",
        "dominion 2nd edition upgrade",
        "intrigue 1st edition",
    }
예제 #3
0
def test_only_type():
    options = main.parse_opts(
        [
            "--expansions",
            "base",
            "alchemy",
            "--include-blanks",
            "5",
            "--only-type-any",
            "blank",
            "curse",
            "--only-type-all",
            "attack",
            "action",
        ]
    )
    options = main.clean_opts(options)
    options.data_path = "."
    cards = main.read_card_data(options)
    cards = main.filter_sort_cards(cards, options)
    # Total 8 from
    #      Blank:         +5 added in options
    #      Curse:         +1 from base
    #      Action Attack: +2 from Alchemy
    assert len(cards) == 8
예제 #4
0
def test_tab_center_left():
    options = main.parse_opts(
        ["--tab-name-align", "center", "--tab-side", "left"])
    assert options.tab_name_align == "center"
    assert options.tab_side == "left"
    options = main.clean_opts(options)
    main.calculate_layout(options)
    assert options.tab_name_align == "centre"  # check for change in value
    assert options.tab_side == "left"
예제 #5
0
def test_tab_edge_full():
    options = main.parse_opts(
        ["--tab-name-align", "edge", "--tab-side", "full"])
    assert options.tab_name_align == "edge"
    assert options.tab_side == "full"
    options = main.clean_opts(options)
    main.calculate_layout(options)
    assert options.tab_name_align == "left"  # special check for odd condition
    assert options.tab_side == "full"
예제 #6
0
def test_set_icon():
    options = main.parse_opts([])
    options = main.clean_opts(options)
    assert options.set_icon == ["tab"]

    options = main.parse_opts(["--set-icon=tab"])
    options = main.clean_opts(options)
    assert options.set_icon == ["tab"]

    options = main.parse_opts(["--set-icon=body-top"])
    options = main.clean_opts(options)
    assert options.set_icon == ["body-top"]

    options = main.parse_opts(["--set-icon=hide"])
    options = main.clean_opts(options)
    assert options.set_icon == ["hide"]

    options = main.parse_opts(["--set-icon=tab", "--set-icon=body-top"])
    options = main.clean_opts(options)
    assert set(options.set_icon) == {"tab", "body-top"}
예제 #7
0
def test_cost():
    options = main.parse_opts([])
    options = main.clean_opts(options)
    assert options.cost == ["tab"]

    options = main.parse_opts(["--cost=tab"])
    options = main.clean_opts(options)
    assert options.cost == ["tab"]

    options = main.parse_opts(["--cost=body-top"])
    options = main.clean_opts(options)
    assert options.cost == ["body-top"]

    options = main.parse_opts(["--cost=hide"])
    options = main.clean_opts(options)
    assert options.cost == ["hide"]

    options = main.parse_opts(["--cost=tab", "--cost=body-top"])
    options = main.clean_opts(options)
    assert set(options.cost) == {"tab", "body-top"}
예제 #8
0
def test_cardread():
    num_cards_expected = 647

    options = main.parse_opts([])
    options.data_path = "."
    cards = main.read_card_data(options)
    assert len(cards) == num_cards_expected
    valid_cardsets = {
        u"base",
        u"dominion1stEdition",
        u"dominion2ndEdition",
        u"dominion2ndEditionUpgrade",
        u"intrigue1stEdition",
        u"intrigue2ndEdition",
        u"intrigue2ndEditionUpgrade",
        u"seaside",
        u"alchemy",
        u"prosperity",
        u"cornucopia extras",
        u"cornucopia",
        u"hinterlands",
        u"dark ages",
        u"dark ages extras",
        u"guilds",
        u"adventures",
        u"adventures extras",
        u"empires",
        u"empires extras",
        u"nocturne",
        u"nocturne extras",
        u"promo",
        u"renaissance",
        u"menagerie",
        u"extras",
        u"animals",
    }
    for c in cards:
        assert isinstance(c, domdiv_cards.Card)
        assert c.cardset_tag in valid_cardsets

    # Option modified card count
    options = main.parse_opts(
        ["--no-trash", "--curse10", "--start-decks", "--include-blanks", "7"]
    )
    options = main.clean_opts(options)
    options.data_path = "."
    cards = main.read_card_data(options)
    # Total delta cards is +28 from
    #      Trash:       -1 * 3 sets = -3
    #      Curse:       +2 * 4 sets = +8
    #      Start Decks: +4 * 4 sets = +16
    #      Blanks:      +7          = +7
    assert len(cards) == num_cards_expected + 28