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