summaryrefslogtreecommitdiffstats
path: root/spec/rtems/object/val/object.yml
blob: 1acda57e2a4e2e1b0e9d46d6ffa3c5a1aac15f5b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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 ${../if/build-name:/name} (function) and
    ${../if/build-name-macro:/name} (macro) 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 = BuildName(
              chars[ i ],
              chars[ j ],
              chars[ k ],
              chars[ r ]
            );
            T_quiet_eq_u32( actual_name, expected_name );

            actual_name = BuildNameMacro(
              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
    - role: validation
      uid: ../req/build-name-macro
  links:
  - role: validation
    uid: ../req/build-name
  - role: validation
    uid: ../req/build-name-macro
- action-brief: |
    Validate the result of ${../if/get-local-node:/name}.
  action-code: |
    uint32_t node;

    node = rtems_object_get_local_node();
  checks:
  - brief: |
      Check that the returned value is one.
    code: |
      T_step_eq_u32( ${.:/step}, node, 1 );
    links: []
  links:
  - role: validation
    uid: ../req/get-local-node
test-brief: |
  Tests some ${../if/group:/name} directives.
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: |
  static rtems_name BuildNameMacro( char c1, char c2, char c3, char c4 )
  {
    return rtems_build_name( c1, c2, c3, c4 );
  }

  #undef rtems_build_name

  static rtems_name BuildName( char c1, char c2, char c3, char c4 )
  {
    return rtems_build_name( c1, c2, c3, c4 );
  }
test-target: testsuites/validation/tc-object.c
test-teardown: null
type: test-case