Files
uDCCD/firmware/tests/ut_logic/ut_user_force.c
2024-03-12 21:22:26 +02:00

420 lines
10 KiB
C

#include "ut_user_force.h"
#include "..\..\src\logic\user_force.h"
static int ut_user_force_btn(uint8_t prev_force, uint8_t up_act, uint8_t down_act, uint8_t delta, uint8_t exp_out)
{
uint8_t out = user_force_btn(prev_force, up_act, down_act, delta);
printf("Prev-Force:%d Up-act:%d Down-act:%d Delta:%d\n", prev_force, up_act, down_act, delta);
printf("Output:%d Expected:%d\n", out, exp_out);
if(out==exp_out)
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_user_force_btn_test(void)
{
printf("******************************************************\n");
printf("uint8_t user_force_btn(uint8_t prev_force, uint8_t up_act, uint8_t down_act, uint8_t delta)\n");
int test_res;
int pass = 1;
uint8_t prev_force;
uint8_t up_act;
uint8_t down_act;
uint8_t delta;
uint8_t exp_out;
// No change
prev_force = 0;
up_act = 0;
down_act = 0;
delta = 5;
exp_out = 0;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = USER_FORCE_MIN_PERCENT-1;
up_act = 0;
down_act = 0;
delta = 5;
exp_out = 0;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 50;
up_act = 0;
down_act = 0;
delta = 5;
exp_out = 50;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = USER_FORCE_MAX_PERCENT+1;
up_act = 0;
down_act = 0;
delta = 5;
exp_out = 100;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 100;
up_act = 0;
down_act = 0;
delta = 5;
exp_out = 100;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
// Start 0
prev_force = 0;
up_act = 1;
down_act = 0;
delta = 5;
exp_out = USER_FORCE_MIN_PERCENT;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 0;
up_act = 0;
down_act = 1;
delta = 5;
exp_out = 0;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 0;
up_act = 1;
down_act = 1;
delta = 5;
exp_out = 0;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 0;
up_act = 1;
down_act = 0;
delta = USER_FORCE_MIN_PERCENT+1;
exp_out = USER_FORCE_MIN_PERCENT+1;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
// Start 100
prev_force = 100;
up_act = 1;
down_act = 0;
delta = 5;
exp_out = 100;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 100;
up_act = 0;
down_act = 1;
delta = 5;
exp_out = USER_FORCE_MAX_PERCENT;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 100;
up_act = 1;
down_act = 1;
delta = 5;
exp_out = USER_FORCE_MAX_PERCENT;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 100;
up_act = 0;
down_act = 1;
delta = 100-USER_FORCE_MAX_PERCENT+1;
exp_out = USER_FORCE_MAX_PERCENT-1;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
// Start 50
prev_force = 50;
up_act = 1;
down_act = 0;
delta = 5;
exp_out = 55;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 50;
up_act = 0;
down_act = 1;
delta = 5;
exp_out = 45;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 50;
up_act = 1;
down_act = 1;
delta = 5;
exp_out = 45;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 50;
up_act = 1;
down_act = 0;
delta = 10;
exp_out = 60;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 50;
up_act = 0;
down_act = 1;
delta = 10;
exp_out = 40;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
// Start MIN_PERCENT+1
prev_force = USER_FORCE_MIN_PERCENT+1;
up_act = 1;
down_act = 0;
delta = 5;
exp_out = prev_force+delta;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = USER_FORCE_MIN_PERCENT+1;
up_act = 0;
down_act = 1;
delta = 5;
exp_out = 0;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = USER_FORCE_MIN_PERCENT+1;
up_act = 1;
down_act = 1;
delta = 5;
exp_out = 0;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
// Start MAX_PERCENT-1
prev_force = USER_FORCE_MAX_PERCENT-1;
up_act = 1;
down_act = 0;
delta = 5;
exp_out = 100;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = USER_FORCE_MAX_PERCENT-1;
up_act = 0;
down_act = 1;
delta = 5;
exp_out = prev_force-delta;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = USER_FORCE_MAX_PERCENT-1;
up_act = 1;
down_act = 1;
delta = 5;
exp_out = prev_force-delta;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
// Up down seq
prev_force = 0;
up_act = 1;
down_act = 0;
delta = 20;
exp_out = 20;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 20;
up_act = 1;
down_act = 0;
delta = 20;
exp_out = 40;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 40;
up_act = 1;
down_act = 0;
delta = 20;
exp_out = 60;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 60;
up_act = 1;
down_act = 0;
delta = 20;
exp_out = 80;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 80;
up_act = 1;
down_act = 0;
delta = 20;
exp_out = 100;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 100;
up_act = 1;
down_act = 0;
delta = 20;
exp_out = 100;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 100;
up_act = 0;
down_act = 1;
delta = 20;
exp_out = 80;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 80;
up_act = 0;
down_act = 1;
delta = 20;
exp_out = 60;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 60;
up_act = 0;
down_act = 1;
delta = 20;
exp_out = 40;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 40;
up_act = 0;
down_act = 1;
delta = 20;
exp_out = 20;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 20;
up_act = 0;
down_act = 1;
delta = 20;
exp_out = 0;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
prev_force = 0;
up_act = 0;
down_act = 1;
delta = 20;
exp_out = 0;
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
if(!test_res) pass = 0;
return pass;
}
static int ut_user_force_pot(uint8_t prev_force, uint8_t pot, uint8_t hyst, uint8_t exp_out)
{
uint8_t out = user_force_pot(prev_force, pot, hyst);
printf("Prev-Force:%d Pot-percent:%d Hysteresis:%d \n", prev_force, pot, hyst);
printf("Output:%d Expected:%d\n", out, exp_out);
if(out==exp_out)
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_user_force_pot_test(void)
{
printf("******************************************************\n");
printf("uint8_t user_force_pot(uint8_t prev_force, uint8_t pot, uint8_t hyst)\n");
int test_res;
int pass = 1;
uint8_t prev_force;
uint8_t pot;
uint8_t hyst;
uint8_t exp_out;
prev_force = 50;
pot = 0;
hyst = 10;
exp_out = 0;
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
if(!test_res) pass = 0;
prev_force = 50;
pot = USER_FORCE_MIN_PERCENT-1;
hyst = 10;
exp_out = 0;
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
if(!test_res) pass = 0;
prev_force = 50;
pot = USER_FORCE_MIN_PERCENT;
hyst = 10;
exp_out = USER_FORCE_MIN_PERCENT;
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
if(!test_res) pass = 0;
prev_force = 50;
pot = 50;
hyst = 10;
exp_out = 50;
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
if(!test_res) pass = 0;
prev_force = 50;
pot = USER_FORCE_MAX_PERCENT;
hyst = 10;
exp_out = USER_FORCE_MAX_PERCENT;
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
if(!test_res) pass = 0;
prev_force = 50;
pot = USER_FORCE_MAX_PERCENT+1;
hyst = 10;
exp_out = 100;
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
if(!test_res) pass = 0;
prev_force = 50;
pot = 100;
hyst = 10;
exp_out = 100;
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
if(!test_res) pass = 0;
return pass;
}