use super::builder::*;
pub fn corrupted_xml() -> Vec<u8> {
let broken = br#"<worksheet><sheetData><row r="1"><c r="A1"><v>1</v></c><c r="B1"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", DEFAULT_STYLES_XML),
("xl/worksheets/sheet1.xml", broken),
])
}
pub fn missing_relations() -> Vec<u8> {
let rows = r#"<row r="1"><c r="A1"><v>1</v></c></row>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[("rId2", "styles", "styles.xml")]).as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", DEFAULT_STYLES_XML),
(
"xl/worksheets/sheet1.xml",
worksheet_xml(rows, "").as_bytes(),
),
])
}
pub fn out_of_bounds_sst() -> Vec<u8> {
let rows = r#"<row r="1"><c r="A1" t="s"><v>99999</v></c></row>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
("rId3", "sharedStrings", "sharedStrings.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", DEFAULT_STYLES_XML),
(
"xl/sharedStrings.xml",
shared_strings_xml(&["only one entry"]).as_bytes(),
),
(
"xl/worksheets/sheet1.xml",
worksheet_xml(rows, "").as_bytes(),
),
])
}
pub fn overlapping_col_widths() -> Vec<u8> {
let worksheet = r#"<worksheet>
<cols>
<col min="1" max="5" width="10"/>
<col min="3" max="8" width="20"/>
</cols>
<sheetData><row r="1"><c r="A1"><v>1</v></c></row></sheetData>
</worksheet>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", DEFAULT_STYLES_XML),
("xl/worksheets/sheet1.xml", worksheet.as_bytes()),
])
}
pub fn reversed_col_width_range() -> Vec<u8> {
let worksheet = r#"<worksheet>
<cols>
<col min="10" max="5" width="10"/>
</cols>
<sheetData><row r="1"><c r="A1"><v>1</v></c></row></sheetData>
</worksheet>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", DEFAULT_STYLES_XML),
("xl/worksheets/sheet1.xml", worksheet.as_bytes()),
])
}
pub fn invalid_merge_ref() -> Vec<u8> {
let rows = r#"<row r="1"><c r="A1"><v>1</v></c></row>"#;
let merge_cells = r#"<mergeCells count="1"><mergeCell ref="C3:A1"/></mergeCells>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", DEFAULT_STYLES_XML),
(
"xl/worksheets/sheet1.xml",
worksheet_xml(rows, merge_cells).as_bytes(),
),
])
}