예제 #1
0
        public void Bag_cannot_hold_same_bag_twice()
        {
            Bag container = new Bag("blue", "light");
            Bag cargo     = new Bag("red", "dark");

            container.AddCargo(cargo, 1);
            Assert.Throws <ArgumentException>(() => container.AddCargo(cargo, 1));
        }
예제 #2
0
        public void Bag_reports_whether_another_bag_can_go_in_it()
        {
            Bag container = new Bag("blue", "light");
            Bag cargo     = new Bag("red", "dark");

            container.AddCargo(cargo, 1);

            Assert.IsTrue(container.CanContain(new Bag("red", "dark")));
            Assert.IsFalse(container.CanContain(new Bag("red", "light")));
        }
예제 #3
0
        public void Bag_reports_correct_transitive_content_count()
        {
            var cargo      = new Bag("blue", "light");
            var container1 = new Bag("red", "dark");
            var container2 = new Bag("green", "forest");
            var container3 = new Bag("yellow", "sunny");

            container1.AddCargo(cargo, 2);
            container2.AddCargo(cargo, 2);
            container3.AddCargo(container1, 2);
            Assert.AreEqual(6, container3.GetTransitiveContentCount());
        }
예제 #4
0
        public void Bag_equality_comparison_works()
        {
            var b1 = new Bag("blue", "light");
            var b2 = new Bag("blue", "dark");
            var b3 = new Bag("red", "light");
            var b4 = new Bag("blue", "light");

            b1.AddCargo(b4, 1);
            Assert.AreEqual(b1, b4);
            Assert.IsTrue(b1.Equals(b4));
            Assert.IsFalse(b1.Equals(b2));
            Assert.IsFalse(b1.Equals(b3));
        }