summaryrefslogtreecommitdiffstats
path: root/spec/score/sem/req/seize-try.yml
diff options
context:
space:
mode:
Diffstat (limited to 'spec/score/sem/req/seize-try.yml')
-rw-r--r--spec/score/sem/req/seize-try.yml134
1 files changed, 134 insertions, 0 deletions
diff --git a/spec/score/sem/req/seize-try.yml b/spec/score/sem/req/seize-try.yml
new file mode 100644
index 00000000..724a0003
--- /dev/null
+++ b/spec/score/sem/req/seize-try.yml
@@ -0,0 +1,134 @@
+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
+functional-type: action
+links: []
+post-conditions:
+- name: Status
+ states:
+ - name: Ok
+ test-code: |
+ T_eq_int( ctx->status, Status( ctx, STATUS_SUCCESSFUL ) );
+ text: |
+ The return status of the directive call shall be derived from
+ ${../../status/if/successful:/name}.
+ - name: Unsat
+ test-code: |
+ T_eq_int( ctx->status, Status( ctx, STATUS_UNSATISFIED ) );
+ text: |
+ The return status of the directive call shall be derived from
+ ${../../status/if/unsatisfied:/name}.
+ test-epilogue: null
+ test-prologue: null
+- name: Count
+ states:
+ - name: Nop
+ test-code: |
+ T_eq_u32( ctx->count_after, ctx->count_before );
+ text: |
+ The count of the semaphore shall not be modified.
+ - name: MinusOne
+ test-code: |
+ T_eq_u32( ctx->count_after, ctx->count_before - 1 );
+ text: |
+ The count of the semaphore shall be decremented by one.
+ test-epilogue: null
+ test-prologue: null
+pre-conditions:
+- name: Count
+ states:
+ - name: Zero
+ test-code: |
+ ctx->count_before = 0;
+ text: |
+ The count of the semaphore shall be zero.
+ - name: Positive
+ test-code: |
+ ctx->count_before = 1;
+ text: |
+ The count of the semaphore shall be greater than zero.
+ test-epilogue: null
+ test-prologue: null
+rationale: null
+references: []
+requirement-type: functional
+skip-reasons: {}
+test-action: |
+ ( *ctx->set_count )( ctx->tq_ctx, ctx->count_before );
+ ctx->status = TQEnqueue( ctx->tq_ctx, TQ_NO_WAIT );
+ ctx->count_after = ( *ctx->get_count )( ctx->tq_ctx );
+test-brief: null
+test-cleanup: null
+test-context:
+- brief: |
+ This member specifies the semaphore count before the directive call.
+ description: null
+ member: |
+ uint32_t count_before
+- brief: |
+ This member contains the return status of the directive call.
+ description: null
+ member: |
+ Status_Control status
+- brief: |
+ This member contains the semaphore count after the directive call.
+ description: null
+ member: |
+ uint32_t count_after
+test-context-support: null
+test-description: null
+test-header:
+ code: null
+ includes: []
+ local-includes:
+ - tx-thread-queue.h
+ run-params:
+ - description: |
+ is the thread queue context.
+ dir: inout
+ name: tq_ctx
+ specifier: TQContext *${.:name}
+ - description: |
+ is the semaphore get count handler.
+ dir: null
+ name: get_count
+ specifier: uint32_t ( *${.:name} )( TQContext * )
+ - description: |
+ is the semaphore set count handler.
+ dir: null
+ name: set_count
+ specifier: void ( *${.:name} )( TQContext *, uint32_t )
+ target: testsuites/validation/tr-sem-seize-try.h
+test-includes: []
+test-local-includes:
+- tr-sem-seize-try.h
+test-prepare: null
+test-setup: null
+test-stop: null
+test-support: |
+ typedef ScoreSemReqSeizeTry_Context Context;
+
+ static Status_Control Status( const Context *ctx, Status_Control status )
+ {
+ return TQConvertStatus( ctx->tq_ctx, status );
+ }
+test-target: testsuites/validation/tr-sem-seize-try.c
+test-teardown: null
+text: ${.:text-template}
+transition-map:
+- enabled-by: true
+ post-conditions:
+ Status: Ok
+ Count: MinusOne
+ pre-conditions:
+ Count:
+ - Positive
+- enabled-by: true
+ post-conditions:
+ Status: Unsat
+ Count: Nop
+ pre-conditions:
+ Count:
+ - Zero
+type: requirement