@@ -2,6 +2,8 @@ package excelize
2
2
3
3
import (
4
4
"bytes"
5
+ "compress/gzip"
6
+ "encoding/xml"
5
7
"fmt"
6
8
"image/color"
7
9
_ "image/gif"
@@ -184,6 +186,11 @@ func TestSaveAsWrongPath(t *testing.T) {
184
186
}
185
187
}
186
188
189
+ func TestCharsetTranscoder (t * testing.T ) {
190
+ f := NewFile ()
191
+ f .CharsetTranscoder (* new (charsetTranscoderFn ))
192
+ }
193
+
187
194
func TestOpenReader (t * testing.T ) {
188
195
_ , err := OpenReader (strings .NewReader ("" ))
189
196
assert .EqualError (t , err , "zip: not a valid zip file" )
@@ -195,6 +202,18 @@ func TestOpenReader(t *testing.T) {
195
202
0x01 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 ,
196
203
}))
197
204
assert .EqualError (t , err , "not support encrypted file currently" )
205
+
206
+ // Test unexpected EOF.
207
+ var b bytes.Buffer
208
+ w := gzip .NewWriter (& b )
209
+ defer w .Close ()
210
+ w .Flush ()
211
+
212
+ r , _ := gzip .NewReader (& b )
213
+ defer r .Close ()
214
+
215
+ _ , err = OpenReader (r )
216
+ assert .EqualError (t , err , "unexpected EOF" )
198
217
}
199
218
200
219
func TestBrokenFile (t * testing.T ) {
@@ -924,24 +943,6 @@ func TestAddShape(t *testing.T) {
924
943
assert .NoError (t , f .SaveAs (filepath .Join ("test" , "TestAddShape2.xlsx" )))
925
944
}
926
945
927
- func TestAddComments (t * testing.T ) {
928
- f , err := prepareTestBook1 ()
929
- if ! assert .NoError (t , err ) {
930
- t .FailNow ()
931
- }
932
-
933
- s := strings .Repeat ("c" , 32768 )
934
- assert .NoError (t , f .AddComment ("Sheet1" , "A30" , `{"author":"` + s + `","text":"` + s + `"}` ))
935
- assert .NoError (t , f .AddComment ("Sheet2" , "B7" , `{"author":"Excelize: ","text":"This is a comment."}` ))
936
-
937
- // Test add comment on not exists worksheet.
938
- assert .EqualError (t , f .AddComment ("SheetN" , "B7" , `{"author":"Excelize: ","text":"This is a comment."}` ), "sheet SheetN is not exist" )
939
-
940
- if assert .NoError (t , f .SaveAs (filepath .Join ("test" , "TestAddComments.xlsx" ))) {
941
- assert .Len (t , f .GetComments (), 2 )
942
- }
943
- }
944
-
945
946
func TestGetSheetComments (t * testing.T ) {
946
947
f := NewFile ()
947
948
assert .Equal (t , "" , f .getSheetComments (0 ))
@@ -1005,18 +1006,37 @@ func TestAutoFilterError(t *testing.T) {
1005
1006
}
1006
1007
}
1007
1008
1008
- func TestSetPane (t * testing.T ) {
1009
+ func TestSetActiveSheet (t * testing.T ) {
1010
+ f := NewFile ()
1011
+ f .WorkBook .BookViews = nil
1012
+ f .SetActiveSheet (1 )
1013
+ f .WorkBook .BookViews = & xlsxBookViews {WorkBookView : []xlsxWorkBookView {}}
1014
+ f .Sheet ["xl/worksheets/sheet1.xml" ].SheetViews = & xlsxSheetViews {SheetView : []xlsxSheetView {}}
1015
+ f .SetActiveSheet (1 )
1016
+ }
1017
+
1018
+ func TestSetSheetVisible (t * testing.T ) {
1019
+ f := NewFile ()
1020
+ f .WorkBook .Sheets .Sheet [0 ].Name = "SheetN"
1021
+ assert .EqualError (t , f .SetSheetVisible ("Sheet1" , false ), "sheet SheetN is not exist" )
1022
+ }
1023
+
1024
+ func TestGetActiveSheetIndex (t * testing.T ) {
1025
+ f := NewFile ()
1026
+ f .WorkBook .BookViews = nil
1027
+ assert .Equal (t , 1 , f .GetActiveSheetIndex ())
1028
+ }
1029
+
1030
+ func TestRelsWriter (t * testing.T ) {
1031
+ f := NewFile ()
1032
+ f .Relationships ["xl/worksheets/sheet/rels/sheet1.xml.rel" ] = & xlsxRelationships {}
1033
+ f .relsWriter ()
1034
+ }
1035
+
1036
+ func TestGetSheetView (t * testing.T ) {
1009
1037
f := NewFile ()
1010
- f .SetPanes ("Sheet1" , `{"freeze":false,"split":false}` )
1011
- f .NewSheet ("Panes 2" )
1012
- f .SetPanes ("Panes 2" , `{"freeze":true,"split":false,"x_split":1,"y_split":0,"top_left_cell":"B1","active_pane":"topRight","panes":[{"sqref":"K16","active_cell":"K16","pane":"topRight"}]}` )
1013
- f .NewSheet ("Panes 3" )
1014
- f .SetPanes ("Panes 3" , `{"freeze":false,"split":true,"x_split":3270,"y_split":1800,"top_left_cell":"N57","active_pane":"bottomLeft","panes":[{"sqref":"I36","active_cell":"I36"},{"sqref":"G33","active_cell":"G33","pane":"topRight"},{"sqref":"J60","active_cell":"J60","pane":"bottomLeft"},{"sqref":"O60","active_cell":"O60","pane":"bottomRight"}]}` )
1015
- f .NewSheet ("Panes 4" )
1016
- f .SetPanes ("Panes 4" , `{"freeze":true,"split":false,"x_split":0,"y_split":9,"top_left_cell":"A34","active_pane":"bottomLeft","panes":[{"sqref":"A11:XFD11","active_cell":"A11","pane":"bottomLeft"}]}` )
1017
- f .SetPanes ("Panes 4" , "" )
1018
-
1019
- assert .NoError (t , f .SaveAs (filepath .Join ("test" , "TestSetPane.xlsx" )))
1038
+ _ , err := f .getSheetView ("SheetN" , 0 )
1039
+ assert .EqualError (t , err , "sheet SheetN is not exist" )
1020
1040
}
1021
1041
1022
1042
func TestConditionalFormat (t * testing.T ) {
@@ -1207,6 +1227,61 @@ func TestAddVBAProject(t *testing.T) {
1207
1227
assert .NoError (t , f .SaveAs (filepath .Join ("test" , "TestAddVBAProject.xlsm" )))
1208
1228
}
1209
1229
1230
+ func TestContentTypesReader (t * testing.T ) {
1231
+ // Test unsupport charset.
1232
+ f := NewFile ()
1233
+ f .ContentTypes = nil
1234
+ f .XLSX ["[Content_Types].xml" ] = MacintoshCyrillicCharset
1235
+ f .contentTypesReader ()
1236
+ }
1237
+
1238
+ func TestWorkbookReader (t * testing.T ) {
1239
+ // Test unsupport charset.
1240
+ f := NewFile ()
1241
+ f .WorkBook = nil
1242
+ f .XLSX ["xl/workbook.xml" ] = MacintoshCyrillicCharset
1243
+ f .workbookReader ()
1244
+ }
1245
+
1246
+ func TestWorkSheetReader (t * testing.T ) {
1247
+ // Test unsupport charset.
1248
+ f := NewFile ()
1249
+ delete (f .Sheet , "xl/worksheets/sheet1.xml" )
1250
+ f .XLSX ["xl/worksheets/sheet1.xml" ] = MacintoshCyrillicCharset
1251
+ _ , err := f .workSheetReader ("Sheet1" )
1252
+ assert .EqualError (t , err , "xml decode error: XML syntax error on line 1: invalid UTF-8" )
1253
+
1254
+ // Test on no checked worksheet.
1255
+ f = NewFile ()
1256
+ delete (f .Sheet , "xl/worksheets/sheet1.xml" )
1257
+ f .XLSX ["xl/worksheets/sheet1.xml" ] = []byte (`<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><sheetData/></worksheet>` )
1258
+ f .checked = nil
1259
+ _ , err = f .workSheetReader ("Sheet1" )
1260
+ assert .NoError (t , err )
1261
+ }
1262
+
1263
+ func TestRelsReader (t * testing.T ) {
1264
+ // Test unsupport charset.
1265
+ f := NewFile ()
1266
+ rels := "xl/_rels/workbook.xml.rels"
1267
+ f .Relationships [rels ] = nil
1268
+ f .XLSX [rels ] = MacintoshCyrillicCharset
1269
+ f .relsReader (rels )
1270
+ }
1271
+
1272
+ func TestDeleteSheetFromWorkbookRels (t * testing.T ) {
1273
+ f := NewFile ()
1274
+ rels := "xl/_rels/workbook.xml.rels"
1275
+ f .Relationships [rels ] = nil
1276
+ assert .Equal (t , f .deleteSheetFromWorkbookRels ("rID" ), "" )
1277
+ }
1278
+
1279
+ func TestAttrValToInt (t * testing.T ) {
1280
+ _ , err := attrValToInt ("r" , []xml.Attr {
1281
+ {Name : xml.Name {Local : "r" }, Value : "s" }})
1282
+ assert .EqualError (t , err , `strconv.Atoi: parsing "s": invalid syntax` )
1283
+ }
1284
+
1210
1285
func prepareTestBook1 () (* File , error ) {
1211
1286
f , err := OpenFile (filepath .Join ("test" , "Book1.xlsx" ))
1212
1287
if err != nil {
0 commit comments