extern crate deck_codes;
use deck_codes::{decode_deck_code, encode_deck_code, format::Format};
#[test]
fn pre_sideboard_standard_deck_string_matches_deck() {
let code = "AAECAf0EBMABobcC3s0Cps4CDXHDAbsClQOrBJYF7AWjtgLXtgLpugKHvQLBwQKYxAIA";
let deck = decode_deck_code(code).expect("Decoded correctly");
assert_eq!(deck.format, Format::Standard);
assert_eq!(deck.heroes, vec![637]); assert_eq!(deck.total_cards(), 30);
let expected_cards = vec![
(1, 192, None),
(1, 39841, None),
(1, 42718, None),
(1, 42790, None),
(2, 113, None),
(2, 195, None),
(2, 315, None),
(2, 405, None),
(2, 555, None),
(2, 662, None),
(2, 748, None),
(2, 39715, None),
(2, 39767, None),
(2, 40297, None),
(2, 40583, None),
(2, 41153, None),
(2, 41496, None),
];
assert_eq!(deck.cards(), expected_cards);
}
#[test]
fn post_sideboard_standard_deck_string_matches_deck_and_string() {
let code = "AAECAf0EBMABobcC3s0Cps4CDXHDAbsClQOrBJYF7AWjtgLXtgLpugKHvQLBwQKYxAIAAA==";
let deck = decode_deck_code(code).expect("Decoded correctly");
assert_eq!(deck.format, Format::Standard);
assert_eq!(deck.heroes, vec![637]); assert_eq!(deck.total_cards(), 30);
let expected_cards = vec![
(1, 192, None),
(1, 39841, None),
(1, 42718, None),
(1, 42790, None),
(2, 113, None),
(2, 195, None),
(2, 315, None),
(2, 405, None),
(2, 555, None),
(2, 662, None),
(2, 748, None),
(2, 39715, None),
(2, 39767, None),
(2, 40297, None),
(2, 40583, None),
(2, 41153, None),
(2, 41496, None),
];
assert_eq!(deck.cards(), expected_cards);
let reverse_code = encode_deck_code(&deck);
assert_eq!(code, reverse_code);
}
#[test]
fn pre_sideboard_classic_deck_matches_deck() {
let code =
"AAEDAaIHCIKWBNyWBPigBIahBLWhBNyhBN+hBKWjBAv8lQT9lQTqlgT7lgT6oATUoQTdoQTkoQTnoQTooQSTogQA";
let deck = decode_deck_code(code).expect("Decoded correctly");
assert_eq!(deck.format, Format::Classic);
assert_eq!(deck.heroes, vec![930]); assert_eq!(deck.total_cards(), 30);
let expected_cards = vec![
(1, 68354, None), (1, 68444, None), (1, 69752, None), (1, 69766, None), (1, 69813, None), (1, 69852, None), (1, 69855, None), (1, 70053, None), (2, 68348, None), (2, 68349, None), (2, 68458, None), (2, 68475, None), (2, 69754, None), (2, 69844, None), (2, 69853, None), (2, 69860, None), (2, 69863, None), (2, 69864, None), (2, 69907, None), ];
assert_eq!(deck.cards(), expected_cards);
}
#[test]
fn post_sideboard_classic_deck_matches_deck_and_code() {
let code =
"AAEDAaIHCIKWBNyWBPigBIahBLWhBNyhBN+hBKWjBAv8lQT9lQTqlgT7lgT6oATUoQTdoQTkoQTnoQTooQSTogQAAA==";
let deck = decode_deck_code(code).expect("Decoded correctly");
assert_eq!(deck.format, Format::Classic);
assert_eq!(deck.heroes, vec![930]); assert_eq!(deck.total_cards(), 30);
let expected_cards = vec![
(1, 68354, None), (1, 68444, None), (1, 69752, None), (1, 69766, None), (1, 69813, None), (1, 69852, None), (1, 69855, None), (1, 70053, None), (2, 68348, None), (2, 68349, None), (2, 68458, None), (2, 68475, None), (2, 69754, None), (2, 69844, None), (2, 69853, None), (2, 69860, None), (2, 69863, None), (2, 69864, None), (2, 69907, None), ];
let reverse_code = encode_deck_code(&deck);
assert_eq!(code, reverse_code);
assert_eq!(deck.cards(), expected_cards);
}
#[test]
fn post_sideboard_wild_dk_reverse() {
let code = "AAEBAfHhBAK0gAW0gAUO9eMEguQEseYEjvEErqEF88gF6oAG6akG/7oG/8kGkMsGpdwGpPQGpvQGAAA=";
let deck = decode_deck_code(code).expect("Decoded correctly");
assert_eq!(deck.format, Format::Wild);
assert_eq!(deck.heroes, vec![78065]);
let reverse_code = encode_deck_code(&deck);
assert_eq!(code, reverse_code);
}
#[test]
fn standard_sideboard_deck() {
let code =
"AAECAfHhBB6H9gS0gAX9xAWt6QWC+AX8+QWT+wXt/wXWgAaFjgaUlQb/lwbQngaSoAbHpAavqAa7sQb/uga/vgbDvgakwAamwAb/yQaWywa6zgag4gbR5QbC6Aaq6gbt6gYAAAEGrekF/cQFu7EG/cQF9bMGx6QG97MGx6QG694Gx6QG6e0G/cQFAAA=";
let deck = decode_deck_code(code).expect("Decoded correctly");
assert_eq!(deck.format, Format::Standard);
assert_eq!(deck.heroes, vec![78065]); assert_eq!(deck.total_cards(), 30);
let expected_cards = vec![
(1, 80647, None), (1, 81972, None), (1, 90749, None), (1, 95405, None), (1, 97282, None), (1, 97532, None), (1, 97683, None), (1, 98285, None), (1, 98390, None), (1, 100101, None), (1, 101012, None), (1, 101375, None), (1, 102224, None), (1, 102418, None), (1, 102983, None), (1, 103471, None), (1, 104635, None), (1, 105855, None), (1, 106303, None), (1, 106307, None), (1, 106532, None), (1, 106534, None), (1, 107775, None), (1, 107926, None), (1, 108346, None), (1, 110880, None), (1, 111313, None), (1, 111682, None), (1, 111914, None), (1, 111981, None), (1, 95405, Some(90749)), (1, 104635, Some(90749)), (1, 104949, Some(102983)), (1, 104951, Some(102983)), (1, 110443, Some(102983)), (1, 112361, Some(90749)), ];
let reverse_code = encode_deck_code(&deck);
assert_eq!(deck.cards(), expected_cards);
assert_eq!(code, reverse_code);
}
#[test]
fn sideboard_standard_reverse() {
let code = "AAECAZICBp/zBamVBvajBsekBtrBBoviBgyunwSaoAagoAaHqAbvqQbDugbQygbzygaL3Aad4wb75Qad6wYAAQP0swbHpAb3swbHpAbo3gbHpAYAAA==";
let deck = decode_deck_code(code).expect("Decoded correctly");
assert_eq!(deck.format, Format::Standard);
assert_eq!(deck.heroes, vec![274]);
let reverse_code = encode_deck_code(&deck);
assert_eq!(code, reverse_code);
}