globalerror_test.cc 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #include <apt-pkg/error.h>
  2. #include "assert.h"
  3. #include <string>
  4. #include <errno.h>
  5. #include <string.h>
  6. int main(int argc,char *argv[])
  7. {
  8. std::string const textOfErrnoZero(strerror(0));
  9. equals(_error->empty(), true);
  10. equals(_error->PendingError(), false);
  11. equals(_error->Notice("%s Notice", "A"), false);
  12. equals(_error->empty(), true);
  13. equals(_error->empty(GlobalError::DEBUG), false);
  14. equals(_error->PendingError(), false);
  15. equals(_error->Error("%s horrible %s %d times", "Something", "happened", 2), false);
  16. equals(_error->PendingError(), true);
  17. std::string text;
  18. equals(_error->PopMessage(text), false);
  19. equals(_error->PendingError(), true);
  20. equals(text, "A Notice");
  21. equals(_error->PopMessage(text), true);
  22. equals(text, "Something horrible happened 2 times");
  23. equals(_error->empty(GlobalError::DEBUG), true);
  24. equals(_error->PendingError(), false);
  25. equals(_error->Error("%s horrible %s %d times", "Something", "happened", 2), false);
  26. equals(_error->PendingError(), true);
  27. equals(_error->empty(GlobalError::FATAL), false);
  28. _error->Discard();
  29. equals(_error->empty(), true);
  30. equals(_error->PendingError(), false);
  31. equals(_error->Notice("%s Notice", "A"), false);
  32. equals(_error->Error("%s horrible %s %d times", "Something", "happened", 2), false);
  33. equals(_error->PendingError(), true);
  34. equals(_error->empty(GlobalError::NOTICE), false);
  35. _error->PushToStack();
  36. equals(_error->empty(GlobalError::NOTICE), true);
  37. equals(_error->PendingError(), false);
  38. equals(_error->Warning("%s Warning", "A"), false);
  39. equals(_error->empty(GlobalError::ERROR), true);
  40. equals(_error->PendingError(), false);
  41. _error->RevertToStack();
  42. equals(_error->empty(GlobalError::ERROR), false);
  43. equals(_error->PendingError(), true);
  44. equals(_error->PopMessage(text), false);
  45. equals(_error->PendingError(), true);
  46. equals(text, "A Notice");
  47. equals(_error->PopMessage(text), true);
  48. equals(text, "Something horrible happened 2 times");
  49. equals(_error->PendingError(), false);
  50. equals(_error->empty(), true);
  51. equals(_error->Notice("%s Notice", "A"), false);
  52. equals(_error->Error("%s horrible %s %d times", "Something", "happened", 2), false);
  53. equals(_error->PendingError(), true);
  54. equals(_error->empty(GlobalError::NOTICE), false);
  55. _error->PushToStack();
  56. equals(_error->empty(GlobalError::NOTICE), true);
  57. equals(_error->PendingError(), false);
  58. equals(_error->Warning("%s Warning", "A"), false);
  59. equals(_error->empty(GlobalError::ERROR), true);
  60. equals(_error->PendingError(), false);
  61. _error->MergeWithStack();
  62. equals(_error->empty(GlobalError::ERROR), false);
  63. equals(_error->PendingError(), true);
  64. equals(_error->PopMessage(text), false);
  65. equals(_error->PendingError(), true);
  66. equals(text, "A Notice");
  67. equals(_error->PopMessage(text), true);
  68. equals(text, "Something horrible happened 2 times");
  69. equals(_error->PendingError(), false);
  70. equals(_error->empty(), false);
  71. equals(_error->PopMessage(text), false);
  72. equals(text, "A Warning");
  73. equals(_error->empty(), true);
  74. errno = 0;
  75. equals(_error->Errno("errno", "%s horrible %s %d times", "Something", "happened", 2), false);
  76. equals(_error->empty(), false);
  77. equals(_error->PendingError(), true);
  78. equals(_error->PopMessage(text), true);
  79. equals(_error->PendingError(), false);
  80. equals(text, std::string("Something horrible happened 2 times - errno (0: ").append(textOfErrnoZero).append(")"));
  81. equals(_error->empty(), true);
  82. std::string longText;
  83. for (size_t i = 0; i < 500; ++i)
  84. longText.append("a");
  85. equals(_error->Error("%s horrible %s %d times", longText.c_str(), "happened", 2), false);
  86. equals(_error->PopMessage(text), true);
  87. equals(text, std::string(longText).append(" horrible happened 2 times"));
  88. equals(_error->Errno("errno", "%s horrible %s %d times", longText.c_str(), "happened", 2), false);
  89. equals(_error->PopMessage(text), true);
  90. equals(text, std::string(longText).append(" horrible happened 2 times - errno (0: ").append(textOfErrnoZero).append(")"));
  91. equals(_error->Warning("Репозиторий не обновлён и будут %d %s", 4, "test"), false);
  92. equals(_error->PopMessage(text), false);
  93. equals(text, "Репозиторий не обновлён и будут 4 test");
  94. longText.clear();
  95. for (size_t i = 0; i < 50; ++i)
  96. longText.append("РезийбёбAZ");
  97. equals(_error->Warning("%s", longText.c_str()), false);
  98. equals(_error->PopMessage(text), false);
  99. equals(text, longText);
  100. return 0;
  101. }