#![cfg(feature = "std")] use tabled::settings::{ object::{Cell, Columns, Rows, Segment}, Dup, }; use crate::matrix::Matrix; use testing_table::test_table; test_table!( dup_cell_to_cell, Matrix::new(3, 3).with(Dup::new(Cell::new(0, 0), Cell::new(0, 1))), "+----------+----------+----------+----------+" "| column 0 | column 0 | column 1 | column 2 |" "+----------+----------+----------+----------+" "| 0 | 0-0 | 0-1 | 0-2 |" "+----------+----------+----------+----------+" "| 1 | 1-0 | 1-1 | 1-2 |" "+----------+----------+----------+----------+" "| 2 | 2-0 | 2-1 | 2-2 |" "+----------+----------+----------+----------+" ); test_table!( dup_cell_to_column, Matrix::new(3, 3).with(Dup::new(Columns::single(1), Cell::new(0, 0))), "+---+---+----------+----------+" "| N | N | column 1 | column 2 |" "+---+---+----------+----------+" "| 0 | N | 0-1 | 0-2 |" "+---+---+----------+----------+" "| 1 | N | 1-1 | 1-2 |" "+---+---+----------+----------+" "| 2 | N | 2-1 | 2-2 |" "+---+---+----------+----------+" ); test_table!( dup_row_to_row_single, Matrix::new(3, 3).with(Dup::new(Rows::single(1), Rows::single(0))), "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| 1 | 1-0 | 1-1 | 1-2 |" "+---+----------+----------+----------+" "| 2 | 2-0 | 2-1 | 2-2 |" "+---+----------+----------+----------+" ); test_table!( dup_row_to_row_single_to_many, Matrix::new(3, 3).with(Dup::new(Rows::new(1..3), Rows::single(0))), "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| 2 | 2-0 | 2-1 | 2-2 |" "+---+----------+----------+----------+" ); test_table!( dup_row_to_row_single_to_all, Matrix::new(3, 3).with(Dup::new(Rows::new(1..), Rows::single(0))), "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" ); test_table!( dup_row_to_column_single, Matrix::new(3, 3).with(Dup::new(Columns::single(1), Rows::single(0))), "+---+----------+----------+----------+" "| N | N | column 1 | column 2 |" "+---+----------+----------+----------+" "| 0 | column 0 | 0-1 | 0-2 |" "+---+----------+----------+----------+" "| 1 | column 1 | 1-1 | 1-2 |" "+---+----------+----------+----------+" "| 2 | column 2 | 2-1 | 2-2 |" "+---+----------+----------+----------+" ); test_table!( dup_column_to_row_single, Matrix::new(3, 3).with(Dup::new(Columns::single(1), Columns::single(0))), "+---+---+----------+----------+" "| N | N | column 1 | column 2 |" "+---+---+----------+----------+" "| 0 | 0 | 0-1 | 0-2 |" "+---+---+----------+----------+" "| 1 | 1 | 1-1 | 1-2 |" "+---+---+----------+----------+" "| 2 | 2 | 2-1 | 2-2 |" "+---+---+----------+----------+" ); test_table!( dup_row_to_column_single_repeat, Matrix::new(4, 3).with(Dup::new(Columns::single(1), Rows::single(0))), "+---+----------+----------+----------+" "| N | N | column 1 | column 2 |" "+---+----------+----------+----------+" "| 0 | column 0 | 0-1 | 0-2 |" "+---+----------+----------+----------+" "| 1 | column 1 | 1-1 | 1-2 |" "+---+----------+----------+----------+" "| 2 | column 2 | 2-1 | 2-2 |" "+---+----------+----------+----------+" "| 3 | N | 3-1 | 3-2 |" "+---+----------+----------+----------+" ); test_table!( dup_column_to_row_single_stop, Matrix::new(4, 3).with(Dup::new(Rows::single(1), Columns::single(0))), "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| N | 0 | 1 | 2 |" "+---+----------+----------+----------+" "| 1 | 1-0 | 1-1 | 1-2 |" "+---+----------+----------+----------+" "| 2 | 2-0 | 2-1 | 2-2 |" "+---+----------+----------+----------+" "| 3 | 3-0 | 3-1 | 3-2 |" "+---+----------+----------+----------+" ); test_table!( dup_row_to_global, Matrix::new(4, 3).with(Dup::new(Segment::all(), Rows::single(0))), "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" "| N | column 0 | column 1 | column 2 |" "+---+----------+----------+----------+" ); test_table!( dup_column_to_global, Matrix::new(4, 3).with(Dup::new(Segment::all(), Columns::single(0))), "+---+---+---+---+" "| N | 0 | 1 | 2 |" "+---+---+---+---+" "| 3 | N | 0 | 1 |" "+---+---+---+---+" "| 2 | 3 | N | 0 |" "+---+---+---+---+" "| 1 | 2 | 3 | N |" "+---+---+---+---+" "| 0 | 1 | 2 | 3 |" "+---+---+---+---+" ); test_table!( dup_empty_table, Matrix::empty().with(Dup::new(Segment::all(), Columns::single(0))), "" ); test_table!( dup_invalid_target, Matrix::new(4, 3).with(Dup::new(Segment::all(), Columns::single(99))), Matrix::new(4, 3), ); test_table!( dup_invalid_source, Matrix::new(4, 3).with(Dup::new(Rows::single(99), Columns::first())), Matrix::new(4, 3), );