[rtems-central commit] spec: Specify rtems_build_name()

Sebastian Huber sebh at rtems.org
Mon Feb 8 07:53:59 UTC 2021


Module:    rtems-central
Branch:    master
Commit:    11b65c59f9387dbe4e322ee8bd08f8f8847fc6f3
Changeset: http://git.rtems.org/rtems-central/commit/?id=11b65c59f9387dbe4e322ee8bd08f8f8847fc6f3

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Feb  2 15:51:36 2021 +0100

spec: Specify rtems_build_name()

---

 spec/rtems/object/req/build-name-macro.yml | 18 ++++++
 spec/rtems/object/val/object.yml           | 92 ++++++++++++++++++++++++++++++
 2 files changed, 110 insertions(+)

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 0000000..3472c42
--- /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 0000000..792206b
--- /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



More information about the vc mailing list