8
8
* - SDMMC: SDMMC requires a card to be mounted before the pins are attached
9
9
*/
10
10
11
- #include < unity.h>
12
-
13
11
#if SOC_I2S_SUPPORTED
14
12
#include " ESP_I2S.h"
15
13
#endif
22
20
#include " SPI.h"
23
21
#endif
24
22
23
+ #define ETH_PHY_TYPE ETH_PHY_LAN8720
24
+ #define ETH_PHY_ADDR 0
25
+ #define ETH_PHY_MDC 23
26
+ #define ETH_PHY_MDIO 18
27
+ #define ETH_PHY_POWER -1
28
+ #define ETH_CLK_MODE ETH_CLOCK_GPIO0_IN
29
+
25
30
#include " ETH.h"
26
31
27
32
/* Definitions */
32
37
/* Global variables */
33
38
34
39
bool test_executed = false ;
35
- String last_test = " " ;
36
- int8_t uart1_rx_pin = UART1_RX_DEFAULT ;
37
- int8_t uart1_tx_pin = UART1_TX_DEFAULT ;
40
+ String current_test ;
41
+ int8_t uart1_rx_pin;
42
+ int8_t uart1_tx_pin;
38
43
39
44
/* Callback functions */
40
45
@@ -46,69 +51,81 @@ void onReceive_cb(void) {
46
51
}
47
52
}
48
53
49
- /* Unity functions */
50
-
51
- // This function is automatically called by unity before each test is run
52
- void setUp (void ) {
54
+ // This function is called by before each test is run
55
+ void setup_test (String test_name, int8_t rx_pin = UART1_RX_DEFAULT, int8_t tx_pin = UART1_TX_DEFAULT) {
53
56
log_v (" Setting up next test" );
57
+
58
+ current_test = test_name;
59
+ uart1_rx_pin = rx_pin;
60
+ uart1_tx_pin = tx_pin;
61
+ test_executed = false ;
62
+
63
+ pinMode (uart1_rx_pin, INPUT_PULLUP);
64
+ pinMode (uart1_tx_pin, OUTPUT);
54
65
Serial1.setPins (uart1_rx_pin, uart1_tx_pin);
55
66
uart_internal_loopback (1 , uart1_rx_pin);
56
67
delay (100 );
57
68
log_v (" Running test" );
58
69
}
59
70
60
- // This function is automatically called by unity after each test is run
61
- void tearDown (void ) {
71
+ // This function is called after each test is run
72
+ void teardown_test (void ) {
62
73
log_v (" Tearing down last test" );
63
74
if (test_executed) {
64
- Serial1.print (last_test);
75
+ pinMode (uart1_rx_pin, INPUT_PULLUP);
76
+ pinMode (uart1_tx_pin, OUTPUT);
77
+ Serial1.print (current_test);
65
78
Serial1.println (" test: This should not be printed" );
66
79
Serial1.flush ();
67
80
68
81
Serial1.setPins (uart1_rx_pin, uart1_tx_pin);
69
82
uart_internal_loopback (1 , uart1_rx_pin);
70
83
delay (100 );
71
- test_executed = false ;
72
84
}
73
85
74
- Serial1.print (last_test );
86
+ Serial1.print (current_test );
75
87
Serial1.println (" test: This should be printed" );
76
88
Serial1.flush ();
77
89
}
78
90
79
91
/* Test functions */
80
- /* These functions must only init the peripheral on the same pins and update "last_test " */
92
+ /* These functions must only init the peripheral on the same pins and update "current_test " */
81
93
82
94
void gpio_test (void ) {
83
- last_test = " GPIO" ;
95
+ setup_test ( " GPIO" ) ;
84
96
test_executed = true ;
85
97
pinMode (uart1_rx_pin, INPUT);
86
98
pinMode (uart1_tx_pin, OUTPUT);
99
+ teardown_test ();
87
100
}
88
101
89
102
void sigmadelta_test (void ) {
90
- last_test = " SigmaDelta" ;
103
+ setup_test ( " SigmaDelta" ) ;
91
104
#if SOC_SDM_SUPPORTED
92
105
test_executed = true ;
93
106
if (!sigmaDeltaAttach (uart1_rx_pin, 312500 )) {
94
- TEST_FAIL_MESSAGE (" SigmaDelta init failed" );
107
+ Serial. println (" SigmaDelta init failed" );
95
108
}
96
109
if (!sigmaDeltaAttach (uart1_tx_pin, 312500 )) {
97
- TEST_FAIL_MESSAGE (" SigmaDelta init failed" );
110
+ Serial. println (" SigmaDelta init failed" );
98
111
}
99
112
#endif
113
+ teardown_test ();
100
114
}
101
115
102
116
void adc_oneshot_test (void ) {
103
- last_test = " ADC Oneshot" ;
104
- #if SOC_ADC_SUPPORTED
117
+ #if !SOC_ADC_SUPPORTED
118
+ setup_test (" ADC Oneshot" );
119
+ #else
120
+ setup_test (" ADC Oneshot" , A3, A4);
105
121
test_executed = true ;
106
122
analogReadResolution (12 );
107
123
pinMode (A3, INPUT);
108
124
pinMode (A4, INPUT);
109
125
analogRead (A3);
110
126
analogRead (A4);
111
127
#endif
128
+ teardown_test ();
112
129
}
113
130
114
131
#if SOC_ADC_SUPPORTED
@@ -119,8 +136,10 @@ void ARDUINO_ISR_ATTR adcComplete() {
119
136
#endif
120
137
121
138
void adc_continuous_test (void ) {
122
- last_test = " ADC Continuous" ;
123
- #if SOC_ADC_SUPPORTED
139
+ #if !SOC_ADC_SUPPORTED
140
+ setup_test (" ADC Continuous" );
141
+ #else
142
+ setup_test (" ADC Continuous" , A3, A4);
124
143
test_executed = true ;
125
144
uint8_t adc_pins[] = {A3, A4};
126
145
uint8_t adc_pins_count = 2 ;
@@ -137,93 +156,106 @@ void adc_continuous_test(void) {
137
156
}
138
157
139
158
if (!analogContinuousRead (&result, 0 )) {
140
- TEST_FAIL_MESSAGE (" ADC continuous read failed" );
159
+ Serial. println (" ADC continuous read failed" );
141
160
}
142
161
143
162
analogContinuousStop ();
144
163
#endif
164
+ teardown_test ();
145
165
}
146
166
147
167
void dac_test (void ) {
148
- last_test = " DAC" ;
149
- #if SOC_DAC_SUPPORTED
168
+ #if !SOC_DAC_SUPPORTED
169
+ setup_test (" DAC" );
170
+ #else
171
+ setup_test (" DAC" , DAC1, DAC2);
150
172
test_executed = true ;
151
173
dacWrite (DAC1, 255 );
152
174
dacWrite (DAC2, 255 );
153
175
#endif
176
+ teardown_test ();
154
177
}
155
178
156
179
void ledc_test (void ) {
157
- last_test = " LEDC" ;
180
+ setup_test ( " LEDC" ) ;
158
181
#if SOC_LEDC_SUPPORTED
159
182
test_executed = true ;
160
183
if (!ledcAttach (uart1_rx_pin, 5000 , 12 )) {
161
- TEST_FAIL_MESSAGE (" LEDC init failed" );
184
+ Serial. println (" LEDC init failed" );
162
185
}
163
186
if (!ledcAttach (uart1_tx_pin, 5000 , 12 )) {
164
- TEST_FAIL_MESSAGE (" LEDC init failed" );
187
+ Serial. println (" LEDC init failed" );
165
188
}
166
189
#endif
190
+ teardown_test ();
167
191
}
168
192
169
193
void rmt_test (void ) {
170
- last_test = " RMT" ;
194
+ setup_test ( " RMT" ) ;
171
195
#if SOC_RMT_SUPPORTED
172
196
test_executed = true ;
173
197
if (!rmtInit (uart1_rx_pin, RMT_TX_MODE, RMT_MEM_NUM_BLOCKS_1, 10000000 )) {
174
- TEST_FAIL_MESSAGE (" RMT init failed" );
198
+ Serial. println (" RMT init failed" );
175
199
}
176
200
if (!rmtInit (uart1_tx_pin, RMT_RX_MODE, RMT_MEM_NUM_BLOCKS_1, 10000000 )) {
177
- TEST_FAIL_MESSAGE (" RMT init failed" );
201
+ Serial. println (" RMT init failed" );
178
202
}
179
203
#endif
204
+ teardown_test ();
180
205
}
181
206
182
207
void i2s_test (void ) {
183
- last_test = " I2S" ;
208
+ setup_test ( " I2S" ) ;
184
209
#if SOC_I2S_SUPPORTED
185
210
test_executed = true ;
186
211
I2SClass i2s;
187
212
188
213
i2s.setPins (uart1_rx_pin, uart1_tx_pin, -1 );
189
214
i2s.setTimeout (1000 );
190
215
if (!i2s.begin (I2S_MODE_STD, 16000 , I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_STEREO)) {
191
- TEST_FAIL_MESSAGE (" I2S init failed" );
216
+ Serial. println (" I2S init failed" );
192
217
}
193
218
#endif
219
+ teardown_test ();
194
220
}
195
221
196
222
void i2c_test (void ) {
197
- last_test = " I2C" ;
223
+ setup_test ( " I2C" ) ;
198
224
#if SOC_I2C_SUPPORTED
199
225
test_executed = true ;
200
226
if (!Wire.begin (uart1_rx_pin, uart1_tx_pin)) {
201
- TEST_FAIL_MESSAGE (" I2C init failed" );
227
+ Serial. println (" I2C init failed" );
202
228
}
203
229
#endif
230
+ teardown_test ();
204
231
}
205
232
206
233
void spi_test (void ) {
207
- last_test = " SPI" ;
234
+ setup_test ( " SPI" ) ;
208
235
#if SOC_GPSPI_SUPPORTED
209
236
test_executed = true ;
210
237
SPI.begin (uart1_rx_pin, uart1_tx_pin, -1 , -1 );
211
238
#endif
239
+ teardown_test ();
212
240
}
213
241
214
242
void touch_test (void ) {
215
- last_test = " Touch" ;
216
- #if SOC_TOUCH_SENSOR_SUPPORTED
243
+ #if !SOC_TOUCH_SENSOR_SUPPORTED
244
+ setup_test (" Touch" );
245
+ #else
246
+ setup_test (" Touch" , T1, T2);
217
247
test_executed = true ;
218
248
touchRead (T1);
219
249
touchRead (T2);
220
250
#endif
251
+ teardown_test ();
221
252
}
222
253
223
254
void eth_test (void ) {
224
- last_test = " ETH" ;
255
+ setup_test ( " ETH" ) ;
225
256
test_executed = true ;
226
257
ETH.begin ();
258
+ teardown_test ();
227
259
}
228
260
229
261
/* Main functions */
@@ -238,28 +270,18 @@ void setup() {
238
270
Serial1.onReceive (onReceive_cb);
239
271
uart_internal_loopback (1 , uart1_rx_pin);
240
272
241
- UNITY_BEGIN ();
242
-
243
- RUN_TEST (gpio_test);
244
- RUN_TEST (sigmadelta_test);
245
- RUN_TEST (ledc_test);
246
- RUN_TEST (rmt_test);
247
- RUN_TEST (i2s_test);
248
- RUN_TEST (i2c_test);
249
- RUN_TEST (spi_test);
250
- uart1_tx_pin = A3;
251
- uart1_rx_pin = A4;
252
- RUN_TEST (adc_oneshot_test);
253
- RUN_TEST (adc_continuous_test);
254
- uart1_tx_pin = DAC1;
255
- uart1_rx_pin = DAC2;
256
- RUN_TEST (dac_test);
257
- uart1_tx_pin = T1;
258
- uart1_rx_pin = T2;
259
- RUN_TEST (touch_test);
260
- RUN_TEST (eth_test);
261
-
262
- UNITY_END ();
273
+ gpio_test ();
274
+ sigmadelta_test ();
275
+ ledc_test ();
276
+ rmt_test ();
277
+ i2s_test ();
278
+ i2c_test ();
279
+ spi_test ();
280
+ adc_oneshot_test ();
281
+ adc_continuous_test ();
282
+ dac_test ();
283
+ touch_test ();
284
+ eth_test ();
263
285
}
264
286
265
287
void loop () {}
0 commit comments