xref: /third_party/unity/extras/bdd/test/test_bdd.c (revision 35375f98)
135375f98Sopenharmony_ci/* ==========================================
235375f98Sopenharmony_ci *  Unity Project - A Test Framework for C
335375f98Sopenharmony_ci *  Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
435375f98Sopenharmony_ci *  [Released under MIT License. Please refer to license.txt for details]
535375f98Sopenharmony_ci * ========================================== */
635375f98Sopenharmony_ci
735375f98Sopenharmony_ci#include "unity.h"
835375f98Sopenharmony_ci#include "unity_bdd.h"
935375f98Sopenharmony_ci
1035375f98Sopenharmony_civoid test_bdd_logic_test(void) {
1135375f98Sopenharmony_ci    GIVEN("a valid statement is passed")
1235375f98Sopenharmony_ci    {
1335375f98Sopenharmony_ci        // Set up the context
1435375f98Sopenharmony_ci        bool givenExecuted = true;
1535375f98Sopenharmony_ci
1635375f98Sopenharmony_ci        WHEN("a statement is true")
1735375f98Sopenharmony_ci        {
1835375f98Sopenharmony_ci            // Perform the login action
1935375f98Sopenharmony_ci            bool whenExecuted = true;
2035375f98Sopenharmony_ci
2135375f98Sopenharmony_ci            THEN("we validate everything was worked")
2235375f98Sopenharmony_ci            {
2335375f98Sopenharmony_ci                // Check the expected outcome
2435375f98Sopenharmony_ci                bool thenExecuted = true;
2535375f98Sopenharmony_ci
2635375f98Sopenharmony_ci                TEST_ASSERT_TRUE(givenExecuted);
2735375f98Sopenharmony_ci                TEST_ASSERT_TRUE(whenExecuted);
2835375f98Sopenharmony_ci                TEST_ASSERT_TRUE(thenExecuted);
2935375f98Sopenharmony_ci            }
3035375f98Sopenharmony_ci        }
3135375f98Sopenharmony_ci    }
3235375f98Sopenharmony_ci} // end of case
3335375f98Sopenharmony_ci
3435375f98Sopenharmony_civoid test_bdd_user_account(void) {
3535375f98Sopenharmony_ci    GIVEN("a user's account with sufficient balance")
3635375f98Sopenharmony_ci    {
3735375f98Sopenharmony_ci        // Set up the context
3835375f98Sopenharmony_ci        float accountBalance = 500.0;
3935375f98Sopenharmony_ci        float withdrawalAmount = 200.0;
4035375f98Sopenharmony_ci
4135375f98Sopenharmony_ci        WHEN("the user requests a withdrawal of $200")
4235375f98Sopenharmony_ci        {
4335375f98Sopenharmony_ci            // Perform the withdrawal action
4435375f98Sopenharmony_ci            if (accountBalance >= withdrawalAmount)
4535375f98Sopenharmony_ci            {
4635375f98Sopenharmony_ci                accountBalance -= withdrawalAmount;
4735375f98Sopenharmony_ci            } // end if
4835375f98Sopenharmony_ci            THEN("the withdrawal amount should be deducted from the account balance")
4935375f98Sopenharmony_ci            {
5035375f98Sopenharmony_ci                // Check the expected outcome
5135375f98Sopenharmony_ci
5235375f98Sopenharmony_ci                // Simulate the scenario
5335375f98Sopenharmony_ci                float compareBalance = 500.0;
5435375f98Sopenharmony_ci                TEST_ASSERT_LESS_THAN_FLOAT(accountBalance, compareBalance);
5535375f98Sopenharmony_ci            }
5635375f98Sopenharmony_ci        }
5735375f98Sopenharmony_ci    }
5835375f98Sopenharmony_ci} // end of case
5935375f98Sopenharmony_ci
6035375f98Sopenharmony_civoid test_bdd_empty_cart(void) {
6135375f98Sopenharmony_ci    GIVEN("a user with an empty shopping cart")
6235375f98Sopenharmony_ci    {
6335375f98Sopenharmony_ci        // Set up the context
6435375f98Sopenharmony_ci        int cartItemCount = 0;
6535375f98Sopenharmony_ci
6635375f98Sopenharmony_ci        WHEN("the user adds a product to the cart")
6735375f98Sopenharmony_ci        {
6835375f98Sopenharmony_ci            // Perform the action of adding a product
6935375f98Sopenharmony_ci
7035375f98Sopenharmony_ci            THEN("the cart item count should increase by 1")
7135375f98Sopenharmony_ci            {
7235375f98Sopenharmony_ci                // Check the expected outcome
7335375f98Sopenharmony_ci                cartItemCount++;
7435375f98Sopenharmony_ci
7535375f98Sopenharmony_ci                TEST_ASSERT_EQUAL_INT(cartItemCount, 1);
7635375f98Sopenharmony_ci            }
7735375f98Sopenharmony_ci        }
7835375f98Sopenharmony_ci    }
7935375f98Sopenharmony_ci} // end of case
8035375f98Sopenharmony_ci
8135375f98Sopenharmony_civoid test_bdd_valid_login(void) {
8235375f98Sopenharmony_ci    GIVEN("a registered user with valid credentials")
8335375f98Sopenharmony_ci    {
8435375f98Sopenharmony_ci        // Set up the context
8535375f98Sopenharmony_ci        const char* validUsername = "user123";
8635375f98Sopenharmony_ci        const char* validPassword = "pass456";
8735375f98Sopenharmony_ci
8835375f98Sopenharmony_ci        WHEN("the user provides correct username and password")
8935375f98Sopenharmony_ci        {
9035375f98Sopenharmony_ci            // Perform the action of user login
9135375f98Sopenharmony_ci            const char* inputUsername = "user123";
9235375f98Sopenharmony_ci            const char* inputPassword = "pass456";
9335375f98Sopenharmony_ci
9435375f98Sopenharmony_ci            THEN("the login should be successful")
9535375f98Sopenharmony_ci            {
9635375f98Sopenharmony_ci                // Check the expected outcome
9735375f98Sopenharmony_ci                // Simulate login validation
9835375f98Sopenharmony_ci                TEST_ASSERT_EQUAL_STRING(inputUsername, validUsername);
9935375f98Sopenharmony_ci                TEST_ASSERT_EQUAL_STRING(inputPassword, validPassword);
10035375f98Sopenharmony_ci            }
10135375f98Sopenharmony_ci        }
10235375f98Sopenharmony_ci
10335375f98Sopenharmony_ci        WHEN("the user provides incorrect password")
10435375f98Sopenharmony_ci        {
10535375f98Sopenharmony_ci            // Perform the action of user login
10635375f98Sopenharmony_ci            const char* inputUsername = "user123";
10735375f98Sopenharmony_ci            const char* inputPassword = "wrongpass";
10835375f98Sopenharmony_ci
10935375f98Sopenharmony_ci            THEN("the login should fail with an error message")
11035375f98Sopenharmony_ci            {
11135375f98Sopenharmony_ci                // Check the expected outcome
11235375f98Sopenharmony_ci                // Simulate login validation
11335375f98Sopenharmony_ci                TEST_ASSERT_EQUAL_STRING(inputUsername, validUsername);
11435375f98Sopenharmony_ci                // TEST_ASSERT_NOT_EQUAL_STRING(inputPassword, validPassword);
11535375f98Sopenharmony_ci            }
11635375f98Sopenharmony_ci        }
11735375f98Sopenharmony_ci    }
11835375f98Sopenharmony_ci} // end of case
11935375f98Sopenharmony_ci
12035375f98Sopenharmony_ciint main(void)
12135375f98Sopenharmony_ci{
12235375f98Sopenharmony_ci    UnityBegin("test_bdd.c");
12335375f98Sopenharmony_ci    RUN_TEST(test_bdd_logic_test);
12435375f98Sopenharmony_ci    RUN_TEST(test_bdd_user_account);
12535375f98Sopenharmony_ci    RUN_TEST(test_bdd_empty_cart);
12635375f98Sopenharmony_ci    RUN_TEST(test_bdd_valid_login);
12735375f98Sopenharmony_ci    return UnityEnd();
12835375f98Sopenharmony_ci}
129