Beispiel #1
0
        public void IncreaseTheOwnerResourcesByTheTotalAmountOfProfitsFromTheirStations_WhenInvoked()
        {
            // Arrange
            int    validIdentificationNumber = 1;
            string validNickName             = "Pesho";
            var    stationsList = new List <ITeleportStation>();

            var stationOwner = new BusinessOwner(validIdentificationNumber, validNickName, stationsList);

            stationOwner.Resources.BronzeCoins = 10;
            stationOwner.Resources.SilverCoins = 10;
            stationOwner.Resources.GoldCoins   = 10;

            var stationMapStub      = new List <IPath>();
            var stationLocationStub = new Mock <ILocation>();
            var teleportStationFake = new TeleportStationFake(stationOwner, stationMapStub, stationLocationStub.Object);

            teleportStationFake.ResoursesExposed.BronzeCoins = 20;
            teleportStationFake.ResoursesExposed.SilverCoins = 20;
            teleportStationFake.ResoursesExposed.GoldCoins   = 20;

            stationOwner.TeleportStations.Add(teleportStationFake);
            // Act
            stationOwner.CollectProfits();
            // Assert
            Assert.AreEqual((10 + 20), stationOwner.Resources.BronzeCoins);
            Assert.AreEqual((10 + 20), stationOwner.Resources.SilverCoins);
            Assert.AreEqual((10 + 20), stationOwner.Resources.GoldCoins);
        }
        public void CauseTeleportStationToObtainPaymentFromUnitToTeleport_WhenAllValidationsPassSuccessfully()
        {
            // Arrange
            var stationOwnerStub   = new Mock <IBusinessOwner>();
            var unitToTeleportStub = new Mock <IUnit>();

            var stationLocationStub = new Mock <ILocation>();

            stationLocationStub.SetupGet(l => l.Planet.Galaxy.Name).Returns("Milky way");
            stationLocationStub.SetupGet(l => l.Planet.Name).Returns("Earth");
            stationLocationStub.SetupGet(l => l.Planet.Units).Returns(new List <IUnit> {
                unitToTeleportStub.Object
            });

            var targetLocationStub = new Mock <ILocation>();

            targetLocationStub.SetupGet(d => d.Planet.Galaxy.Name).Returns("Andromeda");
            targetLocationStub.SetupGet(d => d.Planet.Name).Returns("Kobe");

            var pathCostsStub = new Mock <IResources>();

            pathCostsStub.SetupGet(r => r.BronzeCoins).Returns(20);
            pathCostsStub.SetupGet(r => r.SilverCoins).Returns(20);
            pathCostsStub.SetupGet(r => r.GoldCoins).Returns(20);

            var pathStub = new Mock <IPath>();

            pathStub.SetupGet(p => p.TargetLocation.Planet.Galaxy.Name).Returns("Andromeda");
            pathStub.SetupGet(p => p.TargetLocation.Planet.Name).Returns("Kobe");
            pathStub.SetupGet(p => p.TargetLocation.Planet.Units).Returns(new List <IUnit>());
            pathStub.SetupGet(p => p.Cost).Returns(pathCostsStub.Object);

            var stationMapStub = new List <IPath> {
                pathStub.Object
            };

            var teleport = new TeleportStationFake(stationOwnerStub.Object, stationMapStub, stationLocationStub.Object);

            teleport.ResoursesExposed.BronzeCoins = 0;
            teleport.ResoursesExposed.SilverCoins = 0;
            teleport.ResoursesExposed.GoldCoins   = 0;

            unitToTeleportStub.Setup(u => u.CurrentLocation).Returns(stationLocationStub.Object);
            unitToTeleportStub.Setup(u => u.CanPay(It.IsAny <IResources>())).Returns(true);
            unitToTeleportStub.Setup(u => u.Pay(It.IsAny <IResources>())).Returns(pathCostsStub.Object);
            unitToTeleportStub.Setup(u => u.Resources).Returns(pathCostsStub.Object);
            // Act
            teleport.TeleportUnit(unitToTeleportStub.Object, targetLocationStub.Object);
            // Assert
            Assert.AreEqual(20, teleport.ResoursesExposed.BronzeCoins);
            Assert.AreEqual(20, teleport.ResoursesExposed.SilverCoins);
            Assert.AreEqual(20, teleport.ResoursesExposed.GoldCoins);
        }
Beispiel #3
0
        public void SetAllProvidedFields_WhenPassedValidParameters()
        {
            // Arrange
            var ownerStub = new Mock <IBusinessOwner>();
            var mapStub   = new List <IPath> {
                new Mock <IPath>().Object
            };
            var locationStub = new Mock <ILocation>();
            // Act
            var teleportFake = new TeleportStationFake(ownerStub.Object, mapStub, locationStub.Object);

            // Assert
            Assert.AreSame(ownerStub.Object, teleportFake.OwnerExposed);
            Assert.AreSame(mapStub, teleportFake.GalacticMapExposed);
            Assert.AreSame(locationStub.Object, teleportFake.LocationExposed);
        }
        public void ReturnTotalAmountOfResourcesGeneratedUsingTeleportService_WhenPassedActualOwnerOfTheService()
        {
            // Arrange
            var stationOwnerStub    = new Mock <IBusinessOwner>();
            var stationLocationMock = new Mock <ILocation>();
            var stationMapStub      = new List <IPath> {
                new Mock <IPath>().Object
            };

            var teleport = new TeleportStationFake(stationOwnerStub.Object, stationMapStub, stationLocationMock.Object);

            teleport.ResoursesExposed.BronzeCoins = 20;
            teleport.ResoursesExposed.SilverCoins = 20;
            teleport.ResoursesExposed.GoldCoins   = 20;
            // Act
            var totalAmount = teleport.PayProfits(stationOwnerStub.Object);

            // Assert
            Assert.AreEqual(20, totalAmount.BronzeCoins);
            Assert.AreEqual(20, totalAmount.SilverCoins);
            Assert.AreEqual(20, totalAmount.GoldCoins);
        }