brlapi 0.4.1

Safe Rust bindings for the BrlAPI library
// Test the complete integration without text writing operations
// This should be run as: cargo run --example integration_test

use brlapi::Connection;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("Testing complete liblouis integration");
    println!("====================================");

    // Test BrlAPI connection
    let connection = Connection::open()?;
    println!("[SUCCESS] BrlAPI connection established");

    // Test display information
    let display = connection.display_info()?;
    println!("[SUCCESS] Display info: {} ({}x{} cells)", display.driver_name(), display.width(), display.height());

    // Test user contraction table preference reading
    let user_table = connection.user_contraction_table()?;
    println!("[SUCCESS] User contraction table: {}", user_table);

    // Test liblouis directly
    let translator = liblouis::Translator::new();
    match translator.translate_string(&user_table, "Hello world") {
        Ok(contracted) => {
            println!("[SUCCESS] liblouis translation: 'Hello world' -> '{}'", contracted);
        }
        Err(e) => {
            println!("[WARNING] liblouis translation failed: {} (table may not be installed)", e);
        }
    }

    // Test version information
    println!("[SUCCESS] liblouis version: {}", liblouis::Translator::version());

    // Test table resolver locale resolution
    println!("\n[INFO] Testing locale resolution:");
    let test_locales = ["en_US", "en_GB", "fr_FR", "unknown"];
    for locale in &test_locales {
        match liblouis::TableResolver::resolve_locale(locale) {
            Ok(table) => println!("  {} -> {}", locale, table),
            Err(e) => println!("  {} failed: {}", locale, e),
        }
    }

    println!("\n[COMPLETED] Integration test completed successfully!");
    Ok(())
}