globalerror_test.cc 4.3 KB

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