示例#1
0
            public Task Clash()
            {
                var rocketId        = RocketId.From(2);
                var landingPosition = LandingPosition.From(new Position(5, 5));

                return(_landingTrajectoryVerifier.VerifyPosition(rocketId, landingPosition));
            }
示例#2
0
            public Task LandOutsideOfPlatform()
            {
                var rocketId        = RocketId.From(1);
                var landingPosition = LandingPosition.From(new Position(1, 1));

                return(_landingTrajectoryVerifier.VerifyPosition(rocketId, landingPosition));
            }
示例#3
0
            public async Task GlobalSetup()
            {
                var rocketId        = RocketId.From(1);
                var landingPosition = LandingPosition.From(new Position(5, 5));

                await _landingTrajectoryVerifier.VerifyPosition(rocketId, landingPosition);
            }
示例#4
0
        public async Task VerifyPosition_ShouldDetectClash_WhenMultipleRocketsAreLanding(
            int rocket1Id, int rocket2Id, int x1, int y1, int x2, int y2, string expectedOutput)
        {
            await _sut.VerifyPosition(RocketId.From(rocket1Id), LandingPosition.From(new Position(x1, y1)));

            var result = await _sut.VerifyPosition(RocketId.From(rocket2Id), LandingPosition.From(new Position(x2, y2)));

            result.Should().Be(expectedOutput);
        }
示例#5
0
        public async Task VerifyPosition_ShouldDetectClashBasedOnLatestLandingCheck_WhenMultipleRocketsAreLanding(
            int x1, int y1, int x2, int y2, int x3, int y3, string expectedOutput)
        {
            await _sut.VerifyPosition(RocketId.From(1), LandingPosition.From(new Position(x1, y1)));

            await _sut.VerifyPosition(RocketId.From(1), LandingPosition.From(new Position(x2, y2)));

            var result = await _sut.VerifyPosition(RocketId.From(2), LandingPosition.From(new Position(x3, y3)));

            result.Should().Be(expectedOutput);
        }
示例#6
0
        public async Task VerifyPosition_ShouldProvideCorrectOutput_WhenMultipleRocketsAreLandingInParallel()
        {
            var(rocketId0, landingPosition0) = (RocketId.From(1), LandingPosition.From(new Position(12, 12)));
            var(rocketId1, landingPosition1) = (RocketId.From(1), LandingPosition.From(new Position(5, 5)));
            var(rocketId2, landingPosition2) = (RocketId.From(2), LandingPosition.From(new Position(6, 6)));
            var(rocketId3, landingPosition3) = (RocketId.From(3), LandingPosition.From(new Position(9, 9)));
            var(rocketId4, landingPosition4) = (RocketId.From(4), LandingPosition.From(new Position(8, 8)));
            var(rocketId5, landingPosition5) = (RocketId.From(5), LandingPosition.From(new Position(15, 15)));

            await Task.WhenAll(
                RunLandingCheck(rocketId0, landingPosition0, OutputMessages.OkForLanding),
                RunLandingCheck(rocketId1, landingPosition1, OutputMessages.OkForLanding),
                RunLandingCheck(rocketId2, landingPosition2, OutputMessages.Clash),
                RunLandingCheck(rocketId3, landingPosition3, OutputMessages.OkForLanding),
                RunLandingCheck(rocketId4, landingPosition4, OutputMessages.Clash),
                RunLandingCheck(rocketId5, landingPosition5, OutputMessages.OkForLanding)
                );
        }
示例#7
0
        public void VerifyPosition_ShouldThrow_WhenProvidedOutOfLandingAreaLandingPosition(int x, int y)
        {
            Func <Task> action = async() => await _sut.VerifyPosition(RocketId.From(1), LandingPosition.From(new Position(x, y)));

            action.Should().Throw <LandingPositionOutsideLandingAreaException>();
        }
示例#8
0
        public async Task VerifyPosition_ShouldDetectPlatform_WhenProvidedValidLandingPosition(int x, int y, string expectedOutput)
        {
            var result = await _sut.VerifyPosition(RocketId.From(1), LandingPosition.From(new Position(x, y)));

            result.Should().Be(expectedOutput);
        }