public void DoesntCacheSize()
        {
            var mock      = MockConsole.Create();
            var telemetry = new TelemetryConsole(mock);

            ConsoleTestHelpers.EnsurePassthroughSize(mock, telemetry);
        }
            public void Background()
            {
                var telemetry = new TelemetryConsole(MockConsole.Create());

                TestTelemetry(() => telemetry.BackgroundTelemetry, () => {
                    var _ = telemetry.Background;
                }, () => telemetry.Background = ConsoleColor.Green);
            }
            public void Y()
            {
                var telemetry = new TelemetryConsole(MockConsole.Create());

                TestTelemetry(() => telemetry.YTelemetry, () => {
                    var _ = telemetry.Y;
                }, () => telemetry.Y = 5);
            }
        public void WriteCalls()
        {
            var telemetry = new TelemetryConsole(MockConsole.Create());

            for (var i = 0; i < 200; i++)
            {
                telemetry.Write(' ');
            }

            telemetry.WriteCalls.Should().Be(200);

            for (var i = 0; i < 200; i++)
            {
                telemetry.Write("E");
            }

            telemetry.WriteCalls.Should().Be(400);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Creates a <see cref="BufferedPointConsole"/> that utilizes
        /// the multiple built-in console caching techniques properly
        /// to minimize the amount of calls made to the original console,
        /// and features two telemetry consoles so you can view the total
        /// amount of traffic going from the <see cref="BufferedPointConsole"/>
        /// all the way to the <paramref name="main"/> console/
        /// </summary>
        /// <param name="main">The console to cache en masse.</param>
        /// <param name="mainTelemetry">Telemetry console used for viewing the total calls to the <paramref name="main"/> console.</param>
        /// <param name="frontTelemetry">Front-end telemetry console used for viewing the total traffic coming from the <see cref="BufferedPointConsole"/>.</param>
        /// <returns>A <see cref="BufferedPointConsole"/> with layers of caching.</returns>
        public static BufferedPointConsole CacheEnMasse
            (Console main, out TelemetryConsole mainTelemetry, out TelemetryConsole frontTelemetry)
        {
            // same as CacheEnMasse but with telemetry

            mainTelemetry = new TelemetryConsole(main);

            var coagulator = new WriteCoagulatorConsole(mainTelemetry);

            var writeCoagulation = new FlushableWrapper(coagulator, coagulator);

            var propCache = new PropertyApplyCacheConsole(new PropertyCacheConsole(writeCoagulation));

            var propWrapper = new FlushableWrapper(propCache, writeCoagulation);

            frontTelemetry = new TelemetryConsole(propWrapper);

            var frontWrapper = new FlushableWrapper(frontTelemetry, propWrapper);

            var bufferedPointConsole = new BufferedPointConsole(frontWrapper);

            return(bufferedPointConsole);
        }