# frozen_string_literal: true require "test_helper" class TableTest < Minitest::Test include EzdocTestHelpers def test_simple_table xml = create_doc_and_read_xml do |doc| doc.table do doc.tr do doc.td "Cell 1" doc.td "Cell 2" end end end assert_includes xml, "" assert_includes xml, "" assert_includes xml, "" assert_includes xml, "Cell 1" assert_includes xml, "Cell 2" end def test_table_has_borders xml = create_doc_and_read_xml do |doc| doc.table do doc.tr { doc.td "Cell" } end end assert_includes xml, "" assert_includes xml, "").count assert_equal 6, xml.scan("").count assert_includes xml, "R1C1" assert_includes xml, "R3C2" end def test_table_with_formatted_cells xml = create_doc_and_read_xml do |doc| doc.table do doc.tr do doc.td { doc.b { doc.text "Bold" } } doc.td { doc.i { doc.text "Italic" } } doc.td { doc.u { doc.text "Underline" } } end end end assert_includes xml, "Bold" assert_includes xml, "Italic" assert_includes xml, "Underline" assert_includes xml, "" assert_includes xml, "" assert_includes xml, '' end def test_table_with_mixed_content_cells xml = create_doc_and_read_xml do |doc| doc.table do doc.tr do doc.td do doc.text "Normal " doc.b { doc.text "bold" } doc.text " normal" end end end end assert_includes xml, "Normal " assert_includes xml, "bold" assert_includes xml, " normal" end def test_multiple_tables xml = create_doc_and_read_xml do |doc| doc.table do doc.tr { doc.td "Table 1" } end doc.p "Between tables" doc.table do doc.tr { doc.td "Table 2" } end end assert_equal 2, xml.scan("").count assert_includes xml, "Table 1" assert_includes xml, "Table 2" assert_includes xml, "Between tables" end def test_large_table xml = create_doc_and_read_xml do |doc| doc.table do 5.times do |row| doc.tr do 5.times do |col| doc.td "R#{row}C#{col}" end end end end end assert_equal 5, xml.scan("").count assert_equal 25, xml.scan("").count assert_includes xml, "R0C0" assert_includes xml, "R4C4" end end