lfc_controller_unittests.cc 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. // Copyright (C) 2015 Internet Systems Consortium, Inc. ("ISC")
  2. //
  3. // Permission to use, copy, modify, and/or distribute this software for any
  4. // purpose with or without fee is hereby granted, provided that the above
  5. // copyright notice and this permission notice appear in all copies.
  6. //
  7. // THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
  8. // REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  9. // AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
  10. // INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  11. // LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  12. // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  13. // PERFORMANCE OF THIS SOFTWARE.
  14. #include <lfc/lfc.h>
  15. #include <gtest/gtest.h>
  16. using namespace isc::lfc;
  17. using namespace std;
  18. namespace {
  19. TEST(lfcControllerTest, initialValues) {
  20. lfcController lfcController;
  21. // Verify that we start with everything empty
  22. EXPECT_EQ(lfcController.getProtocolVersion(), 0);
  23. EXPECT_EQ(lfcController.getConfigFile(), "");
  24. EXPECT_EQ(lfcController.getPreviousFile(), "");
  25. EXPECT_EQ(lfcController.getCopyFile(), "");
  26. EXPECT_EQ(lfcController.getOutputFile(), "");
  27. EXPECT_EQ(lfcController.getFinishFile(), "");
  28. EXPECT_EQ(lfcController.getPidFile(), "");
  29. }
  30. TEST(lfcControllerTest, fullCommandLine) {
  31. lfcController lfcController;
  32. // Verify that standard options can be parsed without error
  33. char* argv[] = { const_cast<char*>("progName"),
  34. const_cast<char*>("-4"),
  35. const_cast<char*>("-p"),
  36. const_cast<char*>("previous"),
  37. const_cast<char*>("-i"),
  38. const_cast<char*>("copy"),
  39. const_cast<char*>("-o"),
  40. const_cast<char*>("output"),
  41. const_cast<char*>("-c"),
  42. const_cast<char*>("config"),
  43. const_cast<char*>("-f"),
  44. const_cast<char*>("finish") };
  45. int argc = 12;
  46. EXPECT_NO_THROW(lfcController.parseArgs(argc, argv));
  47. // The parsed data
  48. EXPECT_EQ(lfcController.getProtocolVersion(), 4);
  49. EXPECT_EQ(lfcController.getConfigFile(), "config");
  50. EXPECT_EQ(lfcController.getPreviousFile(), "previous");
  51. EXPECT_EQ(lfcController.getCopyFile(), "copy");
  52. EXPECT_EQ(lfcController.getOutputFile(), "output");
  53. EXPECT_EQ(lfcController.getFinishFile(), "finish");
  54. }
  55. TEST(lfcControllerTest, notEnoughData) {
  56. lfcController lfcController;
  57. // The standard options we shall test what happens
  58. // if we don't include all of them
  59. char* argv[] = { const_cast<char*>("progName"),
  60. const_cast<char*>("-4"),
  61. const_cast<char*>("-p"),
  62. const_cast<char*>("previous"),
  63. const_cast<char*>("-i"),
  64. const_cast<char*>("copy"),
  65. const_cast<char*>("-o"),
  66. const_cast<char*>("output"),
  67. const_cast<char*>("-c"),
  68. const_cast<char*>("config"),
  69. const_cast<char*>("-f"),
  70. const_cast<char*>("finish") };
  71. int argc = 1;
  72. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  73. argc = 2;
  74. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  75. argc = 3;
  76. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  77. argc = 4;
  78. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  79. argc = 5;
  80. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  81. argc = 6;
  82. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  83. argc = 7;
  84. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  85. argc = 8;
  86. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  87. argc = 9;
  88. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  89. argc = 10;
  90. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  91. argc = 11;
  92. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  93. }
  94. TEST(lfcControllerTest, tooMuchData) {
  95. lfcController lfcController;
  96. // The standard options plus some others
  97. char* argv[] = { const_cast<char*>("progName"),
  98. const_cast<char*>("-4"),
  99. const_cast<char*>("-p"),
  100. const_cast<char*>("previous"),
  101. const_cast<char*>("-i"),
  102. const_cast<char*>("copy"),
  103. const_cast<char*>("-o"),
  104. const_cast<char*>("output"),
  105. const_cast<char*>("-c"),
  106. const_cast<char*>("config"),
  107. const_cast<char*>("-f"),
  108. const_cast<char*>("finish"),
  109. const_cast<char*>("some"),
  110. const_cast<char*>("other"),
  111. const_cast<char*>("args"),
  112. };
  113. int argc = 15;
  114. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  115. }
  116. TEST(lfcControllerTest, someBadData) {
  117. lfcController lfcController;
  118. // The standard options plus some others
  119. char* argv[] = { const_cast<char*>("progName"),
  120. const_cast<char*>("some"),
  121. const_cast<char*>("bad"),
  122. const_cast<char*>("args"),
  123. };
  124. int argc = 4;
  125. EXPECT_THROW(lfcController.parseArgs(argc, argv), InvalidUsage);
  126. }
  127. } // end of anonymous namespace