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 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 TestIoArgs() { var session = new MockTaskSession(); session.Start(); Assert.Throws <ArgumentException>(() => session.Io("Foo(\0)")); }
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 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")); }