From 88aeec74f8473552c76ac80f39a02c0e55c3148e Mon Sep 17 00:00:00 2001 From: Jeremy Jay Date: Mon, 22 Feb 2021 01:47:24 -0500 Subject: [PATCH] broken WIP tests and public testdata --- testdata/basic.tsv | 6 ++ testdata/basic.xls | Bin 0 -> 7680 bytes testdata/basic.xlsx | Bin 0 -> 5981 bytes testdata/basic2.tsv | 6 ++ testdata/basic2.xls | Bin 0 -> 7680 bytes testdata/basic2.xlsx | Bin 0 -> 6014 bytes testdata/multi_test.tsv | 18 ++++++ testdata/multi_test.xls | Bin 0 -> 9216 bytes testdata/multi_test.xlsx | Bin 0 -> 7081 bytes xls/simple_test.go | 132 ++++++++++++++++++++++++++++++--------- xlsx/simple_test.go | 129 ++++++++++++++++++++++++++++++++++---- 11 files changed, 251 insertions(+), 40 deletions(-) create mode 100644 testdata/basic.tsv create mode 100644 testdata/basic.xls create mode 100644 testdata/basic.xlsx create mode 100644 testdata/basic2.tsv create mode 100644 testdata/basic2.xls create mode 100644 testdata/basic2.xlsx create mode 100644 testdata/multi_test.tsv create mode 100644 testdata/multi_test.xls create mode 100644 testdata/multi_test.xlsx diff --git a/testdata/basic.tsv b/testdata/basic.tsv new file mode 100644 index 0000000..9010f34 --- /dev/null +++ b/testdata/basic.tsv @@ -0,0 +1,6 @@ +a b c d +1 Hello 42.0 0.0 +2 World 99.1 0.01 +3 This 7e8 0.001 +4 Tests 2.4e-8 0.0001 +5 Text 0.0001 0.00001 \ No newline at end of file diff --git a/testdata/basic.xls b/testdata/basic.xls new file mode 100644 index 0000000000000000000000000000000000000000..d4eea02696b78ab441b233f1963beca9d5a1a32d GIT binary patch literal 7680 zcmeHLZETh08NQzPoYS5bfphq9jE{OOvy^_V&}1WsJyiiU#*c^_XcncERv2}4E!%W+ z*$cu{L{rAZoP@=>ge;qh8JlxIrlBO8aoJJv1IdJ~fM$REQ-_-}2}B zj_q6U^y0chrdPsqYFn*JhR=-Aq|!z%~pX218~U}^g&cI|QJ z%JK8CVsq4foWOY7m#=@R3@p%>V8TL!6BUl9gvVJ_+of|qm&R_`+|k?9*VDB%v+CZC z&hE_Gp585en>stU^0`7`+3M@An#NjI*0e@=)3OPRX!h@?MR~6^AvZE4jwotLQ%Kr~;p3)L z9hTZdq3iaH$|jo5bH^rzTe$GF?4I2D4G}0I_L?@oZ zU)}yCK%V(HUN-y{<426YX8d(0@rLm?jUP4smhoeDh8El$?&2&LriX>7KBFjdH|+zD z;?17|ZKyhYOYZ#TqeohV)A>2i6@ZDYyd#Mj7^7MRTDrmTglVQf-^ zYVMV>Z-oXr+KIckf4Xf4SM!M_SW14qT|T;i^sB+mc);A)VZ3J8jiKzKqWn{A59}6) zls|PUDm;=6+&+?Z_@NCG;Cr*Jj&#+3J8?nxSaN&$1wF<)#xK(29Q50hK{-4{0m1F9 z^~FX#tpVj9x0TgKE=)=(CNJaIGoqgEvrd3O{y(j*3Wq`;=v~-2Y=g3CN zY-p*@V;B?Ih|{ks3|_hXMEcLSwFXbfM&s4<-#h)4x#ov_j%>^_8{B@hp$(uXbnllw zAsc5lz4OrTKYX{f)tiB5pWX}c^b6yW^RY#B&CFA@LkK2MR5{>xaZ&F!?n&W-YTg-7A~u!)&D%>4jFYXOwl;k zj~ZY8zs9eyIGAzmsBv&HetB?QSbSWJulN|gm)CO2j};`-ewoP`e%$0tzuY8zn4IM& z3O~VVdxrvE7&wFj2M!>c&Eoj+pFGay5RuW-Wg4LjV6PN4~(nD9`3{$Wbrk^2p~X^EtG170{B; z6Q?_(9H|SuOLEw^Zy#6zEja=${F8D<#9H_)fp4UOn?;=o!t9;A`!3amfO5Bn0ahn} z`jWH+?;+);14BtWq05Hstt}qBtqCfocifbrXNhgYJud>=jXz*~hw+_i01w(T4_W?U zD@{1 zK|1yIzN2@5c_e-M(tAf0=@L?gbSbHtw2<^A(q*I?(jrnVX)&peR8MLkHIkZ0^0%3i npCl~L%gQ9-$uxlx(3_OzTH`4yPNnl7t&?-bl_v9_=@IxZp@C%% literal 0 HcmV?d00001 diff --git a/testdata/basic.xlsx b/testdata/basic.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..455d61749308ef4a1cf5c38e9518ed432aca2491 GIT binary patch literal 5981 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 O_{#^rRr$<@xN%oE z`+~5mh?}~sY$jo|(S#T^F&Z)c(NGdKBs(grpi%q)H2(2VF>Ay`IzG>N=WVCMROX_4P__~YmQ>HL9{ zJB~%)bCSzwu`oE?fKIeAb@cN~{9qkf!6;cJJg2tRs^W6h!gj-0GE)kI4$Im9J8&26 zSdZV9tNwl1f=TeK-3X;d+rIk0wxG3{t#@N1+txg6{JyrzmWAy{SvuPGWox1;P)A#W z2`j7p%%I~b;c*t#cIn(tXZ7oDZ|&~t>1yAUT5)e{TW6}dt9xTlM_bz_*30J?t-NO0 z1WH+1!)oCTi_Y9=kwitD2hq3~-bv)f3)Xpcj9q#zy5Bl>ocU#zZ*l7A5^{&#L?$3( z5|0?KF+PFZ;U$y&z>pn?5^-2(*nStseh!&>y9AS{Z$8#Geg4b9W{0(2b#yYWz<9U? zXuyKOUv+dM7IUi*UV%D;CAnlsGK3eR9tWs6j$W-3h6(O!Zjes=j(ihtM=M&8!u8DE zLy~+yrGAL~0d^>kmo**(+%YlhshS!JD)SD%ad>yb1&N*ih@-Cln`f^i7AwK-C#K$O zP08LAi8F#ZBrUN8BMOj?6Z3t!z*W+ViZJSF(jxv!TsypwZbAHn6DB zzS>p@@!~jaH;lCodW!{qWIAX$;AK@6?mrabk?bs6cNE}{YG12K^r@@r-^+M2?s^^A zV*CN)Ta9lsL;hm24_f*m;}09(he~d1-Y`s{k*an@^!ExKkb;(R{L3d(w3pfVbgZX7aof;yA@iNaif(jU-2^Qq9>tl^AwUolDalB|R#iXz3)m&ZRiMed@&9 z*R8)XeXHT~46if3#Sot|VVLFVj{2+H%#!`Fo5FA**AAM|pPpTmew^)r-Qtk)r%r{12h)Ms z2h$FJv|$2#Z>q^CFZm~`hVmXuwoe?&M|jorCx-G-4*GB6K^~r*iNFca`eLJ=)_~HF z*~-e03sa^Pla*0CI!sR2S}7*IrI?PtV(gSnI&dCwAjmo9q&&!Z%&Em77hz6qMc4z$ zaJ5?KPpe#GGL8Dfat}W%l&{DHH6oC+6$ByDd_f3gq(e(>1{ZFiL!&wq?Fz52H60$? zuf}~-p1tbWAGW5YL-vF^;-({FI^<#nJ z1UjO$BZW_vUjAY7wVRuQ8qzU;`HU})UpC$BkjUyLsf^q+<=ISt>*YdPUZ@`{uG zIEyFwQHv-0<1K~{i>LUp{NHfgo>IUoefzLy&mN@HX&gCngpM_xYyOn*HT4^kWWDIU z`*P-q_&)mj`WX3WeR=>N&A$}+uXf=2HlCSpxL(8%bFsVvVdz;Fd&iv#2xd z5yLj#eI2?Gc(SafgVn~LK1eOZ7f85?K!4n(bX>nZ-lD;yO;9n7`L7&~G5>YUf3>}m zA(x*!=D+G(;aH6Muk_-AHNgXvetF@Yqpz^KG!?5r&bEAIoyT&p^-PvutZ#RE)9SOm z9$7q=?faQ7B7Fy)Op+Tom83_H9xytt^-$5%L=L>Zam^%Elk{*%k$z69Azehem^6!2 zOPWoZLz+vPN2(*$ljf5eNSBagGruM9nHr>jQHTkTg;9=x4hYS)#!^%qO6NaZC#Q;q K#?oi?2z&=>WJB2i literal 0 HcmV?d00001 diff --git a/testdata/basic2.xlsx b/testdata/basic2.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bf0f222948aeba0a16c884c55d5ec28499677c77 GIT binary patch literal 6014 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 literal 0 HcmV?d00001 diff --git a/testdata/multi_test.tsv b/testdata/multi_test.tsv new file mode 100644 index 0000000..a9ba187 --- /dev/null +++ b/testdata/multi_test.tsv @@ -0,0 +1,18 @@ + Integers Floats Fractions Dates v1 +One 1 1.234 1/2 "July 11, 2004" TRUE +Two 4 1.2345678 42 1/3 11 Jul 00 TRUE +Three 6 1.0 1/5 9-Sep FALSE +Two Words 99 -42.1 -4 1/5 Jun-42 TRUE +Three Small Words 123456789 123456789.0 9999 9/10 1-1-01 FALSE +This is a longer sentence that fills the cell and overflows 1000000000000 1000000000000.0 +Some merged cells (tall version) 123456789 7 38 2/15 "July 12, 2004" + 5 123456790.234 1/5 22 Aug 00 + 1000000000001 1111 1/10 + + Merged columns (single row) + + Merged cells again (big box) custom yes/no bools! +A yes +B no +C +D diff --git a/testdata/multi_test.xls b/testdata/multi_test.xls new file mode 100644 index 0000000000000000000000000000000000000000..03a2b7d89bb028f8d27c838cbb451e60aafdc562 GIT binary patch literal 9216 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 Nysq8e?z!!I_g~UQPqzR7 literal 0 HcmV?d00001 diff --git a/testdata/multi_test.xlsx b/testdata/multi_test.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8339d31113f54f6b0dcffc775de19adb17d49d2a GIT binary patch literal 7081 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

up5FOk?={^kd0fGKGsNJ__1X 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 literal 0 HcmV?d00001 diff --git a/xls/simple_test.go b/xls/simple_test.go index 6b0035b..6230da8 100644 --- a/xls/simple_test.go +++ b/xls/simple_test.go @@ -7,10 +7,7 @@ import ( ) var testFiles = []string{ - "../testdata/test.xls", - "../testdata/test2.xls", - "../testdata/test3.xls", - "../testdata/test4.xls", + "../testdata/multi_test.xls", "../testdata/basic.xls", "../testdata/basic2.xls", } @@ -44,42 +41,119 @@ func TestLoading(t *testing.T) { } } -func noTestBasic(t *testing.T) { +func TestBasic(t *testing.T) { trueFile, err := os.ReadFile("../testdata/basic.tsv") if err != nil { t.Skip() } lines := strings.Split(string(trueFile), "\n") - for _, fn := range testFiles { - wb, err := Open(fn) + fn := "../testdata/basic.xls" + wb, err := Open(fn) + if err != nil { + t.Fatal(err) + } + + sheets, err := wb.List() + if err != nil { + t.Fatal(err) + } + for _, s := range sheets { + sheet, err := wb.Get(s) if err != nil { t.Fatal(err) } - sheets, err := wb.List() - if err != nil { - t.Fatal(err) - } - for _, s := range sheets { - sheet, err := wb.Get(s) - if err != nil { - t.Fatal(err) + i := 0 + for sheet.Next() { + row := strings.Join(sheet.Strings(), "\t") + if lines[i] != row { + t.Fatalf("line %d mismatch: '%s' <> '%s'", i, row, lines[i]) } - - i := 0 - for sheet.Next() { - row := strings.Join(sheet.Strings(), "\t") - if lines[i] != row { - t.Fatalf("line %d mismatch: '%s' <> '%s'", i, row, lines[i]) - } - i++ - } - } - - err = wb.Close() - if err != nil { - t.Fatal(err) + i++ } } + + err = wb.Close() + if err != nil { + t.Fatal(err) + } +} + +func TestBasic2(t *testing.T) { + trueFile, err := os.ReadFile("../testdata/basic2.tsv") + if err != nil { + t.Skip() + } + lines := strings.Split(string(trueFile), "\n") + + fn := "../testdata/basic2.xls" + wb, err := Open(fn) + if err != nil { + t.Fatal(err) + } + + sheets, err := wb.List() + if err != nil { + t.Fatal(err) + } + for _, s := range sheets { + sheet, err := wb.Get(s) + if err != nil { + t.Fatal(err) + } + + i := 0 + for sheet.Next() { + row := strings.Join(sheet.Strings(), "\t") + if lines[i] != row { + t.Fatalf("line %d mismatch: '%s' <> '%s'", i, row, lines[i]) + } + i++ + } + } + + err = wb.Close() + if err != nil { + t.Fatal(err) + } +} + +func TestMulti(t *testing.T) { + trueFile, err := os.ReadFile("../testdata/multi_test.tsv") + if err != nil { + t.Skip() + } + lines := strings.Split(string(trueFile), "\n") + + fn := "../testdata/multi_test.xls" + wb, err := Open(fn) + if err != nil { + t.Fatal(err) + } + + sheets, err := wb.List() + if err != nil { + t.Fatal(err) + } + for _, s := range sheets { + sheet, err := wb.Get(s) + if err != nil { + t.Fatal(err) + } + + i := 0 + for sheet.Next() { + row := strings.Join(sheet.Strings(), "\t") + if lines[i] != row { + t.Fatalf("line %d mismatch: '%s' <> '%s'", i, row, lines[i]) + } + i++ + } + } + + err = wb.Close() + if err != nil { + t.Fatal(err) + } } diff --git a/xlsx/simple_test.go b/xlsx/simple_test.go index dad0873..56d48d8 100644 --- a/xlsx/simple_test.go +++ b/xlsx/simple_test.go @@ -1,14 +1,57 @@ package xlsx import ( - "log" + "os" + "strings" "testing" ) -func noTestOpen(t *testing.T) { - wb, err := Open("test.xlsx") +var testFiles = []string{ + "../testdata/multi_test.xlsx", + "../testdata/basic.xlsx", + "../testdata/basic2.xlsx", +} + +func TestLoading(t *testing.T) { + for _, fn := range testFiles { + wb, err := Open(fn) + if err != nil { + t.Fatal(err) + } + + sheets, err := wb.List() + if err != nil { + t.Fatal(err) + } + for _, s := range sheets { + sheet, err := wb.Get(s) + if err != nil { + t.Fatal(err) + } + + for sheet.Next() { + sheet.Strings() + } + } + + err = wb.Close() + if err != nil { + t.Fatal(err) + } + } +} + +func TestBasic(t *testing.T) { + trueFile, err := os.ReadFile("../testdata/basic.tsv") if err != nil { - log.Fatal(err) + t.Skip() + } + lines := strings.Split(string(trueFile), "\n") + + fn := "../testdata/basic.xlsx" + wb, err := Open(fn) + if err != nil { + t.Fatal(err) } sheets, err := wb.List() @@ -16,22 +59,38 @@ func noTestOpen(t *testing.T) { t.Fatal(err) } for _, s := range sheets { - //log.Println(s) sheet, err := wb.Get(s) if err != nil { t.Fatal(err) } + i := 0 for sheet.Next() { - sheet.Strings() + row := strings.Join(sheet.Strings(), "\t") + if lines[i] != row { + t.Fatalf("line %d mismatch: '%s' <> '%s'", i, row, lines[i]) + } + i++ } } + + err = wb.Close() + if err != nil { + t.Fatal(err) + } } -func TestOpen2(t *testing.T) { - wb, err := Open("test2.xlsx") +func TestBasic2(t *testing.T) { + trueFile, err := os.ReadFile("../testdata/basic2.tsv") if err != nil { - log.Fatal(err) + t.Skip() + } + lines := strings.Split(string(trueFile), "\n") + + fn := "../testdata/basic2.xlsx" + wb, err := Open(fn) + if err != nil { + t.Fatal(err) } sheets, err := wb.List() @@ -39,14 +98,62 @@ func TestOpen2(t *testing.T) { t.Fatal(err) } for _, s := range sheets { - //log.Println(s) sheet, err := wb.Get(s) if err != nil { t.Fatal(err) } + i := 0 for sheet.Next() { - sheet.Strings() + row := strings.Join(sheet.Strings(), "\t") + if lines[i] != row { + t.Fatalf("line %d mismatch: '%s' <> '%s'", i, row, lines[i]) + } + i++ } } + + err = wb.Close() + if err != nil { + t.Fatal(err) + } +} + +func TestMulti(t *testing.T) { + trueFile, err := os.ReadFile("../testdata/multi_test.tsv") + if err != nil { + t.Skip() + } + lines := strings.Split(string(trueFile), "\n") + + fn := "../testdata/multi_test.xlsx" + wb, err := Open(fn) + if err != nil { + t.Fatal(err) + } + + sheets, err := wb.List() + if err != nil { + t.Fatal(err) + } + for _, s := range sheets { + sheet, err := wb.Get(s) + if err != nil { + t.Fatal(err) + } + + i := 0 + for sheet.Next() { + row := strings.Join(sheet.Strings(), "\t") + if lines[i] != row { + t.Fatalf("line %d mismatch: '%s' <> '%s'", i, row, lines[i]) + } + i++ + } + } + + err = wb.Close() + if err != nil { + t.Fatal(err) + } }