diff options
Diffstat (limited to 'spec/rtems/option/val')
-rw-r--r-- | spec/rtems/option/val/options.yml | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/spec/rtems/option/val/options.yml b/spec/rtems/option/val/options.yml new file mode 100644 index 00000000..7efa7885 --- /dev/null +++ b/spec/rtems/option/val/options.yml @@ -0,0 +1,117 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: [] +test-actions: +- action: | + /* No action */ + checks: + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_EVENT_ANY ) ); + description: | + Check that RTEMS_EVENT_ANY is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/event-any + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_NO_WAIT ) ); + description: | + Check that RTEMS_NO_WAIT is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/no-wait + description: | + Validate the non-default option constants. + links: [] +- action: | + /* No action */ + checks: + - check: | + T_step_eq_u32( ${step}, RTEMS_DEFAULT_OPTIONS, 0 ); + description: | + Check that RTEMS_DEFAULT_OPTIONS is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/default + - check: | + T_step_eq_u32( ${step}, RTEMS_EVENT_ALL, 0 ); + description: | + Check that RTEMS_EVENT_ALL is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/event-all + - check: | + T_step_eq_u32( ${step}, RTEMS_WAIT, 0 ); + description: | + Check that RTEMS_WAIT is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/wait + description: | + Validate the default option constants. + links: [] +- action: | + options = 0; + options |= RTEMS_EVENT_ANY; + options |= RTEMS_NO_WAIT; + checks: + - check: | + T_step_eq_int( ${step}, PopCount( options ), 2 ); + description: | + Check that the count of set bits in the calculated value is equal to the + count of non-default option constants. Since each non-default option + constant is a power of two, this proves that each constant has a unique + value. + links: + - role: validation + uid: ../req/unique + - role: validation + uid: ../if/event-any + - role: validation + uid: ../if/no-wait + description: | + Calculate the bitwise or of all non-default option constants. + links: [] +test-brief: | + Tests the option constants of the Classic API. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: +- rtems.h +test-local-includes: [] +test-prologue: | + rtems_option options; +test-support: | + static bool IsPowerOfTwo( rtems_option option ) + { + return option != 0 && ( option & ( option - 1 ) ) == 0; + } + + static int PopCount( rtems_option options ) + { + int count; + + count = 0; + + while ( options != 0 ) { + ++count; + options &= options - 1; + } + + return count; + } +test-target: testsuites/validation/tc-options.c +type: test-case |