public void TestCodePage() { var session = new MockTaskSession(); session.CodePage = "CP1252"; Assert.IsTrue(session.Start().Success); session.Close(); session.CodePage = "Junk"; Assert.IsFalse(session.Start().Success); session.CodePage = null; session.CodePageFail = true; Assert.IsFalse(session.Start().Success); }
public void TestFullHistory() { // Start a mock thread session. var session = new MockTaskSession(); var startResult = session.Start(); Assert.AreEqual(true, startResult.Success); // Make sure the start shows the initial empty command. var history = session.RecentCommands; Assert.AreEqual(1, history.Length); Assert.AreEqual("Query(LocalEncoding)", history[0].Command); // Overflow the history list. for (int i = 0; i < Session.MaxCommands; i++) { Assert.AreEqual(true, session.Io("Lines 1").Success); } history = session.RecentCommands; Assert.AreEqual("Lines 1", history[0].Command); Assert.AreEqual("Line 1", history[0].Result[0]); session.Close(); }
public void TestQuery() { var session = new MockTaskSession(); session.VerifyStart(); session.VerifyCommand(() => session.Query(QueryType.BindPluName), "Query(BindPluName)"); Assert.AreEqual(session.Query(QueryType.Cursor).Result[0], "0 0"); // Force an exception. session.ExceptionMode = true; session.AllFail = true; Assert.Throws <X3270ifCommandException>(() => session.Query(QueryType.Formatted)); session.Close(); // Exercise 1-origin. session = new MockTaskSession(new MockTaskConfig { Origin = 1 }); session.Start(); Assert.AreEqual(session.Query(QueryType.Cursor).Result[0], "1 1"); // Make sure the history contains the actual value from the emulator. Assert.AreEqual(session.RecentCommands[0].Result[0], "0 0"); session.Close(); }
public void TestIoArgs() { var session = new MockTaskSession(); session.Start(); Assert.Throws <ArgumentException>(() => session.Io("Foo(\0)")); }
public void TestTaskMockSession() { var session = new MockTaskSession(); var startResult = session.Start(); Assert.AreEqual(true, startResult.Success); // Test canned responses. var result = session.Io("Lines 1"); Assert.AreEqual(true, result.Success); Assert.AreEqual(1, result.Result.Length); Assert.AreEqual("Line 1", result.Result[0]); result = session.Io("Lines 2"); Assert.AreEqual(true, result.Success); Assert.AreEqual(2, result.Result.Length); Assert.AreEqual("Line 1", result.Result[0]); Assert.AreEqual("Line 2", result.Result[1]); result = session.Io("Fail"); Assert.AreEqual(false, result.Success); Assert.AreEqual(1, result.Result.Length); Assert.AreEqual("failed", result.Result[0]); // Test a double start. Assert.Throws <InvalidOperationException>(() => session.Start()); // Test the I/O timeout. Assert.AreEqual(true, startResult.Success); result = session.Io("Hang 100", 50); Assert.AreEqual(false, result.Success); session.Close(); // Test the EOF response. startResult = session.Start(); Assert.AreEqual(true, startResult.Success); result = session.Io("Quit"); Assert.AreEqual(false, result.Success); Assert.AreEqual(false, session.EmulatorRunning); Assert.AreEqual(false, session.LastCommand.Success); session.Close(); // Test the exception for I/O on a closed session. Assert.Throws <InvalidOperationException>(() => session.Io("Xxx")); }
public void TestStatusField() { var session = new MockTaskSession(); // Test StatusField exception when not running. Assert.Throws <InvalidOperationException>(() => session.StatusField(StatusLineField.Formatting)); var startResult = session.Start(); Assert.AreEqual(true, startResult.Success); // Test ordinary StatusField. Assert.AreEqual("F", session.StatusField(StatusLineField.Formatting)); // Test origin-based StatusField. Assert.AreEqual("0", session.StatusField(StatusLineField.CursorRow)); Assert.AreEqual("0", session.StatusField(StatusLineField.CursorColumn)); session.Close(); // Test origin-based StatusField with 1-origin. session = new MockTaskSession(new MockTaskConfig { Origin = 1 }); session.Start(); Assert.AreEqual("1", session.StatusField(StatusLineField.CursorRow)); Assert.AreEqual("1", session.StatusField(StatusLineField.CursorColumn)); // Exercise HostConnected (based on the status line). Assert.AreEqual(true, session.HostConnected); // Change that. session.Connected = false; // (Have to run a dummy command to get a new prompt and change state.) session.Io("Query()"); Assert.AreEqual(false, session.HostConnected); // Now screen-modifying commands will fail. Assert.AreEqual(false, session.Enter().Success); // Now exception mode will fire, too. session.ExceptionMode = true; Assert.Throws <X3270ifCommandException>(() => session.Enter()); // Try requiring 3270 mode instead. session.Config.ModifyFail = ModifyFailType.Require3270; Assert.Throws <X3270ifCommandException>(() => session.Enter()); // And that normally, it's fine. session.Connected = true; session.Connect("bob"); Assert.DoesNotThrow(() => session.Enter()); session.Close(); }
public void TestBrokenSession() { var session = new MockTaskSession(); session.Start(); var result = session.Io("Quit"); Assert.AreEqual(false, result.Success); Assert.AreEqual(false, session.EmulatorRunning); session.Close(); session.Start(); result = session.Io("ReplyQuit"); Assert.AreEqual(true, result.Success); Thread.Sleep(500); result = session.Io("Anything"); Assert.AreEqual(false, result.Success); Assert.AreEqual(false, session.EmulatorRunning); }
public void TestExceptionMode() { var session = new MockTaskSession(); var startResult = session.Start(); Assert.AreEqual(true, startResult.Success); session.ExceptionMode = true; Assert.Throws <X3270ifCommandException>(() => session.Io("Fail")); Assert.Throws <X3270ifCommandException>(() => session.Io("Fail()")); Assert.Throws <X3270ifCommandException>(() => session.Io("Quit")); session.Close(); }
public void TestTaskMockSessionHungStart() { var startup = new MockTaskConfig { HandshakeTimeoutMsec = 50 }; var session = new MockTaskSession(startup); session.HangMsec = 100; // Test a hung start. var startResult = session.Start(); Assert.AreEqual(false, startResult.Success); }
public void TestStartExceptionMode() { // Set the handshake timeout to 50msec. var startup = new MockTaskConfig { HandshakeTimeoutMsec = 50 }; var session = new MockTaskSession(startup); // Set the response hang time to twice that. session.HangMsec = 100; // Set exception mode for any failure, including Start. session.ExceptionMode = true; // Boom. Assert.Throws <X3270ifCommandException>(() => session.Start()); }
/// <summary> /// Start a mock session and make sure it was successful. /// </summary> /// <param name="session">Session to start.</param> public static void VerifyStart(this MockTaskSession session) { var result = session.Start(); Assert.AreEqual(true, result.Success); }