diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/nasa_osal/patch.xml | 25 | ||||
| -rw-r--r-- | test/nil/configuration.xml | 165 | ||||
| -rw-r--r-- | test/nil/patch.xml | 25 | ||||
| -rw-r--r-- | test/nil/source/test/test_root.c | 64 | ||||
| -rw-r--r-- | test/nil/source/test/test_root.h | 14 | ||||
| -rw-r--r-- | test/nil/source/test/test_sequence_001.c | 2 | ||||
| -rw-r--r-- | test/nil/source/test/test_sequence_001.h | 2 | ||||
| -rw-r--r-- | test/nil/source/test/test_sequence_002.c | 6 | ||||
| -rw-r--r-- | test/nil/source/test/test_sequence_002.h | 2 | ||||
| -rw-r--r-- | test/nil/source/test/test_sequence_003.c | 2 | ||||
| -rw-r--r-- | test/nil/source/test/test_sequence_003.h | 2 | ||||
| -rw-r--r-- | test/nil/source/test/test_sequence_004.c | 10 | ||||
| -rw-r--r-- | test/nil/source/test/test_sequence_004.h | 2 | ||||
| -rw-r--r-- | test/nil/source/test/test_sequence_005.c | 137 | ||||
| -rw-r--r-- | test/nil/source/test/test_sequence_005.h | 2 | 
15 files changed, 372 insertions, 88 deletions
| diff --git a/test/nasa_osal/patch.xml b/test/nasa_osal/patch.xml index 879b2ed23..c617cd8f6 100644 --- a/test/nasa_osal/patch.xml +++ b/test/nasa_osal/patch.xml @@ -1,5 +1,28 @@  <?xml version="1.0" encoding="UTF-8"?>
  <SPC5-Patch version="1.0.0">
    <!--It is your patch repository, do not break your XML File.-->
 -  <files />
 +  <files>
 +    <file componentId="org.chibios.spc5.components.chibios_unitary_tests_engine" version="1.0.0.qualifier" path="component/lib/include/ch_test.h" user="false">
 +      <diff><![CDATA[--- components/chibios_unit_tests_engine_component/lib/include/ch_test.h ++++ components/chibios_unit_tests_engine_component/lib/include/ch_test.h +@@ -1,5 +1,5 @@ + /* +-    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio ++    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio +  +     Licensed under the Apache License, Version 2.0 (the "License"); +     you may not use this file except in compliance with the License.]]></diff>
 +    </file>
 +    <file componentId="org.chibios.spc5.components.chibios_unitary_tests_engine" version="1.0.0.qualifier" path="component/lib/src/ch_test.c" user="false">
 +      <diff><![CDATA[--- components/chibios_unit_tests_engine_component/lib/src/ch_test.c ++++ components/chibios_unit_tests_engine_component/lib/src/ch_test.c +@@ -1,5 +1,5 @@ + /* +-    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio ++    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio +  +     Licensed under the Apache License, Version 2.0 (the "License"); +     you may not use this file except in compliance with the License.]]></diff>
 +    </file>
 +  </files>
  </SPC5-Patch>
 diff --git a/test/nil/configuration.xml b/test/nil/configuration.xml index 7488bf61f..118c70153 100644 --- a/test/nil/configuration.xml +++ b/test/nil/configuration.xml @@ -818,9 +818,9 @@ test_assert(msg1 == MSG_OK, "wrong wake-up message");]]></value>                        <value />
                      </tags>
                      <code>
 -                      <value><![CDATA[test_assert_lock(chMBGetFreeCountI(&mb1) == MB_SIZE, "not empty");
 -test_assert_lock(chMBGetUsedCountI(&mb1) == 0, "still full");
 -test_assert(mb1.buffer == mb1.wrptr, "write pointer not aligned to base");
 +                      <value><![CDATA[test_assert_lock(chMBGetFreeCountI(&mb1) == MB_SIZE, "not empty"); +test_assert_lock(chMBGetUsedCountI(&mb1) == 0, "still full"); +test_assert(mb1.buffer == mb1.wrptr, "write pointer not aligned to base");  test_assert(mb1.buffer == mb1.rdptr, "read pointer not aligned to base");]]></value>
                      </code>
                    </step>
 @@ -927,23 +927,24 @@ test_assert(msg1 == MSG_TIMEOUT, "wrong wake-up message");]]></value>                <value>This sequence tests the ChibiOS/NIL functionalities related to memory pools.</value>
              </description>
              <shared_code>
 -              <value><![CDATA[#define MEMORY_POOL_SIZE 4
 -
 -static uint32_t objects[MEMORY_POOL_SIZE];
 +              <value><![CDATA[#define MEMORY_POOL_SIZE 4 + +static uint32_t objects[MEMORY_POOL_SIZE];  static MEMORYPOOL_DECL(mp1, sizeof (uint32_t), NULL);
 -
 -static void *null_provider(size_t size, unsigned align) {
 -
 -  (void)size;
 -  (void)align;
 -
 -  return NULL;
 +static GUARDEDMEMORYPOOL_DECL(gmp1, sizeof (uint32_t));
 + +static void *null_provider(size_t size, unsigned align) { + +  (void)size; +  (void)align; + +  return NULL;  }]]></value>
              </shared_code>
              <cases>
                <case>
                  <brief>
 -                  <value>Loading and empting the memory pool.</value>
 +                  <value>Loading and empting a memory pool.</value>
                  </brief>
                  <description>
                    <value>The memory pool functionality is tested by loading and empting it, all conditions are tested.</value>
 @@ -982,7 +983,7 @@ static void *null_provider(size_t size, unsigned align) {                        <value />
                      </tags>
                      <code>
 -                      <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
 +                      <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)    test_assert(chPoolAlloc(&mp1) != NULL, "list empty");]]></value>
                      </code>
                    </step>
 @@ -1005,7 +1006,7 @@ static void *null_provider(size_t size, unsigned align) {                        <value />
                      </tags>
                      <code>
 -                      <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
 +                      <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)    chPoolFree(&mp1, &objects[i]);]]></value>
                      </code>
                    </step>
 @@ -1017,7 +1018,7 @@ static void *null_provider(size_t size, unsigned align) {                        <value />
                      </tags>
                      <code>
 -                      <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
 +                      <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)    test_assert(chPoolAlloc(&mp1) != NULL, "list empty");]]></value>
                      </code>
                    </step>
 @@ -1040,12 +1041,140 @@ static void *null_provider(size_t size, unsigned align) {                        <value />
                      </tags>
                      <code>
 -                      <value><![CDATA[chPoolObjectInit(&mp1, sizeof (uint32_t), null_provider);
 +                      <value><![CDATA[chPoolObjectInit(&mp1, sizeof (uint32_t), null_provider);  test_assert(chPoolAlloc(&mp1) == NULL, "provider returned memory");]]></value>
                      </code>
                    </step>
                  </steps>
                </case>
 +              <case>
 +                <brief>
 +                  <value>Loading and empting a guarded memory pool without waiting.</value>
 +                </brief>
 +                <description>
 +                  <value>The memory pool functionality is tested by loading and empting it, all conditions are tested.</value>
 +                </description>
 +                <condition>
 +                  <value />
 +                </condition>
 +                <various_code>
 +                  <setup_code>
 +                    <value><![CDATA[chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t));]]></value>
 +                  </setup_code>
 +                  <teardown_code>
 +                    <value />
 +                  </teardown_code>
 +                  <local_variables>
 +                    <value><![CDATA[unsigned i;]]></value>
 +                  </local_variables>
 +                </various_code>
 +                <steps>
 +                  <step>
 +                    <description>
 +                      <value>Adding the objects to the pool using chGuardedPoolLoadArray().</value>
 +                    </description>
 +                    <tags>
 +                      <value />
 +                    </tags>
 +                    <code>
 +                      <value><![CDATA[chGuardedPoolLoadArray(&gmp1, objects, MEMORY_POOL_SIZE);]]></value>
 +                    </code>
 +                  </step>
 +                  <step>
 +                    <description>
 +                      <value>Emptying the pool using chGuardedPoolAllocTimeout().</value>
 +                    </description>
 +                    <tags>
 +                      <value />
 +                    </tags>
 +                    <code>
 +                      <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++) +  test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) != NULL, "list empty");]]></value>
 +                    </code>
 +                  </step>
 +                  <step>
 +                    <description>
 +                      <value>Now must be empty.</value>
 +                    </description>
 +                    <tags>
 +                      <value />
 +                    </tags>
 +                    <code>
 +                      <value><![CDATA[test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) == NULL, "list not empty");]]></value>
 +                    </code>
 +                  </step>
 +                  <step>
 +                    <description>
 +                      <value>Adding the objects to the pool using chGuardedPoolFree().</value>
 +                    </description>
 +                    <tags>
 +                      <value />
 +                    </tags>
 +                    <code>
 +                      <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++) +  chGuardedPoolFree(&gmp1, &objects[i]);]]></value>
 +                    </code>
 +                  </step>
 +                  <step>
 +                    <description>
 +                      <value>Emptying the pool using chGuardedPoolAllocTimeout() again.</value>
 +                    </description>
 +                    <tags>
 +                      <value />
 +                    </tags>
 +                    <code>
 +                      <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++) +  test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) != NULL, "list empty");]]></value>
 +                    </code>
 +                  </step>
 +                  <step>
 +                    <description>
 +                      <value>Now must be empty again.</value>
 +                    </description>
 +                    <tags>
 +                      <value />
 +                    </tags>
 +                    <code>
 +                      <value><![CDATA[test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) == NULL, "list not empty");]]></value>
 +                    </code>
 +                  </step>
 +                </steps>
 +              </case>
 +              <case>
 +                <brief>
 +                  <value>Guarded Memory Pools timeout.</value>
 +                </brief>
 +                <description>
 +                  <value>The timeout features for the Guarded Memory Pools is tested.</value>
 +                </description>
 +                <condition>
 +                  <value />
 +                </condition>
 +                <various_code>
 +                  <setup_code>
 +                    <value><![CDATA[chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t));]]></value>
 +                  </setup_code>
 +                  <teardown_code>
 +                    <value />
 +                  </teardown_code>
 +                  <local_variables>
 +                    <value />
 +                  </local_variables>
 +                </various_code>
 +                <steps>
 +                  <step>
 +                    <description>
 +                      <value>Trying to allocate with 100mS timeout, must fail because the pool is empty.</value>
 +                    </description>
 +                    <tags>
 +                      <value />
 +                    </tags>
 +                    <code>
 +                      <value><![CDATA[test_assert(chGuardedPoolAllocTimeout(&gmp1, MS2ST(100)) == NULL, "list not empty");]]></value>
 +                    </code>
 +                  </step>
 +                </steps>
 +              </case>
              </cases>
            </sequence>
          </sequences>
 diff --git a/test/nil/patch.xml b/test/nil/patch.xml index 879b2ed23..c617cd8f6 100644 --- a/test/nil/patch.xml +++ b/test/nil/patch.xml @@ -1,5 +1,28 @@  <?xml version="1.0" encoding="UTF-8"?>
  <SPC5-Patch version="1.0.0">
    <!--It is your patch repository, do not break your XML File.-->
 -  <files />
 +  <files>
 +    <file componentId="org.chibios.spc5.components.chibios_unitary_tests_engine" version="1.0.0.qualifier" path="component/lib/include/ch_test.h" user="false">
 +      <diff><![CDATA[--- components/chibios_unit_tests_engine_component/lib/include/ch_test.h ++++ components/chibios_unit_tests_engine_component/lib/include/ch_test.h +@@ -1,5 +1,5 @@ + /* +-    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio ++    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio +  +     Licensed under the Apache License, Version 2.0 (the "License"); +     you may not use this file except in compliance with the License.]]></diff>
 +    </file>
 +    <file componentId="org.chibios.spc5.components.chibios_unitary_tests_engine" version="1.0.0.qualifier" path="component/lib/src/ch_test.c" user="false">
 +      <diff><![CDATA[--- components/chibios_unit_tests_engine_component/lib/src/ch_test.c ++++ components/chibios_unit_tests_engine_component/lib/src/ch_test.c +@@ -1,5 +1,5 @@ + /* +-    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio ++    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio +  +     Licensed under the Apache License, Version 2.0 (the "License"); +     you may not use this file except in compliance with the License.]]></diff>
 +    </file>
 +  </files>
  </SPC5-Patch>
 diff --git a/test/nil/source/test/test_root.c b/test/nil/source/test/test_root.c index f261965cb..1516898c5 100644 --- a/test/nil/source/test/test_root.c +++ b/test/nil/source/test/test_root.c @@ -61,38 +61,38 @@ const testcase_t * const *test_suite[] = {  /* Shared code.                                                              */
  /*===========================================================================*/
 -semaphore_t gsem1, gsem2;
 -thread_reference_t gtr1;
 -
 -/*
 - * Support thread.
 - */
 -THD_WORKING_AREA(wa_test_support, 128);
 -THD_FUNCTION(test_support, arg) {
 -#if CH_CFG_USE_EVENTS == TRUE
 -  thread_t *tp = (thread_t *)arg;
 -#else
 -  (void)arg;
 -#endif
 -
 -  /* Initializing global resources.*/
 -  chSemObjectInit(&gsem1, 0);
 -  chSemObjectInit(&gsem2, 0);
 -
 -  while (true) {
 -    chSysLock();
 -    if (chSemGetCounterI(&gsem1) < 0)
 -      chSemSignalI(&gsem1);
 -    chSemResetI(&gsem2, 0);
 -    chThdResumeI(>r1, MSG_OK);
 -#if CH_CFG_USE_EVENTS == TRUE
 -    chEvtSignalI(tp, 0x55);
 -#endif
 -    chSchRescheduleS();
 -    chSysUnlock();
 -
 -    chThdSleepMilliseconds(250);
 -  }
 +semaphore_t gsem1, gsem2; +thread_reference_t gtr1; + +/* + * Support thread. + */ +THD_WORKING_AREA(wa_test_support, 128); +THD_FUNCTION(test_support, arg) { +#if CH_CFG_USE_EVENTS == TRUE +  thread_t *tp = (thread_t *)arg; +#else +  (void)arg; +#endif + +  /* Initializing global resources.*/ +  chSemObjectInit(&gsem1, 0); +  chSemObjectInit(&gsem2, 0); + +  while (true) { +    chSysLock(); +    if (chSemGetCounterI(&gsem1) < 0) +      chSemSignalI(&gsem1); +    chSemResetI(&gsem2, 0); +    chThdResumeI(>r1, MSG_OK); +#if CH_CFG_USE_EVENTS == TRUE +    chEvtSignalI(tp, 0x55); +#endif +    chSchRescheduleS(); +    chSysUnlock(); + +    chThdSleepMilliseconds(250); +  }  }
  /** @} */
 diff --git a/test/nil/source/test/test_root.h b/test/nil/source/test/test_root.h index ce6d8d457..ee0c42d0b 100644 --- a/test/nil/source/test/test_root.h +++ b/test/nil/source/test/test_root.h @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 @@ -48,12 +48,12 @@ extern "C" {  /* Shared definitions.                                                       */
  /*===========================================================================*/
 -#define TEST_SUITE_NAME                     "ChibiOS/NIL Test Suite"
 -
 -extern semaphore_t gsem1, gsem2;
 -extern thread_reference_t gtr1;
 -extern THD_WORKING_AREA(wa_test_support, 128);
 -
 +#define TEST_SUITE_NAME                     "ChibiOS/NIL Test Suite" + +extern semaphore_t gsem1, gsem2; +extern thread_reference_t gtr1; +extern THD_WORKING_AREA(wa_test_support, 128); +  THD_FUNCTION(test_support, arg);
  #endif /* _SPC5_TEST_ROOT_H_ */
 diff --git a/test/nil/source/test/test_sequence_001.c b/test/nil/source/test/test_sequence_001.c index 858930775..4be1c4785 100644 --- a/test/nil/source/test/test_sequence_001.c +++ b/test/nil/source/test/test_sequence_001.c @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 diff --git a/test/nil/source/test/test_sequence_001.h b/test/nil/source/test/test_sequence_001.h index 9ba5dc4be..83ef96518 100644 --- a/test/nil/source/test/test_sequence_001.h +++ b/test/nil/source/test/test_sequence_001.h @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 diff --git a/test/nil/source/test/test_sequence_002.c b/test/nil/source/test/test_sequence_002.c index 946b6d05e..bd626683b 100644 --- a/test/nil/source/test/test_sequence_002.c +++ b/test/nil/source/test/test_sequence_002.c @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 @@ -38,8 +38,8 @@   * Shared code.
   ****************************************************************************/
 -#include "ch.h"
 -
 +#include "ch.h" +  static semaphore_t sem1;
  /****************************************************************************
 diff --git a/test/nil/source/test/test_sequence_002.h b/test/nil/source/test/test_sequence_002.h index b408f96f4..bd7b6c764 100644 --- a/test/nil/source/test/test_sequence_002.h +++ b/test/nil/source/test/test_sequence_002.h @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 diff --git a/test/nil/source/test/test_sequence_003.c b/test/nil/source/test/test_sequence_003.c index e0ae074e8..b58bd3b69 100644 --- a/test/nil/source/test/test_sequence_003.c +++ b/test/nil/source/test/test_sequence_003.c @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 diff --git a/test/nil/source/test/test_sequence_003.h b/test/nil/source/test/test_sequence_003.h index ca7045528..587acc5de 100644 --- a/test/nil/source/test/test_sequence_003.h +++ b/test/nil/source/test/test_sequence_003.h @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 diff --git a/test/nil/source/test/test_sequence_004.c b/test/nil/source/test/test_sequence_004.c index 4cddf5fe4..6cf37b289 100644 --- a/test/nil/source/test/test_sequence_004.c +++ b/test/nil/source/test/test_sequence_004.c @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 @@ -38,10 +38,10 @@   * Shared code.
   ****************************************************************************/
 -#define ALLOWED_DELAY MS2ST(5)
 -#define MB_SIZE 4
 -
 -static msg_t mb_buffer[MB_SIZE];
 +#define ALLOWED_DELAY MS2ST(5) +#define MB_SIZE 4 + +static msg_t mb_buffer[MB_SIZE];  static MAILBOX_DECL(mb1, mb_buffer, MB_SIZE);
  /****************************************************************************
 diff --git a/test/nil/source/test/test_sequence_004.h b/test/nil/source/test/test_sequence_004.h index 4e0e48f6a..3ecaa4259 100644 --- a/test/nil/source/test/test_sequence_004.h +++ b/test/nil/source/test/test_sequence_004.h @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 diff --git a/test/nil/source/test/test_sequence_005.c b/test/nil/source/test/test_sequence_005.c index 9d14cfdb6..fa3fc8eab 100644 --- a/test/nil/source/test/test_sequence_005.c +++ b/test/nil/source/test/test_sequence_005.c @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 @@ -29,6 +29,8 @@   *
   * <h2>Test Cases</h2>
   * - @subpage test_005_001
 + * - @subpage test_005_002
 + * - @subpage test_005_003
   * .
   */
 @@ -36,17 +38,18 @@   * Shared code.
   ****************************************************************************/
 -#define MEMORY_POOL_SIZE 4
 -
 -static uint32_t objects[MEMORY_POOL_SIZE];
 -static MEMORYPOOL_DECL(mp1, sizeof (uint32_t), NULL);
 -
 -static void *null_provider(size_t size, unsigned align) {
 -
 -  (void)size;
 -  (void)align;
 -
 -  return NULL;
 +#define MEMORY_POOL_SIZE 4 + +static uint32_t objects[MEMORY_POOL_SIZE]; +static MEMORYPOOL_DECL(mp1, sizeof (uint32_t), NULL); +static GUARDEDMEMORYPOOL_DECL(gmp1, sizeof (uint32_t)); + +static void *null_provider(size_t size, unsigned align) { + +  (void)size; +  (void)align; + +  return NULL;  }
  /****************************************************************************
 @@ -54,7 +57,7 @@ static void *null_provider(size_t size, unsigned align) {   ****************************************************************************/
  /**
 - * @page test_005_001 Loading and empting the memory pool
 + * @page test_005_001 Loading and empting a memory pool
   *
   * <h2>Description</h2>
   * The memory pool functionality is tested by loading and empting it,
 @@ -128,12 +131,116 @@ static void test_005_001_execute(void) {  }
  static const testcase_t test_005_001 = {
 -  "Loading and empting the memory pool",
 +  "Loading and empting a memory pool",
    test_005_001_setup,
    NULL,
    test_005_001_execute
  };
 +/**
 + * @page test_005_002 Loading and empting a guarded memory pool without waiting
 + *
 + * <h2>Description</h2>
 + * The memory pool functionality is tested by loading and empting it,
 + * all conditions are tested.
 + *
 + * <h2>Test Steps</h2>
 + * - Adding the objects to the pool using chGuardedPoolLoadArray().
 + * - Emptying the pool using chGuardedPoolAllocTimeout().
 + * - Now must be empty.
 + * - Adding the objects to the pool using chGuardedPoolFree().
 + * - Emptying the pool using chGuardedPoolAllocTimeout() again.
 + * - Now must be empty again.
 + * .
 + */
 +
 +static void test_005_002_setup(void) {
 +  chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t));
 +}
 +
 +static void test_005_002_execute(void) {
 +  unsigned i;
 +
 +  /* Adding the objects to the pool using chGuardedPoolLoadArray().*/
 +  test_set_step(1);
 +  {
 +    chGuardedPoolLoadArray(&gmp1, objects, MEMORY_POOL_SIZE);
 +  }
 +
 +  /* Emptying the pool using chGuardedPoolAllocTimeout().*/
 +  test_set_step(2);
 +  {
 +    for (i = 0; i < MEMORY_POOL_SIZE; i++)
 +      test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) != NULL, "list empty");
 +  }
 +
 +  /* Now must be empty.*/
 +  test_set_step(3);
 +  {
 +    test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) == NULL, "list not empty");
 +  }
 +
 +  /* Adding the objects to the pool using chGuardedPoolFree().*/
 +  test_set_step(4);
 +  {
 +    for (i = 0; i < MEMORY_POOL_SIZE; i++)
 +      chGuardedPoolFree(&gmp1, &objects[i]);
 +  }
 +
 +  /* Emptying the pool using chGuardedPoolAllocTimeout() again.*/
 +  test_set_step(5);
 +  {
 +    for (i = 0; i < MEMORY_POOL_SIZE; i++)
 +      test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) != NULL, "list empty");
 +  }
 +
 +  /* Now must be empty again.*/
 +  test_set_step(6);
 +  {
 +    test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) == NULL, "list not empty");
 +  }
 +}
 +
 +static const testcase_t test_005_002 = {
 +  "Loading and empting a guarded memory pool without waiting",
 +  test_005_002_setup,
 +  NULL,
 +  test_005_002_execute
 +};
 +
 +/**
 + * @page test_005_003 Guarded Memory Pools timeout
 + *
 + * <h2>Description</h2>
 + * The timeout features for the Guarded Memory Pools is tested.
 + *
 + * <h2>Test Steps</h2>
 + * - Trying to allocate with 100mS timeout, must fail because the pool
 + *   is empty.
 + * .
 + */
 +
 +static void test_005_003_setup(void) {
 +  chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t));
 +}
 +
 +static void test_005_003_execute(void) {
 +
 +  /* Trying to allocate with 100mS timeout, must fail because the pool
 +     is empty.*/
 +  test_set_step(1);
 +  {
 +    test_assert(chGuardedPoolAllocTimeout(&gmp1, MS2ST(100)) == NULL, "list not empty");
 +  }
 +}
 +
 +static const testcase_t test_005_003 = {
 +  "Guarded Memory Pools timeout",
 +  test_005_003_setup,
 +  NULL,
 +  test_005_003_execute
 +};
 +
  /****************************************************************************
   * Exported data.
   ****************************************************************************/
 @@ -143,5 +250,7 @@ static const testcase_t test_005_001 = {   */
  const testcase_t * const test_sequence_005[] = {
    &test_005_001,
 +  &test_005_002,
 +  &test_005_003,
    NULL
  };
 diff --git a/test/nil/source/test/test_sequence_005.h b/test/nil/source/test/test_sequence_005.h index a6d54f033..4cb8e1db0 100644 --- a/test/nil/source/test/test_sequence_005.h +++ b/test/nil/source/test/test_sequence_005.h @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 | 
