@@ -236,3 +236,98 @@ fn structure_temperature() {
236236 assert ! ( !pages. is_empty( ) , "should have at least one sheet" ) ;
237237 assert ! ( total_rows( & pages) > 0 , "should have data rows" ) ;
238238}
239+
240+ // ===========================================================================
241+ // Third-party fixtures — smoke tests (must not panic)
242+ // ===========================================================================
243+
244+ /// Generate a pair of smoke + basic-structure tests for an XLSX fixture.
245+ macro_rules! xlsx_fixture_tests {
246+ ( $test_name: ident, $file: expr) => {
247+ paste:: paste! {
248+ #[ test]
249+ fn [ <smoke_ $test_name>] ( ) {
250+ assert_produces_valid_pdf( $file) ;
251+ }
252+
253+ #[ test]
254+ fn [ <structure_ $test_name>] ( ) {
255+ let data = load_fixture( $file) ;
256+ match XlsxParser . parse( & data, & ConvertOptions :: default ( ) ) {
257+ Ok ( ( doc, _) ) => {
258+ let _ = doc. pages. len( ) ;
259+ }
260+ Err ( e) => {
261+ eprintln!( "[WARN] {}: parse error (non-panic): {e}" , $file) ;
262+ }
263+ }
264+ }
265+ }
266+ } ;
267+ }
268+
269+ // --- CC0 (Public Domain) ---------------------------------------------------
270+
271+ xlsx_fixture_tests ! ( ffc, "ffc.xlsx" ) ;
272+ xlsx_fixture_tests ! ( hundred_customers, "100-customers.xlsx" ) ;
273+ xlsx_fixture_tests ! ( thousand_customers, "1000-customers.xlsx" ) ;
274+
275+ // --- Apache POI (Apache 2.0) -----------------------------------------------
276+
277+ xlsx_fixture_tests ! ( charts_123233, "123233_charts.xlsx" ) ;
278+ xlsx_fixture_tests ! ( booleans, "Booleans.xlsx" ) ;
279+ xlsx_fixture_tests ! ( chart_sheet, "chart_sheet.xlsx" ) ;
280+ xlsx_fixture_tests ! ( comments, "comments.xlsx" ) ;
281+ xlsx_fixture_tests ! ( excel_pivot_table, "ExcelPivotTableSample.xlsx" ) ;
282+ xlsx_fixture_tests ! ( excel_tables, "ExcelTables.xlsx" ) ;
283+ xlsx_fixture_tests ! ( formatting, "Formatting.xlsx" ) ;
284+ xlsx_fixture_tests ! ( group_test, "GroupTest.xlsx" ) ;
285+ xlsx_fixture_tests ! ( header_footer_test, "headerFooterTest.xlsx" ) ;
286+ xlsx_fixture_tests ! ( inline_string, "InlineString.xlsx" ) ;
287+ xlsx_fixture_tests ! ( picture, "picture.xlsx" ) ;
288+ xlsx_fixture_tests ! ( right_to_left, "right-to-left.xlsx" ) ;
289+ xlsx_fixture_tests ! ( sample_ss, "SampleSS.xlsx" ) ;
290+ xlsx_fixture_tests ! ( shared_formulas, "shared_formulas.xlsx" ) ;
291+ xlsx_fixture_tests ! ( sheet_tab_colors, "SheetTabColors.xlsx" ) ;
292+ xlsx_fixture_tests ! ( simple_monthly_budget, "simple-monthly-budget.xlsx" ) ;
293+ xlsx_fixture_tests ! ( simple_scatter_chart, "SimpleScatterChart.xlsx" ) ;
294+ xlsx_fixture_tests ! ( themes, "Themes.xlsx" ) ;
295+ xlsx_fixture_tests ! ( with_chart, "WithChart.xlsx" ) ;
296+ xlsx_fixture_tests ! ( with_drawing, "WithDrawing.xlsx" ) ;
297+ xlsx_fixture_tests ! ( with_more_various_data, "WithMoreVariousData.xlsx" ) ;
298+ xlsx_fixture_tests ! ( with_text_box, "WithTextBox.xlsx" ) ;
299+ xlsx_fixture_tests ! ( with_various_data, "WithVariousData.xlsx" ) ;
300+
301+ // --- MIT: Open-Xml-PowerTools (Microsoft) ----------------------------------
302+
303+ xlsx_fixture_tests ! (
304+ sh003_date_first_col,
305+ "SH003-TableWithDateInFirstColumn.xlsx"
306+ ) ;
307+ xlsx_fixture_tests ! ( sh004_offset_location, "SH004-TableAtOffsetLocation.xlsx" ) ;
308+ xlsx_fixture_tests ! ( sh005_shared_strings, "SH005-Table-With-SharedStrings.xlsx" ) ;
309+ xlsx_fixture_tests ! ( sh006_no_shared_strings, "SH006-Table-No-SharedStrings.xlsx" ) ;
310+ xlsx_fixture_tests ! ( sh007_one_cell, "SH007-One-Cell-Table.xlsx" ) ;
311+ xlsx_fixture_tests ! ( sh008_tall_row, "SH008-Table-With-Tall-Row.xlsx" ) ;
312+ xlsx_fixture_tests ! ( sh101_simple_formats, "SH101-SimpleFormats.xlsx" ) ;
313+ xlsx_fixture_tests ! ( sh102_9x9, "SH102-9-x-9.xlsx" ) ;
314+ xlsx_fixture_tests ! ( sh103_no_shared_string, "SH103-No-SharedString.xlsx" ) ;
315+ xlsx_fixture_tests ! ( sh104_with_shared_string, "SH104-With-SharedString.xlsx" ) ;
316+ xlsx_fixture_tests ! ( sh105_no_shared_string2, "SH105-No-SharedString.xlsx" ) ;
317+ xlsx_fixture_tests ! ( sh107_formatted_table, "SH107-9-x-9-Formatted-Table.xlsx" ) ;
318+ xlsx_fixture_tests ! (
319+ sh108_simple_formatted_cell,
320+ "SH108-SimpleFormattedCell.xlsx"
321+ ) ;
322+
323+ // --- MIT: calamine (Rust) --------------------------------------------------
324+
325+ xlsx_fixture_tests ! ( date_1904, "date_1904.xlsx" ) ;
326+ xlsx_fixture_tests ! ( empty_sheet, "empty_sheet.xlsx" ) ;
327+ xlsx_fixture_tests ! ( errors, "errors.xlsx" ) ;
328+ xlsx_fixture_tests ! ( pivots, "pivots.xlsx" ) ;
329+ xlsx_fixture_tests ! ( richtext_namespaced, "richtext-namespaced.xlsx" ) ;
330+ xlsx_fixture_tests ! ( column_row_ranges, "column_row_ranges.xlsx" ) ;
331+ xlsx_fixture_tests ! ( table_multiple, "table-multiple.xlsx" ) ;
332+ xlsx_fixture_tests ! ( formula_issue, "formula.issue.xlsx" ) ;
333+ xlsx_fixture_tests ! ( header_row, "header-row.xlsx" ) ;
0 commit comments