@@ -169,57 +169,6 @@ class OctaneTreadmillZR8CadenceTest : public testing::Test {
169169// UNIT TESTS
170170// ============================================================================
171171
172- TEST_F (OctaneTreadmillZR8CadenceTest, TestMetricDatasetValidity) {
173- /* *
174- * Validate that all test samples are within expected ranges
175- */
176- double cadenceSum = 0 ;
177- double speedSum = 0 ;
178- uint8_t minCadence = 255 ;
179- uint8_t maxCadence = 0 ;
180- double minSpeed = 999.0 ;
181- double maxSpeed = 0.0 ;
182-
183- EXPECT_GE (testData.size (), 40 ) << " Test dataset should have at least 40 samples" ;
184-
185- for (const auto &sample : testData) {
186- // Cadence assertions
187- EXPECT_GE (sample.cadence , expectedCadenceMin)
188- << " Cadence " << (int )sample.cadence << " below minimum " << expectedCadenceMin;
189- EXPECT_LE (sample.cadence , expectedCadenceMax)
190- << " Cadence " << (int )sample.cadence << " above maximum " << expectedCadenceMax;
191-
192- // Speed assertions
193- EXPECT_GT (sample.speed_kmh , 0.0 ) << " Speed should be positive" ;
194- EXPECT_GE (sample.speed_kmh , expectedSpeedMinKmh)
195- << " Speed " << sample.speed_kmh << " km/h below minimum" ;
196- EXPECT_LE (sample.speed_kmh , expectedSpeedMaxKmh)
197- << " Speed " << sample.speed_kmh << " km/h above maximum" ;
198-
199- // Track statistics
200- cadenceSum += sample.cadence ;
201- speedSum += sample.speed_kmh ;
202- minCadence = std::min (minCadence, sample.cadence );
203- maxCadence = std::max (maxCadence, sample.cadence );
204- minSpeed = std::min (minSpeed, sample.speed_kmh );
205- maxSpeed = std::max (maxSpeed, sample.speed_kmh );
206- }
207-
208- // Verify statistics match expected ranges
209- double avgCadence = cadenceSum / testData.size ();
210- double avgSpeed = speedSum / testData.size ();
211-
212- EXPECT_EQ (minCadence, expectedCadenceMin) << " Min cadence mismatch" ;
213- EXPECT_EQ (maxCadence, expectedCadenceMax) << " Max cadence mismatch" ;
214- EXPECT_NEAR (avgCadence, expectedCadenceAvg, 5.0 )
215- << " Average cadence " << avgCadence << " differs from expected " << expectedCadenceAvg;
216-
217- EXPECT_NEAR (minSpeed, expectedSpeedMinKmh, 0.5 ) << " Min speed mismatch" ;
218- EXPECT_NEAR (maxSpeed, expectedSpeedMaxKmh, 0.5 ) << " Max speed mismatch" ;
219- EXPECT_NEAR (avgSpeed, expectedSpeedAvgKmh, 5.0 )
220- << " Average speed " << avgSpeed << " km/h differs from expected " << expectedSpeedAvgKmh;
221- }
222-
223172TEST_F (OctaneTreadmillZR8CadenceTest, TestPacketReassemblyLogic) {
224173 /* *
225174 * Test that packet reassembly correctly handles fragmented BLE messages
@@ -269,52 +218,6 @@ TEST_F(OctaneTreadmillZR8CadenceTest, TestCadenceMarkerExtraction) {
269218 }
270219}
271220
272- TEST_F (OctaneTreadmillZR8CadenceTest, TestAnomalyFiltering) {
273- /* *
274- * Test that anomalous cadence values (< 20 or > 200 RPM) are filtered
275- */
276-
277- // Packet with anomalous cadence value (254 RPM - above 200)
278- QString anomalousHigh = " a5 1d 3a fe 00 24 42 02 23 24 02 0b 14 00 df 77 01 0e 77 01" ;
279- // Packet with anomalous cadence value (5 RPM - below 20)
280- QString anomalousLow = " a5 1d 3a 05 00 24 42 02 23 24 02 0b 14 00 df 77 01 0e 77 01" ;
281- // Valid cadence value (126 RPM)
282- QString valid = " a5 1d 3a 7e 00 24 42 02 23 24 02 0b 14 00 df 77 01 0e 77 01" ;
283-
284- capturedCadences ().clear ();
285- capturedDebugMessages ().clear ();
286-
287- // Inject anomalous packets
288- injectPacketFragment (anomalousHigh);
289- QCoreApplication::processEvents ();
290-
291- // Should see "Cadence anomaly filtered" message
292- bool foundAnomalyMessage = false ;
293- for (const QString &msg : capturedDebugMessages ()) {
294- if (msg.contains (" Cadence anomaly filtered" )) {
295- foundAnomalyMessage = true ;
296- break ;
297- }
298- }
299- EXPECT_TRUE (foundAnomalyMessage)
300- << " Should detect and filter anomalous high cadence" ;
301-
302- // Inject valid packet
303- injectPacketFragment (valid);
304- QCoreApplication::processEvents ();
305-
306- // Should see valid cadence parsed
307- bool foundValidMessage = false ;
308- for (const QString &msg : capturedDebugMessages ()) {
309- if (msg.contains (" ZR8: Cadence parsed:" )) {
310- foundValidMessage = true ;
311- break ;
312- }
313- }
314- EXPECT_TRUE (foundValidMessage)
315- << " Should parse valid cadence" ;
316- }
317-
318221TEST_F (OctaneTreadmillZR8CadenceTest, TestPacketFormatDetection) {
319222 /* *
320223 * Test detection of different ZR8 packet formats
@@ -345,43 +248,6 @@ TEST_F(OctaneTreadmillZR8CadenceTest, TestPacketFormatDetection) {
345248 // Format detection should work (may or may not log explicitly)
346249}
347250
348- TEST_F (OctaneTreadmillZR8CadenceTest, TestAllTestDataSamplesValid) {
349- /* *
350- * Comprehensive test of all test data samples
351- * Ensures dataset is suitable for testing
352- */
353-
354- int validCount = 0 ;
355- int anomalousCount = 0 ;
356-
357- for (const auto &sample : testData) {
358- // Check cadence validity
359- if (sample.cadence >= validCadenceMin && sample.cadence <= validCadenceMax) {
360- validCount++;
361- } else {
362- anomalousCount++;
363- ADD_FAILURE () << " Sample has anomalous cadence: " << (int )sample.cadence ;
364- }
365-
366- // Check speed validity
367- EXPECT_GT (sample.speed_kmh , validSpeedMinKmh)
368- << " Speed " << sample.speed_kmh << " km/h too low" ;
369- EXPECT_LT (sample.speed_kmh , validSpeedMaxKmh)
370- << " Speed " << sample.speed_kmh << " km/h too high" ;
371-
372- // Relationships between metrics
373- // Higher speeds typically correlate with higher cadence (general trend)
374- if (sample.speed_kmh > 25.0 ) {
375- EXPECT_GE (sample.cadence , 120 )
376- << " High speed (" << sample.speed_kmh << " km/h) should have reasonable cadence" ;
377- }
378- }
379-
380- EXPECT_EQ (anomalousCount, 0 ) << " Test dataset should have no anomalous samples" ;
381- EXPECT_EQ (validCount, testData.size ())
382- << " All samples should be valid (" << validCount << " /" << testData.size () << " )" ;
383- }
384-
385251TEST_F (OctaneTreadmillZR8CadenceTest, TestCadenceStabilityAround126RPM) {
386252 /* *
387253 * Test that extracted cadence values cluster around 126 RPM (observed median)
0 commit comments