11d3bd1e5SMatthias Ringwald #include "CppUTest/TestHarness.h" 21d3bd1e5SMatthias Ringwald #include "CppUTest/CommandLineTestRunner.h" 31d3bd1e5SMatthias Ringwald 41d3bd1e5SMatthias Ringwald #include "classic/hfp.h" 51d3bd1e5SMatthias Ringwald 61d3bd1e5SMatthias Ringwald #include "mock.h" 71d3bd1e5SMatthias Ringwald 81d3bd1e5SMatthias Ringwald TEST_GROUP(HFPLinkSettings){ 91d3bd1e5SMatthias Ringwald void setup(void){ 101d3bd1e5SMatthias Ringwald hfp_set_sco_packet_types(SCO_PACKET_TYPES_ALL); 111d3bd1e5SMatthias Ringwald } 121d3bd1e5SMatthias Ringwald void teardown(void){ 131d3bd1e5SMatthias Ringwald } 141d3bd1e5SMatthias Ringwald }; 151d3bd1e5SMatthias Ringwald 161d3bd1e5SMatthias Ringwald // initial setting 171d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, NONE){ 18*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_NONE, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, SCO_PACKET_TYPES_SCO, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_MSBC)); 191d3bd1e5SMatthias Ringwald } 201d3bd1e5SMatthias Ringwald 211d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, D1){ 22*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_SCO, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD)); 23*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_SCO, true, HFP_CODEC_CVSD)); 241d3bd1e5SMatthias Ringwald } 251d3bd1e5SMatthias Ringwald 261d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S3){ 27*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, false, HFP_CODEC_CVSD)); 281d3bd1e5SMatthias Ringwald } 291d3bd1e5SMatthias Ringwald 301d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S4){ 31*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_S4, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD)); 321d3bd1e5SMatthias Ringwald } 331d3bd1e5SMatthias Ringwald 341d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T2){ 35*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_T2, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_MSBC)); 361d3bd1e5SMatthias Ringwald } 371d3bd1e5SMatthias Ringwald 381d3bd1e5SMatthias Ringwald // regular transition 391d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T2_T1){ 40*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_T1, hfp_next_link_setting(HFP_LINK_SETTINGS_T2, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_MSBC)); 411d3bd1e5SMatthias Ringwald } 421d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T1_NONE){ 43*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_NONE, hfp_next_link_setting(HFP_LINK_SETTINGS_T1, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_MSBC)); 441d3bd1e5SMatthias Ringwald } 451d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S4_S3){ 46*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_S4, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD)); 471d3bd1e5SMatthias Ringwald } 481d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S3_S2){ 49*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_S2, hfp_next_link_setting(HFP_LINK_SETTINGS_S3, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD)); 501d3bd1e5SMatthias Ringwald } 511d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S2_S1){ 52*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_S1, hfp_next_link_setting(HFP_LINK_SETTINGS_S2, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD)); 531d3bd1e5SMatthias Ringwald } 541d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, D1_D0){ 55*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, SCO_PACKET_TYPES_SCO, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD)); 56*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_SCO, true, HFP_CODEC_CVSD)); 571d3bd1e5SMatthias Ringwald } 581d3bd1e5SMatthias Ringwald 591d3bd1e5SMatthias Ringwald // initial settings based on packet types 601d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, HV1){ 611d3bd1e5SMatthias Ringwald hfp_set_sco_packet_types(SCO_PACKET_TYPES_HV1); 62*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_SCO, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD)); 63*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_SCO, true, HFP_CODEC_CVSD)); 641d3bd1e5SMatthias Ringwald } 651d3bd1e5SMatthias Ringwald 661d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, HV3){ 671d3bd1e5SMatthias Ringwald hfp_set_sco_packet_types(SCO_PACKET_TYPES_HV3); 68*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, false, HFP_CODEC_CVSD)); 691d3bd1e5SMatthias Ringwald } 701d3bd1e5SMatthias Ringwald 711d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, EV3){ 721d3bd1e5SMatthias Ringwald hfp_set_sco_packet_types(SCO_PACKET_TYPES_EV3); 73*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_S1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD)); 74*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_T1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_MSBC)); 751d3bd1e5SMatthias Ringwald } 761d3bd1e5SMatthias Ringwald 771d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, 2EV3){ 781d3bd1e5SMatthias Ringwald hfp_set_sco_packet_types(SCO_PACKET_TYPES_2EV3); 79*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, false, HFP_CODEC_CVSD)); 80*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_S4, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD)); 81*0b3a3c36SMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_T2, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_MSBC)); 821d3bd1e5SMatthias Ringwald } 831d3bd1e5SMatthias Ringwald 84937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_CVSD_SCO_NOSC){ 85937f816cSMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_safe_settings_for_context(false, HFP_CODEC_CVSD, false)); 86937f816cSMatthias Ringwald } 87937f816cSMatthias Ringwald 88937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_CVSD_eSCO_NOSC){ 89937f816cSMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_S1, hfp_safe_settings_for_context(true, HFP_CODEC_CVSD, false)); 90937f816cSMatthias Ringwald } 91937f816cSMatthias Ringwald 92937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_CVSD_eSCO_SC){ 93937f816cSMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_S4, hfp_safe_settings_for_context(true, HFP_CODEC_CVSD, true)); 94937f816cSMatthias Ringwald } 95937f816cSMatthias Ringwald 96937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_MSBC_eSCO_NOSC){ 97937f816cSMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_T1, hfp_safe_settings_for_context(true, HFP_CODEC_MSBC, false)); 98937f816cSMatthias Ringwald } 99937f816cSMatthias Ringwald 100937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_MSBC_eSCO_SC){ 101937f816cSMatthias Ringwald CHECK_EQUAL(HFP_LINK_SETTINGS_T2, hfp_safe_settings_for_context(true, HFP_CODEC_MSBC, true)); 102937f816cSMatthias Ringwald } 1031d3bd1e5SMatthias Ringwald 1041d3bd1e5SMatthias Ringwald int main (int argc, const char * argv[]){ 1051d3bd1e5SMatthias Ringwald return CommandLineTestRunner::RunAllTests(argc, argv); 1061d3bd1e5SMatthias Ringwald } 107