xref: /btstack/test/hfp/hfp_link_settings_test.cpp (revision 937f816c5587f062c627e554225cd28a4578e65b)
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){
181d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_NONE, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, false, true, true, HFP_CODEC_MSBC));
191d3bd1e5SMatthias Ringwald }
201d3bd1e5SMatthias Ringwald 
211d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, D1){
221d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, false, true, true, HFP_CODEC_CVSD));
231d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, false, true, HFP_CODEC_CVSD));
241d3bd1e5SMatthias Ringwald }
251d3bd1e5SMatthias Ringwald 
261d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S3){
271d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, false, HFP_CODEC_CVSD));
281d3bd1e5SMatthias Ringwald }
291d3bd1e5SMatthias Ringwald 
301d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S4){
311d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S4, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true, HFP_CODEC_CVSD));
321d3bd1e5SMatthias Ringwald }
331d3bd1e5SMatthias Ringwald 
341d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T2){
351d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T2, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true, HFP_CODEC_MSBC));
361d3bd1e5SMatthias Ringwald }
371d3bd1e5SMatthias Ringwald 
381d3bd1e5SMatthias Ringwald // regular transition
391d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T2_T1){
401d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T1, hfp_next_link_setting(HFP_LINK_SETTINGS_T2, true, true, true, HFP_CODEC_MSBC));
411d3bd1e5SMatthias Ringwald }
421d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T1_NONE){
431d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_NONE, hfp_next_link_setting(HFP_LINK_SETTINGS_T1, true, true, true, HFP_CODEC_MSBC));
441d3bd1e5SMatthias Ringwald }
451d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S4_S3){
461d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_S4, true, true, true, HFP_CODEC_CVSD));
471d3bd1e5SMatthias Ringwald }
481d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S3_S2){
491d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S2, hfp_next_link_setting(HFP_LINK_SETTINGS_S3, true, true, true, HFP_CODEC_CVSD));
501d3bd1e5SMatthias Ringwald }
511d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S2_S1){
521d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S1, hfp_next_link_setting(HFP_LINK_SETTINGS_S2, true, true, true, HFP_CODEC_CVSD));
531d3bd1e5SMatthias Ringwald }
541d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, D1_D0){
551d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, false, true, true, HFP_CODEC_CVSD));
561d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, true, false, 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);
621d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, false, true, true, HFP_CODEC_CVSD));
631d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, false, true, HFP_CODEC_CVSD));
641d3bd1e5SMatthias Ringwald }
651d3bd1e5SMatthias Ringwald 
661d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, HV3){
671d3bd1e5SMatthias Ringwald     hfp_set_sco_packet_types(SCO_PACKET_TYPES_HV3);
681d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, false, HFP_CODEC_CVSD));
691d3bd1e5SMatthias Ringwald }
701d3bd1e5SMatthias Ringwald 
711d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, EV3){
721d3bd1e5SMatthias Ringwald     hfp_set_sco_packet_types(SCO_PACKET_TYPES_EV3);
731d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true, HFP_CODEC_CVSD));
741d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true, HFP_CODEC_MSBC));
751d3bd1e5SMatthias Ringwald }
761d3bd1e5SMatthias Ringwald 
771d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, 2EV3){
781d3bd1e5SMatthias Ringwald     hfp_set_sco_packet_types(SCO_PACKET_TYPES_2EV3);
791d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, false, HFP_CODEC_CVSD));
801d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S4, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true,  HFP_CODEC_CVSD));
811d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T2, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true,  HFP_CODEC_MSBC));
821d3bd1e5SMatthias Ringwald }
831d3bd1e5SMatthias Ringwald 
84*937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_CVSD_SCO_NOSC){
85*937f816cSMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_safe_settings_for_context(false, HFP_CODEC_CVSD, false));
86*937f816cSMatthias Ringwald }
87*937f816cSMatthias Ringwald 
88*937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_CVSD_eSCO_NOSC){
89*937f816cSMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S1, hfp_safe_settings_for_context(true, HFP_CODEC_CVSD, false));
90*937f816cSMatthias Ringwald }
91*937f816cSMatthias Ringwald 
92*937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_CVSD_eSCO_SC){
93*937f816cSMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S4, hfp_safe_settings_for_context(true, HFP_CODEC_CVSD, true));
94*937f816cSMatthias Ringwald }
95*937f816cSMatthias Ringwald 
96*937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_MSBC_eSCO_NOSC){
97*937f816cSMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T1, hfp_safe_settings_for_context(true, HFP_CODEC_MSBC, false));
98*937f816cSMatthias Ringwald }
99*937f816cSMatthias Ringwald 
100*937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_MSBC_eSCO_SC){
101*937f816cSMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T2, hfp_safe_settings_for_context(true, HFP_CODEC_MSBC, true));
102*937f816cSMatthias Ringwald }
1031d3bd1e5SMatthias Ringwald 
1041d3bd1e5SMatthias Ringwald int main (int argc, const char * argv[]){
1051d3bd1e5SMatthias Ringwald     return CommandLineTestRunner::RunAllTests(argc, argv);
1061d3bd1e5SMatthias Ringwald }
107