qubit-codec 0.12.0

Core codec traits and buffer conversion primitives for Rust
Documentation
// =============================================================================
//    Copyright (c) 2025 - 2026 Haixing Hu.
//
//    SPDX-License-Identifier: Apache-2.0
//
//    Licensed under the Apache License, Version 2.0.
// =============================================================================

use qubit_codec::{
    CapacityError,
    TranscodeConvertError,
    TranscodeDecodeError,
    TranscodeEncodeError,
};

#[derive(Clone, Copy, Debug, Eq, PartialEq, thiserror::Error)]
#[error("domain error")]
struct DomainError;

#[test]
fn test_capacity_errors_map_to_framework_failures() {
    let decode: TranscodeDecodeError<DomainError> =
        CapacityError::OutputLengthOverflow.into();
    let encode: TranscodeEncodeError<DomainError, char> =
        CapacityError::OutputLengthOverflow.into();
    let convert: TranscodeConvertError<DomainError, DomainError, char> =
        CapacityError::OutputLengthOverflow.into();

    assert_eq!(
        TranscodeDecodeError::Failure(
            qubit_codec::TranscodeFailure::output_length_overflow()
        ),
        decode,
    );
    assert_eq!(
        TranscodeEncodeError::Failure(
            qubit_codec::TranscodeFailure::output_length_overflow()
        ),
        encode,
    );
    assert_eq!(
        TranscodeConvertError::Failure(
            qubit_codec::TranscodeFailure::output_length_overflow()
        ),
        convert,
    );
}