package xlsx import ( "bytes" "os" "testing" "xml" ) // Test we can correctly open a XSLX file and return a xlsx.File // struct. func TestOpenFile(t *testing.T) { var xlsxFile *File var error os.Error xlsxFile, error = OpenFile("testfile.xlsx") if error != nil { t.Error(error.String()) return } if xlsxFile == nil { t.Error("OpenFile returned nil FileInterface without generating an os.Error") return } } // Test that when we open a real XLSX file we create xlsx.Sheet // objects for the sheets inside the file and that these sheets are // themselves correct. func TestCreateSheet(t *testing.T) { var xlsxFile *File var error os.Error var sheet *Sheet var row *Row xlsxFile, error = OpenFile("testfile.xlsx") if error != nil { t.Error(error.String()) return } if xlsxFile == nil { t.Error("OpenFile returned a nil File pointer but did not generate an error.") return } if len(xlsxFile.Sheets) == 0 { t.Error("Expected len(xlsxFile.Sheets) > 0") return } sheet = xlsxFile.Sheets[0] if len(sheet.Rows) != 2 { t.Error("Expected len(sheet.Rows) == 2") return } row = sheet.Rows[0] if len(row.Cells) != 2 { t.Error("Expected len(row.Cells) == 2") return } } // Test that we can correctly extract a reference table from the // sharedStrings.xml file embedded in the XLSX file and return a // reference table of string values from it. func TestReadSharedStringsFromZipFile(t *testing.T) { var xlsxFile *File var error os.Error xlsxFile, error = OpenFile("testfile.xlsx") if error != nil { t.Error(error.String()) return } if xlsxFile.referenceTable == nil { t.Error("expected non nil xlsxFile.referenceTable") return } } func TestReadRowsFromSheet(t *testing.T) { var sharedstringsXML = bytes.NewBufferString(` Foo Bar Baz Quuk `) var sheetxml = bytes.NewBufferString(` 0 1 2 3 `) worksheet := new(XLSXWorksheet) error := xml.Unmarshal(sheetxml, worksheet) if error != nil { t.Error(error.String()) return } sst := new(XLSXSST) error = xml.Unmarshal(sharedstringsXML, sst) if error != nil { t.Error(error.String()) return } reftable := MakeSharedStringRefTable(sst) rows := readRowsFromSheet(worksheet, reftable) if len(rows) != 2 { t.Error("Expected len(rows) == 2") } }