mirror of https://github.com/nirenjan/libx52.git
186 lines
3.9 KiB
Bash
186 lines
3.9 KiB
Bash
#!/bin/bash
|
|
# Common infrastructure for the test cases
|
|
|
|
# Set up exit status codes
|
|
EXIT_SUCCESS=0
|
|
EXIT_SKIP=77
|
|
EXIT_HARD_ERROR=99
|
|
EXIT_FAILURE=1
|
|
|
|
# Set up some command sequences
|
|
X52_LED_COMMAND_INDEX='00b8'
|
|
X52_LED_FIRE_ON='0101'
|
|
X52_LED_FIRE_OFF='0100'
|
|
X52_LED_A_RED_ON='0201'
|
|
X52_LED_A_RED_OFF='0200'
|
|
X52_LED_A_GREEN_ON='0301'
|
|
X52_LED_A_GREEN_OFF='0300'
|
|
X52_LED_B_RED_ON='0401'
|
|
X52_LED_B_RED_OFF='0400'
|
|
X52_LED_B_GREEN_ON='0501'
|
|
X52_LED_B_GREEN_OFF='0500'
|
|
X52_LED_D_RED_ON='0601'
|
|
X52_LED_D_RED_OFF='0600'
|
|
X52_LED_D_GREEN_ON='0701'
|
|
X52_LED_D_GREEN_OFF='0700'
|
|
X52_LED_E_RED_ON='0801'
|
|
X52_LED_E_RED_OFF='0800'
|
|
X52_LED_E_GREEN_ON='0901'
|
|
X52_LED_E_GREEN_OFF='0900'
|
|
X52_LED_T1_RED_ON='0a01'
|
|
X52_LED_T1_RED_OFF='0a00'
|
|
X52_LED_T1_GREEN_ON='0b01'
|
|
X52_LED_T1_GREEN_OFF='0b00'
|
|
X52_LED_T2_RED_ON='0c01'
|
|
X52_LED_T2_RED_OFF='0c00'
|
|
X52_LED_T2_GREEN_ON='0d01'
|
|
X52_LED_T2_GREEN_OFF='0d00'
|
|
X52_LED_T3_RED_ON='0e01'
|
|
X52_LED_T3_RED_OFF='0e00'
|
|
X52_LED_T3_GREEN_ON='0f01'
|
|
X52_LED_T3_GREEN_OFF='0f00'
|
|
X52_LED_POV_RED_ON='1001'
|
|
X52_LED_POV_RED_OFF='1000'
|
|
X52_LED_POV_GREEN_ON='1101'
|
|
X52_LED_POV_GREEN_OFF='1100'
|
|
X52_LED_CLUTCH_RED_ON='1201'
|
|
X52_LED_CLUTCH_RED_OFF='1200'
|
|
X52_LED_CLUTCH_GREEN_ON='1301'
|
|
X52_LED_CLUTCH_GREEN_OFF='1300'
|
|
X52_LED_THROTTLE_ON='1401'
|
|
X52_LED_THROTTLE_OFF='1400'
|
|
|
|
X52_MFD_BRIGHTNESS_INDEX='00b1'
|
|
X52_LED_BRIGHTNESS_INDEX='00b2'
|
|
|
|
X52_BLINK_INDICATOR_INDEX='00b4'
|
|
X52_SHIFT_INDICATOR_INDEX='00fd'
|
|
X52_INDICATOR_STATE_ON='0051'
|
|
X52_INDICATOR_STATE_OFF='0050'
|
|
|
|
X52_CLOCK_1_INDEX='00c0'
|
|
X52_CLOCK_2_INDEX='00c1'
|
|
X52_CLOCK_3_INDEX='00c2'
|
|
X52_CLOCK_DATE_INDEX='00c4'
|
|
X52_CLOCK_YEAR_INDEX='00c8'
|
|
|
|
find_programs()
|
|
{
|
|
# Tests and distcheck do not work on OSX, skip the tests
|
|
if [[ `uname -s` == [Dd]arwin* ]]
|
|
then
|
|
exit $EXIT_SKIP
|
|
fi
|
|
|
|
# Find the X52cli script
|
|
X52CLI=$(find .. -path '*/cli/x52cli' -executable)
|
|
|
|
if [[ -z "$X52CLI" ]]
|
|
then
|
|
exit $EXIT_HARD_ERROR
|
|
fi
|
|
|
|
# Find the x52test_log_actions program
|
|
X52LOGACT=$(find .. -path '*/libusbx52/x52test_log_actions' -executable)
|
|
if [[ -z "$X52LOGACT" ]]
|
|
then
|
|
exit $EXIT_HARD_ERROR
|
|
fi
|
|
|
|
# Find the x52test_create_device_list program
|
|
X52DEVLIST=$(find .. -path '*/libusbx52/x52test_create_device_list' -executable)
|
|
if [[ -z "$X52DEVLIST" ]]
|
|
then
|
|
exit $EXIT_HARD_ERROR
|
|
fi
|
|
}
|
|
|
|
setup_preload()
|
|
{
|
|
# Find the libusb stub library
|
|
LIBUSB=$(find .. -name 'libusbx52.so.*.*.*' -type f)
|
|
|
|
if [[ -z "$LIBUSB" ]]
|
|
then
|
|
exit $EXIT_HARD_ERROR
|
|
fi
|
|
|
|
export LD_PRELOAD=$(realpath $LIBUSB)
|
|
}
|
|
|
|
setup_test()
|
|
{
|
|
export LIBUSBX52_DEVICE_LIST=$(mktemp)
|
|
EXPECTED_OUTPUT=$(mktemp)
|
|
OBSERVED_OUTPUT=$(mktemp)
|
|
trap "rm -f $EXPECTED_OUTPUT $OBSERVED_OUTPUT $LIBUSBX52_DEVICE_LIST" EXIT
|
|
|
|
$X52DEVLIST 06a3 0762
|
|
|
|
TEST_COUNT=0
|
|
TEST_PASS=0
|
|
TEST_FAIL=0
|
|
}
|
|
|
|
expect_pattern()
|
|
{
|
|
# Save pattern to expected output file
|
|
export LIBUSBX52_OUTPUT_DATA=$EXPECTED_OUTPUT
|
|
$X52LOGACT $@
|
|
|
|
# Save actual API calls to observed output file
|
|
export LIBUSBX52_OUTPUT_DATA=$OBSERVED_OUTPUT
|
|
}
|
|
|
|
verify_output()
|
|
{
|
|
if diff -q $EXPECTED_OUTPUT $OBSERVED_OUTPUT
|
|
then
|
|
echo "PASS: $TEST_ID"
|
|
TEST_PASS=$(($TEST_PASS + 1))
|
|
else
|
|
echo "FAIL: $TEST_ID"
|
|
echo 'Expected:'
|
|
echo '========='
|
|
sed 's/^/\t/' $EXPECTED_OUTPUT
|
|
echo
|
|
echo 'Observed:'
|
|
echo '========='
|
|
sed 's/^/\t/' $OBSERVED_OUTPUT
|
|
TEST_FAIL=$(($TEST_FAIL + 1))
|
|
fi
|
|
|
|
TEST_COUNT=$(($TEST_COUNT + 1))
|
|
}
|
|
|
|
verify_test_suite()
|
|
{
|
|
local sep='--------'
|
|
sep="$sep$sep"
|
|
sep="$sep$sep"
|
|
sep="$sep$sep"
|
|
|
|
echo
|
|
echo $sep
|
|
echo $TEST_SUITE_ID
|
|
echo $sep
|
|
echo -e "Total Tests:\t$TEST_COUNT"
|
|
echo -e "Tests Passed:\t$TEST_PASS"
|
|
echo -e "Tests Failed:\t$TEST_FAIL"
|
|
echo $sep
|
|
echo
|
|
|
|
if [[ "$TEST_FAIL" != 0 ]]
|
|
then
|
|
exit $EXIT_FAILURE
|
|
else
|
|
exit $EXIT_SUCCESS
|
|
fi
|
|
}
|
|
|
|
set -e
|
|
find_programs
|
|
setup_test
|
|
setup_preload
|
|
|