综合平台编程器项目的远程存储
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

68 строки
2.0 KiB

  1. #include "services/runtime_mode_service.h"
  2. #include <iostream>
  3. #include <stdexcept>
  4. #include <string>
  5. namespace {
  6. void require(bool condition, const std::string &message)
  7. {
  8. if (!condition)
  9. {
  10. throw std::runtime_error(message);
  11. }
  12. }
  13. void testModeTransitions()
  14. {
  15. RuntimeModeService service;
  16. require(service.mode() == ApplicationMode::Editing,
  17. "service must start in editing mode");
  18. require(service.policy().allowsProjectEditing,
  19. "editing mode must allow project editing");
  20. require(service.enterOfflineRunning().succeeded,
  21. "editing mode must enter offline running");
  22. require(service.policy().usesVirtualRegisters,
  23. "offline running must use virtual registers");
  24. require(service.enterOnlineRunning().error
  25. == ModeTransitionError::MustReturnToEditing,
  26. "running modes must not switch directly");
  27. require(service.enterEditing().succeeded,
  28. "offline running must return to editing");
  29. require(service.enterOnlineRunning().error
  30. == ModeTransitionError::InitialPlcReadRequired,
  31. "online running must require an initial PLC read");
  32. service.setInitialPlcReadCompleted(true);
  33. require(service.initialPlcReadCompleted(),
  34. "service must retain the initial PLC read state");
  35. require(service.enterOnlineRunning().succeeded,
  36. "online running must start after an initial PLC read");
  37. require(service.policy().usesPlcRegisters,
  38. "online running must use PLC registers");
  39. require(!service.policy().runsLogicExecutor,
  40. "online running must keep the software executor stopped");
  41. }
  42. } // namespace
  43. int main()
  44. {
  45. try
  46. {
  47. testModeTransitions();
  48. }
  49. catch (const std::exception &error)
  50. {
  51. std::cerr << "runtime mode service tests failed: " << error.what() << '\n';
  52. return 1;
  53. }
  54. std::cout << "runtime mode service tests passed\n";
  55. return 0;
  56. }