use zfish::table::{BoxStyle, Table};
fn main() {
println!("\n=== Comprehensive Unicode Width Test ===\n");
println!("Test 1: Emoji Categories");
let mut table1 = Table::new(vec!["Category", "Emoji", "Description"]);
table1.set_box_style(BoxStyle::Single);
table1.add_row(vec!["Faces", "๐๐๐๐", "Smileys"]);
table1.add_row(vec!["Objects", "๐ฑ๐ป๐ฅ๏ธโ", "Devices"]);
table1.add_row(vec!["Symbols", "โ
โโ ๏ธ๐ซ", "Status"]);
table1.add_row(vec!["Animals", "๐ถ๐ฑ๐ญ๐น", "Pets"]);
table1.add_row(vec!["Food", "๐๐๐๐ญ", "Fast Food"]);
table1.add_row(vec!["Transport", "๐๐๐๐", "Vehicles"]);
table1.print();
println!("\n\nTest 2: East Asian Characters");
let mut table2 = Table::new(vec!["Script", "Characters", "Type"]);
table2.set_box_style(BoxStyle::Double);
table2.add_row(vec!["Chinese", "ไฝ ๅฅฝไธ็", "Simplified"]);
table2.add_row(vec!["Japanese", "ใใใซใกใฏ", "Hiragana"]);
table2.add_row(vec!["Japanese", "ใณใณใใใ", "Katakana"]);
table2.add_row(vec!["Japanese", "ไปๆฅใฏ", "Kanji"]);
table2.add_row(vec!["Korean", "์๋
ํ์ธ์", "Hangul"]);
table2.print();
println!("\n\nTest 3: Mixed Content");
let mut table3 = Table::new(vec!["Item", "Value", "Status"]);
table3.set_box_style(BoxStyle::Heavy);
table3.add_row(vec!["ASCII only", "Hello", "โ
"]);
table3.add_row(vec!["With emoji ๐", "Party", "โ
"]);
table3.add_row(vec!["ไธญๆๆต่ฏ", "Test", "โ
"]);
table3.add_row(vec!["Mixed ๆททๅ", "Both", "โ
"]);
table3.print();
println!("\n\nTest 4: Complex Emoji Sequences");
let mut table4 = Table::new(vec!["Type", "Example", "Notes"]);
table4.set_box_style(BoxStyle::Rounded);
table4.add_row(vec!["Plain", "โ ", "No variation selector"]);
table4.add_row(vec!["With VS", "โ ๏ธ", "Variation selector FE0F"]);
table4.add_row(vec!["Skin tone", "๐๐ป", "Light skin tone"]);
table4.add_row(vec!["Skin tone", "๐๐ฟ", "Dark skin tone"]);
table4.add_row(vec!["ZWJ", "๐จโ๐ป", "Man + ZWJ + Laptop"]);
table4.add_row(vec!["Flag", "๐บ๐ธ", "Regional indicators"]);
table4.print();
println!("\n\nTest 5: Special Characters");
let mut table5 = Table::new(vec!["Category", "Chars", "Width"]);
table5.set_box_style(BoxStyle::Ascii);
table5.add_row(vec!["Combining", "e\u{0301}", "1 (e + acute)"]);
table5.add_row(vec!["Box Draw", "โโโโโโ", "All 1-width"]);
table5.add_row(vec!["Math", "โโซโโ", "1-width each"]);
table5.add_row(vec!["Currency", "$โฌยฅยฃ", "All 1-width"]);
table5.add_row(vec!["Fullwidth", "๏ผก๏ผข๏ผฃ๏ผ๏ผ๏ผ", "All 2-width"]);
table5.print();
println!("\n\nTest 6: Long Content Test");
let mut table6 = Table::new(vec!["Type", "Content"]);
table6.set_box_style(BoxStyle::Single);
table6.add_row(vec!["Emoji string", "๐๐๐๐๐๐๐ฐ๐ง๐ญ๐ฌ๐ซ๐ฉ๐ช"]);
table6.add_row(vec![
"Chinese text",
"่ฟๆฏไธไธชๅพ้ฟ็ไธญๆๅญ็ฌฆไธฒ็จๆฅๆต่ฏๅฎฝๅบฆ่ฎก็ฎ",
]);
table6.add_row(vec!["Mixed", "Hello ไธ็ ๐ Testing ๆต่ฏ โ
"]);
table6.print();
println!("\nโ
All comprehensive Unicode tests completed!");
println!(" - Emojis: โ
Aligned correctly");
println!(" - East Asian: โ
2-cell width handled");
println!(" - Variation selectors: โ
Zero-width handled");
println!(" - Skin tones: โ
Modifier handled");
println!(" - ZWJ sequences: โ
Properly rendered");
println!(" - Combining marks: โ
Zero-width handled\n");
}