summaryrefslogblamecommitdiffstats
path: root/spec/rtems/part/req/delete.yml
blob: d5e3ddeb75d8b8d73011af4fa686987def94ae3b (plain) (tree)































































                                                                               
               






                                                                     
              














































































                                                                     
          













                  
           
                 
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
functional-type: action
links:
- role: interface-function
  uid: ../if/delete
post-conditions:
- name: Status
  states:
  - name: Ok
    test-code: |
      T_rsc_success( ctx->status );
      ctx->id_value = 0xffffffff;

      id = 0xffffffff;
      sc = rtems_partition_ident( PART_NAME, RTEMS_SEARCH_LOCAL_NODE, &id );
      T_rsc( sc, RTEMS_INVALID_NAME );
      T_eq_u32( id, 0xffffffff );
    text: |
      The status shall be RTEMS_SUCCESSFUL.  The deleted partition object shall
      be inactive.
  - name: InvId
    test-code: |
      T_rsc( ctx->status, RTEMS_INVALID_ID );

      id = 0xffffffff;
      sc = rtems_partition_ident( PART_NAME, RTEMS_SEARCH_LOCAL_NODE, &id );
      T_rsc_success( sc);
      T_eq_u32( id, ctx->id_value );
    text: |
      The status shall be RTEMS_INVALID_ID.
  - name: InUse
    test-code: |
      T_rsc( ctx->status, RTEMS_RESOURCE_IN_USE );

      id = 0xffffffff;
      sc = rtems_partition_ident( PART_NAME, RTEMS_SEARCH_LOCAL_NODE, &id );
      T_rsc_success( sc);
      T_eq_u32( id, ctx->id_value );
    text: |
      The status shall be RTEMS_RESOURCE_IN_USE.
  test-epilogue: null
  test-prologue: |
    rtems_status_code sc;
    rtems_id          id;
pre-conditions:
- name: Id
  states:
  - name: Id
    test-code: |
      ctx->id = ctx->id_value;
    text: |
      The id parameter shall reference a partition object.
  - name: Invalid
    test-code: |
      ctx->id = 0;
    text: |
      The id parameter shall not reference a partition object.
  test-epilogue: null
  test-prologue: null
- name: InUse
  states:
  - name: 'Yes'
    test-code: |
      ctx->buffer = NULL;
      sc = rtems_partition_get_buffer( ctx->id_value, &ctx->buffer );
      T_rsc_success( sc );
      T_not_null( ctx->buffer );
    text: |
      The partition shall have at least one buffer in use.
  - name: 'No'
    test-code: |
      ctx->buffer = NULL;
    text: |
      The partition shall have no buffer in use.
  test-epilogue: null
  test-prologue: |
    rtems_status_code sc;
rationale: null
references: []
requirement-type: functional
skip-reasons: {}
test-action: |
  ctx->status = rtems_partition_delete( ctx->id );
test-brief: null
test-cleanup: |
  rtems_status_code sc;

  if ( ctx->buffer != NULL ) {
    sc = rtems_partition_return_buffer( ctx->id_value, ctx->buffer );
    T_rsc_success( sc );
  }

  if ( ctx->id_value != 0xffffffff ) {
    sc = rtems_partition_delete( ctx->id_value );
    T_rsc_success( sc );
  }
test-context:
- brief: null
  description: null
  member: rtems_status_code status
- brief: null
  description: null
  member: rtems_id id
- brief: null
  description: null
  member: rtems_id id_value
- brief: null
  description: null
  member: void *buffer
test-context-support: null
test-description: null
test-header: null
test-includes:
- rtems.h
test-local-includes: []
test-prepare: |
  rtems_status_code sc;

  sc = rtems_partition_create(
    PART_NAME,
    buffers,
    sizeof( buffers ),
    sizeof( buffers[ 0 ] ),
    RTEMS_DEFAULT_ATTRIBUTES,
    &ctx->id_value
  );
  T_rsc_success( sc );
test-setup: null
test-stop: null
test-support: |
  #define PART_NAME rtems_build_name( 'N', 'A', 'M', 'E' )

  #define BUFFER_COUNT 1

  #define BUFFER_SIZE ( 2 * sizeof( void * ) )

  static RTEMS_ALIGNED( RTEMS_PARTITION_ALIGNMENT ) uint8_t
    buffers[ BUFFER_COUNT ][ BUFFER_SIZE ];
test-target: testsuites/validation/tc-part-delete.c
test-teardown: null
text: ${.:text-template}
transition-map:
- enabled-by: true
  post-conditions:
    Status: Ok
  pre-conditions:
    Id:
    - Id
    InUse:
    - 'No'
- enabled-by: true
  post-conditions:
    Status: InvId
  pre-conditions:
    Id:
    - Invalid
    InUse: all
- enabled-by: true
  post-conditions:
    Status: InUse
  pre-conditions:
    Id:
    - Id
    InUse:
    - 'Yes'
type: requirement