// Copyright (c) Microsoft. All rights reserved. namespace Examples; public abstract class LearnBaseTest : BaseTest { protected List SimulatedInputText = []; protected int SimulatedInputTextIndex = 0; protected LearnBaseTest(List simulatedInputText, ITestOutputHelper output) : base(output) { SimulatedInputText = simulatedInputText; } protected LearnBaseTest(ITestOutputHelper output) : base(output) { } /// /// Simulates reading input strings from a user for the purpose of running tests. /// /// A simulate user input string, if available. Null otherwise. public string? ReadLine() { if (SimulatedInputTextIndex < SimulatedInputText.Count) { return SimulatedInputText[SimulatedInputTextIndex++]; } return null; } } public static class BaseTestExtensions { /// /// Simulates reading input strings from a user for the purpose of running tests. /// /// A simulate user input string, if available. Null otherwise. public static string? ReadLine(this BaseTest baseTest) { var learnBaseTest = baseTest as LearnBaseTest; if (learnBaseTest is not null) { return learnBaseTest.ReadLine(); } return null; } }