Blob Blame History Raw
From a54392a6c40037d9903c7d35dc62f9de6fefffaf Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@collabora.co.uk>
Date: Thu, 8 Oct 2015 10:56:49 +0200
Subject: [PATCH 194/398] CppunitTest_desktop_lib: add Calc find-all testcase

Fails without commit a31f95b180728c1c671930913b4b4ad96ebcda5f (sc tiled
rendering: fix showing all search results, 2015-10-07).

Change-Id: Ibc01d468168367f789b3f5046808104fa3f5ef18
(cherry picked from commit 97c414758d3d8aa3cc2233d52612cf0a33c24c34)
---
 desktop/CppunitTest_desktop_lib.mk          |   3 ++
 desktop/qa/data/search.ods                  | Bin 0 -> 7636 bytes
 desktop/qa/desktop_lib/test_desktop_lib.cxx |  76 ++++++++++++++++++++++++++--
 3 files changed, 76 insertions(+), 3 deletions(-)
 create mode 100644 desktop/qa/data/search.ods

diff --git a/desktop/CppunitTest_desktop_lib.mk b/desktop/CppunitTest_desktop_lib.mk
index be394600ddf0..0c963f9088c2 100644
--- a/desktop/CppunitTest_desktop_lib.mk
+++ b/desktop/CppunitTest_desktop_lib.mk
@@ -56,11 +56,14 @@ $(eval $(call gb_CppunitTest_use_components,desktop_lib,\
     svtools/util/svt \
     sw/util/sw \
     sw/util/swd \
+    sc/util/sc \
+    sc/util/scd \
     toolkit/util/tk \
     ucb/source/core/ucb1 \
     ucb/source/ucp/file/ucpfile1 \
     unoxml/source/service/unoxml \
     xmloff/util/xo \
+    i18npool/source/search/i18nsearch \
 ))
 
 $(eval $(call gb_CppunitTest_use_configuration,desktop_lib))
diff --git a/desktop/qa/data/search.ods b/desktop/qa/data/search.ods
new file mode 100644
index 0000000000000000000000000000000000000000..ea1d73153828a6a80329cfc617e4276fd2b51ab2
GIT binary patch
literal 7636
zcmdT}XIPWV){Qhlsvdgpy(mq33sR+rUIPROhJYkN5Rejz6p;=hy;ms$A|QxVLApqj
zE+8PFAiaIz+-o`K>Ur+{`RzP!OS0BGd(X_8nLWCi*f`_>06qY~<D#k>43i8O1ONc%
z2j(k)3)BUI^m2oM-P~YMJ1`RJ3K#N#+Y7pa5m1Dns~ZGv?`nr~fxwZ12sd{K*dE~o
zfgpAN!dd>lIDY>E0C0X#V>m%hC>L8e7z#rOA-~-Uy1^a8bhTB9FVSAY{DoLuO<5mv
zeSta7@Ub!HxJO(N%mt)-6LdpNOiV^b1_%UdXlQ^yAaiqbJ3G5uw{9U22ybt1G#VWq
z9-fepkdl&;lao_YQc_!6+t}FH+S=OP-90okG&wmrKR>^|zP`1!b$WVw{))3R6HTQP
z0N{ePy0Rk3b7Fmz0FG85!%?7Xb#LRZNIg1xxI{C^EhfZWV<ymBqS9n6>u&E`kF~Zr
znwo#A)_UDx7gFkL?M!FTtom-R|7w&mt-G4<r}o@4>61UqW;)(2uLv64YeFddA`)-Q
zHsn0F6JOpKIvziY?uFJKZ%d|#<u}FWZS*{+@YXqd_;vew#pyjERk^jqjOg(@s@}Cd
z)dk7TBjO`jlR5W79E;ae%LQ}gMp69zGL|emyXpTwOzzbQ7Pqyfn@o2M7!!1W`VDR6
zCrUPf|7tDx`1pUe!1G_e84>0N0YM_6a7ToorweS|bkcoZg3NcOT<riA;m`7#2xQYu
z29JxrfY^HsBP<Q$f6h(=Y`SMpS4Dv4!ueDN8`;9D%^hCf9bAFmK5|)~kD#!p*V8wA
z+Y{)1A?${Wa-tzb#(A-ccgERoYN#E{w8GY)=MKwdNs{1bgZ*F&ZBGuyC%kfO6qh9C
zDX=WM_+Az3lEzL|b+3&lbeZ@#KDg{v%o{~!#gRc8I4jI;sbBl1WYJxc>A^<6Sv>#1
zmWjcaPow$Vc|swta4SV(Ds8je5+0T(M3lvqD;a>C8zeq4HhVOPk@+n~`@^XpN35?8
z)D*L785!Z@3F#S-lzBHe1WE{BdrOVOw#w6>So!4xGpkY&1$?_1?SsF6K~Pz|%fOy+
znG9L!d9n!mN}{Z}oVo10a=2=;pGw$B&nj*K^qwInB5BTXdSFjANxyKFsD3v+$>ORy
zAdhlL@g%x{<zspV8#DG+dX8%n5d(hkU7RyoxrO*09#y3wzeHB8Y1V!N<qh4Cbe_uq
zQrSr5hZAn{$0QI(GJ4^F($ayw#u;4hUgE=vGosI8nwb=l11N<=f;paayr%8zkim(T
zRrOeRPI&$N3t*W6OW|YI3dJJnSneWWDV#LGr_G!WeM<>3JR1U_%L&_IZ`dp_6wf7O
z7c!Yk4pfLwv5}LB^qE~+gT;u_zdo!q=eu$o6nTa3Xne@-T6iUai7lRSb9ze4+47h?
zJt6U12+#Ig$E&5dvHP`vWG=D|Y7snp(X9->)Pc@fdHooQuh53ivLDE56t6+N2a-d)
z)dZ&F?St>ez4Gp5=4E)9x7MVIq(w4UKpbPkV${@g-`e|6FUtF{G)PLkuj6d@!QVr`
zc~w}u@7Sw!f{l{4#@MsmIk#3KE#EByu^KOrT%dBxFoaUy4_FjwKhbfZM0RmJzY^hF
zv%jePd@@wt<Vyyj{8ufyGBO>cJjdtOz6^~tYAbU#x%Xr};P}jC`^0=JZ`k9R);}c3
zJ2T*I*M0C_Q60zFksQ3oDh<^m&S`C*8=7sqo71yd8>$GrSaH+i3>&vrFfaK^<7<Fb
zt4TgN4c(Wt6k-Mb`@=~+m5$gK%x_XU4(wDMrv<am098bz04qmrSL7rH?&e>v%)h17
zz@a(b_F?Cs=CrxE%`}MwTC~`Z5`UW^$rAM#qE2Gub|oYDjG6eR7iEH4;)vHS3dH_4
zTDChPh;izRJL7IrMx94rJ=90x1CO@E>*azx9TWUhz8A*%Bl$~&6M(U;r>{SoZ)xfu
z9$if5oc+919EEQ~mxp&Tt$F(fmuK?GbJ?2e{!^O5xR(9#93vp{o4%l9@G5BdE-iu8
zlLoUM>Yhz5L?#sYEb^;I$yFxjHM}C%mtX5`-qb?|27^YdN>pac_^IsTK1NM-@NE}J
zUDcc+Oq|?;^&UYJSJSVpC3s^WG}J9^KZ-gsXuT%=ux_q6YH=ccWtD_E&at6PBUSPF
zD1Kn5^n<->rw47Ll_P^tzqbNvOzFM5xlT9HRrI8hwO{Pt5V=~>Z^D$fU8v4PRf01E
z*05h3)Wx2H$B2Ak)7O)B8uSzyh&T_GT($6Wmh9#D3VmNlHjSnn+P}AWmS5&>?U!P#
zV_&vB*P9IVxQL^cQA0dV4ba@GRkVDl$Ox||WzysH&^een73kwSd1!TntE+htzdjtD
zx`YD&gfRgCzt=}Xj6T}A!jb30FGe0mOlDjc#EI_BSc5%ZPLqqRyEwgI4<&95xxnLA
zx9k6cS9l$t%RGd=^R=J6#_46r2Z(8sI<OENc#mD)fW6&*=hUR@BVYpG@X5mBykJ!3
z2VM$DQ<VIRQ*FkDy~mqIygfLf?1qhknbkohL-RBEWtwr-6DW%{VZAr_aq*>qIFt0k
zOWo7F1cPA@M>Ha3Uym;_(wmt}Og!%(k*<O?9K^^<RBMafTB4Qa=M)p|e`~Rj6T@zh
zypwHfWKkiZp?A-!)B9FQ&`>^<vbR-fB~>sZJ-u+0B<R4u#92U=cafaE&L%{VN^`=F
zumUD1A4<%VfU3lnl@@zbb-ln0dKJHA6csGlujeFETn?0Ls3$p4PB}<l8AmO(Ea-cw
zEhlvYX(uS(Y;g7M#mMCh$)`VCt{-ZDZ$cuiK{1-0a*`q-Rc)+63`$d+{FJ_NGBqVV
zagSu6SIaXe7?<JYftG}0EGdm~drdA2T>Y}*?5xH;C)Ol<5wM$%`3^vQC3mek{h5#t
zDXuiSJ*h=GzN2a@m1dm;yrt!rOUs+L9-Rz3{oFoW&s4YW!cw3bI=nkzQLtjjJ>-=s
zp;8g{T2W#9#Hn`rNhsH<;+)J2XhmZViAXg&<DS?4nonJZuwfEZ8gIh>WhItCYPh;<
zVx&wE1^-C1+xQeTAapR3iuq`R$!evTE>8_yL0$3DFahV?f;W(=(`&;bt3<TntLNa?
z_sJK%*J0N3`UPwo6KxS$5#*(WdtdTrh$l>KJ~DT?sWQ_nDCo})!Hm`;ncDP@#=lr~
zng>vY=(v7;rSVCWzD>58Y^yrT&n7`w-g?#yO#i?_TIO|DoAPYk)dyD{f(nBcC3Hz|
z5?cFy6|b?DQ(>wd)U;eOg5}8HOZ(tKkP6(e=O?#rg_|Q{s)X3rBM&%Jt(c9;d=C+^
zx}^J@FspH^=eLhTdNTJXJ|c_fr6o%Q@Tvm;*mQKlJ)^(9=q!n|W^zanCLLB9A-o{~
zWGSk6s%U<Jvl~=3{8BEC!6q&TNL9Z#)<PFk?>k>`C!zrYkv;S86TL3mu2r%WNUfn{
zRMt(f$GjyQm9ls;KZx6`RVS_hg4}3fCnzg>0+w^_d9u9`j4POtsow6+T-NRyU1>HE
zk#xzb@Psq^l7YI%>OOM%eMg|T91kcwJ(tsCFOfHmKT^BWU}Z(d^maL<XdHX2x0rZ+
zqs;73QjN%js?rg)`zTD9BX(V3-Zt(U)Mv;n-p_;5a#-ptxyWegAR2+C>R~x&8E|;G
zUNy`a;}#tolq}a^C%EBXE`hvp=Q7<1@%77bVr1UMWYE$M{x&_oJnO+Mwt^z@NBVpd
zC(YSO(?ZH>pPKFJ?GF83ea%=FjsNOH-x@zliMC#R9}5orBDIPwwMs7a1-pI8^;}(i
z_zHMAFzPZ#_D||^J`qPCy<m_(=U!8$Yw$^N^3&!5viK~g0G`-1WZBeMi{O|Mvp{&R
zFF+;RK0BT}I$p^4kRg_}tRyGjyg`g0_Wp6-Tqj~7%LnzMzvx-J1({Ll@wnFq@4EY@
zO5w0YKhHDO&qK{tXKw97@ok=uD(bp#vtYB3k`s~!5mt)E@iou4$FeB4RVhePYSIXq
zh7s~r!?Kg^@`z+7Xi<#L=2y3QOB$Mh&8t4%JM5-?AFnMjp+#Y2QUNuPffxku1>*4#
z+9oEc#gatGa<q3QG{;m~gv`O8NzYiOilhfWZMVI=YN{&XQCBq&%88X|BQI%JmXOW}
zrhIG{mcL~%#+jGhy?HGIM$4|(U&7Ie#av-Yku*#$1~L0m)61zkDo%F|(WvO-o(gr7
z1_{QlWVy$PLJ;iN*-m|FngY~M)_QxdJ@J%72?V=5;$6y3ZPY@;yG1(a4LNLLEr-)o
z2O&=BbRVbG_oMy@^TKA#2<p7w(KpY}BuqQ&z`~5xXvpF^XyI}fw7ng@5PN&&e(rDt
zgNfsYK8g(?m0s-pPDv!49j%**xU4jxG=yUwc*n8K%wys-LKmH~vzGgk{}M$<9w2$o
z1m?9Ag^oA8VLQ}EjlHS)CM-n>6d_<vn{pXA&IWqts0IX<R9v~~Qu|zhxERdebwlA2
zzOa!X-B8&Zs(B@n=kq5ng-ckdVuh*FQ7C;r!p}vgFTSPdQ8x8Of~X=B>qp_sA+p=0
zYEO>ouoewmryGE{I6UzjguMi^rN>-__Vb1p9r1k2^UUVZL{t^G)EFz-l&Z-%Vy?v}
z3Ct^Zs(7YM2tAu_pxb=HE36K0l=ov;e21&ea)<27vh}Nt{BZR^#;X&Tw+$tx<|4tH
zt!sKpl%Ea98dd2Mb1n$N=QWK<J6W3;ub1UO9?g;)R>Qf=mQrE`jT9q!b_5!g=^^w9
zk28ZJ+bynqRO%(qR3zj>2jPcZ8i}?#w&>1L1f}e@i}uD;YmUcevzF-MJ*^wSzDCaZ
zI$$bPy19hae;Ys{kaWx6&~{ng<<rfwUhU)E+H!*$HuB8|Mt7;H;}B#`ebK0EjU(R8
zrY7NDv#F;w$2O%~;#<<p<@dVPvu-)!xf8s;Pp<p*s}i<UT2$RU{S)fYtUQOo#fGj8
z+a7KS;LdWa@fee?Th}H{4QwL4YAod0J9#Nv1`4(#bRCCewxT*qIM~%K>hV(*7ayCg
zT+>gm4pYO`$%JXcRx_8@n>9)Dl+#j1JZSM_el50r{aYha6dnw92|EjW&Q^A5^a+BJ
z;X%o_+9?Mw$@}iI$CVoie$q7^nix~$<JYO{R@-Ix+Mq6WHuq{*;dT|S?d<;g$Qtco
zm)%(SLke%{O^s8}7UztP7q|=?+x?3<pSZO`ozk?3RUde-Q$`GHZ@&kBm=4Bq3C&Q`
z=&iiBsF+E}Q8`l3GO%k)lH>uq7N{2+so=q`cLxYk7Y{7d^tS??ZAz0!->f1Qt&Prl
zy-e$P%Dq-iTvC2@N=DiN=C{&(Rev+@l%`W6D?nT65gC0PMSu;3ahkHmu92h#?lt|6
zAX<?BfxhyMoB<*aZkw%~p#&y7)B^S9O^f(wor>L?sB3mH+mOCe0V(fz^)l)F<am*7
zGfsa4<w0v@-&k;gVkwiM+cGo##r3{QP%r6?i$<^CrBBBnykP?Ds24pWtO#IsB<Rv(
z>^jQP5wB>l+Z>|Rq`}@p(dS3yX{`rITAY*)ySIrXXG;W!70PxIH;UZt&jkqyS*5BH
z4mXD^#5)Vl_;XfIVAD_fyh^9y^mILy_0s8mFM^rTWNmM2Qg0y@_xe~*@-A>_ydm8C
zczp2YQr3QsvqN~>yU$N0^k@2{h;gblXf|*)Tno<7YKN{9YjcGpswIZ9F>G_7`*y~~
z7ZdUgeC<R?@xoKHnwy3);PE@wl`UhLqZl&=->G2akyiQWY2`J@II655a_=L9XNNd^
z=Z>?`4m#UKYH8=qlTqq5y^3Np6?t`*Pvc)$hNs`Ty6c#DOg}A^JrF?!@hD|LVVgxQ
z>a5T|Y|}G#hz8Ay#BxOnpGt}9dsY_&YWD_U`OXEjg*)`4P05voj#1>nhg{*#l$YvG
zUq1~B@Ff@6dB`S9F6VM@hCjctg5d4m@Q&>uPD-U8&+e-^7-^`yyyY43`H)onVaC85
z4*>9E_@^Q1&y*Ad2|l0gK8Wj$nq(#q-t)cGv;MAQtV2C|VH{+sHKNh0Hg$s<E`!8Z
zrsi6iq&myf=8EX%>pKx#wz#@Dyi*t`GG;{kg7|i7&;=)W(A!>dpK;%?cXI|iS)!rn
z4+_C^Q<tkFqGnBI%~6`2L*k!G^FwN?@=_SG@}dk7ShCLsIJ7S2=so8xnyH;DL2!i+
zEV_pYnZjV`&kj!&fhZN+=Gz5*#Q|670|KYBZb)=EIUEI@(G@!;#YA4ap2NrlB=vyC
zesHqrN7@DJKE(SB3-M7}GC?M~9Z=&9??+(kv^vX8$*CBUfO8YIg(+?mzM(PqO>ph5
zRt#e_>P!bO-g(f-0)hsr2gPxlu3ydaQZl$=r=JV8nzfx+ZptA~m2++<FSn~QJJ=wK
zyV7gY-`w+TpaaD0V>G3l{S<Ay<Ez^BkmqH?yf5ilFGaQCA*t+Zwn=|H>3!LriC53&
zxaC`E4sI{B`Q1#jqB;G_kGeB;W<hntN=o_h)V^0}mSmCoQfyvZf7cc<pMDEIK)w{;
z(KL<W9jcq~!VdXT`DXIMuBh3vDm3jwOQy6D-~GCk>g`d6DAtR44g!xw4fd`%h!N-+
zW;ZZl%iawdVLGq>3J*(?ZcKvk6(-sD`vuQ=LdXRShdMwINI`ddhu*keIQlAC(56f<
zq;E_?2p89#yZgCw#!Imf6I`LKlq=IsQE^6kxy7p)Zx^1Zh|EM)KVApZcSTecwtz(K
zcsRP%oN8A1q#6XD=S@mYjMefnr7(PPM(1Vl*585iN?Iod3tT6H^*_z#_DtE9(P?CD
z8IicHM$}Oqg-^ivKnc3@!G~6|Z=S%xSP!|D8SS;lEE_Q;Rg_tE30$lHBD9t{CP3i<
z!OiX<B$~cnTeDpxaa&KaC2M`Y)8@r6I$Or(GhbBy*z|p({6(wT7Zn>8=oy~`r@I?=
zcTvObUuM|iZBm6dbXFUrz0Q_T1^drv=F6)+lwk^eIgW?X%hg*<hN|V~;j7+r8p6ed
z5B)uS-!i(Gh<&&7>?_a}?f`W}x&N8VMF<Nyz+Aydh`Z2VbGF|hn44drFd1KzE%<*$
zAzfWz|BRylMG4*9T^-#a2*f`lF$?AY@D1t$c7z~=l%Pl#up8nZT%`R4*v-`q<#z7p
zzj41xP;&hO2ez|=z#y3Ty1EP5q1@g7y*S6lH0z7!`USu`KVj_m5&u<j&SU2WhC^Wg
zqZ<e$7>W8RcE56i0#h2T8z4mib!`=)@BIs-v1Onhcq=nm<1!!rlZ33^BBk5zg>Qw_
z<o)Ms&^Uy)N!+JL6MEZ)#h}U*x&~=!k&2hj2>hlAASYGjWuYxokiU2>$&rc=Y-Y{4
z(p1Q(C3DT+B!hBfEEGvXrzgDX)D@%hhrg&f!yh(uE(HFie)BteEA*B$CgD5T^&e4v
zK-t~pxxkI^J(O_ct)TiF?&=qv(u%y)2Jquz@4WkrZ{Q7E9IR;E<>7%`6<7zD6iOP^
zHe8V#l+X#+(R@_V3~t9AMyISk1>q-mjz`n?Z{vxy28@8xZ@}2Ls?SunuaGh_x?Tr7
z?u@&)Y!7dch7a7on^N|LvJ&C@TJ@3{ubqG=b!&2hfaIAh`V2aCz*{(LuSm(YF4oH4
zq~F{WxI=Ybrv|)587!E-cLTGc($&0xMGpA=e#)N}|NZoBcjfP>zwelQ2LM2r+u!Y<
zd}H}m!$0Sc&V}=b1!9`u&w2H~BY$2Wp68f;SoX!gWSssE{CN~VUq1e1m=gS0O#U7B
zv-<zpN4^8&u3!}Z-y{CtQ9p~`Umc9Y)WG+4j2S1sA%7=|-(Lq9!t{mTOXOcG_Xp}<
zBKhMPpYlIhen{qj%Odv+mLC%OdzNz%{b9&ou>4h0f6sI-sz2<>FPQ#AVt-F|u4+GQ
z?H6P}OYXmTzP06Z+&A4k7u_GmM)jYe{*46xQ!Dsu;qLx|^k)J7Z=J0A1<%id{8uM`
i7Ls#G{$Z;ao?i;It|l&K(hLAx#(dl``lC&A{`7zUFl)>J

literal 0
HcmV?d00001

diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index a7696d824bee..3e00e597c314 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -16,6 +16,11 @@
 #include <sfx2/objsh.hxx>
 #include <sfx2/lokhelper.hxx>
 #include <test/unoapi_test.hxx>
+#include <comphelper/lok.hxx>
+#include <comphelper/dispatchcommand.hxx>
+#include <comphelper/propertysequence.hxx>
+#include <svl/srchitem.hxx>
+#include <LibreOfficeKit/LibreOfficeKitEnums.h>
 
 #include "../../inc/lib/init.hxx"
 
@@ -45,14 +50,17 @@ public:
         UnoApiTest::tearDown();
     };
 
-    LibLODocument_Impl* loadDoc(const char* pName);
+    LibLODocument_Impl* loadDoc(const char* pName, LibreOfficeKitDocumentType eType = LOK_DOCTYPE_TEXT);
     void closeDoc();
+    static void callback(int nType, const char* pPayload, void* pData);
+    void callbackImpl(int nType, const char* pPayload);
 
     void testGetStyles();
     void testGetFonts();
     void testCreateView();
     void testGetFilterTypes();
     void testGetPartPageRectangles();
+    void testSearchCalc();
 
     CPPUNIT_TEST_SUITE(DesktopLOKTest);
     CPPUNIT_TEST(testGetStyles);
@@ -60,16 +68,31 @@ public:
     CPPUNIT_TEST(testCreateView);
     CPPUNIT_TEST(testGetFilterTypes);
     CPPUNIT_TEST(testGetPartPageRectangles);
+    CPPUNIT_TEST(testSearchCalc);
     CPPUNIT_TEST_SUITE_END();
 
     uno::Reference<lang::XComponent> mxComponent;
+    OString m_aTextSelection;
 };
 
-LibLODocument_Impl* DesktopLOKTest::loadDoc(const char* pName)
+LibLODocument_Impl* DesktopLOKTest::loadDoc(const char* pName, LibreOfficeKitDocumentType eType)
 {
     OUString aFileURL;
     createFileURL(OUString::createFromAscii(pName), aFileURL);
-    mxComponent = loadFromDesktop(aFileURL, "com.sun.star.text.TextDocument");
+    OUString aService;
+    switch (eType)
+    {
+    case LOK_DOCTYPE_TEXT:
+        aService = "com.sun.star.text.TextDocument";
+        break;
+    case LOK_DOCTYPE_SPREADSHEET:
+        aService = "com.sun.star.sheet.SpreadsheetDocument";
+        break;
+    default:
+        CPPUNIT_ASSERT(false);
+        break;
+    }
+    mxComponent = loadFromDesktop(aFileURL, aService);
     if (!mxComponent.is())
     {
         CPPUNIT_ASSERT(false);
@@ -86,6 +109,23 @@ void DesktopLOKTest::closeDoc()
     }
 }
 
+void DesktopLOKTest::callback(int nType, const char* pPayload, void* pData)
+{
+    static_cast<DesktopLOKTest*>(pData)->callbackImpl(nType, pPayload);
+}
+
+void DesktopLOKTest::callbackImpl(int nType, const char* pPayload)
+{
+    switch (nType)
+    {
+    case LOK_CALLBACK_TEXT_SELECTION:
+    {
+        m_aTextSelection = pPayload;
+    }
+    break;
+    }
+}
+
 void DesktopLOKTest::testGetStyles()
 {
     LibLODocument_Impl* pDocument = loadDoc("blank_text.odt");
@@ -191,6 +231,36 @@ void DesktopLOKTest::testGetFilterTypes()
     free(pJSON);
 }
 
+void DesktopLOKTest::testSearchCalc()
+{
+    LibLibreOffice_Impl aOffice;
+    comphelper::LibreOfficeKit::setActive();
+    LibLODocument_Impl* pDocument = loadDoc("search.ods");
+    pDocument->pClass->initializeForRendering(pDocument);
+    pDocument->pClass->registerCallback(pDocument, &DesktopLOKTest::callback, this);
+
+    uno::Sequence<beans::PropertyValue> aPropertyValues(comphelper::InitPropertySequence(
+    {
+        {"SearchItem.SearchString", uno::makeAny(OUString("foo"))},
+        {"SearchItem.Backward", uno::makeAny(false)},
+        {"SearchItem.Command", uno::makeAny(static_cast<sal_uInt16>(SvxSearchCmd::FIND_ALL))},
+    }));
+    comphelper::dispatchCommand(".uno:ExecuteSearch", aPropertyValues);
+
+    std::vector<OString> aSelections;
+    sal_Int32 nIndex = 0;
+    do
+    {
+        OString aToken = m_aTextSelection.getToken(0, ';', nIndex);
+        aSelections.push_back(aToken);
+    } while (nIndex >= 0);
+    // This was 1, find-all only found one match.
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), aSelections.size());
+
+    closeDoc();
+    comphelper::LibreOfficeKit::setActive(false);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(DesktopLOKTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
-- 
2.12.0