internal ConsoleGraphics(ConsoleOutputHandle consoleOutputHandle, INativeCalls api, Size size, FrameCharSets frameCharSets)
 {
     this.consoleOutputHandle = consoleOutputHandle;
     this.api           = api;
     this.size          = size;
     this.frameCharSets = frameCharSets;
     Logger.Log(DebugContext.ConsoleApi | DebugContext.Graphics, $"Initializing buffer with size {this.size}.");
     buffer = api.ReadConsoleOutput(consoleOutputHandle, new Rectangle(Point.Empty, size));
 }
Exemple #2
0
        public void ActiveScreen_CorrectBehaviour()
        {
            var api = new StubbedNativeCalls();
            var sut = new ConControls.ConsoleApi.ConsoleController(api);

            sut.ActiveScreen.Should().BeTrue();

            bool set = false;
            ConsoleOutputHandle currentHandle = api.ScreenHandle;

            api.SetActiveConsoleScreenBufferConsoleOutputHandle = SetSuccess;

            sut.ActiveScreen = true;
            set.Should().BeFalse();
            sut.ActiveScreen.Should().BeTrue();
            sut.ActiveScreen = false;
            set.Should().BeTrue();
            sut.ActiveScreen.Should().BeFalse();
            currentHandle.Should().Be(api.StdOut);
            set = false;
            sut.ActiveScreen = false;
            set.Should().BeFalse();
            sut.ActiveScreen.Should().BeFalse();

            api.SetActiveConsoleScreenBufferConsoleOutputHandle = SetFail;
            sut.ActiveScreen = true;
            set.Should().BeTrue();
            sut.ActiveScreen.Should().BeFalse();

            api.SetActiveConsoleScreenBufferConsoleOutputHandle = SetSuccess;
            sut.ActiveScreen = true;
            sut.ActiveScreen.Should().BeTrue();
            currentHandle.Should().Be(api.ScreenHandle);

            set = false;
            api.SetActiveConsoleScreenBufferConsoleOutputHandle = SetFail;
            sut.ActiveScreen = false;
            set.Should().BeTrue();
            sut.ActiveScreen.Should().BeTrue();

            bool SetFail(ConsoleOutputHandle handle)
            {
                set           = true;
                currentHandle = handle;
                return(false);
            }

            bool SetSuccess(ConsoleOutputHandle handle)
            {
                set           = true;
                currentHandle = handle;
                return(true);
            }
        }
 public IConsoleGraphics Provide(ConsoleOutputHandle consoleOutputHandle, INativeCalls api, Size size, FrameCharSets frameCharSets) =>
 new ConsoleGraphics(consoleOutputHandle, api, size, frameCharSets);