コード例 #1
0
 public void Ensure_that_you_cannot_pick_up_an_item_more_than_once()
 {
     Avatar avatar = new Avatar();
     Fork fork = new Fork();
     avatar.PickUp(fork);
     avatar.PickUp(fork);
 }
コード例 #2
0
 public void Ensure_that_you_cannot_wash_things_if_you_are_holding_non_washable_stuff()
 {
     Avatar avatar = new Avatar();
     BagOfHolding bag = new BagOfHolding();
     Fork fork = new Fork();
     avatar.PickUp(bag);
     avatar.PickUp(fork);
     avatar.StartWashing();
 }
コード例 #3
0
 public void Eating_raw_bacon_is_bad_for_you()
 {
     Avatar avatar = new Avatar();
     BaconSlab bacon = new BaconSlab();
     Fork fork = new Fork();
     Knife knife = new Knife();
     avatar.PickUp(fork);
     avatar.PickUp(knife);
     avatar.Eat(bacon).With(fork, knife);
 }
コード例 #4
0
 public void Ensure_that_you_can_eat_ice_cream_with_a_spoon_and_doing_so_makes_it_dirty()
 {
     Avatar avatar = new Avatar();
     IceCream iceCream = new IceCream();
     avatar.PickUp(iceCream);
     Spoon spoon = new Spoon();
     avatar.PickUp(spoon);
     avatar.Eat(iceCream).With(spoon);
     Assert.AreEqual(DirtRating.Smudged, spoon.DirtRating);
     Assert.AreEqual(80m, spoon.PercentClean);
 }
コード例 #5
0
        public void Ensure_that_properly_eating_ice_cream_causes_it_to_disappear_into_limbo()
        {
            Avatar avatar = new Avatar();
            IceCream iceCream = new IceCream();
            avatar.PickUp(iceCream);
            Assert.AreSame(avatar, iceCream.ParentContainerObject);
            Assert.IsTrue(avatar.Contents.Any(x => x.ObjectId == iceCream.ObjectId));

            Spoon spoon = new Spoon();
            avatar.PickUp(spoon);
            avatar.Eat(iceCream).With(spoon);
            Assert.IsNull(iceCream.ParentContainerObject);
            Assert.IsFalse(avatar.Contents.Any(x => x.ObjectId == iceCream.ObjectId));
        }
コード例 #6
0
 public void Ensure_that_you_cannot_eat_ice_cream_with_a_fork()
 {
     Avatar avatar = new Avatar();
     IceCream iceCream = new IceCream();
     Fork fork = new Fork();
     avatar.PickUp(fork);
     avatar.Eat(iceCream).With(fork);
 }
コード例 #7
0
 public void Ensure_that_you_cannot_eat_ice_cream_with_a_knife()
 {
     Avatar avatar = new Avatar();
     IceCream iceCream = new IceCream();
     Knife knife = new Knife();
     avatar.PickUp(knife);
     avatar.Eat(iceCream).With(knife);
 }
コード例 #8
0
        public void Ensure_that_properly_eating_bacon_causes_it_to_disappear_into_limbo()
        {
            Avatar avatar = new Avatar();
            BaconSlab bacon = new BaconSlab();
            avatar.PickUp(bacon);
            Assert.AreSame(avatar, bacon.ParentContainerObject);
            Assert.IsTrue(avatar.Contents.Any(x => x.ObjectId == bacon.ObjectId));

            Fork fork = new Fork();
            Knife knife = new Knife();
            avatar.PickUp(fork);
            avatar.PickUp(knife);
            bacon.Cook();
            avatar.Eat(bacon).With(fork, knife);
            Assert.IsNull(bacon.ParentContainerObject);
            Assert.IsFalse(avatar.Contents.Any(x => x.ObjectId == bacon.ObjectId));
        }
コード例 #9
0
 public void Cannot_pick_up_an_item_while_it_is_locked_in_the_dishwasher()
 {
     Dishwasher washer = new Dishwasher();
     Spoon spoon = new Spoon();
     washer.Load(spoon);
     washer.Lock();
     Avatar avatar = new Avatar();
     avatar.PickUp(spoon);
 }
コード例 #10
0
        public void Contents_of_an_emptied_dishwasher_are_always_clean()
        {
            var fork = new Fork();
            var spoon = new Spoon();
            var glass = new Glass();

            Avatar avatar = new Avatar();
            avatar.PickUp(fork);
            avatar.PickUp(spoon);
            avatar.PickUp(glass);

            Dishwasher washer = new Dishwasher();
            washer.Load(fork);
            washer.Load(spoon);
            washer.Load(glass);
            washer.TakeEverythingOut();
            Assert.IsTrue(washer.ContentsAreClean());
        }
コード例 #11
0
 public void Ensure_that_you_cannot_eat_bacon_with_a_spoon()
 {
     Avatar avatar = new Avatar();
     BaconSlab bacon = new BaconSlab();
     Spoon spoon = new Spoon();
     bacon.Cook();
     avatar.PickUp(spoon);
     avatar.Eat(bacon).With(spoon);
 }
コード例 #12
0
        public void Ensure_that_the_beer_tap_does_not_dispense_beer_if_there_is_none_left()
        {
            Avatar avatar = new Avatar();
            Glass glass = new Glass();
            avatar.PickUp(glass);

            Fridge fridge = new Fridge();
            fridge.BeerRemaining = 0;
            avatar.DispenseBeerFrom(fridge).Into(glass);
        }
コード例 #13
0
 public void Ensure_that_moving_items_properly_transfers_them()
 {
     Avatar avatar = new Avatar();
     BarOfSoap barOfSoap = new BarOfSoap();
     avatar.PickUp(barOfSoap);
     House house = new House();
     avatar.Put(barOfSoap).In(house);
     Assert.AreSame(house, barOfSoap.ParentContainerObject);
     Assert.IsFalse(avatar.Contents.Any(x => x.ObjectId == barOfSoap.ObjectId));
     Assert.IsTrue(house.Contents.Any(x => x.ObjectId == barOfSoap.ObjectId));
 }
コード例 #14
0
        public void Ensure_that_the_beer_tap_dispenses_beer_fills_containers_and_makes_containers_dirtier()
        {
            Avatar avatar = new Avatar();
            Glass glass = new Glass();
            avatar.PickUp(glass);
            FineChinaTeacup teacup = new FineChinaTeacup();
            avatar.PickUp(teacup);

            Fridge fridge = new Fridge();
            avatar.DispenseBeerFrom(fridge).Into(glass);
            avatar.DispenseBeerFrom(fridge).Into(teacup);

            Assert.IsTrue(glass.IsFull);
            Assert.AreEqual(80m, glass.PercentClean);
            Assert.AreEqual(DirtRating.Smudged, glass.DirtRating);
            Assert.IsTrue(teacup.IsFull);
            Assert.AreEqual(80m, teacup.PercentClean);
            Assert.AreEqual(DirtRating.Smudged, teacup.DirtRating);
            Assert.AreEqual(425, fridge.BeerRemaining);
        }
コード例 #15
0
        public void Ensure_that_if_there_is_only_a_little_bit_of_beer_left_the_container_will_not_be_totally_full()
        {
            Avatar avatar = new Avatar();
            Glass glass = new Glass();
            avatar.PickUp(glass);

            Fridge fridge = new Fridge();
            fridge.BeerRemaining = 2;
            avatar.DispenseBeerFrom(fridge).Into(glass);

            Assert.IsFalse(glass.IsEmpty);
            Assert.IsFalse(glass.IsFull);
            Assert.AreEqual(48, glass.RemainingCapacity);
            Assert.AreEqual(0, fridge.BeerRemaining);
        }
コード例 #16
0
 public void Ensure_that_cooking_ice_cream_causes_it_to_burn_away_into_limbo()
 {
     Avatar avatar = new Avatar();
     IceCream iceCream = new IceCream();
     avatar.PickUp(iceCream);
     Assert.AreSame(avatar, iceCream.ParentContainerObject);
     Assert.IsTrue(avatar.Contents.Any(x => x.ObjectId == iceCream.ObjectId));
     bool exceptionHandled = false;
     try
     {
         iceCream.Cook();
     }
     catch (Exception e)
     {
         exceptionHandled = true;
         Assert.IsInstanceOfType(e, typeof(InappropriateBehaviorException));
     }
     Assert.IsTrue(exceptionHandled);
     Assert.IsNull(iceCream.ParentContainerObject);
     Assert.IsFalse(avatar.Contents.Any(x => x.ObjectId == iceCream.ObjectId));
 }
コード例 #17
0
 public void Ensure_that_cooking_bacon_more_than_once_causes_it_to_burn_away_into_limbo()
 {
     Avatar avatar = new Avatar();
     BaconSlab bacon = new BaconSlab();
     avatar.PickUp(bacon);
     Assert.AreSame(avatar, bacon.ParentContainerObject);
     Assert.IsTrue(avatar.Contents.Any(x => x.ObjectId == bacon.ObjectId));
     bool exceptionHandled = false;
     try
     {
         bacon.Cook();
         bacon.Cook();
     }
     catch (Exception e)
     {
         exceptionHandled = true;
         Assert.IsInstanceOfType(e, typeof(InappropriateBehaviorException));
     }
     Assert.IsTrue(exceptionHandled);
     Assert.IsNull(bacon.ParentContainerObject);
     Assert.IsFalse(avatar.Contents.Any(x => x.ObjectId == bacon.ObjectId));
 }
コード例 #18
0
 public void Ensure_that_you_cannot_pick_up_more_than_you_can_carry()
 {
     Avatar avatar = new Avatar();
     avatar.PickUp(new Elephant());
 }
コード例 #19
0
        public void Ensure_that_you_can_always_fill_a_partially_full_container()
        {
            Avatar avatar = new Avatar();
            Glass glass = new Glass();
            avatar.PickUp(glass);

            Fridge fridge1 = new Fridge();
            fridge1.BeerRemaining = 2;
            avatar.DispenseBeerFrom(fridge1).Into(glass);
            Assert.AreEqual(0, fridge1.BeerRemaining);

            Fridge fridge2 = new Fridge();
            avatar.DispenseBeerFrom(fridge2).Into(glass);
            Assert.AreEqual(452, fridge2.BeerRemaining);
            Assert.IsFalse(glass.IsEmpty);
            Assert.IsTrue(glass.IsFull);
        }
コード例 #20
0
        public void Ensure_that_you_can_wash_multiple_items_at_once()
        {
            bool dirtRatingImprovedEventHandled = false;
            bool allItemsCleanEventHandled = false;

            Avatar avatar = new Avatar();
            avatar.NotifyWhenDirtRatingImproves += (sender, args) => { dirtRatingImprovedEventHandled = true; };
            avatar.NotifyWhenItemsAreTotallyClean += (sender, args) => { allItemsCleanEventHandled = true; };

            Fork fork1 = new Fork {PercentClean = 0};
            Fork fork2 = new Fork {PercentClean = 0};
            Fork fork3 = new Fork {PercentClean = 0};
            avatar.PickUp(fork1);
            avatar.PickUp(fork2);
            avatar.PickUp(fork3);
            avatar.StartWashing();

            Assert.IsTrue(dirtRatingImprovedEventHandled);
            Assert.IsTrue(allItemsCleanEventHandled);
        }
コード例 #21
0
        public void Ensure_that_you_can_eat_bacon_with_a_knife_and_fork_and_doing_so_makes_them_dirty()
        {
            Avatar avatar = new Avatar();
            BaconSlab bacon = new BaconSlab();
            avatar.PickUp(bacon);
            Assert.AreSame(avatar, bacon.ParentContainerObject);
            Assert.IsTrue(avatar.Contents.Any(x => x.ObjectId == bacon.ObjectId));

            Fork fork = new Fork();
            Knife knife = new Knife();
            avatar.PickUp(fork);
            avatar.PickUp(knife);

            Assert.AreEqual(DirtRating.SqueakyClean, fork.DirtRating);
            Assert.AreEqual(100m, fork.PercentClean);
            Assert.AreEqual(DirtRating.SqueakyClean, knife.DirtRating);
            Assert.AreEqual(100m, knife.PercentClean);

            bacon.Cook();
            avatar.Eat(bacon).With(fork, knife);

            Assert.AreEqual(DirtRating.Smudged, fork.DirtRating);
            Assert.AreEqual(80m, fork.PercentClean);
            Assert.AreEqual(DirtRating.Smudged, knife.DirtRating);
            Assert.AreEqual(80m, knife.PercentClean);
        }
コード例 #22
0
 public void Ensure_that_containers_loaded_into_the_dishwasher_are_empty_first()
 {
     Avatar avatar = new Avatar();
     BaconSlab bacon = new BaconSlab();
     avatar.PickUp(bacon);
     Dishwasher washer = new Dishwasher();
     Plate plate = new Plate();
     avatar.Put(bacon).In(plate);
     washer.Load(plate);
 }
コード例 #23
0
        public void Ensure_that_you_cannot_fill_a_plate_with_beer()
        {
            Avatar avatar = new Avatar();
            Plate plate = new Plate();
            avatar.PickUp(plate);

            Fridge fridge = new Fridge();
            avatar.DispenseBeerFrom(fridge).Into(plate);
        }
コード例 #24
0
        public void Ensure_that_you_cannot_dispense_a_beverage_into_a_container_that_is_full()
        {
            Avatar avatar = new Avatar();
            Glass glass = new Glass();
            avatar.PickUp(glass);

            Fridge fridge = new Fridge();
            avatar.DispenseBeerFrom(fridge).Into(glass);
            avatar.DispenseBeerFrom(fridge).Into(glass);
        }
コード例 #25
0
        public void Ensure_that_you_cannot_fill_a_bag_of_holding_with_beer()
        {
            Avatar avatar = new Avatar();
            BagOfHolding bag = new BagOfHolding();
            avatar.PickUp(bag);

            Fridge fridge = new Fridge();
            avatar.DispenseBeerFrom(fridge).Into(bag);
        }
コード例 #26
0
 public void Ensure_that_you_can_wash_items_without_specifying_wash_event_handlers()
 {
     Avatar avatar = new Avatar();
     Fork fork1 = new Fork();
     Fork fork2 = new Fork();
     avatar.PickUp(fork1);
     avatar.PickUp(fork2);
     avatar.StartWashing();
 }
コード例 #27
0
        public void Ensure_that_you_cannot_fill_a_frying_pan_with_beer()
        {
            Avatar avatar = new Avatar();
            FryingPan pan = new FryingPan();
            avatar.PickUp(pan);

            Fridge fridge = new Fridge();
            avatar.DispenseBeerFrom(fridge).Into(pan);
        }