diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-02-02 15:51:36 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-02-08 08:05:33 +0100 |
commit | 11b65c59f9387dbe4e322ee8bd08f8f8847fc6f3 (patch) | |
tree | 9e690449139166f7b41f3b7505bea7ca70c02a96 | |
parent | spec: Document barrier directives (diff) | |
download | rtems-central-11b65c59f9387dbe4e322ee8bd08f8f8847fc6f3.tar.bz2 |
spec: Specify rtems_build_name()
-rw-r--r-- | spec/rtems/object/req/build-name-macro.yml | 18 | ||||
-rw-r--r-- | spec/rtems/object/val/object.yml | 92 |
2 files changed, 110 insertions, 0 deletions
diff --git a/spec/rtems/object/req/build-name-macro.yml b/spec/rtems/object/req/build-name-macro.yml new file mode 100644 index 00000000..3472c421 --- /dev/null +++ b/spec/rtems/object/req/build-name-macro.yml @@ -0,0 +1,18 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: interface-function + uid: ../if/build-name-macro +functional-type: function +rationale: null +references: [] +requirement-type: functional +text: | + The result of ${../if/build-name-macro:/name} shall be equal to + (${../if/build-name-macro:/params[0]/name} modulo 256) * 16777216 + + (${../if/build-name-macro:/params[1]/name} modulo 256) * 65536 + + (${../if/build-name-macro:/params[2]/name} modulo 256) * 256 + + (${../if/build-name-macro:/params[3]/name} modulo 256). +type: requirement diff --git a/spec/rtems/object/val/object.yml b/spec/rtems/object/val/object.yml new file mode 100644 index 00000000..792206b7 --- /dev/null +++ b/spec/rtems/object/val/object.yml @@ -0,0 +1,92 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: [] +test-actions: +- action-brief: | + Validate the results of rtems_build_name() for a sample set of parameters. + action-code: | + static const uint16_t chars[] = { 0, 255, 257 }; + rtems_name accumulated_name; + size_t i; + size_t j; + size_t k; + size_t r; + + accumulated_name = 0; + + for ( i = 0; i < RTEMS_ARRAY_SIZE( chars ); ++i ) { + for ( j = 0; j < RTEMS_ARRAY_SIZE( chars ); ++j ) { + for ( k = 0; k < RTEMS_ARRAY_SIZE( chars ); ++k ) { + for ( r = 0; r < RTEMS_ARRAY_SIZE( chars ); ++r ) { + unsigned char u1; + unsigned char u2; + unsigned char u3; + unsigned char u4; + signed char s1; + signed char s2; + signed char s3; + signed char s4; + rtems_name expected_name; + rtems_name actual_name; + + expected_name = ( chars[ i ] % 256 ) * UINT32_C( 16777216 ) + + ( chars[ j ] % 256 ) * UINT32_C( 65536 ) + + ( chars[ k ] % 256 ) * UINT32_C( 256 ) + + ( chars[ r ] % 256 ); + + u1 = (unsigned char) chars[ i ]; + u2 = (unsigned char) chars[ j ]; + u3 = (unsigned char) chars[ k ]; + u4 = (unsigned char) chars[ r ]; + actual_name = rtems_build_name( u1, u2, u3, u4 ); + T_quiet_eq_u32( actual_name, expected_name ) + accumulated_name += actual_name; + + s1 = (signed char) u1; + s2 = (signed char) u2; + s3 = (signed char) u3; + s4 = (signed char) u4; + actual_name = rtems_build_name( s1, s2, s3, s4 ); + T_quiet_eq_u32( actual_name, expected_name ) + accumulated_name += actual_name; + + actual_name = rtems_build_name( + chars[ i ], + chars[ j ], + chars[ k ], + chars[ r ] + ); + T_quiet_eq_u32( actual_name, expected_name ); + accumulated_name += actual_name; + } + } + } + } + checks: + - brief: | + Check that the accumulated name has the expected value. + code: | + T_step_eq_u32( ${step}, accumulated_name, 0x51515100 ); + links: + - role: validation + uid: ../req/build-name-macro + links: + - role: validation + uid: ../req/build-name-macro +test-brief: | + Tests the rtems_build_name() macro. +test-context: [] +test-context-support: null +test-description: null +test-header: null +test-includes: +- rtems.h +test-local-includes: [] +test-setup: null +test-stop: null +test-support: null +test-target: testsuites/validation/tc-object.c +test-teardown: null +type: test-case |