| .. | ||
| blackboxtest.ino | ||
| config.h | ||
| README.md | ||
CharGraph TimeLogic - Black Box Test Suite
Automated testing framework for the CharGraphTimeLogic library.
Overview
The Black Box Test Suite provides a standardized way to test the CharGraph time-to-words conversion logic across multiple patterns and time windows.
Files
blackboxtest.ino
Main test application. Loads patterns from config.h, runs tests, and outputs results to serial.
Features:
- Tests multiple patterns sequentially
- Configurable time window and minute increments
- Table-formatted output compatible with markdown
- Test statistics and pass/fail summary
config.h
Configuration file for test parameters.
Parameters:
// Test patterns (each must be exactly 110 characters)
const char testpatterns[][111] = {
"PATTERN1_110_CHARS",
"PATTERN2_110_CHARS",
// Add more patterns here
};
// Number of patterns to test
const uint8_t numPatterns = 2;
// Time window
uint8_t hourStart = 23; // Start hour (0-23)
uint8_t hourEnd = 0; // End hour (can wrap around midnight)
uint8_t minuteStart = 23; // Start minute (0-59)
uint8_t minuteEnd = 27; // End minute (0-59)
uint8_t hops = 1; // Minute increments (1=every min, 5=every 5 min, etc.)
Usage
Setup
- Place
blackboxtest.inoandconfig.hin your Arduino project folder - Ensure CharGraphTimeLogic library is properly installed
- Modify patterns in
config.has needed
Configuration
Adding Test Patterns
In config.h:
const char testpatterns[][111] = {
"ESGISTWZEHNFÜNFVIERTELVORNACHBALDHALBKZWEINSYWAYOLOVDCQZEHNEUNACHTELFÜNFZWÖLFSECHSIEBENGEDREIVIERTMDCPAUSEUHRW", // Pattern 1
"ESUISTKFASTBALDKURZEHNFÜNFZEITVORDREIVIERTELNACHRWDHALBHSECHSVIERKELFZWÖLFÜNFZEHNEUNACHTDREINSIEBENMZWEIEHUHRQ", // Pattern 2
// "PATTERN3...",
};
const uint8_t numPatterns = 2;
Changing Time Window
Default (Standard Black Box Test):
uint8_t hourStart = 23; // 23:23
uint8_t hourEnd = 0; // to 00:27
uint8_t minuteStart = 23;
uint8_t minuteEnd = 27;
uint8_t hops = 1; // Every minute
For testing just 1 hour:
uint8_t hourStart = 14;
uint8_t hourEnd = 14;
uint8_t minuteStart = 0;
uint8_t minuteEnd = 59;
uint8_t hops = 1;
For sparse sampling (every 5 minutes):
uint8_t hops = 5;
Running Tests
- Connect Arduino to computer via USB
- Open Arduino IDE
- Load
blackboxtest.ino - Select correct board and port
- Upload sketch
- Open Serial Monitor (baud rate: 115200)
- Tests will run automatically and output results
Output Format
========================================
Pattern 1
========================================
Pattern: ESGISTWZEHNFÜNF...
Uhrzeit | Text | MinutenLeds | Links | Rechts
--------|------|-------------|-------|-------
23:23 | ES IST ZEHN VOR HALB ZWÖLF | *** | L | R
23:24 | ES IST ZEHN VOR HALB ZWÖLF | **** | L | R
...
========================================
TEST SUMMARY
========================================
Total Tests: 130
Passed: 130
Failed: 0
✓ ALL TESTS PASSED
Test Statistics
After each pattern, a summary is printed:
- Total Tests: Number of minutes tested
- Passed: Successful word generation
- Failed: Errors or invalid results
LED Output Format
In the serial output:
*= One LED****= Four LEDsL= LED direction LEFT (additive)R= LED direction RIGHT (subtractive)
Standard Time Windows
Black Box Test (Default)
- Start: 23:23
- End: 00:27
- Duration: 65 minutes
- Reason: Tests full hour transition and critical minutes
Full Hour Test
- Start: HH:00
- End: HH:59
- Duration: 60 minutes
Sparse Test (Debug)
- Start: 23:23
- End: 00:27
- Hops: 5 minutes
- Duration: 13 tests (instead of 65)
Troubleshooting
Serial Output Garbled
- Check baud rate: Should be 115200
- Verify USB cable connection
- Try different USB port
Pattern Not Found
- Verify pattern length is exactly 110 characters
- Check for accented characters (ä, ö, ü)
- Ensure pattern is uppercase
Memory Issues
- Reduce number of patterns in config.h
- Increase hops value (test fewer minutes)
- Test on Arduino with more SRAM (Mega)
Design Goals
✓ Simple, intuitive configuration ✓ Consistent time window (23:23-00:27 by default) ✓ Markdown-compatible output ✓ Deterministic, repeatable results ✓ Works on standard Arduino boards
License
Part of CharGraph TimeLogic library. See main LICENSE for details.