xref: /btstack/test/hfp/hfp_link_settings_test.cpp (revision 1d3bd1e51ca491d6783233c8d7431c44f06daa5a)
1*1d3bd1e5SMatthias Ringwald #include "CppUTest/TestHarness.h"
2*1d3bd1e5SMatthias Ringwald #include "CppUTest/CommandLineTestRunner.h"
3*1d3bd1e5SMatthias Ringwald 
4*1d3bd1e5SMatthias Ringwald #include "classic/hfp.h"
5*1d3bd1e5SMatthias Ringwald 
6*1d3bd1e5SMatthias Ringwald #include "mock.h"
7*1d3bd1e5SMatthias Ringwald 
8*1d3bd1e5SMatthias Ringwald TEST_GROUP(HFPLinkSettings){
9*1d3bd1e5SMatthias Ringwald         void setup(void){
10*1d3bd1e5SMatthias Ringwald             hfp_set_sco_packet_types(SCO_PACKET_TYPES_ALL);
11*1d3bd1e5SMatthias Ringwald         }
12*1d3bd1e5SMatthias Ringwald         void teardown(void){
13*1d3bd1e5SMatthias Ringwald         }
14*1d3bd1e5SMatthias Ringwald };
15*1d3bd1e5SMatthias Ringwald 
16*1d3bd1e5SMatthias Ringwald // initial setting
17*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, NONE){
18*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_NONE, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, false, true, true, HFP_CODEC_MSBC));
19*1d3bd1e5SMatthias Ringwald }
20*1d3bd1e5SMatthias Ringwald 
21*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, D1){
22*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, false, true, true, HFP_CODEC_CVSD));
23*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, false, true, HFP_CODEC_CVSD));
24*1d3bd1e5SMatthias Ringwald }
25*1d3bd1e5SMatthias Ringwald 
26*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S3){
27*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, false, HFP_CODEC_CVSD));
28*1d3bd1e5SMatthias Ringwald }
29*1d3bd1e5SMatthias Ringwald 
30*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S4){
31*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S4, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true, HFP_CODEC_CVSD));
32*1d3bd1e5SMatthias Ringwald }
33*1d3bd1e5SMatthias Ringwald 
34*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T2){
35*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T2, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true, HFP_CODEC_MSBC));
36*1d3bd1e5SMatthias Ringwald }
37*1d3bd1e5SMatthias Ringwald 
38*1d3bd1e5SMatthias Ringwald // regular transition
39*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T2_T1){
40*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T1, hfp_next_link_setting(HFP_LINK_SETTINGS_T2, true, true, true, HFP_CODEC_MSBC));
41*1d3bd1e5SMatthias Ringwald }
42*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T1_NONE){
43*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_NONE, hfp_next_link_setting(HFP_LINK_SETTINGS_T1, true, true, true, HFP_CODEC_MSBC));
44*1d3bd1e5SMatthias Ringwald }
45*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S4_S3){
46*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_S4, true, true, true, HFP_CODEC_CVSD));
47*1d3bd1e5SMatthias Ringwald }
48*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S3_S2){
49*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S2, hfp_next_link_setting(HFP_LINK_SETTINGS_S3, true, true, true, HFP_CODEC_CVSD));
50*1d3bd1e5SMatthias Ringwald }
51*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S2_S1){
52*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S1, hfp_next_link_setting(HFP_LINK_SETTINGS_S2, true, true, true, HFP_CODEC_CVSD));
53*1d3bd1e5SMatthias Ringwald }
54*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, D1_D0){
55*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, false, true, true, HFP_CODEC_CVSD));
56*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, true, false, true, HFP_CODEC_CVSD));
57*1d3bd1e5SMatthias Ringwald }
58*1d3bd1e5SMatthias Ringwald 
59*1d3bd1e5SMatthias Ringwald // initial settings based on packet types
60*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, HV1){
61*1d3bd1e5SMatthias Ringwald     hfp_set_sco_packet_types(SCO_PACKET_TYPES_HV1);
62*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, false, true, true, HFP_CODEC_CVSD));
63*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, false, true, HFP_CODEC_CVSD));
64*1d3bd1e5SMatthias Ringwald }
65*1d3bd1e5SMatthias Ringwald 
66*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, HV3){
67*1d3bd1e5SMatthias Ringwald     hfp_set_sco_packet_types(SCO_PACKET_TYPES_HV3);
68*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, false, HFP_CODEC_CVSD));
69*1d3bd1e5SMatthias Ringwald }
70*1d3bd1e5SMatthias Ringwald 
71*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, EV3){
72*1d3bd1e5SMatthias Ringwald     hfp_set_sco_packet_types(SCO_PACKET_TYPES_EV3);
73*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true, HFP_CODEC_CVSD));
74*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true, HFP_CODEC_MSBC));
75*1d3bd1e5SMatthias Ringwald }
76*1d3bd1e5SMatthias Ringwald 
77*1d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, 2EV3){
78*1d3bd1e5SMatthias Ringwald     hfp_set_sco_packet_types(SCO_PACKET_TYPES_2EV3);
79*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, false, HFP_CODEC_CVSD));
80*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S4, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true,  HFP_CODEC_CVSD));
81*1d3bd1e5SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T2, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, true, true, true,  HFP_CODEC_MSBC));
82*1d3bd1e5SMatthias Ringwald }
83*1d3bd1e5SMatthias Ringwald 
84*1d3bd1e5SMatthias Ringwald 
85*1d3bd1e5SMatthias Ringwald int main (int argc, const char * argv[]){
86*1d3bd1e5SMatthias Ringwald     return CommandLineTestRunner::RunAllTests(argc, argv);
87*1d3bd1e5SMatthias Ringwald }
88