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); }
/// <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); }