public void EngineAvailable_ReturnsTrue()
		{
			using (var e = new IBusEnvironmentForTest(true, true))
			{
				Assert.IsTrue(IBusAdaptor.EngineAvailable);
			}
		}
		public void EngineAvailable_IBusNotRunning_ReturnsFalse()
		{
			using (var e = new IBusEnvironmentForTest(true, false))
			{
				Assert.IsFalse(IBusAdaptor.EngineAvailable);
			}
		}
		public void ActivateKeyBoard_IBusDoesNotHaveKeyboard_Throws()
		{
			using (var e = new IBusEnvironmentForTest(true, true))
			{
				Assert.Throws<ArgumentOutOfRangeException>(
					() => IBusAdaptor.ActivateKeyboard("Nonexistent Keyboard")
					);
			}
		}
		public void ActivateKeyBoard_IBusHasKeyboard_GetCurrentKeyboardReturnsActivatedKeyboard()
		{
			using (var e = new IBusEnvironmentForTest(true, true))
			{
				IBusAdaptor.ActivateKeyboard(IBusEnvironmentForTest.OtherKeyboard);
				string actual = IBusAdaptor.GetActiveKeyboard();
				Assert.AreEqual(IBusEnvironmentForTest.OtherKeyboard, actual);
			}
		}
		public void ActivateKeyBoard_IBusNotRunning_ThrowsProblemNotificationSentToUser()
		{
			using (var e = new IBusEnvironmentForTest(true, false))
			{
				Assert.Throws<ErrorReport.ProblemNotificationSentToUserException>(
					() => IBusAdaptor.ActivateKeyboard(IBusEnvironmentForTest.OtherKeyboard)
				);
			}
		}
		public void Deactivate_IBusNotRunning_DoesNotThrow()
		{
			using (var e = new IBusEnvironmentForTest(true, false))
			{
				Assert.DoesNotThrow(
					() => IBusAdaptor.Deactivate()
				);
			}
		}
		public void KeyboardDescriptors_IBusNotRunning_DoesNotThrow()
		{
			using (var e = new IBusEnvironmentForTest(true, false))
			{
				Assert.DoesNotThrow(
					() => { var keyboards = IBusAdaptor.KeyboardDescriptors; }
				);
			}
		}
		public void OpenConnection_IBusNotRunning_ThrowsProblemNotificationSentToUser()
		{
			using (var e = new IBusEnvironmentForTest(true, false))
			{
				Assert.Throws<ErrorReport.ProblemNotificationSentToUserException>(
					() => IBusAdaptor.OpenConnection()
				);
			}
		}
		// This will fail because Deactivate does nothing
		public void Deactivate_SwitchesBackToDefaultKeyboard()
		{
			using (var e = new IBusEnvironmentForTest(true, true))
			{
				IBusAdaptor.ActivateKeyboard(IBusEnvironmentForTest.OtherKeyboard);
				IBusAdaptor.Deactivate();
				string actual = IBusAdaptor.GetActiveKeyboard();
				Assert.AreEqual(IBusEnvironmentForTest.DefaultKeyboard, actual);
			}
		}
		public void KeyboardDescriptors_ListAllKeyboards()
		{
			using (var e = new IBusEnvironmentForTest(true, true))
			{
				Console.WriteLine("ListAllKeyboards");
				foreach (var keyboard in IBusAdaptor.KeyboardDescriptors)
				{
					Console.WriteLine("Name {0}, Id {1}", keyboard.ShortName, keyboard.Id);
				}
			}
		}