Files
ros2-assignments/doc/tests/ConfigManager.md

2.3 KiB

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:
    [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:
    [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