コード例 #1
0
ファイル: TestEngine.cs プロジェクト: Anubis-Black/TeamIodine
        public void TestPerformAttemptPopSuccessful()
        {
            string inputCommand = "" + Environment.NewLine + "3 3" + Environment.NewLine + "exit" + Environment.NewLine;

            StringBuilder stringBuilder = new StringBuilder();

            using (StringReader stringReader = new StringReader(inputCommand))
            {
                Console.SetIn(stringReader);

                using (StringWriter stringWriter = new StringWriter(stringBuilder))
                {
                    Console.SetOut(stringWriter);

                    IRenderer consoleRenderer = new ConsoleRenderer();

                    Engine engine = new Engine(consoleRenderer);

                    engine.Start();
                }
            }

            string gameData = stringBuilder.ToString();

            string actual = gameData.Substring(gameData.Length - 55);
            string expected = "Thank you for playing Balloons Pop! Have a great day!" + Environment.NewLine;

            Assert.AreEqual(expected, actual);
        }
コード例 #2
0
ファイル: MainClass.cs プロジェクト: nedevny/skier
        static void Main()
        {
            Console.BufferHeight = Console.WindowHeight = FieldRows;
            //Console.BufferWidth = Console.WindowWidth = FieldCols;
            Console.BackgroundColor = ConsoleColor.White;
            Console.ForegroundColor = ConsoleColor.Black;

            IRenderer renderer = new ConsoleRenderer(FieldRows, FieldCols);

            IUserController keyboard = new KeyboardControl();

            Engine someEngine = new Engine(renderer, keyboard);

            keyboard.OnLeftPressed += (sender, eventInfo) =>
            {
                someEngine.MoveSkierLeft();
            };
            keyboard.OnRightPressed += (sender, eventInfo) =>
            {
                someEngine.MoveSkierRight();
            };
            keyboard.OnDownPressed += (sender, eventInfo) =>
            {
                someEngine.MoveSkierDown();
            };

            Initialize(someEngine);

            Intro.PrintLogo();
            Intro.PrintNames();
            Intro.PrintGame();

            someEngine.Run();
        }
        public void StandardOnePlayerMinesweeperEngineTestClosedState()
        {
            AllocConsole();
            var testInputProvider = new Mock<IConsoleInputProvider>();
            testInputProvider.Setup(o => o.ReceiveInputLine()).Returns(value: "1 a");
            testInputProvider.Setup(o => o.TransformCommandToNumbersOnly("1 a")).Returns(value: "1 a");
            var testOutputRenderer = new ConsoleRenderer();
            var testScoreboard = new Mock<IScoreboard>();
            var testBoard = new Board(new EasyBoardSettings(), new List<IBoardObserver>());
            var testEngine = new StandardOnePlayerMinesweeperEngine(
                testBoard,
                testInputProvider.Object,
                testOutputRenderer,
                new CommandOperator(testBoard, testScoreboard.Object),
                testScoreboard.Object,
                new Player(name: "Gosho"));
            testEngine.Initialize(new StandardGameInitializationStrategy(new ContentFactory()));
            testEngine.Update(new Notification(message: "test", state: BoardState.Closed));

            bool completed = this.ExecuteWithTimeLimit(
                TimeSpan.FromMilliseconds(value: 200),
                () =>
                {
                    testEngine.Run();
                });
        }
コード例 #4
0
        public static void Main()
        {
            IRenderer renderer = new ConsoleRenderer();
            IInputReader inputReader = new ConsoleInputReader();

            IGameEngine engine = new GameEngine(renderer, inputReader);
            engine.Run();
        }
コード例 #5
0
        public static void Main()
        {
            IInputHandler consoleHandler = new ConsoleInputHandler();
            IRenderer consoleRenderer = new ConsoleRenderer();
            BookStoreEngine engine = new BookStoreEngine(consoleRenderer, consoleHandler);

            engine.Run();
        }
コード例 #6
0
ファイル: BattlefieldApp.cs プロジェクト: nok32/SoftUni
        /// <summary>
        /// Main method for the game
        /// </summary>
        public static void Main()
        {
            IRenderer consoleRenderer = new ConsoleRenderer();
            IInputHandler inputHandler = new ConsoleInputHandler();
            IBattlefieldGameEngine engine = new BattlefieldGameEngine(consoleRenderer, inputHandler);

            engine.Run();
        }
コード例 #7
0
ファイル: BookStoreMain.cs プロジェクト: alvelchev/SoftUni
        public static void Main()
        {
            IInputHandler inputHandler = new ConsoleInputHandler();
            var renderer = new ConsoleRenderer();
            BookStoreEngine engine = new BookStoreEngine(renderer,inputHandler);

            engine.Run();
        }
コード例 #8
0
ファイル: BookStoreMain.cs プロジェクト: krasi070/OOP
        public static void Main()
        {
            ConsoleInputHandler cih = new ConsoleInputHandler();
            ConsoleRenderer cr = new ConsoleRenderer();

            BookStoreEngine engine = new BookStoreEngine(cr, cih);

            engine.Run();
        }
コード例 #9
0
        public static void Main()
        {
            IRenderer renderer = new ConsoleRenderer();
            IInputReader reader = new ConsoleInputReader();

            SuperEngine engine = new SuperEngine(reader, renderer);

            engine.Run();
        }
コード例 #10
0
 internal static void Main()
 {
     int interval = 1; // each 1 second the clock will be rendered
     Clock clock = new Clock(interval);
     ConsoleRenderer renderer = new ConsoleRenderer();
     renderer.Subscribe(clock);
     clock.Run();
     renderer.Unsubscribe(clock);
 }
コード例 #11
0
ファイル: Tetris.cs プロジェクト: dgrigorov/TelerikAcademy-1
    static Tetris()
    {
        userInterface = new KeyboardUserInterface();
        renderer = new ConsoleRenderer(Tetris.Rows, Tetris.Cols);

        engine = new Engine(renderer, userInterface);

        engine.InitializeField(1, Tetris.FieldCols);
    }
コード例 #12
0
ファイル: GameApp.cs プロジェクト: hkostadinov/SoftUni
        public static void Main()
        {
            IRenderer renderer = new ConsoleRenderer();
            IInputHandler inputHandler = new ConsoleInputHandler();
            IPlayer player = new Player();
            SeedInitialPlayerInventory(player);

            IGameEngine engine = new GameEngine(renderer, inputHandler, player);

            engine.Run();
        }
コード例 #13
0
        public static void Main()
        {
            ICity city = new City();
            IRenderer renderer = new ConsoleRenderer();
            IWriter writer = new ConsoleWriter();
            
            ICityBuilder cityBuilder = new CityBuilder(
                city,
                renderer,
                writer);

            cityBuilder.Run();
        }
コード例 #14
0
        static void Main()
        {
            IRenderer renderer = new ConsoleRenderer(WorldRows, WorldCols);
            IUserInterface keyboard = new KeyboardInterface();

            Engine gameEngine = new Engine(renderer, keyboard);

            keyboard.OnLeftPressed += (sender, eventInfo) => gameEngine.MovePlayerRacketLeft();

            keyboard.OnRightPressed += (sender, eventInfo) => gameEngine.MovePlayerRacketRight();

            keyboard.OnActionPressed += (sender, eventInfo) => gameEngine.ShootPlayerRacket();

            Initialize(gameEngine);

            gameEngine.Run();
        }
コード例 #15
0
        static void Main()
        {
            var objectGenerator = new ObjectGenerator(WorldWidth, WorldHeight);
            var consoleRenderer = new ConsoleRenderer(WorldWidth, WorldHeight);
            var collisionHandler = new CollisionHandler(WorldWidth, WorldHeight);
            var controller = new Controller();
            controller.Pause += Controller_Pause;

            var engine = new ExtendedEngine(WorldWidth,
                WorldHeight,
                objectGenerator,
                collisionHandler,
                consoleRenderer,
                controller);

            engine.Run();
        }
コード例 #16
0
        static void Main(string[] args)
        {
            //Setup Game
            Console.WindowWidth  = GAME_WIDTH;
            Console.WindowHeight = GAME_HEIGHT;
            ConsoleRenderer renderer = new ConsoleRenderer();

            ConsolePackman        packman      = new ConsolePackman(new Position(GAME_WIDTH / 2 - ConsolePackman.CONSOLE_PACKMAN_WIDTH / 2, GAME_HEIGHT / 2 - ConsolePackman.CONSOLE_PACKMAN_HEIGHT / 2));
            List <ConsoleMonster> monstersList = new List <ConsoleMonster>();

            monstersList.Add(new ConsoleMonster(new Position(0, 0), ConsoleColor.Red));
            monstersList.Add(new ConsoleMonster(new Position(GAME_WIDTH - ConsoleMonster.CONSOLE_MONSTER_WIDTH, GAME_HEIGHT - ConsoleMonster.CONSOLE_MONSTER_HEIGHT), ConsoleColor.Cyan));
            monstersList.Add(new ConsoleMonster(new Position(0, GAME_HEIGHT - ConsoleMonster.CONSOLE_MONSTER_HEIGHT), ConsoleColor.Blue));
            monstersList.Add(new ConsoleMonster(new Position(GAME_WIDTH - ConsoleMonster.CONSOLE_MONSTER_WIDTH, 0), ConsoleColor.Magenta));

            PackmanGame game = new PackmanGame(packman);

            foreach (var monster in monstersList)
            {
                game.AddMonster(monster);
            }

            game.SetGameBoard(new GameBoard(GAME_WIDTH, GAME_HEIGHT));

            //Game Loop
            while (game.continueGame)
            {
                game.DoLoop();
                renderer.AddToCanvas(packman);
                foreach (var monster in monstersList)
                {
                    renderer.AddToCanvas(monster);
                }
                renderer.RenderAll();
                Thread.Sleep(GAME_TIMEOUT);
                renderer.ClearCanvas();
            }

            //Game Over
            Console.SetCursorPosition(GAME_WIDTH / 2, GAME_HEIGHT / 2);
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("GAME OVER");
            Console.ReadLine();
        }
コード例 #17
0
        public void TestPlayGameWithAnIllegalMove()
        {
            ConsoleRenderer renderer    = new ConsoleRenderer();
            Score           playerScore = new Score("Anonymous", 0, 5, "top.txt");
            Board           gameBoard   = new Board(3, 3);

            gameBoard.InitializeMatrix();
            gameBoard.Matrix[0, 0] = "2";
            gameBoard.Matrix[0, 1] = "1";
            Engine engine = new Engine(renderer, gameBoard, playerScore);

            StringReader input  = new StringReader("1\nexit");
            StringWriter output = new StringWriter();

            using (input)
            {
                using (output)
                {
                    Console.SetIn(input);
                    Console.SetOut(output);
                    engine.PlayGame();
                }
            }

            StringBuilder expectedOutput = new StringBuilder();

            expectedOutput.AppendLine("Welcome to the Game \"15\".");
            expectedOutput.AppendLine("Please try to arrange the numbers sequentially.");
            expectedOutput.AppendLine("Menu:");
            expectedOutput.AppendLine("top - view the top scoreboard");
            expectedOutput.AppendLine("restart - start a new game");
            expectedOutput.AppendLine("exit - quit the game");
            expectedOutput.AppendLine("  ---------- ");
            expectedOutput.AppendLine(" |  2  1  3 |");
            expectedOutput.AppendLine(" |  4  5  6 |");
            expectedOutput.AppendLine(" |  7  8    |");
            expectedOutput.AppendLine("  ---------- ");
            expectedOutput.AppendLine("Enter a number to move: ");
            expectedOutput.AppendLine("Illegal move!");
            expectedOutput.AppendLine("Enter a number to move: ");
            expectedOutput.AppendLine("Good bye!");

            Assert.AreEqual(expectedOutput.ToString(), output.ToString());
        }
コード例 #18
0
ファイル: Program.cs プロジェクト: alexyakunin/FolderStats
        /// <summary>Prints directory statistics.</summary>
        /// <param name="text">Comma-separated list of text file extensions (files to count lines for) -- e.g. "js,py,cs".</param>
        /// <param name="only">Comma-separated list of file extensions to include.</param>
        /// <param name="args">Directories to print statistics for.</param>
        static async Task Main(InvocationContext ctx, string?text, string?only, string[] args)
        {
            var dirs = args ?? new[] { "." };
            var includeExtensions = (only ?? "")
                                    .Split(",")
                                    .Where(e => !string.IsNullOrEmpty(e))
                                    .Select(e => "." + e.Trim())
                                    .ToArray();
            var textExtensions = (text ?? DefaultExtensions)
                                 .Split(",")
                                 .Where(e => !string.IsNullOrEmpty(e))
                                 .Select(e => "." + e.Trim())
                                 .ToArray();

            var cancelCts = new CancellationTokenSource();

            Console.CancelKeyPress += (_, eventArgs) => cancelCts.Cancel();
            var cancellationToken = cancelCts.Token;

            var s     = new Statistics(includeExtensions, textExtensions);
            var tasks = dirs.Select(p => Task.Run(
                                        () => s.ProcessDir(p, cancellationToken),
                                        cancellationToken));
            await Task.WhenAll(tasks);

            var output = new StackLayoutView()
            {
                new StackLayoutView()
                {
                    new ContentView($"Directories: {string.Join(", ", dirs)}"),
                    new ContentView($"Extensions:  {string.Join(" ", textExtensions)}"),
                },
                new StatisticsView("Statistics by directory:", "Directory", s.ByDirectory),
                new StatisticsView("Statistics by extension:", "Extension", s.ByExtension),
            };

            var terminal = ctx.Console as TerminalBase;
            var renderer = new ConsoleRenderer(ctx.Console, OutputMode.PlainText, true);
            var region   = new Region(0, 0, int.MaxValue, int.MaxValue);

            terminal?.HideCursor();
            output.Render(renderer, region);
            terminal?.ShowCursor();
        }
コード例 #19
0
            public int OnExecute(CommandLineApplication app, IConsole console)
            {
                var networkSettings = SettingsService.Instance.GetNetwork();
                var credentials     = networkSettings.Credentials;

                var doc = new Document(
                    new Grid
                {
                    Stroke  = LineThickness.Single,
                    Columns =
                    {
                        new Column {
                            Width = GridLength.Star(1), MinWidth = 20
                        },
                        new Column {
                            Width = GridLength.Auto
                        },
                        new Column {
                            Width = GridLength.Auto
                        },
                        new Column {
                            Width = GridLength.Auto
                        },
                    },
                    Children =
                    {
                        UIHelper.Header("URL"),
                        UIHelper.Header("Auth. Type"),
                        UIHelper.Header("Domain"),
                        UIHelper.Header("Username"),
                        credentials.Select(c => new[]
                        {
                            new Cell(c.Url.AbsoluteUri),
                            new Cell(c.AuthType),
                            new Cell(c.Domain),
                            new Cell(c.Username)
                        })
                    }
                }
                    ).SetColors(ColorScheme.Current.Normal);

                ConsoleRenderer.RenderDocument(doc);
                return(ExitCodes.Success);
            }
コード例 #20
0
        private void EnterBattle(ICharacter currentEnemy)
        {
            ConsoleRenderer.WriteLine(
                "An enemy {0} is approaching. Prepare for battle!",
                currentEnemy.GetType().Name);
            while (true)
            {
                this.Engine.Player.Attack(currentEnemy);
                ConsoleRenderer.WriteLine("You smash the {0} for {1} damage!",
                                          currentEnemy.GetType().Name, this.Engine.Player.Damage);

                if (currentEnemy.Health <= 0)
                {
                    ConsoleRenderer.WriteLine("Enemy killed!");
                    ConsoleRenderer.WriteLine("Health Remaining: {0}", this.Engine.Player.Health);
                    this.Engine.RemoveEnemy(currentEnemy);
                    return;
                }

                currentEnemy.Attack(this.Engine.Player);
                ConsoleRenderer.WriteLine("The {0} hits you for {1} damage!",
                                          currentEnemy.GetType().Name, currentEnemy.Damage);

                if (this.Engine.Player.Health < 150 && this.Engine.Player.Inventory.BackPack.SlotList.Any(x => x.GameItem is HealthPotion ||
                                                                                                          x.GameItem is HealthBonusPotion))
                {
                    try
                    {
                        this.Engine.Player.SelfHeal();
                    }
                    catch (NoHealthPotionsException ex)
                    {
                        ConsoleRenderer.WriteLine(ex.Message);
                    }
                }

                if (this.Engine.Player.Health <= 0)
                {
                    this.Engine.IsRunning = false;
                    GameStateScreens.ShowGameOverScreen();
                    return;
                }
            }
        }
コード例 #21
0
        public static async Task Handler(InvocationContext invocationContext, Uri fhirServer)
        {
            var region = new Region(
                0,
                0,
                Console.WindowWidth,
                Console.WindowHeight,
                true);

            var httpClient = new HttpClient
            {
                BaseAddress = fhirServer,
            };

            var jsonResult = await httpClient.GetStringAsync(new Uri("/_schema/versions"));

            List <JToken> resultsJson = JArray.Parse(jsonResult).ToList();

            var tableView = new TableView <JToken>
            {
                Items = resultsJson,
            };

            tableView.AddColumn(
                cellValue: f => f["id"],
                header: new ContentView("Version"));

            tableView.AddColumn(
                cellValue: f => f["script"],
                header: new ContentView("Script"));

            var consoleRenderer = new ConsoleRenderer(
                invocationContext.Console,
                mode: invocationContext.BindingContext.OutputMode(),
                resetAfterRender: true);

            var screen = new ScreenView(renderer: consoleRenderer)
            {
                Child = tableView
            };

            screen.Render(region);
        }
コード例 #22
0
            public int OnExecute(CommandLineApplication app, IConsole console)
            {
                var net = SettingsService.Instance.GetNetwork();

                bool hasChanges = false;

                if (UseDefaultCredentials.HasValue)
                {
                    net.UseDefaultCredentials = UseDefaultCredentials.Value;
                    hasChanges = true;
                }

                if (IgnoreCertificateErrors.HasValue)
                {
                    net.IgnoreCertificateErrors = IgnoreCertificateErrors.Value;
                    hasChanges = true;
                }

                if (hasChanges)
                {
                    SettingsService.Instance.Save(net);
                    return(ExitCodes.Success);
                }

                var doc = new Document(
                    new Grid
                {
                    Stroke  = UIHelper.NoneStroke,
                    Columns =
                    {
                        UIHelper.FieldsColumns
                    },
                    Children =
                    {
                        UIHelper.Row("Use default credentials",   net.UseDefaultCredentials),
                        UIHelper.Row("Ignore certificate errors", net.IgnoreCertificateErrors)
                    }
                }
                    ).SetColors(ColorScheme.Current.Normal);

                ConsoleRenderer.RenderDocument(doc);
                return(ExitCodes.Success);
            }
コード例 #23
0
        public void Timeline_allows_replay_of_content_rendering_and_cursor_positions(OutputMode outputMode)
        {
            var terminal = (TestTerminal)GetTerminal();

            var renderer = new ConsoleRenderer(terminal, outputMode);

            var region = new Region(1, 3, 11, 2);

            renderer.RenderToRegion("first line\nsecond line", region);

            terminal.Events
            .Where(e => !(e is TestTerminal.AnsiControlCodeWritten))
            .Should()
            .BeEquivalentSequenceTo(
                new TestTerminal.CursorPositionChanged(new Point(1, 3)),
                new TestTerminal.ContentWritten("first line "),
                new TestTerminal.CursorPositionChanged(new Point(1, 4)),
                new TestTerminal.ContentWritten("second line"));
        }
コード例 #24
0
        public override Size Measure(ConsoleRenderer renderer, Size maxSize)
        {
            if (renderer == null)
            {
                throw new ArgumentNullException(nameof(renderer));
            }

            if (maxSize == null)
            {
                throw new ArgumentNullException(nameof(maxSize));
            }

            if (Span == null)
            {
                return(new Size(0, 0));
            }

            return(ConsoleRenderer.MeasureSpan(Span, maxSize));
        }
コード例 #25
0
        public void ConsoleView_keeps_track_of_position_so_that_multiple_WriteLine_statements_do_not_overwrite_the_target_region(
            OutputMode outputMode
            )
        {
            var renderer = new ConsoleRenderer(_terminal, outputMode);

            var view = new StringsView(new[] { "1", "2", "3" });

            view.Render(renderer, new Region(3, 5, 1, 3));

            _terminal
            .RenderOperations()
            .Should()
            .BeEquivalentSequenceTo(
                new TextRendered("1", new Point(3, 5)),
                new TextRendered("2", new Point(3, 6)),
                new TextRendered("3", new Point(3, 7))
                );
        }
コード例 #26
0
        private void RenderHorizontal(Region region, ConsoleRenderer renderer)
        {
            var left  = region.Left;
            var top   = region.Top;
            var width = region.Width;

            foreach (var child in Children)
            {
                if (width <= 0)
                {
                    break;
                }
                var size = child.Measure(renderer, new Size(width, region.Height));
                var r    = new Region(left, top, width, size.Height);
                child.Render(renderer, r);
                left  += size.Width;
                width -= size.Width;
            }
        }
コード例 #27
0
        public void When_a_newline_is_written_by_a_ConsoleRenderer_then_a_cursor_position_is_recorded(
            OutputMode outputMode,
            string threeLinesOfText)
        {
            var terminal = (TestTerminal)GetTerminal();

            var renderer = new ConsoleRenderer(terminal, outputMode);

            renderer.RenderToRegion(threeLinesOfText, new Region(2, 5, 13, 3));

            terminal.Events
            .OfType <TestTerminal.CursorPositionChanged>()
            .Select(e => e.Position)
            .Should()
            .BeEquivalentSequenceTo(
                new Point(2, 5),
                new Point(2, 6),
                new Point(2, 7));
        }
コード例 #28
0
        public void NullArguments()
        {
            var type         = GetType();
            var assembly     = type.Assembly;
            var stream       = Stream.Null;
            var resourceName = "";
            var dataContext  = new object();
            var document     = new Document();
            var target       = new TextRenderTarget();
            var buffer       = new ConsoleBuffer(80);
            var renderRect   = Rect.Empty;

            new Action(() => ConsoleRenderer.ReadElementFromStream <Br>(null, dataContext))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(stream));
            new Action(() => ConsoleRenderer.ReadElementFromResource <Br>((Assembly)null, resourceName, dataContext))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(assembly));
            new Action(() => ConsoleRenderer.ReadElementFromResource <Br>(assembly, null, dataContext))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(resourceName));
            new Action(() => ConsoleRenderer.ReadElementFromResource <Br>((Type)null, resourceName, dataContext))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(type));
            new Action(() => ConsoleRenderer.ReadElementFromResource <Br>(type, null, dataContext))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(resourceName));
            new Action(() => ConsoleRenderer.ReadDocumentFromStream(null, dataContext))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(stream));
            new Action(() => ConsoleRenderer.ReadDocumentFromResource((Assembly)null, resourceName, dataContext))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(assembly));
            new Action(() => ConsoleRenderer.ReadDocumentFromResource(assembly, null, dataContext))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(resourceName));
            new Action(() => ConsoleRenderer.ReadDocumentFromResource((Type)null, resourceName, dataContext))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(type));
            new Action(() => ConsoleRenderer.ReadDocumentFromResource(type, null, dataContext))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(resourceName));
            new Action(() => ConsoleRenderer.RenderDocument(null))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(document));
            new Action(() => ConsoleRenderer.RenderDocumentToBuffer(null, buffer, renderRect))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(document));
            new Action(() => ConsoleRenderer.RenderDocumentToBuffer(document, null, renderRect))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(buffer));
            new Action(() => ConsoleRenderer.RenderDocumentToText(null, target))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(document));
            new Action(() => ConsoleRenderer.RenderDocumentToText(document, null))
            .ShouldThrow <ArgumentNullException>().Which.ParamName.Should().Be(nameof(target));
        }
コード例 #29
0
        /// <summary>
        /// Runs the command line application with specified arguments.
        /// </summary>
        /// <param name="args">The arguments.</param>
        /// <returns>The exit code from the executed command.</returns>
        public async Task <int> RunAsync(IEnumerable <string> args)
        {
            try
            {
                if (!_executed)
                {
                    // Add built-in (hidden) commands.
                    _configurator.AddBranch(Constants.Commands.Branch, cli =>
                    {
                        cli.HideBranch();
                        cli.AddCommand <VersionCommand>(Constants.Commands.Version);
                        cli.AddCommand <XmlDocCommand>(Constants.Commands.XmlDoc);
                    });
                }

                _executed = true;

                return(await _executor
                       .Execute(_configurator, args)
                       .ConfigureAwait(false));
            }
            catch (Exception ex) when(!_configurator.Settings.PropagateExceptions)
            {
                // Render the exception.
                var pretty = GetRenderableErrorMessage(ex);

                if (pretty != null)
                {
                    ConsoleRenderer.Render(pretty, _configurator.Settings.Console);
                }

                // Should we always propagate when debugging?
                if (Debugger.IsAttached &&
                    ex is CommandAppException appException &&
                    appException.AlwaysPropagateWhenDebugging)
                {
                    throw;
                }

                return(-1);
            }
        }
コード例 #30
0
        public void Star_grid_lays_out_in_even_grid(OutputMode outputMode)
        {
            var grid = new GridView();

            grid.SetColumns(ColumnDefinition.Star(1), ColumnDefinition.Star(1));
            grid.SetRows(RowDefinition.Star(1), RowDefinition.Star(1));
            grid.SetChild(new ContentView("The quick"), 0, 0);
            grid.SetChild(new ContentView("brown fox"), 1, 0);
            grid.SetChild(new ContentView("jumped"), 0, 1);
            grid.SetChild(new ContentView("over"), 1, 1);

            var terminal = new TestTerminal();
            var renderer = new ConsoleRenderer(terminal, outputMode);

            grid.Render(renderer, new Region(0, 0, 12, 4));

            terminal.Events.Should().BeEquivalentSequenceTo(
                new TestTerminal.CursorPositionChanged(new Point(0, 0)),
                new TestTerminal.ContentWritten("The  "),
                new TestTerminal.CursorPositionChanged(new Point(0, 1)),
                new TestTerminal.ContentWritten("quick"),
                new TestTerminal.CursorPositionChanged(new Point(5, 0)),
                new TestTerminal.ContentWritten("  "),
                new TestTerminal.CursorPositionChanged(new Point(5, 1)),
                new TestTerminal.ContentWritten("  "),
                new TestTerminal.CursorPositionChanged(new Point(7, 0)),
                new TestTerminal.ContentWritten("brown"),
                new TestTerminal.CursorPositionChanged(new Point(7, 1)),
                new TestTerminal.ContentWritten("fox  "),
                new TestTerminal.CursorPositionChanged(new Point(0, 2)),
                new TestTerminal.ContentWritten("jumpe"),
                new TestTerminal.CursorPositionChanged(new Point(0, 3)),
                new TestTerminal.ContentWritten("     "),
                new TestTerminal.CursorPositionChanged(new Point(5, 2)),
                new TestTerminal.ContentWritten("  "),
                new TestTerminal.CursorPositionChanged(new Point(5, 3)),
                new TestTerminal.ContentWritten("  "),
                new TestTerminal.CursorPositionChanged(new Point(7, 2)),
                new TestTerminal.ContentWritten("over "),
                new TestTerminal.CursorPositionChanged(new Point(7, 3)),
                new TestTerminal.ContentWritten("     "));
        }
コード例 #31
0
        public static void DrawMainTitle()
        {
            //var title = new string[]
            //{
            //    "  /$$$$$$                                          /$$                 /$$$$$$$           /$$                          ",
            //    " /$$__ÖÖ$$                                        | $$                | $$__  $$         | $$                          ",
            //    "|Ö$$  \\__/  /$$$$$$  /$$$$$$$   /$$$$$$$  /$$$$$$ | $$  /$$$$$$       | $$  \\ $$ /$$$$$$ | $$   /$$  /$$$$$$   /$$$$$$ ",
            //    "|Ö$$       /$$ÖÖÖÖ$$|Ö$$__ÖÖ$$ /$$_____/ /$$__  $$| $$ /$$__  $$      | $$$$$$$//$$__  $$| $$  /$$/ /$$__  $$ /$$__  $$",
            //    "|Ö$$      |Ö$$  \\Ö$$|Ö$$  \\Ö$$|ÖÖ$$$$$$ | $$  \\ $$| $$| $$$$$$$$      | $$____/| $$  \\ $$| $$$$$$/ | $$$$$$$$| $$  \\__/",
            //    "|Ö$$    $$|Ö$$  |Ö$$|Ö$$  |Ö$$ \\____ÖÖ$$| $$  | $$| $$| $$_____/      | $$     | $$  | $$| $$_  $$ | $$_____/| $$      ",
            //    "|ÖÖ$$$$$$/|ÖÖ$$$$$$/|Ö$$  |Ö$$ /$$$$$$$/|  $$$$$$/| $$|  $$$$$$$      | $$     |  $$$$$$/| $$ \\  $$|  $$$$$$$| $$      ",
            //    " \\______/  \\______/ |__/  |__/|_______/  \\______/ |__/ \\_______/      |__/      \\______/ |__/  \\__/ \\_______/|__/      ",
            //};
            var title = new string[]
            {
                "  /$$$$$$                                          /$$                 /$$$$$$$           /$$                          ",
                " /$$__ÖÖ$$                                        |Ö$$                |Ö$$__ÖÖ$$         |Ö$$                          ",
                "|Ö$$  \\__/  /$$$$$$  /$$$$$$$   /$$$$$$$  /$$$$$$ |Ö$$  /$$$$$$       |Ö$$  \\Ö$$ /$$$$$$ |Ö$$   /$$  /$$$$$$   /$$$$$$ ",
                "|Ö$$       /$$ÖÖÖÖ$$|Ö$$__ÖÖ$$ /$$_____/ /$$__ÖÖ$$|Ö$$ /$$__ÖÖ$$      |Ö$$$$$$$//$$__ÖÖ$$|Ö$$  /$$/ /$$__ÖÖ$$ /$$__ÖÖ$$",
                "|Ö$$      |Ö$$  \\Ö$$|Ö$$  \\Ö$$|ÖÖ$$$$$$ |Ö$$  \\Ö$$|Ö$$|Ö$$$$$$$$      |Ö$$____/|Ö$$  \\Ö$$|Ö$$$$$$/ |Ö$$$$$$$$|Ö$$  \\__/",
                "|Ö$$    $$|Ö$$  |Ö$$|Ö$$  |Ö$$ \\____ÖÖ$$|Ö$$  |Ö$$|Ö$$|Ö$$_____/      |Ö$$     |Ö$$  |Ö$$|Ö$$_ÖÖ$$ |Ö$$_____/|Ö$$      ",
                "|ÖÖ$$$$$$/|ÖÖ$$$$$$/|Ö$$  |Ö$$ /$$$$$$$/|ÖÖ$$$$$$/|Ö$$|ÖÖ$$$$$$$      |Ö$$     |ÖÖ$$$$$$/|Ö$$ \\ÖÖ$$|Ö $$$$$$$|Ö$$      ",
                " \\______/  \\______/ |__/  |__/|_______/  \\______/ |__/ \\_______/      |__/      \\______/ |__/  \\__/ \\_______/|__/      ",
            };

            var(windowWidth, windowHeight) = ConsoleRenderer.GetConsoleSize();
            //var sw = Stopwatch.StartNew();
            //ConsoleRenderer.Draw(title, new DrawArgs(
            //    windowWidth / 2 - title[0].Length / 2,
            //    windowHeight / 4 - title.Length / 2,
            //    CharAttribute.ForegroundGreen,
            //    true
            //));
            //sw.Stop();
            //Debug.WriteLine(sw.ElapsedMilliseconds);
            //ConsoleRenderer.DrawStrings(
            //    title,
            //    windowWidth / 2 - title[0].Length / 2,
            //    windowHeight / 4 - title.Length / 2,
            //    CharAttribute.ForegroundGreen
            //);
        }
コード例 #32
0
        public void RenderTest()
        {
            Labyrinth lab = new Labyrinth(4);

            char[,] testMatrix = new char[, ] {
                { '-', 'X', '-', 'X' },
                { '-', '-', '-', 'X' },
                { 'X', 'X', '-', '-' },
                { 'X', 'X', '-', '-' }
            };

            lab.TestMatrix(testMatrix);


            ConsoleRenderer renderer = new ConsoleRenderer();
            var             actual   = renderer.Render(lab);
            var             expected = " - X - X\r\n - - - X\r\n X X - -\r\n X X - -\r\n";

            Assert.AreEqual(expected, actual);
        }
コード例 #33
0
        public void Horizontal_stack_displays_content_stacked_on_next_to_each_other()
        {
            var stackLayout = new StackLayoutView(Orientation.Horizontal);
            var child1      = new ContentView("The quick");
            var child2      = new ContentView("brown fox");

            stackLayout.Add(child1);
            stackLayout.Add(child2);

            var console  = new TestConsole();
            var renderer = new ConsoleRenderer(console);

            stackLayout.Render(renderer, new Region(0, 0, 18, 1));

            console.Events.Should().BeEquivalentSequenceTo(
                new TestConsole.CursorPositionChanged(new Point(0, 0)),
                new TestConsole.ContentWritten("The quick         "),
                new TestConsole.CursorPositionChanged(new Point(9, 0)),
                new TestConsole.ContentWritten("brown fox"));
        }
コード例 #34
0
            public override void Render(ConsoleRenderer renderer, Region region)
            {
                var p    = Math.Clamp(Progress, 0, 1.0);
                var done = (int)(p * 100);

                const int textWidth  = 6;
                var       text       = p.ToString("P");
                const int aHalf      = 47;
                var       firstFill  = Math.Clamp(done, 0, aHalf);
                var       secondFill = Math.Clamp(done - (aHalf + textWidth), 0, aHalf);

                var result = new ContainerSpan(
                    Title.StyleUnderline(),
                    ": ".AsTextSpan(),
                    new ContainerSpan(
                        new string('=', firstFill).StyleColor(ForegroundColorSpan.LightGreen()),
                        new string('-', aHalf - firstFill).StyleColor(ForegroundColorSpan.LightGray())
                        ),
                    done switch
                {
コード例 #35
0
        /// <summary>
        ///     The main.
        /// </summary>
        public static void Main()
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
            var mapper     = new DataMapper();
            var categories = mapper.GetAllCategories();
            var products   = mapper.GetAllProducts();
            var orders     = mapper.GetAllOrders();

            // Names of the 5 most expensive products
            ConsoleRenderer.PrintMostExpensiveProducts(products, 5);

            // Number of products in each category
            ConsoleRenderer.PrintNumberOfProductsPerCategory(products, categories);

            // The 5 top products (by order quantity)
            ConsoleRenderer.PrintMostOrderedProducts(orders, products, 5);

            // The most profitable category
            ConsoleRenderer.PrintMostProfitableCategory(orders, products, categories);
        }
コード例 #36
0
        public void Horizontal_stack_clips_content_when_region_is_not_wide_enough()
        {
            var stackLayout = new StackLayoutView(Orientation.Horizontal);
            var child1      = new ContentView("The quick");
            var child2      = new ContentView("brown fox");

            stackLayout.Add(child1);
            stackLayout.Add(child2);

            var console  = new TestConsole();
            var renderer = new ConsoleRenderer(console);

            stackLayout.Render(renderer, new Region(0, 0, 16, 1));

            console.Events.Should().BeEquivalentSequenceTo(
                new TestConsole.CursorPositionChanged(new Point(0, 0)),
                new TestConsole.ContentWritten("The quick       "),
                new TestConsole.CursorPositionChanged(new Point(9, 0)),
                new TestConsole.ContentWritten("brown  "));
        }
コード例 #37
0
        public EgretConsole(IConsole providedConsole, ILogger <EgretConsole> providedLogger)
        {
            logger = providedLogger;

            console = providedConsole;

            terminal   = console.GetTerminal(preferVirtualTerminal: true, OutputMode.Auto);
            OutputMode = (terminal ?? console).DetectOutputMode();
            formatter  = new TextSpanFormatter();
            renderer   = new ConsoleRenderer(terminal ?? console, resetAfterRender: false);

            formatter.AddFormatter <FileInfo>((f) => f.FullName.StyleValue());
            formatter.AddFormatter <double>((x) => x.ToString("N2").StyleNumber());
            formatter.AddFormatter <int>((x) => x.ToString().StyleNumber());

            var queue = new BlockingCollection <string>();

            // created our own little async event loop so we can run things sequentially
            context = new AsyncContextThread();
        }
コード例 #38
0
        public void ScoreBoard_TestOrderingAddedScoresAndProperRendering()
        {
            PlayerScore  firstPlayerScore  = new PlayerScore();
            PlayerScore  secondPlayerScore = new PlayerScore();
            StringWriter writer            = new StringWriter();

            Console.SetOut(writer);
            ConsoleRenderer renderer = new ConsoleRenderer();

            firstPlayerScore.Moves  = 10;
            firstPlayerScore.Name   = "Ivan";
            secondPlayerScore.Moves = 9;
            secondPlayerScore.Name  = "Gosho";
            this.scoreBoard.AddScore(secondPlayerScore);
            this.scoreBoard.AddScore(firstPlayerScore);
            this.scoreBoard.Render(renderer);
            string expected = string.Format("Top 5: \n{0}. {1} ---> {2} moves \n{3}. {4} ---> {5} moves \n", secondPlayerScore.Position, secondPlayerScore.Name, secondPlayerScore.Moves, firstPlayerScore.Position, firstPlayerScore.Name, firstPlayerScore.Moves);

            Assert.AreEqual(expected, writer.ToString());
        }
コード例 #39
0
        static void Main(string[] args)
        {
            TransponderReceiverFactory transponderReceiverFactory = new TransponderReceiverFactory();
            ITransponderReceiver       transponderReceiver        = TransponderReceiverFactory.CreateTransponderDataReceiver();
            //IDataFormat dataFormat = new DataFormat(transponderReceiver);
            IDataFormat dataformat = new DataFormat();
            ITransponderReceiverClient TransponderReceiverClient = new TransponderReceiverClient(transponderReceiver, dataformat);
            IConditionLogger           conditionLogger           = new ConditionLogger();
            ITrackHandler trackHandler = new TrackHandler(TransponderReceiverClient, conditionLogger);


            ConsoleRenderer renderer = new ConsoleRenderer(trackHandler);



            for (;;)
            {
                //Thread.Sleep(1000);
            }
        }
コード例 #40
0
        public void When_in_NonAnsi_mode_text_following_newline_within_an_unindented_region_appears_at_the_correct_left_position()
        {
            var writer = new ConsoleRenderer(
                _terminal,
                OutputMode.NonAnsi);

            var region = new Region(0, 0, 5, 2);

            writer.RenderToRegion($"{NewLine}*", region);

            _terminal.RenderOperations()
            .Select(l => l.Text)
            .Should()
            .BeEquivalentTo(
                new[] {
                $"     ",
                $"*    "
            },
                options => options.WithStrictOrdering());
        }
コード例 #41
0
        public static void Main(string[] args)
        {
            IInputReader reader = new ConsoleInputReader ();
            IRenderer renderer = new ConsoleRenderer ();

            Engine engine = new Engine (reader, renderer);

            engine.Run ();

            //			Scooter scooter = new Scooter ("Scooter 1", new Position (0));
            //			Console.WriteLine (scooter);
            //
            //			Catamaran catamaran = new Catamaran ("Catamaran 1", new Position (8));
            //			Console.WriteLine (catamaran);
            //
            //			BattleCruiser battleCruiser = new BattleCruiser ("BattleCruiser", new Position (16));
            //			Console.WriteLine (battleCruiser);
            //
            //			Console.WriteLine ("Game begins ...");
        }
コード例 #42
0
        public void Vertical_stack_displays_content_stacked_on_top_of_each_other()
        {
            var stackLayout = new StackLayoutView();
            var child1      = new ContentView("The quick");
            var child2      = new ContentView("brown fox");

            stackLayout.Add(child1);
            stackLayout.Add(child2);

            var terminal = new TestTerminal();
            var renderer = new ConsoleRenderer(terminal);

            stackLayout.Render(renderer, new Region(0, 0, 10, 2));

            terminal.Events.Should().BeEquivalentSequenceTo(
                new TestTerminal.CursorPositionChanged(new Point(0, 0)),
                new TestTerminal.ContentWritten("The quick"),
                new TestTerminal.CursorPositionChanged(new Point(0, 1)),
                new TestTerminal.ContentWritten("brown fox"));
        }
コード例 #43
0
        static void Main()
        {
            //Console.BufferHeight = Console.WindowHeight = WorldRows;
            //Console.BufferWidth = Console.WindowWidth = WorldCols;
            //WindowsSettings.Initialize();
            StartScreen.Initialize();
            ConsoleKeyInfo pressedKey = Console.ReadKey(true);

            if (pressedKey.Key == ConsoleKey.Enter)
            {
                Console.Clear();

                //WindowsSettings.Initialize();
                IRenderer  renderer   = new ConsoleRenderer(WorldRows, WorldCols);
                IUserInput keyboard   = new KeyboardInput();
                Engine     gameEngine = new Engine(renderer, keyboard);
                Initialize(gameEngine);
                gameEngine.Run();
            }
        }
コード例 #44
0
        public static void Main(string[] args)
        {
            IInputReader reader   = new ConsoleInputReader();
            IRenderer    renderer = new ConsoleRenderer();

            Engine engine = new Engine(reader, renderer);

            engine.Run();

//			Scooter scooter = new Scooter ("Scooter 1", new Position (0));
//			Console.WriteLine (scooter);
//
//			Catamaran catamaran = new Catamaran ("Catamaran 1", new Position (8));
//			Console.WriteLine (catamaran);
//
//			BattleCruiser battleCruiser = new BattleCruiser ("BattleCruiser", new Position (16));
//			Console.WriteLine (battleCruiser);
//
//			Console.WriteLine ("Game begins ...");
        }
コード例 #45
0
        private void RenderVertical(Region region, ConsoleRenderer renderer)
        {
            var left   = region.Left;
            var top    = region.Top;
            var height = region.Height;

            foreach (var child in Children)
            {
                if (height <= 0)
                {
                    break;
                }
                var size         = child.Measure(renderer, new Size(region.Width, height));
                int renderHeight = Math.Min(height, size.Height);
                var r            = new Region(left, top, size.Width, renderHeight);
                child.Render(renderer, r);
                top    += size.Height;
                height -= renderHeight;
            }
        }
コード例 #46
0
        public void Render_Convert_Help()
        {
            // arrange
            var builder = DefaultBuilder.CreateDefaultBuilder();
            var sut     = new ParserHelpTemplate(builder.Context, "convert");

            // act
            var doc  = sut.Create();
            var text = ConsoleRenderer.RenderDocumentToText(doc, new TextRenderTarget(),
                                                            new Rect(0, 0, 80, Size.Infinity));

            // assert
            text.Should().Be(@"                            __                                                  
 _______  ___ _  _____ ____/ /_                                                 
/ __/ _ \/ _ \ |/ / -_) __/ __/                                                 
\__/\___/_//_/___/\__/_/  \__/                                                  
                                                                                
                                                                                
convert - Convert files to another format                                       
────────────────────────────────────────────────────────────────────────────────
util convert [-h, --help][--version][-f, --format:png][file1..fileN]            
┌───────────┬──────────────────────────────────────────────────────────────────┐
│Sub Command│Description                                                       │
└───────────┴──────────────────────────────────────────────────────────────────┘
┌──────────────────┬───┬───────┬───────────────────────────────────────────────┐
│Parameter         │Req│Default│Description                                    │
├──────────────────┼───┼───────┼───────────────────────────────────────────────┤
│[-h, --help]      │   │false  │Get help on commands                           │
├──────────────────┼───┼───────┼───────────────────────────────────────────────┤
│[--version]       │   │false  │Display the current version                    │
├──────────────────┼───┼───────┼───────────────────────────────────────────────┤
│[-f, --format:png]│ ✓ │       │What format to conver the files to             │
├──────────────────┼───┼───────┼───────────────────────────────────────────────┤
│[file1..fileN]    │ ✓ │       │Input files to convert                         │
└──────────────────┴───┴───────┴───────────────────────────────────────────────┘
Examples:                                                                       
Image files - Convert some images to png                                        
util convert -f png file0.jpg file1.gif                                         
Converted (2) files to .png                                                     
");
        }
コード例 #47
0
        public void TestRenderObjects()
        {
            IRenderer consoleRenderer = new ConsoleRenderer();

            StringBuilder stringBuilder = new StringBuilder();

            using (StringWriter stringWriter = new StringWriter(stringBuilder))
            {
                Console.SetOut(stringWriter);

                IList<IRenderable> renderableObjects = new List<IRenderable>
                {
                    new Balloon(new Position(30, 8), '1', Colour.Red),
                    new Balloon(new Position(32, 8), '3', Colour.Blue),
                    new Balloon(new Position(34, 8), '3', Colour.Blue),
                    new Balloon(new Position(30, 10), '2', Colour.Green),
                    new Balloon(new Position(32, 10), '1', Colour.Red),
                    new Balloon(new Position(34, 10), '2', Colour.Green),
                    new Balloon(new Position(30, 12), '4', Colour.Yellow),
                    new Balloon(new Position(32, 12), '4', Colour.Yellow),
                    new Balloon(new Position(34, 12), '4', Colour.Yellow),
                    new ImmovableObject(new Position(27, 8), '0'),
                    new ImmovableObject(new Position(27, 10), '1'),
                    new ImmovableObject(new Position(27, 12), '2'),
                    new ImmovableObject(new Position(30, 6), '0'),
                    new ImmovableObject(new Position(32, 6), '1'),
                    new ImmovableObject(new Position(34, 6), '2'),
                };

                consoleRenderer.RenderObjects(renderableObjects);

                string actual = stringBuilder.ToString();
                string expected = "133212444012012";

                Assert.AreEqual(expected, actual);
            }
        }
コード例 #48
0
ファイル: Program.cs プロジェクト: AsenTahchiyski/SoftUni
 private static void Main()
 {
     IRenderer renderer = new ConsoleRenderer();
     Engine engine = new Engine(renderer);
     engine.Run();
 }
コード例 #49
0
ファイル: Program.cs プロジェクト: AsenTahchiyski/SoftUni
 public static void Main()
 {
     IRenderer renderer = new ConsoleRenderer();
     var engine = new Engine(renderer);
     engine.Run();
 }
コード例 #50
0
 static void Main()
 {
     var renderer = new ConsoleRenderer();
     Engine engine = new Engine(renderer, 60, 20);
     engine.Run();
 }