generated from wessel/boilerplate
80 lines
2.3 KiB
Markdown
80 lines
2.3 KiB
Markdown
# Config Manager Unit Tests
|
|
|
|
Unit tests for `ConfigManager` are implemented in `src/g2_2025_grade_calculator_pkg/test/ConfigManager.test.cpp` using Google Test and ROS2 test utilities. The tests use temporary TOML files to validate configuration loading and parsing functionality.
|
|
|
|
## Test Cases
|
|
|
|
### 1. ConstructorTest
|
|
|
|
**Description:** Verifies that ConfigManager can be created with a ROS2 logger without crashing.
|
|
|
|
- **Test Action:** Create ConfigManager instance with ROS2 logger
|
|
- **Expected Result:** Instance created successfully without exceptions
|
|
|
|
### 2. LoadValidConfigTest
|
|
|
|
**Description:** Tests loading of valid TOML configuration files with proper parsing.
|
|
|
|
- **Test Action:**
|
|
- Create temporary TOML file with valid configuration
|
|
- Call `load_config()` with file path
|
|
- **Expected Result:**
|
|
- Returns `true`
|
|
- `is_loaded()` returns `true`
|
|
|
|
### 3. LoadInvalidFileTest
|
|
|
|
**Description:** Tests error handling when attempting to load non-existent configuration files.
|
|
|
|
- **Test Action:** Call `load_config()` with non-existent file path
|
|
- **Expected Result:**
|
|
- Returns `false`
|
|
- `is_loaded()` returns `false`
|
|
|
|
### 4. DatabaseConfigParsingTest
|
|
|
|
**Description:** Tests complete database configuration parsing with all parameters.
|
|
|
|
- **Test Configuration:**
|
|
```toml
|
|
[database]
|
|
host = "test_host"
|
|
port = 1234
|
|
dbname = "test_db"
|
|
user = "test_user"
|
|
password = "test_password"
|
|
timeout = 60
|
|
ssl = true
|
|
|
|
[database.pool]
|
|
min_connections = 2
|
|
max_connections = 20
|
|
```
|
|
- **Expected Result:** All configuration values parsed correctly with proper types
|
|
|
|
### 5. DatabaseConfigWithoutPoolTest
|
|
|
|
**Description:** Tests default values when optional pool section is missing from configuration.
|
|
|
|
- **Test Configuration:**
|
|
```toml
|
|
[database]
|
|
host = "localhost"
|
|
port = 5432
|
|
dbname = "grades"
|
|
user = "postgres"
|
|
password = "postgres"
|
|
```
|
|
- **Expected Result:**
|
|
- Main database config parsed correctly
|
|
- Default pool values: `min_connections = 1`, `max_connections = 10`
|
|
|
|
### 6. GetConfigWithoutLoadingTest
|
|
|
|
**Description:** Tests behavior when attempting to access configuration before loading any file.
|
|
|
|
- **Test Action:** Call `get_database_config()` without loading configuration
|
|
- **Expected Result:**
|
|
- Returns `std::nullopt`
|
|
- `is_loaded()` returns `false`
|