From 29a5eadf9e2b36058f095fcb4a7b0db8032f3a37 Mon Sep 17 00:00:00 2001 From: Benjamin DANGLOT Date: Wed, 27 Nov 2019 13:05:02 +0100 Subject: [PATCH] Fix is collection object log (#927) * fix: isCollection * test: update test * fix: check when it is not empty and not in isCollection * test: update test with new expected properties --- .../objectlog/ObjectLogUtils.java | 6 +++++- .../compare/objectlog/ObjectLogUtils.class | Bin 4362 -> 4470 bytes .../ObjectLogTest.java | 13 ++++++++++++- .../objectlog/ObjectLogUtilsTest.java | 10 ++++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/dspot/src/main/java/eu/stamp_project/dspot/assertiongenerator/assertiongenerator/methodreconstructor/observer/testwithloggenerator/objectlogsyntaxbuilder_constructs/objectlog/ObjectLogUtils.java b/dspot/src/main/java/eu/stamp_project/dspot/assertiongenerator/assertiongenerator/methodreconstructor/observer/testwithloggenerator/objectlogsyntaxbuilder_constructs/objectlog/ObjectLogUtils.java index b32186c2b..c8bd7f921 100644 --- a/dspot/src/main/java/eu/stamp_project/dspot/assertiongenerator/assertiongenerator/methodreconstructor/observer/testwithloggenerator/objectlogsyntaxbuilder_constructs/objectlog/ObjectLogUtils.java +++ b/dspot/src/main/java/eu/stamp_project/dspot/assertiongenerator/assertiongenerator/methodreconstructor/observer/testwithloggenerator/objectlogsyntaxbuilder_constructs/objectlog/ObjectLogUtils.java @@ -21,11 +21,15 @@ public static boolean isNonEmptyPrimitiveCollectionOrMap(Object collectionOrMap) } public static boolean isCollection(Object object) { - return Collection.class.isInstance(object); + return Collection.class.isInstance(object);// && ; } public static boolean isNonEmptyPrimitiveCollection(Object object) { if (isCollection(object) && !((Collection) object).isEmpty()) { + if (!object.getClass().getName().startsWith("java.util")) { + //System.out.println(object.getClass().getName() + " is a custom implementation of collection, skipping..."); + return false; + } Collection collection = (Collection) object; Iterator iterator = collection.iterator(); while (iterator.hasNext()) { diff --git a/dspot/src/main/resources/compare/objectlog/ObjectLogUtils.class b/dspot/src/main/resources/compare/objectlog/ObjectLogUtils.class index 419d1782a04b84a93d7abbd886d3d4fcd2774d59..a2814ef2cd95a9a1c71fe52accabe18f9f3d4004 100644 GIT binary patch literal 4470 zcmdT|>wgqy6@Dh!-I;7QKn4eCZ z7D}rXwNh_1QLD8o*2cE98c3^c)k?MA{puIL`8VjViqCmx_L6{p7k-)dyl2ii?>W!8 zypw$N@3-FtumOLGqYY={xDQXr<4GOobexalDO`~K)0K$g8Ik$4@IGVU**F&9v%iC}6_`W=@h@l@Cct!kq!N3mf^P zX5e)LZy300;7tQ>8The*pBR`haLvGV(VW!rwvKl+RP`L#*4er1!105JJ9l+ynAv{P z8n&8pzLRe1vi)Wa6$^2XcDQ}ip4skX?2g=Eubn+;^`^-&+uf9v?zXay>_cY6A8z5 z#PJ8xZhz5;+bf5V<&9)~>r8LXN%z^=;{^jA^+SoK{fcUL`wtN)j}b3(ybd?BYjDUP z>C8HVj_(ZHJKS`d7U}8!>^^HqL(S?EzycG^^+z;lgrcV8)vhxsdr0(XcxGz46|+P# zG{QV~`Bv%_Pf;MUj5Q=2ujm1D5_qp+(f@Rn*~-{wd=2s9!5V6VGgVm>jnX~C@q-*_ zm{TINC*(G>n{@nCL)7sU1huz0T)n6ow$eE}ugA(66vRr)kzzb>hU4wEix?9;0yxX@ zx<$PJy@twD_DJ3uE1lg*p5v8B%qh)=Dqoe1vQ%0_bqU77D?;peJy~mLh}AnXB<0+1 z`y~vPZ1w8;5)6X&DbLyjvvz8sQ$H;BRnt}eYftHpw=J8sMi{ZHA})jyvS*~MOrO(d z`F6;N_{z`Hdg=1BPNtt(xy;nHq|#xV#=G2HHf8U2q$y`lE$&7c2np=M?gYBAFM;FO zMprr@v{Wp70rY4cn|L<@N@hkfnVYSju%mBl)_5jSGbYD5q!vs zN#NHa*Mr|A;K+ehMbj*V1RfGwAHmh}+XQ}x-;3Buc~EN*Cy7we!yxJe{vbNruswl4 ziplDt$p+nshTs+G9E)6J=AS#nsn>+~hyNw9y$2SPEPST9{TdQ5}v$`S06zH%9sXAxM`*0-CJWXePuZQ>Iw5uu< zk*lgUudA+tytiV0!16lO#WB@<;f9KFAgdND>14H!smagrId6*X;sBxbn0-2Dr72_Z zI`%CmL$ciJ>m!^Jx0P`-4!ipd4blmYNm#4xWU1|5f#xeA%#q55Ab9idJq9oI+kV8i=} zPQuVIhF03Em_XdDoIqj>(eiP5*`Az4m4CzF&A&&+ z892g#?B_ zK8eHhdL6%!kKic%rq^La0#G%gEB=K_9iP&1Y+l(vC|V&mL>Oohr|R3`)O1^%c+Cas z+6AsUPq{>#%u!q<6xEZMEjT?PbbDlLq?ORj(J+Y`4O=4fBOyX{LJ^`Z(fLsVGzO!5 z>lMVV-27YJDArS_R&OEYxW&=u|E$R9Fel-Ke2|>xuIQ7S%@nN^lQR z-$dl@C3iDgu!T4`v-DdSYb&w7kNCCW7#pOYEi%LwIYWs@*&b(E-{&ax9BW>B-~bG2 zRjFJ=DH%{P>MqB_%te$Z4#Pq(QCa{WDfBTvb;!adCE2raf^t%6mr8QB78N)7GOD9r z$AG3WbHI|ak1>nXl7FJCvQ4{59lq%2QX!uKVLtb8mAaq9=97$8T*ur3EaV5>7Bs1YZ#^UE=q`eAkfnZz zY3Rls?9$@!Sc+3f)2Nhb4CM>i$2^o@DB+-kH>OmFvtE!IIV)-dlIneSF+`+nxTlSw;_fr9G>K^bDD0jK#R=?FMGxeLZ~ zmayKKPYs5jP53!q0vz$E4V7zt6 zaY7EGk+;$&_Hi3Vh{&TXxyRUdk25Q0S#VEK;z|BLhi7pf&+~5xW4M5q@ibne4JlZ; zf(Q-e1i=}2iT2JgA5yvrL}DMyA0kGifDKyT9cF3?SNW%3N9$XtyGl|kxr8LukC9h~ G$NvM^*cCVc literal 4362 zcmdT{`F|AU8UM~+Gudn)8Iq7dAc9h07qTFrKtc>hP#}azFbIfrvO8=BHal@=HYBKc z^-ydr*uy4mZPm8antHZCwDstLZU2h?*1w_s*wXL&&g||a(EeWd?94OIJm>d0-pOD8 z{o%&|HsddG?7;ary70KTJfY%A6&K=o3QvpYXKE3}v*PkxExv-Uip$r;i?6GAUff@( zMV%0+!^K*>D5UD}4Po<};_XYq(6 zl!|E;KTz>Q6+cq(s)`>A8$S`3*My&6~9qXcl7Yifq~w`r;Z#O=p9tBu%iQMAOf&y2VumZRXUKC_f|Tw`?X)L79zV`kiR))}+i zH2s)G*Rl&avtSkt*Dl_UHEOyecD86{?1JMKOBo?%4^wm8ET&!4anD)qNZ!s>jo8D& z30cl$!8Im^OIAK>7Ee_SIMnwg(uX9~XXhRwP!2O*X*vCNp?7r5og64yqn2xpo4f6N zo)#JDq2fVfOhMC{0AQYp&b7xCD1@RZ@TzwrV~zp!qh=<%_y;BVRJhdhDE0fmpB|DMp72Ea!k(#hBm`ztux4!l18;o7 zMU!AQ&uw(-`^~<3zRG`{Db;dz7K_FtGqz>Ml~jE8f{anfT3N$2eMZEUaR&Qk&@Ebp z9IJAfrR&P%{V|OX+NEN~+-r%UTr{`2JH$drU>9~LFo^vLJc9icl50Xvex+O40@dYF z?GhE&61Xlj9~75ae3-yde8jd$;J4!82!5BqX<@als?TaCa6%}2jJ%3Z68IFKCGdOv zLCEIBg{o(eBNo+Iy!;aQqfqR|eF^+Y*lnoVeZX)=SeY_UX0Xe)^QKWq;Ksbvc8?fE zBg0;1-&LLLnsi0^tBk=ByExb4zJhD!=Bf2@W6e?9o3{#1$mF<=|;XfEzAo_%Sy9?tQq!F6?81a>;xeL=nzPB zh|~m20_L$~a)KvI?(zKe<|&H==PAn+1y2`fdCFdr^DO!$5ZtD!Xa)ZhClfde4(6Nx zH;2NU!g?d+!{D8+<>fS|CFHK*?zNnKJhqHNhK~e`MxI7A9+|FT z6-b7SY?eR>Rij`RES~oL#we4T8==3Ju!5f^JNPZe!%Ivr?>&49VJE+&6tRMM-9t{A zcZK(8@*0%)q)0EXG0BW$FX@CQfcxW5dD-s#9tf{ zJ=~-8s2E@nT!4NM8!0a`Q1xi?Dq=GvL(-9#LrWkB6^Es{8nJ$T_0M>ZQ0G1du1;ZF z@>4`-p(&WgdO`Q4W>KTy;JR7F6-=R-M6H7U^*5lczmCMrm79N$%rH;*`6U@C(8i3G zF}LMt=l?ahgGjHyCalC(+=Wi8Vs%!_(2{hYW=2OCT9_KE@DPR=R6BK#;$bGk;QYV^ z4)uuq3+*b7sW{#e`UfRz#CG@7siIMLJ2X;E5yGkdQh{l2`TqFW@vsft5 zxFG1h$c{)i5vf;r`ZOrm9%+sEz_ba9$ZU_cMv2QbwD68Ah+Vn)x3(#4qK+HVT@o-a2U>W6rSW5Jk4HtiM=g4{V+62*2z*tDd|x$>fXuU!))0W zjN?(9B1%i(;>$2to;DOQOe)M6Ok^l0`sq@jWb09LlP{wxvMNkPVda4K&=;sD)&5U} zYI~HM)ZvRPZ#Ciw_v^WjchTLA9I*ygbkTJ*R$w9Dn<=l=4+M(a7;qm&NbeDC!qeV2 zoAZZe1^qIWkJjWYmV_XtCOE7^0c&yJnmn#3wTH5w_!drlgr&!>q3u9YUp9;7 zAskKW?PcPQGO?metSl3EmWjK{#Hup!C7*bgZah#sP)qtad*TFF)g!F9=z~YGj`iQd z+IO?&_p|Z?tobn(uDmNXZkJJZ8BpL)Y)_A~lTSVTgx(&k+sJh~Bx1HGQcYc$Jl2JB3$LI+>|yTukZfB=Jm2 zUoVM?l-?l;JEf;3aXO`Mki^N9zEKiKQu^JJIFQmeNn%$@-zB(XZB z-z$mbDSfLXno{~UNhDJGb`rN{>`i)}(=^I getObject() { @@ -67,6 +71,13 @@ public Iterable getIterable() { public Collection getCollection() { return Collections.singleton(""); } + public static class MyList extends ArrayList implements Serializable { + public int aValue = 23; + } + public MyList myList; + public MyList getMyList() { + return this.myList; + } } public static Integer add(Integer a, Integer b) { @@ -88,7 +99,7 @@ public void test() throws Exception { assertNotNull(add__0); // assertEquals(1, add__0.getNotDeterministValues().size()); final Map observationValues = add__0.getObservationValues(); - assertEquals(5, observationValues.size()); + assertEquals(6, observationValues.size()); // assertEquals(25, observationValues.get("(myInternalClass ).compute()")); assertEquals(3, observationValues.get("(myInternalClass ).getA()")); assertEquals(20, observationValues.get("(myInternalClass ).getB()")); diff --git a/dspot/src/test/java/eu/stamp_project/dspot/assertiongenerator/assertiongenerator/methodreconstructor/observer/testwithloggenerator/objectlogsyntaxbuilder_constructs/objectlog/ObjectLogUtilsTest.java b/dspot/src/test/java/eu/stamp_project/dspot/assertiongenerator/assertiongenerator/methodreconstructor/observer/testwithloggenerator/objectlogsyntaxbuilder_constructs/objectlog/ObjectLogUtilsTest.java index 8de7e6306..826860c1e 100644 --- a/dspot/src/test/java/eu/stamp_project/dspot/assertiongenerator/assertiongenerator/methodreconstructor/observer/testwithloggenerator/objectlogsyntaxbuilder_constructs/objectlog/ObjectLogUtilsTest.java +++ b/dspot/src/test/java/eu/stamp_project/dspot/assertiongenerator/assertiongenerator/methodreconstructor/observer/testwithloggenerator/objectlogsyntaxbuilder_constructs/objectlog/ObjectLogUtilsTest.java @@ -14,8 +14,17 @@ */ public class ObjectLogUtilsTest { + public class MyList extends ArrayList { + + } + @Test//TODO empty collection / map are considered as primitive, we may need to found a semantic of the method. public void testIsPrimitiveCollectionOrMap() throws Exception { + + MyList mylist = new MyList(); + mylist.add(""); + assertFalse(ObjectLogUtils.isNonEmptyPrimitiveCollectionOrMap(mylist)); + final ArrayList list = new ArrayList<>(); assertFalse(ObjectLogUtils.isNonEmptyPrimitiveCollectionOrMap(list)); list.add(1); @@ -32,6 +41,7 @@ public void testIsPrimitiveCollectionOrMap() throws Exception { assertTrue(ObjectLogUtils.isNonEmptyPrimitiveCollectionOrMap(set)); assertFalse(ObjectLogUtils.isNonEmptyPrimitiveCollectionOrMap(1)); + } @Test