tabled 0.21.0

An easy to use library for pretty print tables of Rust `struct`s and `enum`s.
#![cfg(feature = "std")]
#![cfg(feature = "assert")]

use tabled::{assert::test_table, grid::config::Offset, settings::Reverse};

use crate::util::Matrix;

test_table!(
    test_0x0_reverse_rows,
    Matrix::empty().with(Reverse::rows(0)),
    ""
);

test_table!(
    test_0x0_reverse_columns,
    Matrix::empty().with(Reverse::columns(0)),
    ""
);

test_table!(
    test_3x3_reverse_rows,
    Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Reverse::rows(0)),
    "+-----+-----+-----+"
    "| 234 | 567 | 891 |"
    "+-----+-----+-----+"
    "| 123 | 456 | 789 |"
    "+-----+-----+-----+"
    "| i32 | i32 | i32 |"
    "+-----+-----+-----+"
);

test_table!(
    test_3x3_reverse_rows_skip_start,
    Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Reverse::rows(1)),
    "+-----+-----+-----+"
    "| i32 | i32 | i32 |"
    "+-----+-----+-----+"
    "| 234 | 567 | 891 |"
    "+-----+-----+-----+"
    "| 123 | 456 | 789 |"
    "+-----+-----+-----+"
);

test_table!(
    test_3x3_reverse_rows_skip_end,
    Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Reverse::rows(0).limit(Offset::End(1))),
    "+-----+-----+-----+"
    "| 123 | 456 | 789 |"
    "+-----+-----+-----+"
    "| i32 | i32 | i32 |"
    "+-----+-----+-----+"
    "| 234 | 567 | 891 |"
    "+-----+-----+-----+"
);

test_table!(
    test_3x3_reverse_rows_skip_end_0,
    Matrix::iter([(123, 456, 789), (234, 567, 891), (345, 678, 912)])
        .with(Reverse::rows(1).limit(Offset::Start(2))),
    "+-----+-----+-----+"
    "| i32 | i32 | i32 |"
    "+-----+-----+-----+"
    "| 234 | 567 | 891 |"
    "+-----+-----+-----+"
    "| 123 | 456 | 789 |"
    "+-----+-----+-----+"
    "| 345 | 678 | 912 |"
    "+-----+-----+-----+"
);

test_table!(
    test_4x4_reverse_rows_skip_start_and_end,
    Matrix::iter([(123, 456, 789), (234, 567, 891), (345, 678, 901)]).with(Reverse::rows(1).limit(Offset::End(1))),
    "+-----+-----+-----+"
    "| i32 | i32 | i32 |"
    "+-----+-----+-----+"
    "| 234 | 567 | 891 |"
    "+-----+-----+-----+"
    "| 123 | 456 | 789 |"
    "+-----+-----+-----+"
    "| 345 | 678 | 901 |"
    "+-----+-----+-----+"
);

test_table!(
    test_3x3_reverse_columns,
    Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Reverse::columns(0)),
    "+-----+-----+-----+"
    "| i32 | i32 | i32 |"
    "+-----+-----+-----+"
    "| 789 | 456 | 123 |"
    "+-----+-----+-----+"
    "| 891 | 567 | 234 |"
    "+-----+-----+-----+"
);

test_table!(
    test_3x3_reverse_columns_skip_start,
    Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Reverse::columns(1)),
    "+-----+-----+-----+"
    "| i32 | i32 | i32 |"
    "+-----+-----+-----+"
    "| 123 | 789 | 456 |"
    "+-----+-----+-----+"
    "| 234 | 891 | 567 |"
    "+-----+-----+-----+"
);

test_table!(
    test_3x3_reverse_columns_skip_end,
    Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Reverse::columns(0).limit(Offset::End(1))),
    "+-----+-----+-----+"
    "| i32 | i32 | i32 |"
    "+-----+-----+-----+"
    "| 456 | 123 | 789 |"
    "+-----+-----+-----+"
    "| 567 | 234 | 891 |"
    "+-----+-----+-----+"
);

test_table!(
    test_3x3_reverse_columns_skip_end_0,
    Matrix::iter([(123, 456, 789), (234, 567, 891), (345, 678, 912)])
        .with(Reverse::columns(0).limit(Offset::Start(2))),
    "+-----+-----+-----+"
    "| i32 | i32 | i32 |"
    "+-----+-----+-----+"
    "| 456 | 123 | 789 |"
    "+-----+-----+-----+"
    "| 567 | 234 | 891 |"
    "+-----+-----+-----+"
    "| 678 | 345 | 912 |"
    "+-----+-----+-----+"
);

test_table!(
    test_4x3_reverse_columns_skip_start_and_end,
    Matrix::iter([(123, 456, 789, 123), (234, 567, 891, 234)]).with(Reverse::columns(1).limit(Offset::End(1))),
    "+-----+-----+-----+-----+"
    "| i32 | i32 | i32 | i32 |"
    "+-----+-----+-----+-----+"
    "| 123 | 789 | 456 | 123 |"
    "+-----+-----+-----+-----+"
    "| 234 | 891 | 567 | 234 |"
    "+-----+-----+-----+-----+"
);