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