From 7a5515b598f6e4b1cc2b99225bbcbb445455605b Mon Sep 17 00:00:00 2001 From: Simon Brunel Date: Mon, 9 Jul 2018 21:14:25 +0200 Subject: [PATCH 1/2] Add "point style" image tests Replace the old style canvas "mock" context checks by image based unit tests which are easier to maintain and allow more flexibility in the drawing logic since we are not testing the context calls but the final painted result. --- .../controller.bubble/point-style.json | 129 +++++ .../controller.bubble/point-style.png | Bin 0 -> 6566 bytes .../fixtures/controller.line/point-style.json | 98 ++++ test/fixtures/controller.line/point-style.png | Bin 0 -> 6273 bytes .../controller.radar/point-style.json | 95 ++++ .../fixtures/controller.radar/point-style.png | Bin 0 -> 6986 bytes .../element.point/point-style-circle.json | 67 +++ .../element.point/point-style-circle.png | Bin 0 -> 11926 bytes .../element.point/point-style-cross-rot.json | 67 +++ .../element.point/point-style-cross-rot.png | Bin 0 -> 5455 bytes .../element.point/point-style-cross.json | 67 +++ .../element.point/point-style-cross.png | Bin 0 -> 3944 bytes .../element.point/point-style-dash.json | 67 +++ .../element.point/point-style-dash.png | Bin 0 -> 3375 bytes .../element.point/point-style-line.json | 67 +++ .../element.point/point-style-line.png | Bin 0 -> 3391 bytes .../element.point/point-style-rect-rot.json | 67 +++ .../element.point/point-style-rect-rot.png | Bin 0 -> 6520 bytes .../point-style-rect-rounded.json | 67 +++ .../point-style-rect-rounded.png | Bin 0 -> 8262 bytes .../element.point/point-style-rect.json | 67 +++ .../element.point/point-style-rect.png | Bin 0 -> 4857 bytes .../element.point/point-style-star.json | 67 +++ .../element.point/point-style-star.png | Bin 0 -> 6115 bytes .../element.point/point-style-triangle.json | 67 +++ .../element.point/point-style-triangle.png | Bin 0 -> 9173 bytes test/specs/controller.bubble.tests.js | 2 + test/specs/controller.line.tests.js | 2 + test/specs/controller.radar.tests.js | 2 + test/specs/element.point.tests.js | 472 +----------------- 30 files changed, 1000 insertions(+), 470 deletions(-) create mode 100644 test/fixtures/controller.bubble/point-style.json create mode 100644 test/fixtures/controller.bubble/point-style.png create mode 100644 test/fixtures/controller.line/point-style.json create mode 100644 test/fixtures/controller.line/point-style.png create mode 100644 test/fixtures/controller.radar/point-style.json create mode 100644 test/fixtures/controller.radar/point-style.png create mode 100644 test/fixtures/element.point/point-style-circle.json create mode 100644 test/fixtures/element.point/point-style-circle.png create mode 100644 test/fixtures/element.point/point-style-cross-rot.json create mode 100644 test/fixtures/element.point/point-style-cross-rot.png create mode 100644 test/fixtures/element.point/point-style-cross.json create mode 100644 test/fixtures/element.point/point-style-cross.png create mode 100644 test/fixtures/element.point/point-style-dash.json create mode 100644 test/fixtures/element.point/point-style-dash.png create mode 100644 test/fixtures/element.point/point-style-line.json create mode 100644 test/fixtures/element.point/point-style-line.png create mode 100644 test/fixtures/element.point/point-style-rect-rot.json create mode 100644 test/fixtures/element.point/point-style-rect-rot.png create mode 100644 test/fixtures/element.point/point-style-rect-rounded.json create mode 100644 test/fixtures/element.point/point-style-rect-rounded.png create mode 100644 test/fixtures/element.point/point-style-rect.json create mode 100644 test/fixtures/element.point/point-style-rect.png create mode 100644 test/fixtures/element.point/point-style-star.json create mode 100644 test/fixtures/element.point/point-style-star.png create mode 100644 test/fixtures/element.point/point-style-triangle.json create mode 100644 test/fixtures/element.point/point-style-triangle.png diff --git a/test/fixtures/controller.bubble/point-style.json b/test/fixtures/controller.bubble/point-style.json new file mode 100644 index 00000000000..a645075168b --- /dev/null +++ b/test/fixtures/controller.bubble/point-style.json @@ -0,0 +1,129 @@ +{ + "config": { + "type": "bubble", + "data": { + "datasets": [{ + "data": [ + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3} + ], + "backgroundColor": "#00ff00", + "borderColor": "transparent", + "borderWidth": 0, + "pointStyle": [ + "circle", + "cross", + "crossRot", + "dash", + "line", + "rect", + "rectRounded", + "rectRot", + "star", + "triangle" + ] + }, { + "data": [ + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2} + ], + "backgroundColor": "transparent", + "borderColor": "0000ff", + "borderWidth": 0, + "pointStyle": [ + "circle", + "cross", + "crossRot", + "dash", + "line", + "rect", + "rectRounded", + "rectRot", + "star", + "triangle" + ] + }, { + "data": [ + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + {"x": 8, "y": 1}, + {"x": 9, "y": 1} + ], + "backgroundColor": "#00ff00", + "borderColor": "#0000ff", + "borderWidth": 0, + "pointStyle": [ + "circle", + "cross", + "crossRot", + "dash", + "line", + "rect", + "rectRounded", + "rectRot", + "star", + "triangle" + ] + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{"display": false}], + "yAxes": [{ + "display": false, + "ticks": { + "min": 0, + "max": 4 + } + }] + }, + "elements": { + "line": { + "borderColor": "transparent", + "borderWidth": 0, + "fill": false + }, + "point": { + "radius": 16 + } + }, + "layout": { + "padding": { + "left": 24, + "right": 24 + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/controller.bubble/point-style.png b/test/fixtures/controller.bubble/point-style.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d3b8168c07d1e70eda4c04dc50325d25c0b39c GIT binary patch literal 6566 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/point-style.json b/test/fixtures/controller.radar/point-style.json new file mode 100644 index 00000000000..913c1cb87cd --- /dev/null +++ b/test/fixtures/controller.radar/point-style.json @@ -0,0 +1,95 @@ +{ + "config": { + "type": "radar", + "data": { + "labels": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + "datasets": [{ + "borderColor": "transparent", + "data": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3], + "pointBackgroundColor": "#00ff00", + "pointBorderColor": "transparent", + "pointBorderWidth": 0, + "pointRadius": 16, + "pointStyle": [ + "circle", + "cross", + "crossRot", + "dash", + "line", + "rect", + "rectRounded", + "rectRot", + "star", + "triangle" + ] + }, { + "borderColor": "transparent", + "data": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2], + "pointBackgroundColor": "transparent", + "pointBorderColor": "#0000ff", + "pointBorderWidth": 1, + "pointRadius": 16, + "pointStyle": [ + "circle", + "cross", + "crossRot", + "dash", + "line", + "rect", + "rectRounded", + "rectRot", + "star", + "triangle" + ] + }, { + "borderColor": "transparent", + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "pointBackgroundColor": "#00ff00", + "pointBorderColor": "#0000ff", + "pointBorderWidth": 1, + "pointRadius": 16, + "pointStyle": [ + "circle", + "cross", + "crossRot", + "dash", + "line", + "rect", + "rectRounded", + "rectRot", + "star", + "triangle" + ] + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "scale": { + "display": false, + "ticks": { + "min": 0, + "max": 3 + } + }, + "elements": { + "line": { + "fill": false + } + }, + "layout": { + "padding": { + "left": 24, + "right": 24 + } + } + } + }, + "options": { + "canvas": { + "height": 512, + "width": 512 + } + } +} diff --git a/test/fixtures/controller.radar/point-style.png b/test/fixtures/controller.radar/point-style.png new file mode 100644 index 0000000000000000000000000000000000000000..562cb620b054de95898cba7bbc3908b479bfe2da GIT binary patch literal 6986 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 P!tmG;N89qlzSsT(xdDrf literal 0 HcmV?d00001 diff --git a/test/fixtures/element.point/point-style-circle.json b/test/fixtures/element.point/point-style-circle.json new file mode 100644 index 00000000000..714d421a049 --- /dev/null +++ b/test/fixtures/element.point/point-style-circle.json @@ -0,0 +1,67 @@ +{ + "config": { + "type": "bubble", + "data": { + "datasets": [{ + "data": [ + {"x": 0, "y": 3, "r": 0}, + {"x": 1, "y": 3, "r": 2}, + {"x": 2, "y": 3, "r": 4}, + {"x": 3, "y": 3, "r": 8}, + {"x": 4, "y": 3, "r": 16}, + {"x": 5, "y": 3, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "transparent", + "borderWidth": 0 + }, { + "data": [ + {"x": 0, "y": 2, "r": 0}, + {"x": 1, "y": 2, "r": 2}, + {"x": 2, "y": 2, "r": 4}, + {"x": 3, "y": 2, "r": 8}, + {"x": 4, "y": 2, "r": 16}, + {"x": 5, "y": 2, "r": 32} + ], + "backgroundColor": "transparent", + "borderColor": "#0000ff", + "borderWidth": 1 + }, { + "data": [ + {"x": 0, "y": 1, "r": 0}, + {"x": 1, "y": 1, "r": 2}, + {"x": 2, "y": 1, "r": 4}, + {"x": 3, "y": 1, "r": 8}, + {"x": 4, "y": 1, "r": 16}, + {"x": 5, "y": 1, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "#0000ff", + "borderWidth": 2 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "elements": { + "point": { + "pointStyle": "circle" + } + }, + "layout": { + "padding": 40 + }, + "scales": { + "xAxes": [{"display": false}], + "yAxes": [{"display": false}] + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.point/point-style-circle.png b/test/fixtures/element.point/point-style-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..d7b9bf531b237df3f2078a114c527f806694d28a GIT binary patch literal 11926 zcmeHtc{r5s7x!!!`yl%^WGQ=PUndk2B3l$A`!1B7nHo_lBKumjkY!4itV3nV8p>E= zWG~A|_QCt0@9+2h{r_Iq`_Fq_&vlv0bDrn9?{m(5&iQ=Kxp&D}kCBdt4g>-*8tChq zfj|)8Cl~~$2L60X=ynBxkRSuyv*y8ei`g{qM9;0nG`eu6h`P2LCXmHzk$H(C`b>r# zh_eVpauy@z!XrAm*hG<+R3bF&2pCL+P9`zA+R2Hwc3^*?GXgKQGnV~6V7c>8eWT`V z&PMmxd}&dc>-a!mkOkF%E(&&Zg+4;fsl++s;jx&*3*-+9Wc&LY#mt%j?Y)yElXUK{ zI1^?G%z`+)=FUR=L7{$q&Ts!d+6L~`KthBMFAaSZ6N=fm<|4;maTQPv&EIe4u|ry< z2rme?2^R^SY?MEydeAasa=WZ7 z*C2yc&l31Bmahuq53P#If;|ugo7AcqWl@J4|Ej`Rz||851yn#G_vS;7J`haH#SD&X z^(5#jG(IGJ4)IQeCZwj7avmB!HVGpdGb0mwdFzEuJksx6|Lc}oz%vAFYAg>Ha9s@D z2{mZWe8}S>MRjp-b60k9x9)AS=(J7#n*y&g*S^fEZ=sc?qjv~?kVqNi%`cau|k$qd2AilRwMlZM|@2`))92xXnjJ+8&)9A9%I^1<1)(&>NdubdvVowYS zi3qW%)tI1CC8H|q7EdEH`7n=qurR=6 zPGV?-<_s;@2F-f>p5Yf2#?KM&MO8=|pL~ZFjUfH0((>i%hD^R!=z?dbJ3qu`(#J4*%X(+ zwuQwids^t&>{pfZ7G0k<{dco2+IPj=`i%AhFgDQ zSFiHb=MtRuypQcM+dDobB^mE7uWa9ity@C!XlLKKYa@XZPVq&2uy$9#H;j@R0(tB$ z%W7^2Y%cyv#W~$Xm2hLPza;*uKlZ(IU3lDT86^MRQ|7we(}on~@egzlS$t<*X`y8= z+QG3w{CQ@z-br*f)aZBA@-1>_R7NBi70$gWoP*oD)?c?7yLET5R^wd_-2z6=`JLZH8RKlj@3 z(J1rSj?$I{tz{{@v-4sDJwKVe*%7GJ+T3N1A2ca*4L0ZBdf|ZSex0miO9w6XG5!_y zsI3}7e5NX&e4!zhkYWRV704uV6{d?kgZ(znj-is`s=4!B@K7GlYQY=L?taM zpv{@*k?vG^&;f-4cq|GG+1hi{O3QMcUke3Ypi*Dq?N$aUKO=nS3K-O&Z4W6saJ#gZ zRyA>`Dpvg-Xx7&$*oG|ch?E5N6QA7R&affzv0ru!ZH7PW221vhGKkNwqcl`kPTRtM zh$mjvB;D+#{`HWNeLn!eC8g?xT$k3FOg zg2gLI>~AaZ%tPVk=QXP=7Go!km_arE!;n}0_eE?Eg3qu4A@M7#?5lx!%kkbuTIs3+ z;jxq1)Mn)?XS(9~Fd1DL1BdZM8;Jc&H(j2dqFxHWWlsC?feL0eY%Y3GQm5OP^xS0w z!-sLf{i#0+fq4O@;2Rp0otcuVB8XxMgcx&<3FWo_=6Tt{eJ7!WQdlsTb*(V;r|qAY z-0{De^%eVHC5;Q}liH*pQy{0O1)c{v3wa(gpAHIw+&8}xu6VBnewF3;ZCzJG35X_j zCvOSk(6Nn6z0tJc3Df>6perZlc@CpvIx54ei65)(p0eAtJYTFKs6#1Pbv^!*aH4;r zQS;n1Xu#of!JUJ3JUNRjq5j#8v4XCt(>G}MR-NDrBZY9(ynYmY${_#S#~;pl zrKpzUghZHTw}dSd%F?XH_$a0MK+Y?wcM8J3WO zxO;{%|h>f_p30x|Cm zkKDPg1@8XfUyU!aLxI37ZuC&}sJKzWzQgqC>-UKbJ`FLt%LrE=@Nu33y~}*n!uEFs zm{X#7Nj#^V=ed?T20ms=24P?I=^Z|d@ujb6N8easlM|z9pkJWxv`9Q_0@j1NR!!!O zqf|S5F(6Zg)j$?fUJJb_-~aBu&s!CX|02A&5m zBXTl&*6YiwebAtyrV=apPULeS(LVo?B6px?1h!NdEk!K_Vekx}5m*jV`pUebF}OLj zv6BxID9iwsR^*EMeWYLAJP1&xN?>FjA1zh*k^)!-WYL3}I;#C*QB*)JWe&O~{Exf` zAYYUNZa*qu5Lh~R8~7EdM)&?veT@2gAg=*UJhCnl!j4FQUIGW+J9elp1h$A4kPoF6 zu|IT26ifmMRI89V)+37{Ar@?a{2GIP!-1;V+s8s!b(R)P{HNOLF8M1V3j%EC2%Dvhq1HW*RO+N@#0 z4IBfB--&-qaBi?|<4W&1DEM>)CV-nPk9#xp;Ee$`1Z%|OxV3DhkcE9+{_soAYru13 z^3NYR)0_>Yk{&Nj_LzJc#g6;3cxupvdh{vzD=r;Vj-*s-I5Ml>=fj*nVR-jYvnU+Q z%aC+}#Dn&QJF0r(jA;32ifI>UCK8Q5Cqa7+YIqLgvMy2^G849~2i=FQ$B@I{pC{t) zQm8NyLZf}OTL7v!YvFk0DY_R3kH9W4V;uQX#d)F`VTsUzU~;RH0nm++`Q*JrTLLmZ zARip5gRJ0DDTt@T-5f4_@^9?G!YUUv8O61!2xI>8+M&Dx(~tdxtozDDH4S=q=UL0a zVF2RJ6O1$fjHH;J%HC>xQAy+@94EX*h4Z? z{|syiCl~Zu1km;c9XL_JM?Kq zZtU45m$^KREcx+n7dwySOACViJH!GK+oSwHDjk20=3rYp_{U&GIVHRoA zC%Dk4_m5IA%Q0G@Cdtv8H_B=Ho@rXRZh9(R=VhXBG@lMRp8`#YNhv*upjbCrVhiE- z!^%ERH-GJpQvzgh<@pL50r$nDBNQ=siw&ZDgXpbOey4DT<-_7M zNXe7e#1CSmDJ%XgL7!wwsxT2Gvq`#Un&$`1610{Wg6|Epe1CHq-Sgs+@lbTc=Nfk} zJCX~$;aO5)JGc#JzFgIqOsLDcHHY~8x-eP?GlH2!ZZ`O3W=PX#(HFxfrWF}&n&m1r@yB7~-E&x% zL6Epkb!qw=e^3TX-x1zm2iMXQp||(F0?OMlRYDiXX0U3?SzG?quAOT6ceFj^-z^Tb z`OS?8K!GUS1)mQ)^t!v4Mfy%yQ__dPSD$WWjD>exXGtSIZDkTF3bbDRkh!5lmNNmw zk#m4JwuTkoMA%m_es1zzxqWHnr*~nDoz-jG{tn8Ys^xu|UYmXO`UO^!HavBD-eRw! zlFv^VSN24<_QJjOAT%d@gRvmm5>%9Ryd5AExG)%gh!=C+5d7Mzh=RSZGBl^-dq7@1 zN3$km9f4Hcj|c z2d{L9v{pA(~y4O)6r8vm5jX%IWDgrcY?WDlsMZE>Hs-cUYxu>XT)h^@|M4Efy!bl&N# zlH@rri=^ru(TT|Avt->f((-B*EISMDd&7#;)iSEiD!&f@&=p6W4Q{fR@c7pGdanf9 zv_G?kJ`*MMo~N1W@YOpvK zIdFK}$eD9tX|5hu!OcwP^gN=X_#p#Ag!OR?9#fbYG64s+8-VYw`ke?W9c?$`LYIbp zx!keE=Qy@sD0rJB;A7#eQyd{d zV#X9A!v}1YV$8rB-@-d=Smt;jii{*lkX_p+D`?%%QQU}(y^k`Tns#-a=SANk#E2jl zO_NUJ1&>P0$}Q+O%4)Kp6ZgA2B!r*3McxyB z`+C811EO}e+MWrOyoww;NS2p)u&3XS4}E*s_hDS3t62N?f;0LQyo`fKETdbI*H0Fw zl2KU9{vX(-dyY^iUzR$zW>)X*qxkOe_OKyBuWuocBm-}Z*PXcS;bIa86gx=^JYBn7P}A3(u*?E`7mm=jy@{J&u&00>U_uu1Myfh$9Kp6%@m?D;XNY!li0sW zK%e92y}Qeg2%Ok`MN2A*^!vEXkgJp+CZy|XKY|BWb zzMXn%>6wc__6;$Z?2F|0K(>Bxf%B+r`)ERVbg@Spmp@tcNg96#a}r5WF4OP_{buc7 z`&%iowFyYt`|89^D+87M@=)@vqyO^@p?hA&2;a$#ip3A%f>j1yL{Z9e29D-+xKrOw~dx~ zoA90R1F?76*D=vKO7>p;F`PDYRMllBRK2V1@KH?}n1y=FPnN@j!XyA=^{qqt$-bBb0)D?)aJ4dl_o)QV7>=C3!xBUkyqb@*Wjy7iftr1U|w& zgn9rvTDqNF#Y?^_d1J5ZSSqylK|;e3JeoTNF=#>AQw7rz1-08xCMGp&=Dcz%y-T^u zz4z8Q<-hc6EGnJ_Z^ZkEAWg7Cj4eumGO3jXthtG@CJwole-i(NqUVGlmB;b?WDY-3 zKXzQ|FqGf|4fh>?txyB?qsE;XKC@29Zv&sW^VaDI4+Vn3wzVsH>ok?Fh(K3T-+Aq) z8|BzwwL3(SqXrZn|NhmnZgTvu<%1y2J zHldM}9w&kkCRJoTCeoRPaT@ezfKk%%2pX#DAcq=r$qviU#Qf-*N3tL1MwzRCw$ck@ z{vtD76F|d%E}wuNyT=6Lg3vN>zWC-A#E&1h z^ZMfnn!F3!iAP5X0pLXr;xQs5tv2ts2{iRZuAfQM8~>nGXaaA#>XG04;Q(hc64^Gz zINw{p)YCm16Ge9nz5VX&Gofnld8q$`!vIk9o^Z*sf!%l%ni87FV;dfZj%S;ARQ5i6oP)^M{B_a%JQGUI z{fMkYVBxex5rQlRnm*+?NsNGmM`3%5m&J3fdPUzuHVAeiWpIqt#V(tV(Lw9tTq5&gu;JH9g$J8U|S4& z(9uCNB^*&|$2{}Lt&XSCHKwU%kdPm@4Ix~%wx(}pJ13tEy@boz{twP}xlSg=aH|Dd zDmL(SkJH@^zvOG%!VvA<9o?aHx5?4oX#u@KJ?3WN4uH|b%Ub_YLIEM0aN5hC`|8ho zyTTp<=?Uj)N5SFz&3YwnvNU<@9zTyCE$b9mjhT4gc`3TF^wPf4KCMBN94w`gUcmZu zqY7tpl}$Rs|Ds%CB*C;p-5kW<;f@pI6u%H>ll2{<=05RS9D)8x%wd-JB7f33%y9gG% zgi!CU!pr;|TJ$7W2x;w|s>7zeB|zOdi9Y{zNYaKvDj7&aOO_r3r5o3k`k^_VW52#N z(ovw*e4A%*H@;+2?tyQeAYZPmL&%VyMP3^ieGyludMXCxr*=j`1(Yr~FMOb>*kp_m zQ@9|JKTR@*UBK>^A~^uQcZ>T*Id@{!{@KYFQ}?LQV=s?aItv$RDF{lDajx{?WpC&b z+#3KVAM{2ZGRA0iNF^J|7gsK}Klj{gu$tDgk$Waov*eoAq$l~?JNK^b{qDy(_ZwGu z8}yhasY7J#`IU=IU+(QHuK+|iGjU5^`DUuJk=u(ktwDeZ7M}2mStoLZ{*9}3^(5$eUqVFmwpX+xMI)|TQ zv$^96?Z=zn4a=KHd$!hS$QK0u zDd8G{_2NGD)hb1)pr9Lz5en!oUXnfimUZMMKX-T!r(pF1mIYHZi(MLjNW*D%5Qxe2 zU>3k7>}FX<)UoF4UB@2(Cj(au+X~oC|XFRJKsxDEtpa0efeS|yCB&CC1J01Rd(#_;n zTLa<|zrK(P=&MPpJm4;AC%~&OJGbXE#rB3(*vK0#tQ)z=Q8B*=n3n_T)a@@TB1(I= z=11t3ji;L%sU}9ZyYK8uzYkJ>JK<@k^pa+HQL_0$d(=ZUWHCU4(#%{HyN?QDk&Aa# z1(O%NcNI)5%h_Ni=>Ewr87jqzOwIylZ?*4_hB(*NhMxy(Y)1|?bqryU(>So=C!D2z$x%&m9GRi9b?EXD!c>GwbmNm{Zz8= zdm#~DI=(=cGNoyMthrnz`eysI!Q0$^>mAkVTiL(8w!b*|ZJw1`HiwT(n)q27+@izN zw=ObKk`^f`ocgXh!NYS9gU27uy?S1nOT|%X? zM`q8yhv`rQ9$ zx%v#*pfuxKl*2hdA8~a&fNR(Vzr{1>V9@r}bmxQB9(7q)+6$94(LQGJFi!fok4f^+ zz0v+mPB{$=)wuC&`>w%_;zjh%nfjhd#Gb7EEU`?n>}QaqJw>T~FKVc(qc>E=h6rtz z?cmVDtFJct8v2d*$x-$~3%|L0FI}TDU*Y+XRj;xWy*E7=Ha~3e ztLj+x_a_vq;q!#Hsk|wBN@GyFH;{}|?VRN7xrhDV$@fHS=_Qt~sFzUf7NVD?}{%#n?yA) zDBSMqb)rXJb}n82#nB)8P`)x|7tZuMx`?kUV8CSKMNlwRGpGNbh1-T*%)#H=eky%1 z+Ra(}nU$UE6R=1#k=9M?;p`N4x;Tk|8DhI+8v;-= zV}+;6WJ7h6bTBz5rB8l&{!I`(0;_(~C4-Gq>WOJL3E8=2X$Dbx!UfMY>FU1fEwD#M z`|pR$ISnn^M$OrVY%1acJ|DW$rNlD7*1@-W$pamjZxuH(t@Ll7re=u$N{9Lt`}HzR zy{LJgIh$#LtipGvrT#!eRjwx<2bfB)WhKEd3#qmOUjql%E*xMWqv z+*HLH`f3P4lD-=*Cvs2oWLRO?8$HsObJ-h-2!SHbU|w3UkJG##;QJLZ!_Jw67diYH z9YWOs8V83dW{Ea^*Z@+gO4|BmW%N7#PVSzXO~}txIbSbRX|gWQpw`w-m)ic1R&rAA z&dpS9{U2XK%hF||ij#3UK2!IO8G6WeQnskA zoAkSV@I?mCRq<=lCFR>c+pq7hL&@1d%09i`79pa77!#fljbp|75lJP?=LTOpQ0So{vl*i47B(U zwjlvo6Hhn>Rn-c~U+XOq%z3ipEVD*<`3a-meorgB?>eds?H~!ySu4@Ylx9-@*n6s_ z`~yUQb!cAE2O&jKrl_gdSBm1|RHaYvZ_cdIMt<0ix@ah}VYYf{SWE12tDSUz)d>I$ z_E9=458AwDOhn1*KfKMb;AW6kcnS{m=a%P`DfvOHYxv966Y5*>;^5n}*l6T~`MTaZ zRxfvw-HYI!;E1~fgb95wv};x1;_f3?p_`7W*o0$VY1aL8DCSY-)26T=A_-Gh$Q0TR zCC!}qSpm|Le7Hm9E#duXgjxo2F7SBQBiG_Z-w4*Aoy zpkcvG>Q@EHo+b0}?gB*p72nXK21bP#It(N(7kJUeq^Zhi_`CYZkJLTzetN%N1H3t9 zk>ktQ%7O@qrrpvk)UIGBQ*dup2Sb*G8|2LFW$J!z2kkisy=@QwfAEYMt zeO~m)@oT?qJ3dW++Ro{28S2$mO(<)2z~yEkjk4a|#s1>7*V<|L^$ynsAWrU9-H`(N zqjTI413Qoj=8XDD#)Y*LDetSQ*Lu3L#ca1{g*8)hPyeaj=Zs?>ooDevka^^!<7G#! zXU-OO!oDTM(4yH*HxXsztM~Aw3M!5a3U=hQLBsQ}NM<}#E_v>uHuez6Teq1Ry zJ-)9{m*sRNlG+;D40|ry@lLj^_`I9DtQT})T~c{IhH1_VKB92^`M*dyJpwhfk*aT# zGGuqraY92atBgV3Gsm@wIf*}1PJO}juEDBK>TzV!1IXnmG#APjfsZHCx?n`FX>Q{c=OZ|LNpIqkj7oi}xMWf_fe(l1A!M`m}W5PFBsdI0&!DfFEzR&x{$fP9qYsx3)y{(}K70A&it-$D1 zh}*o)5lRC%uLgrcpZL4v`qlTjas2{X)$>CF_PI@K<221TLKq+ad)P1wvkNAQ-NTVP z?_PGYQz(o1?s&KP?FQj^+gpT~#o5C-uxYtGD_pdvw2;WPe z0u6-KJU<*Zj77D=iML_3Ec71|SzE2jXv*vQPPs=@M>?mx<4Vf4g|AC-sEe+$oofN6 zAO4GEjnQ?(v^l4@T73Vo4;02<+v~O8;0eB=IM^PiQDQaK)z|}M{I&G!?uWJ$zC?>% z@etp{5>~5jGnN(WCiT$P`|A*YYm=v=l-Y>1&BR+L#A)*Qk171^aC0K?-?5WegT!V7 zJ%I!cV&SugHi$?{T*L0(4QnD>v%#V{Fc0)!)DI{>kwG9#!jVR{hx7*jVY$C3);{<> zUu}5$`1Gz%>$|t(q&GpQZjogW0$x?X+{Ax7+W;#!f`dXw%2FirCKYxTjAMnWF5;e{~1^c1eN3?ab>j%%4T zZ)O=esBH{2}iX2^HF5VgL$H%0N=YMBI79YxwuD60!r zC9}cvJ3s&}&+s`>=#T~IrGj;`Er&@v$i7_2ogi#7uc#|-8$`<1hlfoD*s5vo{62yF z7t@S{A!qta8qYraeL3@__;ggdVG24+*)YUZ2X%Y?q;hNas^v@*9xr50P znBDb%CQ&XNOrjLX9`+m#&>0IrC$eKxtq)HIFc^{u40=e+8v@YcXfQ+>)G>RVBQ>LaL!n_R2zN!{{WNM(3}7O literal 0 HcmV?d00001 diff --git a/test/fixtures/element.point/point-style-cross-rot.json b/test/fixtures/element.point/point-style-cross-rot.json new file mode 100644 index 00000000000..e81b8b73113 --- /dev/null +++ b/test/fixtures/element.point/point-style-cross-rot.json @@ -0,0 +1,67 @@ +{ + "config": { + "type": "bubble", + "data": { + "datasets": [{ + "data": [ + {"x": 0, "y": 3, "r": 0}, + {"x": 1, "y": 3, "r": 2}, + {"x": 2, "y": 3, "r": 4}, + {"x": 3, "y": 3, "r": 8}, + {"x": 4, "y": 3, "r": 16}, + {"x": 5, "y": 3, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "transparent", + "borderWidth": 0 + }, { + "data": [ + {"x": 0, "y": 2, "r": 0}, + {"x": 1, "y": 2, "r": 2}, + {"x": 2, "y": 2, "r": 4}, + {"x": 3, "y": 2, "r": 8}, + {"x": 4, "y": 2, "r": 16}, + {"x": 5, "y": 2, "r": 32} + ], + "backgroundColor": "transparent", + "borderColor": "#0000ff", + "borderWidth": 1 + }, { + "data": [ + {"x": 0, "y": 1, "r": 0}, + {"x": 1, "y": 1, "r": 2}, + {"x": 2, "y": 1, "r": 4}, + {"x": 3, "y": 1, "r": 8}, + {"x": 4, "y": 1, "r": 16}, + {"x": 5, "y": 1, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "#0000ff", + "borderWidth": 2 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "elements": { + "point": { + "pointStyle": "crossRot" + } + }, + "layout": { + "padding": 40 + }, + "scales": { + "xAxes": [{"display": false}], + "yAxes": [{"display": false}] + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.point/point-style-cross-rot.png b/test/fixtures/element.point/point-style-cross-rot.png new file mode 100644 index 0000000000000000000000000000000000000000..3f6d1df091c73fd4644e0d1baafc8e7c00c2a471 GIT binary patch literal 5455 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.point/point-style-cross.json b/test/fixtures/element.point/point-style-cross.json new file mode 100644 index 00000000000..5eb99441fce --- /dev/null +++ b/test/fixtures/element.point/point-style-cross.json @@ -0,0 +1,67 @@ +{ + "config": { + "type": "bubble", + "data": { + "datasets": [{ + "data": [ + {"x": 0, "y": 3, "r": 0}, + {"x": 1, "y": 3, "r": 2}, + {"x": 2, "y": 3, "r": 4}, + {"x": 3, "y": 3, "r": 8}, + {"x": 4, "y": 3, "r": 16}, + {"x": 5, "y": 3, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "transparent", + "borderWidth": 0 + }, { + "data": [ + {"x": 0, "y": 2, "r": 0}, + {"x": 1, "y": 2, "r": 2}, + {"x": 2, "y": 2, "r": 4}, + {"x": 3, "y": 2, "r": 8}, + {"x": 4, "y": 2, "r": 16}, + {"x": 5, "y": 2, "r": 32} + ], + "backgroundColor": "transparent", + "borderColor": "#0000ff", + "borderWidth": 1 + }, { + "data": [ + {"x": 0, "y": 1, "r": 0}, + {"x": 1, "y": 1, "r": 2}, + {"x": 2, "y": 1, "r": 4}, + {"x": 3, "y": 1, "r": 8}, + {"x": 4, "y": 1, "r": 16}, + {"x": 5, "y": 1, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "#0000ff", + "borderWidth": 2 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "elements": { + "point": { + "pointStyle": "cross" + } + }, + "layout": { + "padding": 40 + }, + "scales": { + "xAxes": [{"display": false}], + "yAxes": [{"display": false}] + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.point/point-style-cross.png b/test/fixtures/element.point/point-style-cross.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf3cda77e88e4f2a2909775f647f59391b571de GIT binary patch literal 3944 zcmeHKdr(tX8b9}Xu>lr|C`DY*D^yUd1X0>jSh;TPBFl4u5Ia0A2nZrE?O;I&H*KYM z3X+wThmVHcYSBajmh!5W+}44_R?$%-^3Vj!f*XUjyiI`Yx%bkY-JQb2LqIX*zvMSE{Lz5My1KycSTKPEW!icen)GYZ)s82#RsInVyZ!0T&i6!wC`&tOW@uJ&NCmBEXh} zFWlL2M8AYf8%Rn}w07{OYYnrO0}jw@FwU0cTwquASVJ!)2++2O`KkRY2{PN>4)$O? zqm(PVg`E{fTs{-v%k0htj~BvNhl7>g_x@~6??VFNbF?dxcnv{r2>)>;jM)bx0~lA> zN*fMY5_%wwi4+F|jH_oM!<&3|%g=!EvzK3l(_LAtHm?1&5~$m#StU38mf!CgqZ$_RJV9lAjT2-kf`=f|-d3P#JN`$Sa6GL!@NBtdOM$Z> zh9)Nc3kV`~I1MxeYv7C^Tv1UpKVCbvEq#9Gc242@)-?4sDoLO*b_f60x^mzv{nUY` zwLcKx{e&V+D)Bo8BuS`wT47N0`|S%(nR8CYfwaHCsr~d+I*Q`0LPUDOk#&{nfdi4P z6L5}4e$pUpL!+fbF6KAS?dlUGjCEqfz8n-!-2i-*pE^{>5g;wj9sXCH`*CoIjWJm% zSHV+nXVlRiBz;i>V`53TE$oA>*c0y zsz&@Lex$;ndoH6ep?U5Hebb;iX;v`vTG7SXgHvPLJj+BBFRHodozao0Gvw-ho9!ny zKhY`VxdLsZ+)yR6qI9bs?!GUPDqI_4|_dIu5xTgDyINFKn10 z&csqKXiqeA@YF}{aN-=4M|iF6hiu8xdKOy5W{9)+HlVp{^V0_ZH})pgU~?k_Das#3 z^)BlEm_imhP!b~?xWIFpiGwfN<3%fE8io-XEd=FG7R)XX%tt+DRm9cy+J`o7YfzlUjLd|+{R%?7e&l@M8>%4?xa|0UT3 zGci2Enl+v#!A?<55*uqNj7Z53F6A0V1=e-%i9?9~Rthbs9=1=y>3zC`> zJD&9Kft;}A8;kP`|7HLsVdDb(qxeYHSS>YwUVgtp4)y2n=8jWtIEdI)ILckn97Ot- zUp}GN^5%INhe_m`T%dZW^XpV2xkj_W>FLYj2Y2lEnu4+9IXCg`oQd`iEnb6Fs%6C! zhZS3k=f35dqbbGX$?p%^l9%6Zu<&kG$;`IouAPXmGztuidI06U^@z|YYwMJaEhW+= zTTxA0$BZhbXiY6gSq|LJ^GZywGKmTEgvz%8Dlx5mj=*0~VI2m`RFwT6LtI)QeQALd z(2>`$3fcq}bYac^Hh?ORL1IK7xVq17qE6Odq0{ICUnh%^hCpvNGXzQ1!UD&Z1Al_S z3=X4vx5a$T_$awNXnI^1)LVsi=rrXJE>wUQ4D+MOrEJPM+!e60-y`8kk>kv>#ve8j zpTp@TJHWa>~LCEV7+m*jhdH0`vLB{p~ literal 0 HcmV?d00001 diff --git a/test/fixtures/element.point/point-style-dash.json b/test/fixtures/element.point/point-style-dash.json new file mode 100644 index 00000000000..16f059eef0d --- /dev/null +++ b/test/fixtures/element.point/point-style-dash.json @@ -0,0 +1,67 @@ +{ + "config": { + "type": "bubble", + "data": { + "datasets": [{ + "data": [ + {"x": 0, "y": 3, "r": 0}, + {"x": 1, "y": 3, "r": 2}, + {"x": 2, "y": 3, "r": 4}, + {"x": 3, "y": 3, "r": 8}, + {"x": 4, "y": 3, "r": 16}, + {"x": 5, "y": 3, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "transparent", + "borderWidth": 0 + }, { + "data": [ + {"x": 0, "y": 2, "r": 0}, + {"x": 1, "y": 2, "r": 2}, + {"x": 2, "y": 2, "r": 4}, + {"x": 3, "y": 2, "r": 8}, + {"x": 4, "y": 2, "r": 16}, + {"x": 5, "y": 2, "r": 32} + ], + "backgroundColor": "transparent", + "borderColor": "#0000ff", + "borderWidth": 1 + }, { + "data": [ + {"x": 0, "y": 1, "r": 0}, + {"x": 1, "y": 1, "r": 2}, + {"x": 2, "y": 1, "r": 4}, + {"x": 3, "y": 1, "r": 8}, + {"x": 4, "y": 1, "r": 16}, + {"x": 5, "y": 1, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "#0000ff", + "borderWidth": 2 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "elements": { + "point": { + "pointStyle": "dash" + } + }, + "layout": { + "padding": 40 + }, + "scales": { + "xAxes": [{"display": false}], + "yAxes": [{"display": false}] + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.point/point-style-dash.png b/test/fixtures/element.point/point-style-dash.png new file mode 100644 index 0000000000000000000000000000000000000000..9c381d83d54687cef9b6cfbbe44f692e47775042 GIT binary patch literal 3375 zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?dzInPhhE&A8y>YQu)>WYG z;w+s8gAbEf1=_AhGDO}`<7Nrm;2?Iw#gL=oCVNTftGlZMuh&<+yJuaxO11ux#(zNt zhXw{lra~t7J4e{mz-$&Th6)xI4gm!Rg#ZTz7QMSCz#IpL3g%H!1&7ga7)=kO`C_yr zpr|DHyMN;O{8g_`ullv})eq%q53jP@+pk}>{rtZ-^FxpKum5K}vHnBNnpNlXdj9Qu z^+S8oGgs&NK=rT1|8y>2^?17Y9r>ECf8O1C*e9R&cOS!!GHdaFzka^m%<$vyA%4kk zm!FIO7iN%e=dHYG@qD)%L(Q%ikInww{QOXq>A~|}#&!9+iCyMa9nZN4Q+1{OU ztNQLgJ6rp{^W5=ORsWmfe+HE9sXqAkVEFmZz%p(2|6|+@+1raBuIFy}{Q!t}{QDfv zdZ0E3h-3cOZf1H=x8t7?sKgRb*r4>_Kf{_8JDowTSQayJ0fyQ77oH1)TD6U$jEox= zJ>vr_yb)E`9h?~BD!_6< zPM^Ve!UrY;=SkuX;*&l!F=z`sU}X%eS!cC?b5Z$Xwb?b*|8IxtXD5H&_D4X$p@D&s zsg!B^u3lXq5R-*NhxLFUSiI4Rk#&JViMB9U5$gfoQBhzBjfTT$dKk?Ypdw+kd?2$# z)cf*!_SS3D<=6hb9JSs4mBhTB^X%2u2 zzkhSym;d$hYtq`UUzywgZ@Bh$I{Uu*=PzIHKC^S#vR!`*-m9`EXtmEMUzh)XDZ?K* z<9mh8G4X%enLhm6u~p9K!`Ek$TnFO$CI2q$kJD%7I&hv}^~aOP*T2s!_Vq2@y?Z~C z!PMq*4p8atFrk4-K%^}Y%sDWnfyqGitt_xk5Ks_MS-`;3nkWM17^p5_@bRo}2iF%Y zoEi*{i4v_~jt`I%eCeJdxLR>!;&KR(aD#AynYa#2*)nR)XrPUzw2_f-4ByARzZSLL zPU`vBsO{ekAIqAb_*%5~>+882?bnq4eg!F-64!ox#Oc33=JmJR!u#yMTz>sE>h)XZ z_WJGD-kxQ?zyI@>($sUNrdQv-`(FVm<3t*s_c}3F*!i<2oDX9Bv1K+>!TV(*4SV-n z#0!FJrNyiw4T~Qe+ko1#0yl&M7{1-9aRoPR`@{km`ufg)0F`GB3H}a@H;O-tf|XfB zIWSsS*&PNqZ5nMEfo7i#2P=D!!N~gH#Sb2TunFH-L>g?(M=cs`LDyK%z&pW`aplZ+ Ri+~*?22WQ%mvv4FO#tm-dMN+^ literal 0 HcmV?d00001 diff --git a/test/fixtures/element.point/point-style-rect-rot.json b/test/fixtures/element.point/point-style-rect-rot.json new file mode 100644 index 00000000000..85875655e1c --- /dev/null +++ b/test/fixtures/element.point/point-style-rect-rot.json @@ -0,0 +1,67 @@ +{ + "config": { + "type": "bubble", + "data": { + "datasets": [{ + "data": [ + {"x": 0, "y": 3, "r": 0}, + {"x": 1, "y": 3, "r": 2}, + {"x": 2, "y": 3, "r": 4}, + {"x": 3, "y": 3, "r": 8}, + {"x": 4, "y": 3, "r": 16}, + {"x": 5, "y": 3, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "transparent", + "borderWidth": 0 + }, { + "data": [ + {"x": 0, "y": 2, "r": 0}, + {"x": 1, "y": 2, "r": 2}, + {"x": 2, "y": 2, "r": 4}, + {"x": 3, "y": 2, "r": 8}, + {"x": 4, "y": 2, "r": 16}, + {"x": 5, "y": 2, "r": 32} + ], + "backgroundColor": "transparent", + "borderColor": "#0000ff", + "borderWidth": 1 + }, { + "data": [ + {"x": 0, "y": 1, "r": 0}, + {"x": 1, "y": 1, "r": 2}, + {"x": 2, "y": 1, "r": 4}, + {"x": 3, "y": 1, "r": 8}, + {"x": 4, "y": 1, "r": 16}, + {"x": 5, "y": 1, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "#0000ff", + "borderWidth": 2 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "elements": { + "point": { + "pointStyle": "rectRot" + } + }, + "layout": { + "padding": 40 + }, + "scales": { + "xAxes": [{"display": false}], + "yAxes": [{"display": false}] + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.point/point-style-rect-rot.png b/test/fixtures/element.point/point-style-rect-rot.png new file mode 100644 index 0000000000000000000000000000000000000000..09c0adac3d3e32580845000e7188e63fb60b7c95 GIT binary patch literal 6520 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.point/point-style-rect-rounded.json b/test/fixtures/element.point/point-style-rect-rounded.json new file mode 100644 index 00000000000..6d65b46d820 --- /dev/null +++ b/test/fixtures/element.point/point-style-rect-rounded.json @@ -0,0 +1,67 @@ +{ + "config": { + "type": "bubble", + "data": { + "datasets": [{ + "data": [ + {"x": 0, "y": 3, "r": 0}, + {"x": 1, "y": 3, "r": 2}, + {"x": 2, "y": 3, "r": 4}, + {"x": 3, "y": 3, "r": 8}, + {"x": 4, "y": 3, "r": 16}, + {"x": 5, "y": 3, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "transparent", + "borderWidth": 0 + }, { + "data": [ + {"x": 0, "y": 2, "r": 0}, + {"x": 1, "y": 2, "r": 2}, + {"x": 2, "y": 2, "r": 4}, + {"x": 3, "y": 2, "r": 8}, + {"x": 4, "y": 2, "r": 16}, + {"x": 5, "y": 2, "r": 32} + ], + "backgroundColor": "transparent", + "borderColor": "#0000ff", + "borderWidth": 1 + }, { + "data": [ + {"x": 0, "y": 1, "r": 0}, + {"x": 1, "y": 1, "r": 2}, + {"x": 2, "y": 1, "r": 4}, + {"x": 3, "y": 1, "r": 8}, + {"x": 4, "y": 1, "r": 16}, + {"x": 5, "y": 1, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "#0000ff", + "borderWidth": 2 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "elements": { + "point": { + "pointStyle": "rectRounded" + } + }, + "layout": { + "padding": 40 + }, + "scales": { + "xAxes": [{"display": false}], + "yAxes": [{"display": false}] + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.point/point-style-rect-rounded.png b/test/fixtures/element.point/point-style-rect-rounded.png new file mode 100644 index 0000000000000000000000000000000000000000..a58e9e62361a96fb187cc342c58d89c954faaaa4 GIT binary patch literal 8262 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.point/point-style-rect.json b/test/fixtures/element.point/point-style-rect.json new file mode 100644 index 00000000000..5e2be596366 --- /dev/null +++ b/test/fixtures/element.point/point-style-rect.json @@ -0,0 +1,67 @@ +{ + "config": { + "type": "bubble", + "data": { + "datasets": [{ + "data": [ + {"x": 0, "y": 3, "r": 0}, + {"x": 1, "y": 3, "r": 2}, + {"x": 2, "y": 3, "r": 4}, + {"x": 3, "y": 3, "r": 8}, + {"x": 4, "y": 3, "r": 16}, + {"x": 5, "y": 3, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "transparent", + "borderWidth": 0 + }, { + "data": [ + {"x": 0, "y": 2, "r": 0}, + {"x": 1, "y": 2, "r": 2}, + {"x": 2, "y": 2, "r": 4}, + {"x": 3, "y": 2, "r": 8}, + {"x": 4, "y": 2, "r": 16}, + {"x": 5, "y": 2, "r": 32} + ], + "backgroundColor": "transparent", + "borderColor": "#0000ff", + "borderWidth": 1 + }, { + "data": [ + {"x": 0, "y": 1, "r": 0}, + {"x": 1, "y": 1, "r": 2}, + {"x": 2, "y": 1, "r": 4}, + {"x": 3, "y": 1, "r": 8}, + {"x": 4, "y": 1, "r": 16}, + {"x": 5, "y": 1, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "#0000ff", + "borderWidth": 2 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "elements": { + "point": { + "pointStyle": "rect" + } + }, + "layout": { + "padding": 40 + }, + "scales": { + "xAxes": [{"display": false}], + "yAxes": [{"display": false}] + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.point/point-style-rect.png b/test/fixtures/element.point/point-style-rect.png new file mode 100644 index 0000000000000000000000000000000000000000..493c9a692729feab5ccf8665ad766ffcc1d45898 GIT binary patch literal 4857 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 Js@y^O=|7H?N(le} literal 0 HcmV?d00001 diff --git a/test/fixtures/element.point/point-style-triangle.json b/test/fixtures/element.point/point-style-triangle.json new file mode 100644 index 00000000000..e7657f1af25 --- /dev/null +++ b/test/fixtures/element.point/point-style-triangle.json @@ -0,0 +1,67 @@ +{ + "config": { + "type": "bubble", + "data": { + "datasets": [{ + "data": [ + {"x": 0, "y": 3, "r": 0}, + {"x": 1, "y": 3, "r": 2}, + {"x": 2, "y": 3, "r": 4}, + {"x": 3, "y": 3, "r": 8}, + {"x": 4, "y": 3, "r": 16}, + {"x": 5, "y": 3, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "transparent", + "borderWidth": 0 + }, { + "data": [ + {"x": 0, "y": 2, "r": 0}, + {"x": 1, "y": 2, "r": 2}, + {"x": 2, "y": 2, "r": 4}, + {"x": 3, "y": 2, "r": 8}, + {"x": 4, "y": 2, "r": 16}, + {"x": 5, "y": 2, "r": 32} + ], + "backgroundColor": "transparent", + "borderColor": "#0000ff", + "borderWidth": 1 + }, { + "data": [ + {"x": 0, "y": 1, "r": 0}, + {"x": 1, "y": 1, "r": 2}, + {"x": 2, "y": 1, "r": 4}, + {"x": 3, "y": 1, "r": 8}, + {"x": 4, "y": 1, "r": 16}, + {"x": 5, "y": 1, "r": 32} + ], + "backgroundColor": "#00ff00", + "borderColor": "#0000ff", + "borderWidth": 2 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "elements": { + "point": { + "pointStyle": "triangle" + } + }, + "layout": { + "padding": 40 + }, + "scales": { + "xAxes": [{"display": false}], + "yAxes": [{"display": false}] + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.point/point-style-triangle.png b/test/fixtures/element.point/point-style-triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..d2cc5c6f1e8d55281ef142dc347db3dfd91b7b14 GIT binary patch literal 9173 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

GI>)?*qwyPYj!$Gn8x`h-c`5r zu<$>6`fJ|1S512xqHAe!NKCd!ceI!s?`YWG%Vm2%Kmbi~`O`Znj@@Pq*%bKZ`3dgue=u zL#1i3@U`1|-6`*U8z=rqW1lNRWxjdCS~q6k3jlJZX1pk8^o7qHJ5Rk-KXoy6SBBfj zL^hxtR0etYmHBymdyPx(FXP~MDk0~ZRtkOq%a$v*-dyfWra_gJ%f1A1Y1yJDy{E5XnVdF{>;|7a znz`O9m4LGLZLswIv2_DCogV$78i`&Ue3mX{%OxjT6SmGhIFb<9@5+~Jqnus%4L1{= z5h79pO^3s1-^pSgitNBb#&1;0N8T?v5Jq%9sqzS)edxkzcZ}VfI&^&g)~41)9$HXQ zK5A?Z+PLvf0J_+}>Jn~hn=xbX`Qz8A_Y*2Z-YXZ{v|gHT86T%Q2y`g-5@&eJ8mtXf z9Y_-26V?*ZjnKZI=BhQ}fwL(9{9I3QivO~X)Y`FR#LpYPyN0-YSpjvonU53cGn^B0 z9kF^Ik2ogZxTaY#zkc8LvDPIysiLg-l@bDC?k3+-c6^IqKDOWYHLTV0whm|OD~Hg* z-w~mxSh)e?G?ph%8O5F0ZSS+;tG1TzCvMToqe7}O zU3NKAj6M0r&N6*i*Z1xHODL&5;G5qBZI}+t?odZ7SNy7*iiMv?WW*J4*DdenueDon zSN`qe!Fd9X4G1&;1zN3V(|dw}qxID^zk5lM)s20cyt-~dqxZN4$>xUJIwRkQ1}9sm zWr|upgc%oW2nB-0`%99zoneygQ`EOC+>mWn)S0}{9ae!|q5h^;tGB$Z$DQCUlyIWr z88K$YJNOQsO}n!{%<6!$+~N{bD77|QSI(+oHedbT*#yv8jq&t_FP{MLI9CYgWAC3Q z8Y6_yCa_04SWjIMr8nQoE;Q>$y*=1*pIWj~{6b{oz1b1P&FK}hO4nxL(+Po4;mF?t zAgK<%BE+S`0q`Kq9EsI)_Z>L*dU>_)j}x8aQAg{`8rskz$x0PALH)@a8&j_fFUL@m`mD$&I56P{O_A(8H3j{LqF z>lnFww(`Qva|gnlyzbcWHvauU77LBKL}Ra?*UAP+8Xowt7hPJ{`H@ z*-ksv@y!INr8OA>rP@%3Zne~tF-&q1LQMGRGs|!0{QuZCt!9x4h|S3b3X5aGyu9j@>F#RK@9 zRE{yG0PzwF!OrrTHkIT6`aJGA?jk(oM91vk6j!WrcKN3LY({oNfB3~oWh%gT_I%kf z=g^#qhGbZZ#8SfyAct-gF=Enp!FKfG$m0DHGO#3I=rNO&K~QQZ@Cy%n8kKPz1^IG- zUx=uXRs28xLd2ei+5qBI(a&W4XIXYgD;32GhHg+9;)$RJAgBRa_ILgRQ;)$* literal 0 HcmV?d00001 diff --git a/test/specs/controller.bubble.tests.js b/test/specs/controller.bubble.tests.js index 4799883ddfb..2597b9ae641 100644 --- a/test/specs/controller.bubble.tests.js +++ b/test/specs/controller.bubble.tests.js @@ -1,4 +1,6 @@ describe('Chart.controllers.bubble', function() { + describe('auto', jasmine.specsFromFixtures('controller.bubble')); + it('should be constructed', function() { var chart = window.acquireChart({ type: 'bubble', diff --git a/test/specs/controller.line.tests.js b/test/specs/controller.line.tests.js index b03162ea9d4..ed8f4ec5c80 100644 --- a/test/specs/controller.line.tests.js +++ b/test/specs/controller.line.tests.js @@ -1,4 +1,6 @@ describe('Chart.controllers.line', function() { + describe('auto', jasmine.specsFromFixtures('controller.line')); + it('should be constructed', function() { var chart = window.acquireChart({ type: 'line', diff --git a/test/specs/controller.radar.tests.js b/test/specs/controller.radar.tests.js index 8e3b8d49130..2bc0a2e0d24 100644 --- a/test/specs/controller.radar.tests.js +++ b/test/specs/controller.radar.tests.js @@ -1,4 +1,6 @@ describe('Chart.controllers.radar', function() { + describe('auto', jasmine.specsFromFixtures('controller.radar')); + it('Should be constructed', function() { var chart = window.acquireChart({ type: 'radar', diff --git a/test/specs/element.point.tests.js b/test/specs/element.point.tests.js index f1da35a50d4..8d1227003b9 100644 --- a/test/specs/element.point.tests.js +++ b/test/specs/element.point.tests.js @@ -1,6 +1,6 @@ -// Test the point element +describe('Chart.elements.Point', function() { + describe('auto', jasmine.specsFromFixtures('element.point')); -describe('Point element tests', function() { it ('Should be constructed', function() { var point = new Chart.elements.Point({ _datasetIndex: 2, @@ -94,474 +94,6 @@ describe('Point element tests', function() { expect(point.getCenterPoint()).toEqual({x: 10, y: 10}); }); - it ('should draw correctly', function() { - var mockContext = window.createMockContext(); - var point = new Chart.elements.Point({ - _datasetIndex: 2, - _index: 1, - _chart: { - ctx: mockContext, - } - }); - - // Attach a view object as if we were the controller - point._view = { - radius: 2, - pointStyle: 'circle', - rotation: 25, - hitRadius: 3, - borderColor: 'rgba(1, 2, 3, 1)', - borderWidth: 6, - backgroundColor: 'rgba(0, 255, 0)', - x: 10, - y: 15, - ctx: mockContext - }; - - point.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'setStrokeStyle', - args: ['rgba(1, 2, 3, 1)'] - }, { - name: 'setLineWidth', - args: [6] - }, { - name: 'setFillStyle', - args: ['rgba(0, 255, 0)'] - }, { - name: 'save', - args: [] - }, { - name: 'translate', - args: [10, 15] - }, { - name: 'rotate', - args: [25 * Math.PI / 180] - }, { - name: 'beginPath', - args: [] - }, { - name: 'arc', - args: [0, 0, 2, 0, 2 * Math.PI] - }, { - name: 'closePath', - args: [], - }, { - name: 'fill', - args: [], - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]); - - mockContext.resetCalls(); - point._view.pointStyle = 'triangle'; - point.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'setStrokeStyle', - args: ['rgba(1, 2, 3, 1)'] - }, { - name: 'setLineWidth', - args: [6] - }, { - name: 'setFillStyle', - args: ['rgba(0, 255, 0)'] - }, { - name: 'save', - args: [] - }, { - name: 'translate', - args: [10, 15] - }, { - name: 'rotate', - args: [25 * Math.PI / 180] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0 - 3 * 2 / Math.sqrt(3) / 2, 0 + 3 * 2 / Math.sqrt(3) * Math.sqrt(3) / 2 / 3] - }, { - name: 'lineTo', - args: [0 + 3 * 2 / Math.sqrt(3) / 2, 0 + 3 * 2 / Math.sqrt(3) * Math.sqrt(3) / 2 / 3], - }, { - name: 'lineTo', - args: [0, 0 - 2 * 3 * 2 / Math.sqrt(3) * Math.sqrt(3) / 2 / 3], - }, { - name: 'closePath', - args: [], - }, { - name: 'fill', - args: [], - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]); - - mockContext.resetCalls(); - point._view.pointStyle = 'rect'; - point.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'setStrokeStyle', - args: ['rgba(1, 2, 3, 1)'] - }, { - name: 'setLineWidth', - args: [6] - }, { - name: 'setFillStyle', - args: ['rgba(0, 255, 0)'] - }, { - name: 'save', - args: [] - }, { - name: 'translate', - args: [10, 15] - }, { - name: 'rotate', - args: [25 * Math.PI / 180] - }, { - name: 'beginPath', - args: [] - }, { - name: 'rect', - args: [0 - 1 / Math.SQRT2 * 2, 0 - 1 / Math.SQRT2 * 2, 2 / Math.SQRT2 * 2, 2 / Math.SQRT2 * 2] - }, { - name: 'fill', - args: [] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]); - - var drawRoundedRectangleSpy = jasmine.createSpy('drawRoundedRectangle'); - var drawRoundedRectangle = Chart.helpers.canvas.roundedRect; - var offset = point._view.radius / Math.SQRT2; - Chart.helpers.canvas.roundedRect = drawRoundedRectangleSpy; - mockContext.resetCalls(); - point._view.pointStyle = 'rectRounded'; - point.draw(); - - expect(drawRoundedRectangleSpy).toHaveBeenCalledWith( - mockContext, - 0 - offset, - 0 - offset, - Math.SQRT2 * 2, - Math.SQRT2 * 2, - 2 * 0.425 - ); - expect(mockContext.getCalls()).toContain( - jasmine.objectContaining({ - name: 'fill', - args: [], - }) - ); - - Chart.helpers.canvas.roundedRect = drawRoundedRectangle; - mockContext.resetCalls(); - point._view.pointStyle = 'rectRot'; - point.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'setStrokeStyle', - args: ['rgba(1, 2, 3, 1)'] - }, { - name: 'setLineWidth', - args: [6] - }, { - name: 'setFillStyle', - args: ['rgba(0, 255, 0)'] - }, { - name: 'save', - args: [] - }, { - name: 'translate', - args: [10, 15] - }, { - name: 'rotate', - args: [25 * Math.PI / 180] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0 - 1 / Math.SQRT2 * 2, 0] - }, { - name: 'lineTo', - args: [0, 0 + 1 / Math.SQRT2 * 2] - }, { - name: 'lineTo', - args: [0 + 1 / Math.SQRT2 * 2, 0], - }, { - name: 'lineTo', - args: [0, 0 - 1 / Math.SQRT2 * 2], - }, { - name: 'closePath', - args: [] - }, { - name: 'fill', - args: [], - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]); - - mockContext.resetCalls(); - point._view.pointStyle = 'cross'; - point.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'setStrokeStyle', - args: ['rgba(1, 2, 3, 1)'] - }, { - name: 'setLineWidth', - args: [6] - }, { - name: 'setFillStyle', - args: ['rgba(0, 255, 0)'] - }, { - name: 'save', - args: [] - }, { - name: 'translate', - args: [10, 15] - }, { - name: 'rotate', - args: [25 * Math.PI / 180] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 2] - }, { - name: 'lineTo', - args: [0, -2], - }, { - name: 'moveTo', - args: [-2, 0], - }, { - name: 'lineTo', - args: [2, 0], - }, { - name: 'fill', - args: [] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]); - - mockContext.resetCalls(); - point._view.pointStyle = 'crossRot'; - point.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'setStrokeStyle', - args: ['rgba(1, 2, 3, 1)'] - }, { - name: 'setLineWidth', - args: [6] - }, { - name: 'setFillStyle', - args: ['rgba(0, 255, 0)'] - }, { - name: 'save', - args: [] - }, { - name: 'translate', - args: [10, 15] - }, { - name: 'rotate', - args: [25 * Math.PI / 180] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0 - Math.cos(Math.PI / 4) * 2, 0 - Math.sin(Math.PI / 4) * 2] - }, { - name: 'lineTo', - args: [0 + Math.cos(Math.PI / 4) * 2, 0 + Math.sin(Math.PI / 4) * 2], - }, { - name: 'moveTo', - args: [0 - Math.cos(Math.PI / 4) * 2, 0 + Math.sin(Math.PI / 4) * 2], - }, { - name: 'lineTo', - args: [0 + Math.cos(Math.PI / 4) * 2, 0 - Math.sin(Math.PI / 4) * 2], - }, { - name: 'fill', - args: [] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]); - - mockContext.resetCalls(); - point._view.pointStyle = 'star'; - point.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'setStrokeStyle', - args: ['rgba(1, 2, 3, 1)'] - }, { - name: 'setLineWidth', - args: [6] - }, { - name: 'setFillStyle', - args: ['rgba(0, 255, 0)'] - }, { - name: 'save', - args: [] - }, { - name: 'translate', - args: [10, 15] - }, { - name: 'rotate', - args: [25 * Math.PI / 180] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 2] - }, { - name: 'lineTo', - args: [0, -2], - }, { - name: 'moveTo', - args: [-2, 0], - }, { - name: 'lineTo', - args: [2, 0], - }, { - name: 'moveTo', - args: [0 - Math.cos(Math.PI / 4) * 2, 0 - Math.sin(Math.PI / 4) * 2] - }, { - name: 'lineTo', - args: [0 + Math.cos(Math.PI / 4) * 2, 0 + Math.sin(Math.PI / 4) * 2], - }, { - name: 'moveTo', - args: [0 - Math.cos(Math.PI / 4) * 2, 0 + Math.sin(Math.PI / 4) * 2], - }, { - name: 'lineTo', - args: [0 + Math.cos(Math.PI / 4) * 2, 0 - Math.sin(Math.PI / 4) * 2], - }, { - name: 'fill', - args: [] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]); - - mockContext.resetCalls(); - point._view.pointStyle = 'line'; - point.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'setStrokeStyle', - args: ['rgba(1, 2, 3, 1)'] - }, { - name: 'setLineWidth', - args: [6] - }, { - name: 'setFillStyle', - args: ['rgba(0, 255, 0)'] - }, { - name: 'save', - args: [] - }, { - name: 'translate', - args: [10, 15] - }, { - name: 'rotate', - args: [25 * Math.PI / 180] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [-2, 0] - }, { - name: 'lineTo', - args: [2, 0], - }, { - name: 'fill', - args: [] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]); - - mockContext.resetCalls(); - point._view.pointStyle = 'dash'; - point.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'setStrokeStyle', - args: ['rgba(1, 2, 3, 1)'] - }, { - name: 'setLineWidth', - args: [6] - }, { - name: 'setFillStyle', - args: ['rgba(0, 255, 0)'] - }, { - name: 'save', - args: [] - }, { - name: 'translate', - args: [10, 15] - }, { - name: 'rotate', - args: [25 * Math.PI / 180] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 0] - }, { - name: 'lineTo', - args: [2, 0], - }, { - name: 'fill', - args: [] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]); - - }); - it ('should draw correctly with default settings if necessary', function() { var mockContext = window.createMockContext(); var point = new Chart.elements.Point({ From 35dc9370f36a134e7473716792bf9866020d2fb6 Mon Sep 17 00:00:00 2001 From: Simon Brunel Date: Sun, 29 Jul 2018 13:23:31 +0200 Subject: [PATCH 2/2] Disable hardware acceleration for unit tests Explicitly disable hardware acceleration to make image diff more stable when ran on Travis and dev machine. --- karma.conf.js | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index c41b23e0e03..5bb73ef03a0 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -3,9 +3,27 @@ module.exports = function(karma) { var args = karma.args || {}; var config = { - browsers: ['Firefox'], frameworks: ['browserify', 'jasmine'], reporters: ['progress', 'kjhtml'], + browsers: ['chrome', 'firefox'], + + // Explicitly disable hardware acceleration to make image + // diff more stable when ran on Travis and dev machine. + // https://github.com/chartjs/Chart.js/pull/5629 + customLaunchers: { + chrome: { + base: 'Chrome', + flags: [ + '--disable-accelerated-2d-canvas' + ] + }, + firefox: { + base: 'Firefox', + prefs: { + 'layers.acceleration.disabled': true + } + } + }, preprocessors: { './test/jasmine.index.js': ['browserify'], @@ -24,15 +42,7 @@ module.exports = function(karma) { // https://swizec.com/blog/how-to-run-javascript-tests-in-chrome-on-travis/swizec/6647 if (process.env.TRAVIS) { - config.browsers.push('chrome_travis_ci'); - config.customLaunchers = { - chrome_travis_ci: { - base: 'Chrome', - flags: ['--no-sandbox'] - } - }; - } else { - config.browsers.push('Chrome'); + config.customLaunchers.chrome.flags.push('--no-sandbox'); } if (args.coverage) {