unicodeit 0.2.1

Converts LaTeX to Unicode (rust port)
Documentation
//! Ported from Python `unicodeit/tests/test_subsuper.py`.

use crate::common::ReplaceFunc;

mod common;

fn do_test_superscript_12(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("a^{12}", "a¹²");
}

fn do_test_superscript_minus1(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("cm^{-1}", "cm⁻¹")
}

fn do_test_subscript_12(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("a_{12}", "a₁₂");
}

fn do_test_subscript_minus1(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("cm_{-1}", "cm₋₁")
}

fn do_test_multiple_subscript_groups(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("a_{01}b_{23}", "a₀₁b₂₃");
}

fn do_test_multiple_superscript_groups(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("a^{01}b^{23}", "a⁰¹b²³");
}

fn do_test_single_char_superscript_groups(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("a^{b} c^{d}", "aᵇ cᵈ");
}

fn do_test_single_char_subscript_groups(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("x_{i} y_{j}", "xᵢ yⱼ");
}

fn do_test_three_subscript_groups(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("a_{1}b_{2}c_{3}", "a₁b₂c₃");
}

fn do_test_three_superscript_groups(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("a^{1}b^{2}c^{3}", "a¹b²c³");
}

fn do_test_mixed_sub_and_super(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("x_{i}^{2}", "xᵢ²");
}

fn do_test_subscript_with_operators(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("a_{1+2}", "a₁₊₂");
}

fn do_test_superscript_with_operators(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("a^{1+2}", "a¹⁺²");
}

fn do_test_subscript_with_parens(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("a_{(1)}", "a₍₁₎");
}

fn do_test_long_subscript_group(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("a_{0123456789}", "a₀₁₂₃₄₅₆₇₈₉");
}

fn do_test_adjacent_subscript_groups_no_separator(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("_{01}_{23}_{45}", "₀₁₂₃₄₅");
}

fn do_test_subscript_group_surrounded_by_text(replace: ReplaceFunc) {
    let do_assert = assert_func!(replace);
    do_assert("hello _{12} world _{34} end", "hello ₁₂ world ₃₄ end");
}

declare_tests!(
    superscript_12,
    superscript_minus1,
    subscript_12,
    subscript_minus1,
    multiple_subscript_groups,
    multiple_superscript_groups,
    single_char_superscript_groups,
    single_char_subscript_groups,
    three_subscript_groups,
    three_superscript_groups,
    mixed_sub_and_super,
    subscript_with_operators,
    superscript_with_operators,
    subscript_with_parens,
    long_subscript_group,
    adjacent_subscript_groups_no_separator,
    subscript_group_surrounded_by_text
);