test.c 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #include "et.h" /* Embedded Test (ET) */
  2. /* includes for the CUT... */
  3. #include "qf_port.h"
  4. #include "qassert.h" /* QP embedded systems-friendly assertions */
  5. #ifdef Q_SPY /* software tracing enabled? */
  6. #include "qs_port.h" /* QS/C port from the port directory */
  7. #else
  8. #include "qs_dummy.h" /* QS/C dummy (inactive) interface */
  9. #endif
  10. enum { QUEUE_SIZE = 10 };
  11. void setup(void) {
  12. }
  13. void teardown(void) {
  14. }
  15. //static QEvt const *queBuf[QUEUE_SIZE];
  16. static QEQueue queue;
  17. static QEvt const evt1 = { 1U, 0U, 0U };
  18. static QEvt const evt2 = { 2U, 0U, 0U };
  19. /* test group --------------------------------------------------------------*/
  20. TEST_GROUP("QEQueue") {
  21. TEST("new no-buffer queue has 1 free") {
  22. QEQueue_init(&queue, (QEvt const **)0, 0U);
  23. VERIFY(1U == QEQueue_getNFree(&queue));
  24. }
  25. TEST("no-buffer queue can hold at least 1") {
  26. QEQueue_post(&queue, &evt1, QF_NO_MARGIN, 0U);
  27. VERIFY(0U == QEQueue_getNFree(&queue));
  28. QEvt const *e = QEQueue_get(&queue, 0U);
  29. VERIFY(&evt1 == e);
  30. VERIFY(1U == QEQueue_getNFree(&queue));
  31. }
  32. TEST("no-buffer queue can hold only 1 (expected assertion)") {
  33. QEQueue_post(&queue, &evt1, QF_NO_MARGIN, 0U);
  34. ET_expect_assert("qf_qeq", 210);
  35. VERIFY(false == QEQueue_post(&queue, &evt2, QF_NO_MARGIN, 0U));
  36. VERIFY(0U == QEQueue_getNFree(&queue));
  37. }
  38. } /* TEST_GROUP() */
  39. /* =========================================================================*/
  40. /* dependencies for the CUT ... */
  41. uint_fast8_t QF_intLock_;
  42. /*..........................................................................*/
  43. void QF_poolInit(void * const poolSto, uint_fast32_t const poolSize,
  44. uint_fast16_t const evtSize)
  45. {
  46. (void)poolSto;
  47. (void)poolSize;
  48. (void)evtSize;
  49. }
  50. /*..........................................................................*/
  51. uint_fast16_t QF_poolGetMaxBlockSize(void) {
  52. return 0U;
  53. }
  54. /*..........................................................................*/
  55. void QActive_publish_(QEvt const * const e,
  56. void const * const sender, uint_fast8_t const qs_id)
  57. {
  58. (void)e;
  59. (void)sender;
  60. (void)qs_id;
  61. }
  62. /*..........................................................................*/
  63. void QTimeEvt_tick_(uint_fast8_t const tickRate, void const * const sender) {
  64. (void)tickRate;
  65. (void)sender;
  66. }
  67. /*..........................................................................*/
  68. QEvt *QF_newX_(uint_fast16_t const evtSize,
  69. uint_fast16_t const margin, enum_t const sig)
  70. {
  71. (void)evtSize;
  72. (void)margin;
  73. (void)sig;
  74. return (QEvt *)0;
  75. }
  76. /*..........................................................................*/
  77. /** @static @public @memberof QF */
  78. void QF_gc(QEvt const * const e) {
  79. (void)e;
  80. }
  81. /*..........................................................................*/
  82. /** @static @private @memberof QF */
  83. QActive *QActive_registry_[QF_MAX_ACTIVE + 1U];
  84. /*..........................................................................*/
  85. Q_NORETURN Q_onAssert(char const * const module, int_t const location) {
  86. VERIFY_ASSERT(module, location);
  87. for (;;) { /* explicitly make it "noreturn" */
  88. }
  89. }
  90. /*--------------------------------------------------------------------------*/
  91. #ifdef Q_SPY
  92. void QS_onCleanup(void) {
  93. }
  94. /*..........................................................................*/
  95. void QS_onReset(void) {
  96. }
  97. /*..........................................................................*/
  98. void QS_onFlush(void) {
  99. }
  100. /*..........................................................................*/
  101. QSTimeCtr QS_onGetTime(void) {
  102. return (QSTimeCtr)0U;
  103. }
  104. /*..........................................................................*/
  105. void QS_onCommand(uint8_t cmdId, uint32_t param1,
  106. uint32_t param2, uint32_t param3)
  107. {
  108. (void)cmdId;
  109. (void)param1;
  110. (void)param2;
  111. (void)param3;
  112. }
  113. #endif /* Q_SPY */