use zfish::table::{BoxStyle, Table};
fn main() {
println!("\n๐งช Edge Case & Complex Unicode Test ๐งช\n");
println!("Test 1: Skin Tone Modifiers");
let mut table1 = Table::new(vec!["Emoji", "Description", "Codepoints"]);
table1.set_box_style(BoxStyle::Single);
table1.add_row(vec!["๐", "Wave (neutral)", "U+1F44B"]);
table1.add_row(vec!["๐๐ป", "Wave (light)", "U+1F44B U+1F3FB"]);
table1.add_row(vec!["๐๐ผ", "Wave (medium-light)", "U+1F44B U+1F3FC"]);
table1.add_row(vec!["๐๐ฝ", "Wave (medium)", "U+1F44B U+1F3FD"]);
table1.add_row(vec!["๐๐พ", "Wave (medium-dark)", "U+1F44B U+1F3FE"]);
table1.add_row(vec!["๐๐ฟ", "Wave (dark)", "U+1F44B U+1F3FF"]);
table1.print();
println!("\n\nTest 2: ZWJ Sequences (Compound Emoji)");
let mut table2 = Table::new(vec!["Emoji", "Description"]);
table2.set_box_style(BoxStyle::Double);
table2.add_row(vec!["๐จโ๐ป", "Man Technologist"]);
table2.add_row(vec!["๐ฉโ๐ฌ", "Woman Scientist"]);
table2.add_row(vec!["๐จโ๐ฉโ๐งโ๐ฆ", "Family"]);
table2.add_row(vec!["๐ณ๏ธโ๐", "Rainbow Flag"]);
table2.add_row(vec!["๐๏ธโ๐จ๏ธ", "Eye in Speech Bubble"]);
table2.print();
println!("\n\nTest 3: Flag Emoji (Regional Indicators)");
let mut table3 = Table::new(vec!["Flag", "Country", "Indicators"]);
table3.set_box_style(BoxStyle::Heavy);
table3.add_row(vec!["๐บ๐ธ", "USA", "U+1F1FA U+1F1F8"]);
table3.add_row(vec!["๐ฌ๐ง", "UK", "U+1F1EC U+1F1E7"]);
table3.add_row(vec!["๐ฏ๐ต", "Japan", "U+1F1EF U+1F1F5"]);
table3.add_row(vec!["๐จ๐ณ", "China", "U+1F1E8 U+1F1F3"]);
table3.add_row(vec!["๐ฎ๐ณ", "India", "U+1F1EE U+1F1F3"]);
table3.print();
println!("\n\nTest 4: Combining Diacritical Marks");
let mut table4 = Table::new(vec!["Base", "Combined", "Description"]);
table4.set_box_style(BoxStyle::Rounded);
table4.add_row(vec!["e", "รฉ", "e + acute accent"]);
table4.add_row(vec!["e", "รช", "e + circumflex"]);
table4.add_row(vec!["n", "รฑ", "n + tilde"]);
table4.add_row(vec!["u", "รผ", "u + diaeresis"]);
table4.add_row(vec!["c", "รง", "c + cedilla"]);
table4.print();
println!("\n\nTest 5: Keycap & Special Sequences");
let mut table5 = Table::new(vec!["Emoji", "Type", "Notes"]);
table5.set_box_style(BoxStyle::Ascii);
table5.add_row(vec!["1๏ธโฃ", "Keycap", "1 + VS + Combining"]);
table5.add_row(vec!["#๏ธโฃ", "Keycap", "# + VS + Combining"]);
table5.add_row(vec!["*๏ธโฃ", "Keycap", "* + VS + Combining"]);
table5.add_row(vec!["๐", "Number", "Encircled 10"]);
table5.print();
println!("\n\nTest 6: Real-World Mixed Content");
let mut table6 = Table::new(vec!["User", "Status", "Message"]);
table6.set_box_style(BoxStyle::Single);
table6.add_row(vec!["Alice ๐ฉโ๐ป", "โ
Online", "Working on ้
็ฎ project ๐"]);
table6.add_row(vec!["Bob ๐จโ๐ฌ", "โ ๏ธ Away", "In cafรฉ drinking โ"]);
table6.add_row(vec!["็ฐไธญใใ", "โ Offline", "ไผ่ญฐไธญใงใ ๐"]);
table6.add_row(vec!["Josรฉ Garcรญa", "โ
Online", "ยกHola! ๐๐ฝ"]);
table6.print();
println!("\n\nTest 7: Variation Selector Comparison");
let mut table7 = Table::new(vec!["Plain", "With VS-16", "Notes"]);
table7.set_box_style(BoxStyle::Double);
table7.add_row(vec!["โ ", "โ ๏ธ", "Warning sign"]);
table7.add_row(vec!["โบ", "โบ๏ธ", "Smiling face"]);
table7.add_row(vec!["โ", "โ๏ธ", "Envelope"]);
table7.add_row(vec!["โ", "โ๏ธ", "Telephone"]);
table7.add_row(vec!["โ", "โ๏ธ", "Pencil"]);
table7.print();
println!("\nโ
All edge case tests completed successfully!");
println!(" Zero dependencies - Pure Rust implementation!");
println!(" Based on Unicode UAX #11 (East Asian Width)");
println!(" Handles: Emoji, ZWJ, VS, Modifiers, Combining Marks\n");
}