package Ġcard oft he dead . de cks Ċ Ċ import Ġcard oft he dead . TestUtils . add Cards Ċ import Ġcard oft he dead . TestUtils . game With Empty Deck Ċ import Ġcard oft he dead . cards . Action Ċ import Ġcard oft he dead . cards . Card Ċ import Ġcard oft he dead . cards . Z ombie Ċ import Ġcard oft he dead . cards . actions . Ar more d Ċ import Ġcard oft he dead . cards . actions . B arr ic ade Ċ import Ġcard oft he dead . cards . actions . Bit ten Ċ import Ġcard oft he dead . cards . actions . Ch ains aw Ċ import Ġcard oft he dead . cards . actions . D ynam ite Ċ import Ġcard oft he dead . cards . actions . Hide Ċ import Ġcard oft he dead . cards . actions . L ure Ċ import Ġcard oft he dead . cards . actions . P illage Ċ import Ġcard oft he dead . cards . actions . Slug ger Ċ import Ġcard oft he dead . cards . actions . Tri pped Ċ import Ġcard oft he dead . cards . actions .` N uk es !` Ċ import Ġcard oft he dead . cards . events . Fog Ċ import Ġcard oft he dead . cards . z omb ies . Gr anny Z ombie Ċ import Ġcard oft he dead . cards . z omb ies . L ad Z ombie Ċ import Ġcard oft he dead . cards . z omb ies . Z omb ies Ċ import Ġcard oft he dead . cards . z omb ies .` Z omb ies !!! ` Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . matchers . collections . shouldBe Empty Ċ import Ġio . kot est . matchers . collections . should Contain Exactly Ċ import Ġio . kot est . matchers . shouldBe Ċ Ċ class ĠDeck Test Ġ: ĠString Spec ({ ĊĊĠĠĠ Ġ" should Ġadd Ġunique Ġcards Ġto Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġar more d Ġ= ĠArm ored ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Card ( arm ored ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Card ( B arr ic ade ( game )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġdeck . add Card ( arm ored ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġdeck . size () ĠshouldBe Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġadd Ġcards Ġon Ġdeck ' Ġbottom Ġfor Ġempty Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġd ynam ite Ġ= ĠD ynam ite ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >() ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġdeck . add Card On Bottom ( d ynam ite ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġdeck . pick Top Card () ĠshouldBe Ġd ynam ite ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġadd Ġcards Ġon Ġdeck ' Ġbottom " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġbit ten Ġ= ĠBit ten ( game ) ĊĠĠĠĠĠĠĠ Ġval Ġchains aw Ġ= ĠCh ains aw ( game ) ĊĠĠĠĠĠĠĠ Ġval Ġd ynam ite Ġ= ĠD ynam ite ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Cards ( chains aw , Ġd ynam ite ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġdeck . add Card On Bottom ( bit ten ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġdeck . pick Top Card () ĠshouldBe Ġd ynam ite ĊĠĠĠĠĠĠĠ Ġdeck . pick Top Card () ĠshouldBe Ġchains aw ĊĠĠĠĠĠĠĠ Ġdeck . pick Top Card () ĠshouldBe Ġbit ten ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġmerge Ġtwo Ġempty Ġde cks " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck 1 Ġ= ĠEmpty Deck < Card >() ĊĠĠĠĠĠĠĠ Ġval Ġdeck 2 Ġ= ĠEmpty Deck < Card >() ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġdeck 1 . merge ( deck 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġdeck 1 . isEmpty () ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġdeck 2 . isEmpty () ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġmerge Ġempty Ġdeck Ġto Ġnon - empty Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck 1 Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( Hide ( game )) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdeck 2 Ġ= ĠEmpty Deck < Card >() ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġdeck 1 . merge ( deck 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġdeck 1 . size () ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠ Ġdeck 2 . isEmpty () ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġmerge Ġnon - empty Ġdeck Ġto Ġempty Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck 1 Ġ= ĠEmpty Deck < Card >() ĊĠĠĠĠĠĠĠ Ġval Ġdeck 2 Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( L ure ( game )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġdeck 1 . merge ( deck 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġdeck 1 . size () ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠ Ġdeck 2 . isEmpty () ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġmerge Ġto Ġnon - empty Ġde cks " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck 1 Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( Hide ( game )) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdeck 2 Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( L ure ( game )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġdeck 1 . merge ( deck 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġdeck 1 . size () ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠ Ġdeck 2 . isEmpty () ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġreturn Ġtrue Ġif Ġhas Ġcard Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġhide Ġ= ĠHide ( game ) ĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( hide ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġhas Card Ġ= Ġdeck . has Card ( hide ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġhas Card ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġreturn Ġfalse Ġif Ġdoes Ġnot Ġhave Ġcard Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( Hide ( game )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġhas Card Ġ= Ġdeck . has Card ( Slug ger ( game )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġhas Card ĠshouldBe Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġreturn Ġtrue Ġif Ġhas Ġcard Ġof Ġclass Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( Hide ( game )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġhas Card Ġ= Ġdeck . has Card Of Class ( Hide :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġhas Card ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġreturn Ġtrue Ġif Ġdoes Ġnot Ġhave Ġcard Ġof Ġclass Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( Hide ( game )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġhas Card Ġ= Ġdeck . has Card Of Class ( Slug ger :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġhas Card ĠshouldBe Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġpick Ġtop Ġcard Ġfrom Ġnon - empty Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġn uk es Ġ= Ġ` N uk es ! `( game ) ĊĠĠĠĠĠĠĠ Ġval Ġp illage Ġ= ĠP illage ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Cards ( n uk es , Ġp illage ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġpicked Card 1 Ġ= Ġdeck . pick Top Card () ĊĠĠĠĠĠĠĠ Ġval Ġpicked Card 2 Ġ= Ġdeck . pick Top Card () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġpicked Card 1 ĠshouldBe Ġp illage ĊĠĠĠĠĠĠĠ Ġpicked Card 2 ĠshouldBe Ġn uk es ĊĠĠĠĠĠĠĠ Ġdeck . isEmpty () ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġnot Ġpick Ġcard Ġfrom Ġempty Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >() ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġpicked Card Ġ= Ġdeck . pick Top Card () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġpicked Card ĠshouldBe Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġpick Ġcard Ġif Ġit Ġexists Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġslug ger Ġ= ĠSl ug ger ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( slug ger ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġpicked Card Ġ= Ġdeck . pick Card ( slug ger ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġpicked Card ĠshouldBe Ġslug ger ĊĠĠĠĠĠĠĠ Ġdeck . isEmpty () ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġnot Ġpick Ġcard Ġif Ġdoes Ġnot Ġexist Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġslug ger Ġ= ĠSl ug ger ( game ) ĊĠĠĠĠĠĠĠ Ġval Ġtri pped Ġ= ĠTri pped ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( tri pped ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġpicked Card Ġ= Ġdeck . pick Card ( slug ger ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġpicked Card ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġdeck . size () ĠshouldBe Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġpick Ġcard Ġby Ġindex Ġif Ġit Ġexists Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġslug ger Ġ= ĠSl ug ger ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( slug ger ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġpicked Card Ġ= Ġdeck . pick Card ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġpicked Card ĠshouldBe Ġslug ger ĊĠĠĠĠĠĠĠ Ġdeck . isEmpty () ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġnot Ġpick Ġcard Ġby Ġindex Ġif Ġindex Ġis Ġoutside Ġof Ġdeck Ġcapacity " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġtri pped Ġ= ĠTri pped ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Card ( tri pped ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġpicked Card Ġ= Ġdeck . pick Card ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġpicked Card ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġdeck . size () ĠshouldBe Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġpick Ġcard Ġof Ġclass Ġif Ġit Ġexists Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġar more d Ġ= ĠArm ored ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Cards ( arm ored , ĠB arr ic ade ( game )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġpicked Card Of Class Ġ= Ġdeck . pick Card Of Class ( Action :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġpicked Card Of Class ĠshouldBe Ġar more d ĊĠĠĠĠĠĠĠ Ġdeck . size () ĠshouldBe Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġnot Ġpick Ġcard Ġof Ġclass Ġfrom Ġempty Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >() ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġpicked Card Of Class Ġ= Ġdeck . pick Card Of Class ( Action :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġpicked Card Of Class ĠshouldBe Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġnot Ġpick Ġcard Ġof Ġclass Ġif Ġit Ġdoes Ġnot Ġexist Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Cards ( Ar more d ( game ), ĠB arr ic ade ( game )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġpicked Card Of Class Ġ= Ġdeck . pick Card Of Class ( Z ombie :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġpicked Card Of Class ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġdeck . size () ĠshouldBe Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġget Ġlist Ġof Ġaction Ġcards Ġfrom Ġdeck Ġkeeping Ġthem Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġn uk es Ġ= Ġ` N uk es ! `( game ) ĊĠĠĠĠĠĠĠ Ġval Ġp illage Ġ= ĠP illage ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Cards ( n uk es , Ġp illage , ĠGr anny Z ombie ( game )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġactions Ġ= Ġdeck . get Actions () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġactions Ġshould Contain Exactly ĠlistOf ( n uk es , Ġp illage ) ĊĠĠĠĠĠĠĠ Ġdeck . size () ĠshouldBe Ġ 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġget Ġempty Ġlist Ġof Ġaction Ġcards Ġif Ġno Ġactions Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ Ġadd Cards ( Fog ( game ), Ġ` Z omb ies !!! `( game )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġactions Ġ= Ġdeck . get Actions () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġactions . shouldBe Empty () ĊĠĠĠĠĠĠĠ Ġdeck . size () ĠshouldBe Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġget Ġlist Ġof Ġsingle Ġaction Ġcards Ġfrom Ġdeck Ġkeeping Ġthem Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġl ure Ġ= ĠL ure ( game ) ĊĠĠĠĠĠĠĠ Ġval Ġar more d Ġ= ĠArm ored ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Card >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Cards ( arm ored , Ġl ure , Ġ` N uk es ! `( game ), ĠL ad Z ombie ( game )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġactions Ġ= Ġdeck . get Single Point Actions () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġactions Ġshould Contain Exactly ĠlistOf ( arm ored , Ġl ure ) ĊĠĠĠĠĠĠĠ Ġdeck . size () ĠshouldBe Ġ 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġget Ġtotal Ġmovement Ġpoints " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Action >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġadd Cards ( Slug ger ( game ), ĠD ynam ite ( game ), ĠP illage ( game )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġmovement Points Ġ= Ġdeck . get Movement Points () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġmovement Points ĠshouldBe Ġ 5 ĊĠĠĠĠĠĠĠ Ġdeck . size () ĠshouldBe Ġ 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġget Ġ 0 Ġmovement Ġpoints Ġif Ġdeck Ġis Ġempty " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Action >() ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġmovement Points Ġ= Ġdeck . get Movement Points () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġmovement Points ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠ Ġdeck . isEmpty () ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġget Ġsingle Ġz omb ies " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġgame With Empty Deck () ĊĊĠĠĠĠĠĠĠ Ġval Ġgr anny Ġ= ĠGr anny Z ombie ( game ) ĊĠĠĠĠĠĠĠ Ġval Ġl ad Ġ= ĠL ad Z ombie ( game ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Z ombie >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġadd Cards ( gr anny , Ġl ad , ĠZ omb ies ( game ), Ġ` Z omb ies !!! `( game )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġsingle Z omb ies Ġ= Ġdeck . get Single Z omb ies () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġsingle Z omb ies Ġshould Contain Exactly ĠlistOf ( gr anny , Ġl ad ) ĊĠĠĠĠĠĠĠ Ġdeck . size () ĠshouldBe Ġ 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" should Ġget Ġ 0 Ġsingle Ġz omb ies Ġif Ġno Ġsuch Ġin Ġdeck " Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġdeck Ġ= ĠEmpty Deck < Z ombie >() ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĊĠĠĠĠĠĠĠ Ġval Ġsingle Z omb ies Ġ= Ġdeck . get Single Z omb ies () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġsingle Z omb ies . shouldBe Empty () ĊĠĠĠĠĠĠĠ Ġdeck . isEmpty () ĠshouldBe Ġtrue ĊĠĠĠ Ġ} Ċ }) Ċ