mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-01-03 23:47:08 +00:00
95 lines
3.3 KiB
C++
95 lines
3.3 KiB
C++
#include "CppUTest/TestHarness.h"
|
|
#include "CppUTest/CommandLineTestRunner.h"
|
|
|
|
#include "btstack_debug.h"
|
|
#include "classic/hfp.h"
|
|
|
|
// Test
|
|
static uint8_t test_data[HFP_H2_SYNC_FRAME_SIZE];
|
|
static uint8_t test_valid_sbc_frame[HFP_H2_SYNC_FRAME_SIZE];
|
|
static uint8_t test_invalid_sbc_frame[HFP_H2_SYNC_FRAME_SIZE];
|
|
static uint8_t test_invalid_frame[HFP_H2_SYNC_FRAME_SIZE];
|
|
static hfp_h2_sync_t test_hfp_h2_sync;
|
|
static uint8_t test_num_good_frames;
|
|
static uint8_t test_num_bad_frames;
|
|
|
|
static bool test_hfp_h2_sync_callback(bool bad_frame, const uint8_t * frame_data, uint16_t frame_len){
|
|
btstack_assert(frame_len == HFP_H2_SYNC_FRAME_SIZE);
|
|
if (bad_frame){
|
|
test_num_bad_frames++;
|
|
return false;
|
|
} else {
|
|
// mSBC frame ok <=> sync word = 0xAD
|
|
if (frame_data[2] == 0xAD) {
|
|
test_num_good_frames++;
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
TEST_GROUP(HFP_H2_SYNC){
|
|
void setup(void){
|
|
test_num_good_frames = 0;
|
|
test_num_bad_frames = 0;
|
|
test_valid_sbc_frame[0] = 0x01;
|
|
test_valid_sbc_frame[1] = 0x08;
|
|
test_valid_sbc_frame[2] = 0xAD;
|
|
test_invalid_sbc_frame[0] = 0x01;
|
|
test_invalid_sbc_frame[1] = 0x08;
|
|
test_invalid_sbc_frame[2] = 0xFF;
|
|
hfp_h2_sync_init(&test_hfp_h2_sync, &test_hfp_h2_sync_callback);
|
|
}
|
|
void teardown(void){
|
|
}
|
|
};
|
|
|
|
// initial setting
|
|
TEST(HFP_H2_SYNC, ValidSBCFrame){
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, false, test_valid_sbc_frame, sizeof(test_valid_sbc_frame));
|
|
CHECK_EQUAL(1, test_num_good_frames);
|
|
}
|
|
|
|
TEST(HFP_H2_SYNC, ValidSBCFramefter59){
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, false, test_invalid_frame, sizeof(test_invalid_frame)-1);
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, false, test_valid_sbc_frame, sizeof(test_valid_sbc_frame));
|
|
CHECK_EQUAL(1, test_num_good_frames);
|
|
}
|
|
|
|
TEST(HFP_H2_SYNC, ValidSBCFrameAfter2){
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, false, test_invalid_frame, 2);
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, false, test_valid_sbc_frame, sizeof(test_valid_sbc_frame));
|
|
CHECK_EQUAL(1, test_num_good_frames);
|
|
CHECK_EQUAL(2, test_hfp_h2_sync.dropped_bytes);
|
|
}
|
|
|
|
TEST(HFP_H2_SYNC, BadAndGoodFrame){
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, false, test_invalid_frame, sizeof(test_invalid_frame));
|
|
CHECK_EQUAL(0, test_num_good_frames);
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, false, test_valid_sbc_frame, sizeof(test_valid_sbc_frame));
|
|
CHECK_EQUAL(1, test_num_bad_frames);
|
|
CHECK_EQUAL(1, test_num_good_frames);
|
|
}
|
|
|
|
TEST(HFP_H2_SYNC, BadFrameFlagA){
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, false, test_valid_sbc_frame, sizeof(test_data) - 1);
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, true, test_valid_sbc_frame, 1);
|
|
CHECK_EQUAL(1, test_num_bad_frames);
|
|
}
|
|
|
|
TEST(HFP_H2_SYNC, BadFrameFlagB){
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, true, test_valid_sbc_frame, sizeof(test_valid_sbc_frame));
|
|
CHECK_EQUAL(1, test_num_bad_frames);
|
|
}
|
|
|
|
TEST(HFP_H2_SYNC, InvalidSBCFrame){
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, false, test_invalid_sbc_frame, sizeof(test_invalid_sbc_frame));
|
|
hfp_h2_sync_process(&test_hfp_h2_sync, false, test_invalid_frame, 2);
|
|
CHECK_EQUAL(1, test_num_bad_frames);
|
|
CHECK_EQUAL(0, test_num_good_frames);
|
|
}
|
|
|
|
int main (int argc, const char * argv[]){
|
|
return CommandLineTestRunner::RunAllTests(argc, argv);
|
|
}
|