public async Task <IActionResult> AddRegion(RegionInputDto regionInput)
        {
            CoordinateParser coordinateParser = new CoordinateParser();

            Coordinate[] parsedCoordinates = await coordinateParser.Parse(regionInput.KmlUrl);

            Region region = new Region
            {
                Name = regionInput.Name
            };

            _context.Add(region);
            await _context.SaveChangesAsync();

            foreach (Coordinate coordinate in parsedCoordinates)
            {
                Coordinate coordinateTransition = new Coordinate
                {
                    Lat      = coordinate.Lat,
                    Lng      = coordinate.Lng,
                    RegionId = region.Id,
                };
                _context.Add(coordinateTransition);
                await _context.SaveChangesAsync();
            }
            return(Ok());
        }
        public void Test_ParsingCordinates_ShouldReturnArrayOfCordinates()
        {
            var coordinates = CoordinateParser.Parse("4 8");

            Assert.AreEqual(4, coordinates[0]);
            Assert.AreEqual(8, coordinates[1]);
        }
 public void TestItReturnsFalseOnInvalidTryParse()
 {
     Assert.False(
         CoordinateParser.TryParse("abd", "def", out Coordinate returnedCoordinate)
         );
     Assert.Equal(CoordinateParser.InvalidCoordinate, returnedCoordinate);
 }
 public void TestItReturnsTrueOnValidTryParse()
 {
     Assert.True(
         CoordinateParser.TryParse("N054.39.27.000", "W006.12.57.000", out Coordinate returnedCoordinate)
         );
     Assert.Equal(new Coordinate("N054.39.27.000", "W006.12.57.000"), returnedCoordinate);
 }
Beispiel #5
0
        /// <summary>
        /// Parse the command and calls the appropriate method
        /// </summary>
        /// <param name="command">Entered command</param>
        private void ExecuteCommand(string command)
        {
            switch (command)
            {
            case "exit":
                this.isGameRunning = false;
                Console.WriteLine("Goodbye!");
                break;

            case "top":
                this.consoleRenderer.PrintTopPlayers(this.topPlayers.PlayersMoves);
                Console.WriteLine("Press any key to continue...");
                Console.ReadKey();
                break;

            case "restart":
                this.StartNewGame();
                break;

            default:
                int[] cordinates = CoordinateParser.Parse(command);
                this.Shoot(cordinates);
                break;
            }
        }
Beispiel #6
0
        private void OnCoordinateParser(DataPackage data)
        {
            var text = (string)data.Data;

            if (text.Contains(","))
            {
                _coordinate = CoordinateParser.ParsePointValue(text, _coordinate);
                AddNewPoint(_coordinate);
                return;
            }
            if (Points.Count == 1)
            {
                return;
            }
            var firstPoint    = Points[0];
            var secondPoint   = Points[1];
            var newLenght     = CoordinateParser.ParseDoubleArgument(0, text);
            var distanceRatio = newLenght / firstPoint.Distance(secondPoint);

            if (Math.Abs(distanceRatio) < 1e-6)
            {
                return;
            }

            AddNewPoint(GeomUtils.BetweenValue(firstPoint, secondPoint, distanceRatio));
        }
Beispiel #7
0
        public void ValidPlayerMoveReturnsCoordinate()
        {
            var coordinateParser = new CoordinateParser();

            var coordinate = coordinateParser.GetNewCoordinate("2,3");

            Assert.Equal(1, coordinate.X);
            Assert.Equal(2, coordinate.Y);
        }
Beispiel #8
0
 public InputHandler(NumberFormatInfo numberFormatInfo, char[] coordinateDelimiters)
 {
     _parser = new CoordinateParser
     {
         Settings = new ParserSettings()
         {
             NumberFormat = numberFormatInfo,
             Delimiters   = coordinateDelimiters
         }
     };
 }
        private void OnCoordinateParser(DataPackage data)
        {
            var text = (string)data.Data;

            if (text.Contains(","))
            {
                var coordinate = new Point3D();
                CoordinateParser.ParsePointValue(text, coordinate);
                AddNewPoint(coordinate);
                return;
            }
        }
Beispiel #10
0
        public GameLogicIntegrationTests()
        {
            _configMock = new Mock <IOptions <AppSettings> >(MockBehavior.Strict);
            var settingsChecker     = new SettingsChecker(_configMock.Object);
            var randomWrapper       = new RandomWrapper();
            var shipFactory         = new ShipFactory(_configMock.Object, randomWrapper);
            var grid                = new Logic.Grid.Grid();
            var gridBuilder         = new GridBuilder(_configMock.Object, shipFactory, grid);
            var coordinateValidator = new CoordinateValidator();
            var coordinateParser    = new CoordinateParser(coordinateValidator);

            _sut = new GameLogic(settingsChecker, gridBuilder, coordinateParser);
        }
Beispiel #11
0
        private void OnCoordinateParser(DataPackage data)
        {
            var text = (string)data.Data;

            if (text.Contains(","))
            {
                _coordinate = CoordinateParser.ParsePointValue(text, _coordinate);
                AddNewPoint(_coordinate);
            }
            if (Points.Count < 4)
            {
                return;
            }
        }
Beispiel #12
0
        public void BoardPrintsWithMultipleCoordinates()
        {
            var input   = new TestInput(new[] { "1,1", "1,2", "1,3", "2,1", "2,3", "2,2", "3,1", "3,3", "3,2" });
            var output  = new TestOutput();
            var players = new List <Player> {
                new Player("Player 1", Token.X, input), new Player("Player 2", Token.O, input)
            };
            var board            = new Board(3);
            var coordinateParser = new CoordinateParser();
            var testValidator    = new TestValidator(true, true);
            var game             = new Game(output, board, coordinateParser, testValidator);

            RunPlayerLoop(players, game);

            Assert.Contains("X O X \nO O X \nX X O ", output.CalledText);
        }
Beispiel #13
0
        public void CellOutsideOfBoardBounds_ReturnsNotification()
        {
            var input   = new TestInput(new[] { "4,5", "q" });
            var output  = new TestOutput();
            var players = new List <Player> {
                new Player("Player 1", Token.X, input)
            };
            var board            = new TestBoard(new[] { false });
            var coordinateParser = new CoordinateParser();
            var testValidator    = new TestValidator(validCoordinateResults: false, true);
            var game             = new Game(output, board, coordinateParser, testValidator);

            RunPlayerLoop(players, game);

            Assert.Contains("Oh no, those coordinates are outside the bounds of this board. Try again...", output.CalledText);
            Assert.Equal(2, input.CalledCount);
        }
Beispiel #14
0
        public void DrawCallsExitApp()
        {
            var input   = new TestInput(new[] { "1,1", "1,2", "1,3", "2,1", "2,3", "2,2", "3,1", "3,3", "3,2" });
            var output  = new TestOutput();
            var players = new List <Player> {
                new Player("Player 1", Token.X, input), new Player("Player 2", Token.O, input)
            };
            var board            = new Board(3);
            var coordinateParser = new CoordinateParser();
            var testValidator    = new TestValidator(true, true);
            var game             = new Game(output, board, coordinateParser, testValidator);

            RunPlayerLoop(players, game);

            Assert.Equal(GameStatus.GameOver, game.GameStatus);
            Assert.Equal(9, input.CalledCount);
        }
Beispiel #15
0
        public void DrawReturnsNotification_IfBoardSize3()
        {
            var input   = new TestInput(new[] { "1,1", "1,2", "1,3", "2,1", "2,3", "2,2", "3,1", "3,3", "3,2" });
            var output  = new TestOutput();
            var players = new List <Player> {
                new Player("Player 1", Token.X, input), new Player("Player 2", Token.O, input)
            };
            var board            = new Board(3);
            var coordinateParser = new CoordinateParser();
            var testValidator    = new TestValidator(true, true);
            var game             = new Game(output, board, coordinateParser, testValidator);

            RunPlayerLoop(players, game);

            Assert.Contains("It's a draw!", output.CalledText);
            Assert.Equal(9, input.CalledCount);
        }
Beispiel #16
0
        public void BoardPrintsWithCorrectCoordinates_ImplementationTest()
        {
            var input   = new TestInput(new[] { "1,1", "q" });
            var output  = new TestOutput();
            var players = new List <Player>()
            {
                new Player("Player 1", Token.X, input)
            };
            var board            = new Board(3);
            var coordinateParser = new CoordinateParser();
            var validator        = new Validator();
            var game             = new Game(output, board, coordinateParser, validator);

            RunPlayerLoop(players, game);

            Assert.Contains("X . . \n. . . \n. . . ", output.CalledText);
        }
Beispiel #17
0
        public void InvalidPlayerMoveReturnsNotification_ImplementationTest()
        {
            var input   = new TestInput(new[] { "1", "q" });
            var output  = new TestOutput();
            var players = new List <Player>()
            {
                new Player("Player 1", Token.X, input)
            };
            var board            = new Board(3);
            var coordinateParser = new CoordinateParser();
            var validator        = new Validator();
            var game             = new Game(output, board, coordinateParser, validator);

            RunPlayerLoop(players, game);

            Assert.Contains("Sorry - that format is incorrect! Try again...", output.CalledText);
        }
Beispiel #18
0
        public void ValidPlayerMoveFormatDoesNotPrintError()
        {
            var input   = new TestInput(new[] { "1,2", "q" });
            var output  = new TestOutput();
            var players = new List <Player>()
            {
                new Player("Player 1", Token.X, input)
            };
            var board            = new TestBoard(new[] { true });
            var coordinateParser = new CoordinateParser();
            var testValidator    = new TestValidator(validCoordinateResults: true, true);
            var game             = new Game(output, board, coordinateParser, testValidator);

            RunPlayerLoop(players, game);

            Assert.DoesNotContain("Sorry - that format is incorrect! Try again...", output.CalledText);
            Assert.Equal(1, board.CalledCount);
        }
Beispiel #19
0
        public void CellNotAvailable_ReturnsNotification()
        {
            var input   = new TestInput(new[] { "1,1", "q" });
            var output  = new TestOutput();
            var players = new List <Player>()
            {
                new Player("Player 1", Token.X, input)
            };
            var board            = new TestBoard(new bool[] { false });
            var coordinateParser = new CoordinateParser();
            var testValidator    = new TestValidator(validCoordinateResults: true, true);
            var game             = new Game(output, board, coordinateParser, testValidator);

            RunPlayerLoop(players, game);

            Assert.Contains("Oh no, a piece is already at this place! Try again...", output.CalledText);
            Assert.Equal(2, input.CalledCount);
        }
Beispiel #20
0
        public void ExitAppCalledOnQInput()
        {
            var input   = new TestInput(new string[] { "q" });
            var output  = new TestOutput();
            var players = new List <Player>()
            {
                new Player("Player 1", Token.X, input)
            };
            var board            = new Board(3);
            var coordinateParser = new CoordinateParser();
            var testValidator    = new TestValidator(validCoordinateResults: true, true);
            var game             = new Game(output, board, coordinateParser, testValidator);

            RunPlayerLoop(players, game);

            Assert.Equal(GameStatus.GameOver, game.GameStatus);
            Assert.Equal(1, input.CalledCount);
        }
Beispiel #21
0
        public void WinReturnsNotification()
        {
            var input   = new TestInput(new string[] { "1,1", "1,2", "2,2", "2,3", "3,3" });
            var output  = new TestOutput();
            var players = new List <Player>()
            {
                new Player("Player 1", Token.X, input), new Player("Player 2", Token.O, input)
            };
            var board            = new Board(3);
            var coordinateParser = new CoordinateParser();
            var testValidator    = new TestValidator(true, true);
            var game             = new Game(output, board, coordinateParser, testValidator);

            RunPlayerLoop(players, game);

            Assert.Contains("Congratulations Player 1! You have won!", output.CalledText);
            Assert.Equal(5, input.CalledCount);
        }
        private void InitializeInputs()
        {
            var solver = new Solver(Document)
            {
                RuleSet = new RuleSet()
            };

            var activeViewNo = AttachedView.GetActiveViewNumber();

            MouseInput          = new MouseEventsInput();
            _mouse3DEventsDPipe = new DirectCoordinateMouseEventsPipe(View);
            _commandParserPipe  = new CoordinateParser();
            _commandList        = new CommandList(ActionGraph);

            ActionGraph.Register(_mouse3DEventsDPipe);
            ActionGraph.Register(new ViewInput(View, Viewer, AttachedView.GetActiveView()));
            ActionGraph.Register(MouseInput);
            ActionGraph.Register(new FacePickerMockPipe(_context, View));
            ActionGraph.Register(new DocumentInput(Document));
            ActionGraph.Register(new ContextInput(_context));
            ActionGraph.Register(new CommandLineViewInputStub());
            ActionGraph.Register(new MouseCursorInput(AttachedView.GetActiveView()));
            ActionGraph.Register(new RestrictedPlaneInput());
            ActionGraph.Register(new CommandLinePrePusherInput());
            ActionGraph.Register(new FacePickerVisualFeedbackPipe(_context));
            ActionGraph.Register(new InputBase(InputNames.UiElementsItem));
            ActionGraph.Register(new GeometricSolverPipe(solver, new SolverDrawer(_context)));
            ActionGraph.Register(new NodeSelectInput());
            ActionGraph.Register(_commandParserPipe);
            ActionGraph.Register(new InputBase(InputNames.CommandParser));
            ActionGraph.Register(new DirectSelectionContainerPipe());
            ActionGraph.Register(new InputBase(InputNames.MirrorEntireScenePipe));
            ActionGraph.Register(new CommandListInput(_commandList));
            ActionGraph.Register(new GlobalCapabilitiesInput());
            ActionGraph.Register(new DescriptorsFactoryInput());
            ActionGraph.Register(new FastToolbarMockInput());
        }
    public override void OnImportAsset(AssetImportContext ctx)
    {
        var lines = File.ReadAllLines(ctx.assetPath);

        int modeCoordinates    = 0;
        int maxModeCoordinates = 0;

        var coordParser = new CoordinateParser();
        var modeParser  = new ModeParser();

        MoleculeDefinition molecule = new MoleculeDefinition();

        foreach (var line in lines)
        {
            coordParser.ParseLine(molecule, line);

            modeParser.ParseLine(molecule, line);

            if (molecule.VibrationalModes.Count > 0)
            {
                var regexBond = " ! R\\d+ +R\\((\\d+),(\\d+)\\)";
                var match     = Regex.Match(line, regexBond);
                if (match.Success)
                {
                    var atom1 = int.Parse(match.Groups [1].Value) - 1;
                    var atom2 = int.Parse(match.Groups [2].Value) - 1;
                    molecule.Bonds.Add(new BondDefinition()
                    {
                        AtomIndex1 = atom1, AtomIndex2 = atom2
                    });
                }
            }
        }

        ctx.AddObjectToAsset("Data", molecule);
        ctx.SetMainObject(molecule);
    }
 [InlineData("N054.60.44.000", "W006.60.23.000")] // 60 minutes
 public void TestItParsesValidCoordinates(string latitude, string longitude)
 {
     Assert.Equal(new Coordinate(latitude, longitude), CoordinateParser.Parse(latitude, longitude));
 }
 public CoordinateParserTests()
 {
     _coordinateValidatorMock = new Mock <ICoordinateValidator>(MockBehavior.Strict);
     _sut = new CoordinateParser(_coordinateValidatorMock.Object);
 }
        private static void CreatePathSegment(char command, SvgPathSegmentList segments, CoordinateParser parser,
            bool isRelative)
        {
            var coords = new float[6];

            switch (command)
            {
                case 'm': // relative moveto
                case 'M': // moveto
                    if (parser.TryGetFloat(out coords[0]) && parser.TryGetFloat(out coords[1]))
                    {
                        segments.Add(new SvgMoveToSegment(ToAbsolute(coords[0], coords[1], segments, isRelative)));
                    }

                    while (parser.TryGetFloat(out coords[0]) && parser.TryGetFloat(out coords[1]))
                    {
                        segments.Add(new SvgLineSegment(segments.Last.End,
                            ToAbsolute(coords[0], coords[1], segments, isRelative)));
                    }
                    break;
                case 'a':
                case 'A':
                    bool size;
                    bool sweep;

                    while (parser.TryGetFloat(out coords[0]) && parser.TryGetFloat(out coords[1]) &&
                           parser.TryGetFloat(out coords[2]) && parser.TryGetBool(out size) &&
                           parser.TryGetBool(out sweep) && parser.TryGetFloat(out coords[3]) &&
                           parser.TryGetFloat(out coords[4]))
                    {
                        // A|a rx ry x-axis-rotation large-arc-flag sweep-flag x y
                        segments.Add(new SvgArcSegment(segments.Last.End, coords[0], coords[1], coords[2],
                            (size ? SvgArcSize.Large : SvgArcSize.Small),
                            (sweep ? SvgArcSweep.Positive : SvgArcSweep.Negative),
                            ToAbsolute(coords[3], coords[4], segments, isRelative)));
                    }
                    break;
                case 'l': // relative lineto
                case 'L': // lineto
                    while (parser.TryGetFloat(out coords[0]) && parser.TryGetFloat(out coords[1]))
                    {
                        segments.Add(new SvgLineSegment(segments.Last.End,
                            ToAbsolute(coords[0], coords[1], segments, isRelative)));
                    }
                    break;
                case 'H': // horizontal lineto
                case 'h': // relative horizontal lineto
                    while (parser.TryGetFloat(out coords[0]))
                    {
                        segments.Add(new SvgLineSegment(segments.Last.End,
                            ToAbsolute(coords[0], segments.Last.End.Y, segments, isRelative, false)));
                    }
                    break;
                case 'V': // vertical lineto
                case 'v': // relative vertical lineto
                    while (parser.TryGetFloat(out coords[0]))
                    {
                        segments.Add(new SvgLineSegment(segments.Last.End,
                            ToAbsolute(segments.Last.End.X, coords[0], segments, false, isRelative)));
                    }
                    break;
                case 'Q': // curveto
                case 'q': // relative curveto
                    while (parser.TryGetFloat(out coords[0]) && parser.TryGetFloat(out coords[1]) &&
                           parser.TryGetFloat(out coords[2]) && parser.TryGetFloat(out coords[3]))
                    {
                        segments.Add(new SvgQuadraticCurveSegment(segments.Last.End,
                            ToAbsolute(coords[0], coords[1], segments, isRelative),
                            ToAbsolute(coords[2], coords[3], segments, isRelative)));
                    }
                    break;
                case 'T': // shorthand/smooth curveto
                case 't': // relative shorthand/smooth curveto
                    while (parser.TryGetFloat(out coords[0]) && parser.TryGetFloat(out coords[1]))
                    {
                        var lastQuadCurve = segments.Last as SvgQuadraticCurveSegment;

                        var controlPoint = lastQuadCurve != null
                            ? Reflect(lastQuadCurve.ControlPoint, segments.Last.End)
                            : segments.Last.End;

                        segments.Add(new SvgQuadraticCurveSegment(segments.Last.End, controlPoint,
                            ToAbsolute(coords[0], coords[1], segments, isRelative)));
                    }
                    break;
                case 'C': // curveto
                case 'c': // relative curveto
                    while (parser.TryGetFloat(out coords[0]) && parser.TryGetFloat(out coords[1]) &&
                           parser.TryGetFloat(out coords[2]) && parser.TryGetFloat(out coords[3]) &&
                           parser.TryGetFloat(out coords[4]) && parser.TryGetFloat(out coords[5]))
                    {
                        segments.Add(new SvgCubicCurveSegment(segments.Last.End,
                            ToAbsolute(coords[0], coords[1], segments, isRelative),
                            ToAbsolute(coords[2], coords[3], segments, isRelative),
                            ToAbsolute(coords[4], coords[5], segments, isRelative)));
                    }
                    break;
                case 'S': // shorthand/smooth curveto
                case 's': // relative shorthand/smooth curveto
                    while (parser.TryGetFloat(out coords[0]) && parser.TryGetFloat(out coords[1]) &&
                           parser.TryGetFloat(out coords[2]) && parser.TryGetFloat(out coords[3]))
                    {
                        var lastCubicCurve = segments.Last as SvgCubicCurveSegment;

                        var controlPoint = lastCubicCurve != null
                            ? Reflect(lastCubicCurve.SecondControlPoint, segments.Last.End)
                            : segments.Last.End;

                        segments.Add(new SvgCubicCurveSegment(segments.Last.End, controlPoint,
                            ToAbsolute(coords[0], coords[1], segments, isRelative),
                            ToAbsolute(coords[2], coords[3], segments, isRelative)));
                    }
                    break;
                case 'Z': // closepath
                case 'z': // relative closepath
                    segments.Add(new SvgClosePathSegment());
                    break;
            }
        }
 public void Test_ParsingCordinates_ShouldThrowInvalidCommand()
 {
     var coordinates = CoordinateParser.Parse("12");
 }
        public void TestItReturnsInvalidOnBadData(string latitude, string longitude)
        {
            Coordinate coordinate = CoordinateParser.Parse(latitude, longitude);

            Assert.Equal(CoordinateParser.InvalidCoordinate, coordinate);
        }
        public CoordinateParserIntegrationTests()
        {
            var coordinateValidator = new CoordinateValidator();

            _sut = new CoordinateParser(coordinateValidator);
        }
 public void Test_ParsingWrongCordinates_ShouldThrowInvalidCoordinates()
 {
     var coordinates = CoordinateParser.Parse("asd qwe");
 }
 public void Test_ParsingOutsideOfGameBoardCordinates_ShouldThrowInvalidCoordinates()
 {
     var coordinates = CoordinateParser.Parse("22 20");
 }