chinese-number 0.7.8

Convert primitive numbers to Chinese numbers, or parse Chinese numbers to primitive numbers.
Documentation
#![cfg(test)]

use super::*;

#[test]
fn test_unsigned_integer_to_chinese_low() {
    macro_rules! test {
        ($expect:expr, $value:expr) => {
            assert_eq!(
                $expect,
                unsigned_integer_to_chinese_low(
                    ChineseVariant::Traditional,
                    ChineseCase::Lower,
                    false,
                    $value
                )
            );
        };
    }

    test!("", 0);
    test!("", 1);
    test!("", 10);
    test!("二十", 20);
    test!("五十五", 55);
    test!("一萬", 1_0000);
    test!("一萬零一", 1_0001);
    test!("一萬零一十", 1_0010);
    test!("一億", 10_0000);
    test!("一億零一", 10_0001);
}

#[test]
fn test_unsigned_integer_to_chinese_ten_thousand() {
    macro_rules! test {
        ($expect:expr, $value:expr) => {
            assert_eq!(
                $expect,
                unsigned_integer_to_chinese_ten_thousand(
                    ChineseVariant::Traditional,
                    ChineseCase::Lower,
                    false,
                    $value
                )
            );
        };
    }

    test!("", 0);
    test!("", 1);
    test!("", 10);
    test!("一萬", 1_0000);
    test!("一萬零一", 1_0001);
    test!("一萬零一十", 1_0010);
    test!("十萬", 10_0000);
    test!("十萬零一", 10_0001);
    test!("一億", 1_0000_0000);
    test!("一億零一", 1_0000_0001);
    test!("一億零一萬", 1_0001_0000);
}

#[test]
fn test_big_unsigned_integer_to_chinese_ten_thousand() {
    macro_rules! test {
        ($expect:expr, $value:expr) => {
            assert_eq!(
                $expect,
                big_unsigned_integer_to_chinese_ten_thousand(
                    ChineseVariant::Traditional,
                    ChineseCase::Lower,
                    false,
                    ($value as u128).into()
                )
            );
        };
    }

    test!("", 0);
    test!("", 1);
    test!("", 10);
    test!("一萬", 1_0000);
    test!("一萬零一", 1_0001);
    test!("一萬零一十", 1_0010);
    test!("十萬", 10_0000);
    test!("十萬零一", 10_0001);
    test!("一億", 1_0000_0000);
    test!("一億零一", 1_0000_0001);
    test!("一億零一萬", 1_0001_0000);
}

#[test]
fn test_unsigned_integer_to_chinese_middle() {
    macro_rules! test {
        ($expect:expr, $value:expr) => {
            assert_eq!(
                $expect,
                unsigned_integer_to_chinese_middle(
                    ChineseVariant::Traditional,
                    ChineseCase::Lower,
                    false,
                    $value
                )
            );
        };
    }

    test!("", 0);
    test!("", 1);
    test!("", 10);
    test!("一萬", 1_0000);
    test!("一萬零一", 1_0001);
    test!("一萬零一十", 1_0010);
    test!("十萬", 10_0000);
    test!("十萬零一", 10_0001);
    test!("一億", 1_0000_0000);
    test!("一萬億", 1_0000_0000_0000);
    test!("一萬零一億", 1_0001_0000_0000);
}

#[test]
fn test_big_unsigned_integer_to_chinese_middle() {
    macro_rules! test {
        ($expect:expr, $value:expr) => {
            assert_eq!(
                $expect,
                big_unsigned_integer_to_chinese_middle(
                    ChineseVariant::Traditional,
                    ChineseCase::Lower,
                    false,
                    ($value as u128).into()
                )
            );
        };
    }

    test!("", 0);
    test!("", 1);
    test!("", 10);
    test!("一萬", 1_0000);
    test!("一萬零一", 1_0001);
    test!("一萬零一十", 1_0010);
    test!("十萬", 10_0000);
    test!("十萬零一", 10_0001);
    test!("一億", 1_0000_0000);
    test!("一萬億", 1_0000_0000_0000);
    test!("一萬零一億", 1_0001_0000_0000);
}

#[test]
fn test_unsigned_integer_to_chinese_high() {
    macro_rules! test {
        ($expect:expr, $value:expr) => {
            assert_eq!(
                $expect,
                unsigned_integer_to_chinese_high(
                    ChineseVariant::Traditional,
                    ChineseCase::Lower,
                    false,
                    $value
                )
            );
        };
    }

    test!("", 0);
    test!("", 1);
    test!("", 10);
    test!("一萬", 1_0000);
    test!("一萬零一", 1_0001);
    test!("一萬零一十", 1_0010);
    test!("十萬", 10_0000);
    test!("十萬零一", 10_0001);
    test!("一億", 1_0000_0000);
    test!("一萬億", 1_0000_0000_0000);
    test!("一兆", 1_0000_0000_0000_0000);
    test!("一兆零一萬億", 1_0001_0000_0000_0000);
    test!("一萬兆", 1_0000_0000_0000_0000_0000);
    test!("一億兆", 1_0000_0000_0000_0000_0000_0000);
    test!("一萬億兆", 1_0000_0000_0000_0000_0000_0000_0000);
    test!("一京", 1_0000_0000_0000_0000_0000_0000_0000_0000);
}

#[test]
fn test_big_unsigned_integer_to_chinese_high() {
    macro_rules! test {
        ($expect:expr, $value:expr) => {
            assert_eq!(
                $expect,
                big_unsigned_integer_to_chinese_high(
                    ChineseVariant::Traditional,
                    ChineseCase::Lower,
                    false,
                    ($value as u128).into()
                )
            );
        };
    }

    test!("", 0);
    test!("", 1);
    test!("", 10);
    test!("一萬", 1_0000);
    test!("一萬零一", 1_0001);
    test!("一萬零一十", 1_0010);
    test!("十萬", 10_0000);
    test!("十萬零一", 10_0001);
    test!("一億", 1_0000_0000);
    test!("一萬億", 1_0000_0000_0000);
    test!("一兆", 1_0000_0000_0000_0000);
    test!("一兆零一萬億", 1_0001_0000_0000_0000);
    test!("一萬兆", 1_0000_0000_0000_0000_0000);
    test!("一億兆", 1_0000_0000_0000_0000_0000_0000);
    test!("一萬億兆", 1_0000_0000_0000_0000_0000_0000_0000);
    test!("一京", 1_0000_0000_0000_0000_0000_0000_0000_0000);
}

#[test]
fn test_fraction_compat() {
    macro_rules! test {
        ($expect:expr, $value:expr) => {
            assert_eq!(
                $expect,
                positive_float_to_chinese(
                    ChineseVariant::Traditional,
                    ChineseCase::Lower,
                    ChineseCountMethod::TenThousand,
                    $value
                )
            );
        };
    }

    test!("", 0.0);
    test!("一分", 0.01);
    test!("一角", 0.1);
    test!("五角五分", 0.55);
    test!("九十九九角九分", 99.99);
}