summaryrefslogtreecommitdiffstats
path: root/testsuites/validation
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-12-09 16:25:29 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2022-03-24 11:10:49 +0100
commit14de245d05d6fd86a92d15a62429779a8c1390aa (patch)
tree554d5823b21eed059aefe7a436c2596742646039 /testsuites/validation
parentvalidation: Test thread implementation (diff)
downloadrtems-14de245d05d6fd86a92d15a62429779a8c1390aa.tar.bz2
validation: Test support functions
The test source code is generated from specification items by the "./spec2modules.py" script contained in the git://git.rtems.org/rtems-central.git Git repository. Please read the "How-To" section in the "Software Requirements Engineering" chapter of the RTEMS Software Engineering manual to get more information about the process. Update #3716.
Diffstat (limited to 'testsuites/validation')
-rw-r--r--testsuites/validation/tc-support-is-name-valid.c294
-rw-r--r--testsuites/validation/tc-support.c127
2 files changed, 421 insertions, 0 deletions
diff --git a/testsuites/validation/tc-support-is-name-valid.c b/testsuites/validation/tc-support-is-name-valid.c
new file mode 100644
index 0000000000..589cc4f7f4
--- /dev/null
+++ b/testsuites/validation/tc-support-is-name-valid.c
@@ -0,0 +1,294 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/**
+ * @file
+ *
+ * @ingroup RTEMSTestCaseRtemsSupportReqIsNameValid
+ */
+
+/*
+ * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * This file is part of the RTEMS quality process and was automatically
+ * generated. If you find something that needs to be fixed or
+ * worded better please post a report or patch to an RTEMS mailing list
+ * or raise a bug report:
+ *
+ * https://www.rtems.org/bugs.html
+ *
+ * For information on updating and regenerating please refer to the How-To
+ * section in the Software Requirements Engineering chapter of the
+ * RTEMS Software Engineering manual. The manual is provided as a part of
+ * a release. For development sources please refer to the online
+ * documentation at:
+ *
+ * https://docs.rtems.org
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems.h>
+
+#include <rtems/test.h>
+
+/**
+ * @defgroup RTEMSTestCaseRtemsSupportReqIsNameValid \
+ * spec:/rtems/support/req/is-name-valid
+ *
+ * @ingroup RTEMSTestSuiteTestsuitesValidationNoClock0
+ *
+ * @{
+ */
+
+typedef enum {
+ RtemsSupportReqIsNameValid_Pre_Name_Valid,
+ RtemsSupportReqIsNameValid_Pre_Name_Invalid,
+ RtemsSupportReqIsNameValid_Pre_Name_NA
+} RtemsSupportReqIsNameValid_Pre_Name;
+
+typedef enum {
+ RtemsSupportReqIsNameValid_Post_Result_True,
+ RtemsSupportReqIsNameValid_Post_Result_False,
+ RtemsSupportReqIsNameValid_Post_Result_NA
+} RtemsSupportReqIsNameValid_Post_Result;
+
+typedef struct {
+ uint8_t Skip : 1;
+ uint8_t Pre_Name_NA : 1;
+ uint8_t Post_Result : 2;
+} RtemsSupportReqIsNameValid_Entry;
+
+/**
+ * @brief Test context for spec:/rtems/support/req/is-name-valid test case.
+ */
+typedef struct {
+ /**
+ * @brief This member contains the return value of the rtems_is_name_valid()
+ * call.
+ */
+ bool result;
+
+ /**
+ * @brief This member specifies if the ``name`` parameter value.
+ */
+ rtems_name name;
+
+ struct {
+ /**
+ * @brief This member defines the pre-condition states for the next action.
+ */
+ size_t pcs[ 1 ];
+
+ /**
+ * @brief If this member is true, then the test action loop is executed.
+ */
+ bool in_action_loop;
+
+ /**
+ * @brief This member contains the next transition map index.
+ */
+ size_t index;
+
+ /**
+ * @brief This member contains the current transition map entry.
+ */
+ RtemsSupportReqIsNameValid_Entry entry;
+
+ /**
+ * @brief If this member is true, then the current transition variant
+ * should be skipped.
+ */
+ bool skip;
+ } Map;
+} RtemsSupportReqIsNameValid_Context;
+
+static RtemsSupportReqIsNameValid_Context
+ RtemsSupportReqIsNameValid_Instance;
+
+static const char * const RtemsSupportReqIsNameValid_PreDesc_Name[] = {
+ "Valid",
+ "Invalid",
+ "NA"
+};
+
+static const char * const * const RtemsSupportReqIsNameValid_PreDesc[] = {
+ RtemsSupportReqIsNameValid_PreDesc_Name,
+ NULL
+};
+
+static void RtemsSupportReqIsNameValid_Pre_Name_Prepare(
+ RtemsSupportReqIsNameValid_Context *ctx,
+ RtemsSupportReqIsNameValid_Pre_Name state
+)
+{
+ switch ( state ) {
+ case RtemsSupportReqIsNameValid_Pre_Name_Valid: {
+ /*
+ * While the ``name`` parameter is not equal to zero.
+ */
+ ctx->name = 1;
+ break;
+ }
+
+ case RtemsSupportReqIsNameValid_Pre_Name_Invalid: {
+ /*
+ * While the ``name`` parameter is equal to zero.
+ */
+ ctx->name = 0;
+ break;
+ }
+
+ case RtemsSupportReqIsNameValid_Pre_Name_NA:
+ break;
+ }
+}
+
+static void RtemsSupportReqIsNameValid_Post_Result_Check(
+ RtemsSupportReqIsNameValid_Context *ctx,
+ RtemsSupportReqIsNameValid_Post_Result state
+)
+{
+ switch ( state ) {
+ case RtemsSupportReqIsNameValid_Post_Result_True: {
+ /*
+ * The return value of rtems_is_name_valid() shall be true.
+ */
+ T_true( ctx->result );
+ break;
+ }
+
+ case RtemsSupportReqIsNameValid_Post_Result_False: {
+ /*
+ * The return value of rtems_is_name_valid() shall be false.
+ */
+ T_false( ctx->result );
+ break;
+ }
+
+ case RtemsSupportReqIsNameValid_Post_Result_NA:
+ break;
+ }
+}
+
+static void RtemsSupportReqIsNameValid_Action(
+ RtemsSupportReqIsNameValid_Context *ctx
+)
+{
+ ctx->result = rtems_is_name_valid( ctx->name );
+}
+
+static const RtemsSupportReqIsNameValid_Entry
+RtemsSupportReqIsNameValid_Entries[] = {
+ { 0, 0, RtemsSupportReqIsNameValid_Post_Result_True },
+ { 0, 0, RtemsSupportReqIsNameValid_Post_Result_False }
+};
+
+static const uint8_t
+RtemsSupportReqIsNameValid_Map[] = {
+ 0, 1
+};
+
+static size_t RtemsSupportReqIsNameValid_Scope(
+ void *arg,
+ char *buf,
+ size_t n
+)
+{
+ RtemsSupportReqIsNameValid_Context *ctx;
+
+ ctx = arg;
+
+ if ( ctx->Map.in_action_loop ) {
+ return T_get_scope(
+ RtemsSupportReqIsNameValid_PreDesc,
+ buf,
+ n,
+ ctx->Map.pcs
+ );
+ }
+
+ return 0;
+}
+
+static T_fixture RtemsSupportReqIsNameValid_Fixture = {
+ .setup = NULL,
+ .stop = NULL,
+ .teardown = NULL,
+ .scope = RtemsSupportReqIsNameValid_Scope,
+ .initial_context = &RtemsSupportReqIsNameValid_Instance
+};
+
+static inline RtemsSupportReqIsNameValid_Entry
+RtemsSupportReqIsNameValid_PopEntry( RtemsSupportReqIsNameValid_Context *ctx )
+{
+ size_t index;
+
+ index = ctx->Map.index;
+ ctx->Map.index = index + 1;
+ return RtemsSupportReqIsNameValid_Entries[
+ RtemsSupportReqIsNameValid_Map[ index ]
+ ];
+}
+
+static void RtemsSupportReqIsNameValid_TestVariant(
+ RtemsSupportReqIsNameValid_Context *ctx
+)
+{
+ RtemsSupportReqIsNameValid_Pre_Name_Prepare( ctx, ctx->Map.pcs[ 0 ] );
+ RtemsSupportReqIsNameValid_Action( ctx );
+ RtemsSupportReqIsNameValid_Post_Result_Check(
+ ctx,
+ ctx->Map.entry.Post_Result
+ );
+}
+
+/**
+ * @fn void T_case_body_RtemsSupportReqIsNameValid( void )
+ */
+T_TEST_CASE_FIXTURE(
+ RtemsSupportReqIsNameValid,
+ &RtemsSupportReqIsNameValid_Fixture
+)
+{
+ RtemsSupportReqIsNameValid_Context *ctx;
+
+ ctx = T_fixture_context();
+ ctx->Map.in_action_loop = true;
+ ctx->Map.index = 0;
+
+ for (
+ ctx->Map.pcs[ 0 ] = RtemsSupportReqIsNameValid_Pre_Name_Valid;
+ ctx->Map.pcs[ 0 ] < RtemsSupportReqIsNameValid_Pre_Name_NA;
+ ++ctx->Map.pcs[ 0 ]
+ ) {
+ ctx->Map.entry = RtemsSupportReqIsNameValid_PopEntry( ctx );
+ RtemsSupportReqIsNameValid_TestVariant( ctx );
+ }
+}
+
+/** @} */
diff --git a/testsuites/validation/tc-support.c b/testsuites/validation/tc-support.c
new file mode 100644
index 0000000000..fc13488d79
--- /dev/null
+++ b/testsuites/validation/tc-support.c
@@ -0,0 +1,127 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/**
+ * @file
+ *
+ * @ingroup RTEMSTestCaseRtemsSupportValSupport
+ */
+
+/*
+ * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * This file is part of the RTEMS quality process and was automatically
+ * generated. If you find something that needs to be fixed or
+ * worded better please post a report or patch to an RTEMS mailing list
+ * or raise a bug report:
+ *
+ * https://www.rtems.org/bugs.html
+ *
+ * For information on updating and regenerating please refer to the How-To
+ * section in the Software Requirements Engineering chapter of the
+ * RTEMS Software Engineering manual. The manual is provided as a part of
+ * a release. For development sources please refer to the online
+ * documentation at:
+ *
+ * https://docs.rtems.org
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems.h>
+
+#include <rtems/test.h>
+
+/**
+ * @defgroup RTEMSTestCaseRtemsSupportValSupport \
+ * spec:/rtems/support/val/support
+ *
+ * @ingroup RTEMSTestSuiteTestsuitesValidationNoClock0
+ *
+ * @brief Tests some @ref RTEMSAPIClassicSupport directives.
+ *
+ * This test case performs the following actions:
+ *
+ * - Validates the characters returned by the rtems_name_to_characters()
+ * directive.
+ *
+ * - Check that the first character is equal to 0x01.
+ *
+ * - Check that the second character is equal to 0x02.
+ *
+ * - Check that the third character is equal to 0x03.
+ *
+ * - Check that the fourth character is equal to 0x04.
+ *
+ * @{
+ */
+
+/**
+ * @brief Validates the characters returned by the rtems_name_to_characters()
+ * directive.
+ */
+static void RtemsSupportValSupport_Action_0( void )
+{
+ char c1;
+ char c2;
+ char c3;
+ char c4;
+
+ rtems_name_to_characters( 0x01020304, &c1, &c2, &c3, &c4 );
+
+ /*
+ * Check that the first character is equal to 0x01.
+ */
+ T_step_eq_char( 0, c1, 0x01 );
+
+ /*
+ * Check that the second character is equal to 0x02.
+ */
+ T_step_eq_char( 1, c2, 0x02 );
+
+ /*
+ * Check that the third character is equal to 0x03.
+ */
+ T_step_eq_char( 2, c3, 0x03 );
+
+ /*
+ * Check that the fourth character is equal to 0x04.
+ */
+ T_step_eq_char( 3, c4, 0x04 );
+}
+
+/**
+ * @fn void T_case_body_RtemsSupportValSupport( void )
+ */
+T_TEST_CASE( RtemsSupportValSupport )
+{
+ T_plan( 4 );
+
+ RtemsSupportValSupport_Action_0();
+}
+
+/** @} */