From 1ca0ffb5d5b6c2072176fd36fa85a58c483aa434 Mon Sep 17 00:00:00 2001 From: Simon Brunel Date: Sun, 5 Mar 2017 17:49:12 +0100 Subject: [PATCH] Introduce unit test based on image comparison (#3988) Attempt to make easier the creation of unit tests that check the drawing output. Until now, this was done by checking calls on a 'fake' context, which is hard to maintain (need to update pixel values by hands) and also not reliable when optimizing code (i.e. different calls sequence but same result). As of now, it's possible to define 'auto' tests based on JSON/PNG fixtures: chart is generated from the JSON file and compared to the associated PNG image. The image diff is done using `pixelmatch`. As an example (and in preparation of the `filler` plugin), add auto tests for the line element `fill` options. --- gulpfile.js | 2 + package.json | 1 + .../element.line/fill-line-bottom-span.json | 55 ++++++++++ .../element.line/fill-line-bottom-span.png | Bin 0 -> 17347 bytes .../element.line/fill-line-bottom.json | 55 ++++++++++ .../element.line/fill-line-bottom.png | Bin 0 -> 15653 bytes .../element.line/fill-line-spline-span.json | 55 ++++++++++ .../element.line/fill-line-spline-span.png | Bin 0 -> 20758 bytes .../element.line/fill-line-spline.json | 55 ++++++++++ .../element.line/fill-line-spline.png | Bin 0 -> 19286 bytes .../element.line/fill-line-stepped-span.json | 56 +++++++++++ .../element.line/fill-line-stepped-span.png | Bin 0 -> 6922 bytes .../element.line/fill-line-stepped.json | 56 +++++++++++ .../element.line/fill-line-stepped.png | Bin 0 -> 6892 bytes .../element.line/fill-line-top-span.json | 55 ++++++++++ .../element.line/fill-line-top-span.png | Bin 0 -> 16356 bytes test/fixtures/element.line/fill-line-top.json | 55 ++++++++++ test/fixtures/element.line/fill-line-top.png | Bin 0 -> 15057 bytes .../element.line/fill-line-zero-span.json | 55 ++++++++++ .../element.line/fill-line-zero-span.png | Bin 0 -> 17340 bytes .../fixtures/element.line/fill-line-zero.json | 55 ++++++++++ test/fixtures/element.line/fill-line-zero.png | Bin 0 -> 16008 bytes .../element.line/fill-radar-spline.json | 50 ++++++++++ .../element.line/fill-radar-spline.png | Bin 0 -> 25918 bytes .../element.line/fill-radar-zero.json | 49 +++++++++ .../fixtures/element.line/fill-radar-zero.png | Bin 0 -> 22988 bytes test/jasmine.index.js | 2 + test/jasmine.matchers.js | 94 +++++++++++++++++- test/jasmine.utils.js | 84 +++++++++++++++- test/specs/element.line.tests.js | 4 +- 30 files changed, 835 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/element.line/fill-line-bottom-span.json create mode 100644 test/fixtures/element.line/fill-line-bottom-span.png create mode 100644 test/fixtures/element.line/fill-line-bottom.json create mode 100644 test/fixtures/element.line/fill-line-bottom.png create mode 100644 test/fixtures/element.line/fill-line-spline-span.json create mode 100644 test/fixtures/element.line/fill-line-spline-span.png create mode 100644 test/fixtures/element.line/fill-line-spline.json create mode 100644 test/fixtures/element.line/fill-line-spline.png create mode 100644 test/fixtures/element.line/fill-line-stepped-span.json create mode 100644 test/fixtures/element.line/fill-line-stepped-span.png create mode 100644 test/fixtures/element.line/fill-line-stepped.json create mode 100644 test/fixtures/element.line/fill-line-stepped.png create mode 100644 test/fixtures/element.line/fill-line-top-span.json create mode 100644 test/fixtures/element.line/fill-line-top-span.png create mode 100644 test/fixtures/element.line/fill-line-top.json create mode 100644 test/fixtures/element.line/fill-line-top.png create mode 100644 test/fixtures/element.line/fill-line-zero-span.json create mode 100644 test/fixtures/element.line/fill-line-zero-span.png create mode 100644 test/fixtures/element.line/fill-line-zero.json create mode 100644 test/fixtures/element.line/fill-line-zero.png create mode 100644 test/fixtures/element.line/fill-radar-spline.json create mode 100644 test/fixtures/element.line/fill-radar-spline.png create mode 100644 test/fixtures/element.line/fill-radar-zero.json create mode 100644 test/fixtures/element.line/fill-radar-zero.png diff --git a/gulpfile.js b/gulpfile.js index 868001696..c9d604713 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -171,6 +171,8 @@ function validHTMLTask() { function startTest() { return [ + {pattern: './test/fixtures/**/*.json', included: false}, + {pattern: './test/fixtures/**/*.png', included: false}, './node_modules/moment/min/moment.min.js', './test/jasmine.index.js', './src/**/*.js', diff --git a/package.json b/package.json index 374f90d17..24a313f4b 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "karma-jasmine": "^1.1.0", "karma-jasmine-html-reporter": "^0.2.2", "merge-stream": "^1.0.0", + "pixelmatch": "^4.0.2", "vinyl-source-stream": "^1.1.0", "watchify": "^3.7.0", "yargs": "^5.0.0" diff --git a/test/fixtures/element.line/fill-line-bottom-span.json b/test/fixtures/element.line/fill-line-bottom-span.json new file mode 100644 index 000000000..ec6bb4b0d --- /dev/null +++ b/test/fixtures/element.line/fill-line-bottom-span.json @@ -0,0 +1,55 @@ +{ + "config": { + "type": "line", + "data": { + "labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8"], + "datasets": [{ + "backgroundColor": "rgba(0, 0, 255, 0.25)", + "data": [null, null, 2, 3, 4, -4, -2, 1, 0] + }, { + "backgroundColor": "rgba(0, 255, 0, 0.25)", + "data": [6, 2, null, 4, 5, null, null, 2, 1] + }, { + "backgroundColor": "rgba(255, 0, 0, 0.25)", + "data": [7, 3, 4, 5, 6, 1, 4, null, null] + }, { + "backgroundColor": "rgba(0, 0, 255, 0.25)", + "data": [8, 7, 6, -6, -4, -6, 4, 5, 8] + }] + }, + "options": { + "responsive": false, + "spanGaps": true, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "display": false + } + }], + "yAxes": [{ + "ticks": { + "display": false + } + }] + }, + "elements": { + "point": { + "radius": 0 + }, + "line": { + "borderColor": "transparent", + "fill": "bottom", + "tension": 0 + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.line/fill-line-bottom-span.png b/test/fixtures/element.line/fill-line-bottom-span.png new file mode 100644 index 0000000000000000000000000000000000000000..45e4992768b07b190bc8ebf7b2fb3ced93d7343b GIT binary patch literal 17347 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/fill-line-bottom.json b/test/fixtures/element.line/fill-line-bottom.json new file mode 100644 index 000000000..a0557fe78 --- /dev/null +++ b/test/fixtures/element.line/fill-line-bottom.json @@ -0,0 +1,55 @@ +{ + "config": { + "type": "line", + "data": { + "labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8"], + "datasets": [{ + "backgroundColor": "rgba(0, 0, 255, 0.25)", + "data": [null, null, 2, 3, 4, -4, -2, 1, 0] + }, { + "backgroundColor": "rgba(0, 255, 0, 0.25)", + "data": [6, 2, null, 4, 5, null, null, 2, 1] + }, { + "backgroundColor": "rgba(255, 0, 0, 0.25)", + "data": [7, 3, 4, 5, 6, 1, 4, null, null] + }, { + "backgroundColor": "rgba(0, 0, 255, 0.25)", + "data": [8, 7, 6, -6, -4, -6, 4, 5, 8] + }] + }, + "options": { + "responsive": false, + "spanGaps": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "display": false + } + }], + "yAxes": [{ + "ticks": { + "display": false + } + }] + }, + "elements": { + "point": { + "radius": 0 + }, + "line": { + "borderColor": "transparent", + "fill": "bottom", + "tension": 0 + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.line/fill-line-bottom.png b/test/fixtures/element.line/fill-line-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd05e60dfc521ba99969a0a973c8b32e39b2806 GIT binary patch literal 15653 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 U-Ti^S{tP+?k7~Z&Z+-dy0oSp1CIA2c literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/fill-line-spline-span.json b/test/fixtures/element.line/fill-line-spline-span.json new file mode 100644 index 000000000..c87833b6e --- /dev/null +++ b/test/fixtures/element.line/fill-line-spline-span.json @@ -0,0 +1,55 @@ +{ + "config": { + "type": "line", + "data": { + "labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8"], + "datasets": [{ + "backgroundColor": "rgba(0, 0, 192, 0.25)", + "data": [null, null, 2, 4, 2, 1, -1, 1, 2] + }, { + "backgroundColor": "rgba(0, 192, 0, 0.25)", + "data": [4, 2, null, 3, 2.5, null, -2, 1.5, 3] + }, { + "backgroundColor": "rgba(192, 0, 0, 0.25)", + "data": [3.5, 2, 1, 2.5, -2, 3, -1, null, null] + }, { + "backgroundColor": "rgba(128, 0, 128, 0.25)", + "data": [5, 6, 5, -2, -4, -3, 4, 2, 4.5] + }] + }, + "options": { + "responsive": false, + "spanGaps": true, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "display": false + } + }], + "yAxes": [{ + "ticks": { + "display": false + } + }] + }, + "elements": { + "point": { + "radius": 0 + }, + "line": { + "cubicInterpolationMode": "monotone", + "borderColor": "transparent", + "fill": "zero" + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.line/fill-line-spline-span.png b/test/fixtures/element.line/fill-line-spline-span.png new file mode 100644 index 0000000000000000000000000000000000000000..01aae5a995d0dfe10b4fee9e0feacb2f9f1894e6 GIT binary patch literal 20758 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 U6L9lq?Ew6R1a1fr`qPj64|Qh(i~s-t literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/fill-line-stepped-span.json b/test/fixtures/element.line/fill-line-stepped-span.json new file mode 100644 index 000000000..c6f24e1c1 --- /dev/null +++ b/test/fixtures/element.line/fill-line-stepped-span.json @@ -0,0 +1,56 @@ +{ + "config": { + "type": "line", + "data": { + "labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8"], + "datasets": [{ + "backgroundColor": "rgba(0, 0, 192, 0.25)", + "data": [null, null, 2, 4, 2, 1, -1, 1, 2] + }, { + "backgroundColor": "rgba(0, 192, 0, 0.25)", + "data": [4, 2, null, 3, 2.5, null, -2, 1.5, 3] + }, { + "backgroundColor": "rgba(192, 0, 0, 0.25)", + "data": [3.5, 2, 1, 2.5, -2, 3, -1, null, null] + }, { + "backgroundColor": "rgba(128, 0, 128, 0.25)", + "data": [5, 6, 5, -2, -4, -3, 4, 2, 4.5] + }] + }, + "options": { + "responsive": false, + "spanGaps": true, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "display": false + } + }], + "yAxes": [{ + "ticks": { + "display": false + } + }] + }, + "elements": { + "point": { + "radius": 0 + }, + "line": { + "cubicInterpolationMode": "monotone", + "borderColor": "transparent", + "stepped": true, + "fill": "zero" + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.line/fill-line-stepped-span.png b/test/fixtures/element.line/fill-line-stepped-span.png new file mode 100644 index 0000000000000000000000000000000000000000..9f7c15b9ddbc5e8e5dffe34cd1b48780a190e813 GIT binary patch literal 6922 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 IUhNX~Hx<@{asU7T literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/fill-line-stepped.json b/test/fixtures/element.line/fill-line-stepped.json new file mode 100644 index 000000000..3fbdd7677 --- /dev/null +++ b/test/fixtures/element.line/fill-line-stepped.json @@ -0,0 +1,56 @@ +{ + "config": { + "type": "line", + "data": { + "labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8"], + "datasets": [{ + "backgroundColor": "rgba(0, 0, 192, 0.25)", + "data": [null, null, 2, 4, 2, 1, -1, 1, 2] + }, { + "backgroundColor": "rgba(0, 192, 0, 0.25)", + "data": [4, 2, null, 3, 2.5, null, -2, 1.5, 3] + }, { + "backgroundColor": "rgba(192, 0, 0, 0.25)", + "data": [3.5, 2, 1, 2.5, -2, 3, -1, null, null] + }, { + "backgroundColor": "rgba(128, 0, 128, 0.25)", + "data": [5, 6, 5, -2, -4, -3, 4, 2, 4.5] + }] + }, + "options": { + "responsive": false, + "spanGaps": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "display": false + } + }], + "yAxes": [{ + "ticks": { + "display": false + } + }] + }, + "elements": { + "point": { + "radius": 0 + }, + "line": { + "cubicInterpolationMode": "monotone", + "borderColor": "transparent", + "stepped": true, + "fill": "zero" + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.line/fill-line-stepped.png b/test/fixtures/element.line/fill-line-stepped.png new file mode 100644 index 0000000000000000000000000000000000000000..19f5a8d92620793d9df4a07f9e8a280b64ae9a20 GIT binary patch literal 6892 zcmeHLdpy)@w_m?8CYJ~iH5D=aQ`IH$8i=bq0UmG}!%XNa{#%Rp*P=fOvBc4^CrR zMMB_VR)OP4K~+gYO~rht>Y7(GTM`q>tY%%j;rKqNj9Fp6W_pt6%b=W|K(hH(!Taj+ zy`8bsQ#+u8EFYpYYHiu85s7pNHzw{+X~=<2Rah<#R3GCU3L2^Bz3 z{ZP@FFj${3A1fZ&bo<0+U`NUi~(T4if?d>DppS&$Otd*)r8C1MusH(3@M5g&jbs;_E7zep$)AeWQ*EJ(15sP zvgb~HCKc-TKQeLKcolO#evgvg|NPYfsjvdYxqEsJS`JY0x>OwC=5C2LTS*OVmXdlH ztGV56<50`{W+!O(mO`nz&x*S=xT;?T=d5@;Q$M#6=9{^TKbo=k;MJq;7-dK54^qzfz`?f~- z+nc$S!IBL5 zz)str>9CS~UnupYVddl_RijxiOXc8t1sSg#yhUMr!kktoW(=4$zHdgcXCthB4*eZd zN#oG*^+^F#@b!{KU_wyM7+j?cdP!;ga#?8OPXjV2oTRb3BIcrFS(5@g)_}8h)+eV| zBB}h|#okxK2DjrUm#}8lqjsEq;U){OG|U^59c0_yxLs8sKBALFTu&DruyafrHduc zY^><18*_W(VtTn|S%~C^Q$7beV)aGC5ux{&_f7F1=%?C-Hads)LFCI`O1 zZqQ?>|1!C@O3A;hn?Lv(2_t`B-IDR5RuWu)C5ivygfhQ$Ml@pdo}4KkXn;pFL;ngg z5pdqqIBi9!r{DO1t`;!?k(k>~a7sN~D8p<06kU2NN)d^Tu23d@N(dR1jm>g)N>y0Y zMxDjz8wS#1P{rMjh49nSxl*vt(O?w@m+i&54@1O#wD_tD2C;f;=K}tn%*1LYNNvkp(hy>0T5ybGbWR#lp?e6nPF#Ee01qq(9o2b6Is`nvhOzRh+bjiCT6wPl z-i0HIGQd71#;X#-YuJBhv|mjF|EMIVE1UQCy?C8zs=+s^8809GEhwq!g=OCw(af61 z5o>!6>xYP5B(EGXNU%#5l8gh+mRTuU1t6OTVI$Wv@Mp8Jz@;*g^mlW76Lx%`C z-ouiGbxqtMv*o?C*3j2MhFqPxM*ibYL#MPv6SsMN%B?A0s?_nv1xP)c5(7}t-6}@H z{S&C}F>Dgg*pN{T@DRPhM`njLJ2#ARc|>h$bF-QdpunpbaIax+!_y>)?**)$D8qf4 zfSXL<@;E|rCFvfkuRb~t)v8_<#_PKVm81_^4BsV87E(Bc!BHvS;K)%*dJh{N${Y5$ zXDYVY+_5eKI1&1LF)<~z_sQ>|Ew4f_*C#_{9{t4O^T2_^Vrh+Q(7y=Cgp}M z`RVh1GE-q#o@gQPoH^?>q5mZp(f8*6j5m{s$T_Y4kqK|h-k_@+=OE^_?TkW% zM3DeEo{t<`^o9HAUa3=or#S7u>|~JyPu}F`yv?Qkg3`OTp^QS$#JtMju}`98;nEt_ zk9}RjE-puKAY~|R<;WS^m43qww)bM{jZF8CzZ>%K@4hJ13~@_x(*Ld6aX&(xD!m}P zFT}|FRAtGVSBidfixUNuwx&+i(DDTHo+mEfyc_ck84_I}7L5x{gD(xKOWg3=D#(7F zG1Eamug+36Eit=)>}9F{o`B&Qcr&-Gz68KW62%3#i;f%p;EHLupU^Ry1IfN@%#RBB zOd@0k(Fmk;FxWy_i$pZ;fMnY|R7cei%nnE@O!e4tn*#EB79J9C+LP!?+?BMhqS_fH zZMeu?0wTqo%HM28$TmrZR)E37i3%Hiq7fS5_Mz!&2;!^7EfzZPvu(yz3=fxyZvuQf zAFaaA-nJn6B=?(>W6)o7n!dIjYXqK|W>WJu9QqsC`u1v75^Wr=GX27j+ht zRDQbm&S7t5$uiO75!))`0XOYZq3lh7(!Q839GmEHR`af?BYZBkF|z=Y{)i5yIFeg2Denx(gXgrFJom4jrwx> zo=geg45>ZXx~(;2tg2EN;Sd~vm@5_>c`UsTMI7NdHbN=^1^9xvR(_2d;U-9_B0&6S z*(07D2#_;AQekP9MnWFKQ}7qiqo$r=b@rel6&BGDT*O3}u$@CTVmXmkqV*@TO5ss7 zw5xeha-bIfwe1nI&2)^broj9sXca2+Yuyoh5Ioq3Pm}L|ZTlzW7~-A9*SuS;MF-#Y zW{Z*TSbZJZ|75r=f+Tz;t9Q&3<|YW2Wm%teO-^`i#3Dl{j$pyQQO+*mG4`u-ptEWuYRIl+&$XXvFXek?=2%AM~y3=@2`@D-*laY3Zfs3 zPPHImz+L4`^e_$1nTBZKX@4hFAo{PykN4~d6>HB3>|%m*-HsduXiRo@oY1W=8byLl zmw+cwzMuqTBv7lhNCbAQfc;Qey!tC$kp}Ms5+pgqteX(5V^ZR%V)z0FU~`Yyp>_cw z_?#j}sJ1rbZJv@YbE+{r=( z65;w$6cAcI6&e>y0zFgh6e1hJ8%43O{(p7)+5+%a-`!rz3TWb zICOA`UQlXI`SDT{s`txGIV){Y$0=f`e#+Y0b2x97+u4+N4@EiLoPm%MOrzvx-JEyw zCx6M-t7s+)WJ-I)x$x&x7S=j&UkHNS5|eU=%79nz_74H(KN2z{F`);hu+yMt~?itx;^R|U@6ozEEXEgT*!0nt%hspsmXz@LZ#>HPOanC@=V zodLU14gM=`j#B<^chnJFV6uq2b`kAg+`d?$9FJqgqu^^Q2Dhw#5z^580#$X~^{By5 z{DOs$Kl#snmxG7qKN9+Vo>W2Cg3FwCV_>h1j(>LR@%v_C@T2i@HfnULuzhbgKSxut z=2(6Tp%Tmct%X97x>wzeJaA_JX^{V-_joHT|KW<4I^|B6c~>pbQqLZ~Bswq_Tf_+- zkzsqKikgxV0-_eJ=X!c{Q-(E9Z$wke)X}Ea=4!!gY4b#Zue?v-vnRzj`W=FvjZ)YN z$I_&CN?&aZ>Z(nm;^-x8Vi?d^q>#C@=0Hx5A~a6FA{PZbQhWvht&HUo`UJF~-cF?8 zjdG(;yi?fE-D7?lyetdzZ=sAurtwpVIZoNMt&T+;S78774*e>B7t-&^WRD-`dajt6 zTbVPisSzrht`xGf?uHx$ZF^41xGo+%GCEd2Dvn(tiy#S`I9<1p2Y(1Q2kajwED5Im z3v9m=@sFtTm%tXPeUnk+;c=YwS<`$B&jt7`?lmIjlPh$Dl(q-eB5OCni3=N76=Dpb z#ngnM!efg~Cq~ry+>ZsP+vOWB-6wF`B5>;Q%seX;4^A;WMOL4=G?V7ibx{MPMp%=k z@5^4%SxJI-A68v1SMbu8>~l*P5(qL0?2&joNx6qFJPqgzXY{1xeT(P@`TIqqqAG-& z#?s~sEy|LKJ@_f!&+m*yt0ZN_HW}T Bf$abQ literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/fill-line-top-span.json b/test/fixtures/element.line/fill-line-top-span.json new file mode 100644 index 000000000..b74b1f5ca --- /dev/null +++ b/test/fixtures/element.line/fill-line-top-span.json @@ -0,0 +1,55 @@ +{ + "config": { + "type": "line", + "data": { + "labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8"], + "datasets": [{ + "backgroundColor": "rgba(0, 0, 192, 0.25)", + "data": [null, null, 2, 3, 4, -4, -2, 1, 0] + }, { + "backgroundColor": "rgba(0, 192, 0, 0.25)", + "data": [5.5, 2, null, 4, 5, null, null, 2, 1] + }, { + "backgroundColor": "rgba(192, 0, 0, 0.25)", + "data": [7, 3, 4, 5, 6, 1, 4, null, null] + }, { + "backgroundColor": "rgba(0, 0, 192, 0.25)", + "data": [8, 7, 6.5, -6, -4, -6, 4, 5, 8] + }] + }, + "options": { + "responsive": false, + "spanGaps": true, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "display": false + } + }], + "yAxes": [{ + "ticks": { + "display": false + } + }] + }, + "elements": { + "point": { + "radius": 0 + }, + "line": { + "borderColor": "transparent", + "fill": "top", + "tension": 0 + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.line/fill-line-top-span.png b/test/fixtures/element.line/fill-line-top-span.png new file mode 100644 index 0000000000000000000000000000000000000000..83519b05fb72b9c23a2d305937c0c6a2201fef3c GIT binary patch literal 16356 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 DBRW>q literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/fill-line-top.json b/test/fixtures/element.line/fill-line-top.json new file mode 100644 index 000000000..e0696ba06 --- /dev/null +++ b/test/fixtures/element.line/fill-line-top.json @@ -0,0 +1,55 @@ +{ + "config": { + "type": "line", + "data": { + "labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8"], + "datasets": [{ + "backgroundColor": "rgba(0, 0, 192, 0.25)", + "data": [null, null, 2, 3, 4, -4, -2, 1, 0] + }, { + "backgroundColor": "rgba(0, 192, 0, 0.25)", + "data": [5.5, 2, null, 4, 5, null, null, 2, 1] + }, { + "backgroundColor": "rgba(192, 0, 0, 0.25)", + "data": [7, 3, 4, 5, 6, 1, 4, null, null] + }, { + "backgroundColor": "rgba(0, 0, 192, 0.25)", + "data": [8, 7, 6.5, -6, -4, -6, 4, 5, 8] + }] + }, + "options": { + "responsive": false, + "spanGaps": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "display": false + } + }], + "yAxes": [{ + "ticks": { + "display": false + } + }] + }, + "elements": { + "point": { + "radius": 0 + }, + "line": { + "borderColor": "transparent", + "fill": "top", + "tension": 0 + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.line/fill-line-top.png b/test/fixtures/element.line/fill-line-top.png new file mode 100644 index 0000000000000000000000000000000000000000..25c8f13699684a835fab695d023ca3b8a6a29e67 GIT binary patch literal 15057 zcmZ|0cR1G3|37|S_kG)YgzQlvGex#Lk~ECWY()rBR`!chiK2{1xT#RGSN5GGBcsU7 zERj94`JTIaf3ElEbNzn#qpqvhIp;Ya&&PQ_k8nL5EjnsWY5)M8_UV%s0KmY1B7l+{ z{`Dcc%>e*@pndX$;Z3XAWaoR9eR0EkWkd6awO^Lm8I^VATzfU}v_R2SiKnuKMkSM^|co)xnTJ?auG){x^$1Ph`;lu#?Bew;vP_n%Gw#Zecq;joXOXcdCM&5;2 zFZ^l^qga0DR9Kc>8}x5i+?rW4W9PK(QJk15>FM|1Yg2U2vqaoEZx0WzD^(BkadK_B zI2YBrIeWOH?%Fbf*6T$qx|^RXV@5|h-xdEOm&bKVQg1Mwr$aR*ICTcb(dOBLKJ{)+ru%xka?Tr%_zjM2$S!qD_h!}|ezuz=r@a^4#r`WD=t`^Y) z(UTPL3<+`!*mjYGZjL?xR`S{}x!czyUTZ`68zxZzYCphJQd`LY4lrX;9$JZ3!hGKi zvFa)eUi>qHfS`yF0MwFb03|qp14Z1A0oZU{3o#N>BmE$206a;5I7{ zBN!>;fd5-m4p4w!0ffgp;t{7eK?FEaQ$y((Kf-U70y;WwQ#^%d?C=&W~?^YHi!ee-PT0D0Hf)__l-%CFUc|^ zCqE3|0eIr6Z~x*Y(M3oB!3NNC%gcao$wF)%%4p&px|aV^?wLbB(H<)>`6+N16wAx(9kM`hw^Qa0D9) z@F`xMTa_fY`&kX1dY-qtA?r!u=y9tlr~we%=#t%bDA~7+nO2irnJA=afN%TL_XR1M zw5#HmUpVXwRNllpjscx;M0lhPW((@94apckn(dYnXgb?#8YSKFO z!$`BTk%dXFI}WdMj|1oC6sCsRsa;M5Q*QNS7_ZLvrlY!~o%%->3ntWiSQ1fppgo}EVmlgQt!-(U7)--A^0}D zF~gE6fy`9sSs)y2 zQb7&mi`MB+vCmhY`|bQPQ6HS%hmpq;gX{SM1NX6fOs0E)=RH6&**!5u=Q{wsm22D- zbhxwD*`xDa=M6qvZqUVIkj>V}15!q}JJ=NaSc5L8ijy!($^XzHeqhr_7)%o5FiTl{ zG&3QNA@IhUrSZ>!=uty^y1?)8ceV7&*a0J;Y!=`-b_x(L39nrfx4F4d@Ilydu>TB> zUzT!&9t_G?)S!>-e0+~_DUfVycJyjJI~6dM86s{*&fBSFGNJwNFNm_%^8j+`ss&ap zsTsl-SEqY8A9GUtj6C~t;}#A?`nXFs1z7>S$}uuZM!;cZT0a@?Fv)pD^(3Y`jTGvH zT&J9i7(iZWd~oa4(_Q+O&8cFmK#ctPiUo!Rsl~DdkH;>zI)3@mT5M6a|FYn!leOM7 zP?o3r6xPAkK3TRK3stIM&h!TUv0WBYencf`NV{KCdXFQUj2g^fh}7gC-?~toLqLD^cvU;wd=^WO)H-kaJP z;LgBWOX#@&?UAdo*cMsJ4Es48p*uR^^`C>$&DOErWuQn+_n0#5G8C>XKoHQ{=4^2W z1=g^bHw{>*A~UCg1i5p^pT0@L5@dF?e)8Qm?8|f1x)~00tie!157_VlC_L?c5Lq?O zg5blG>))rftS=aTZaR3%mxR&L+j50=wIhPy$O#k>Rl%D}?soeEo7^a9slc16adrR> z`t7S#xlS7ulZO=`r2`EJKEVBL$YZaf6f&#ZyTN5a5eN> zp5a^`w#1^#W!s^EQ2#N%H)*pQPl|pv4WV_oep!MCpz}7=YMOUi6d9T;f7WGkRP54A z{%qP6)Bg<)@D+|!k@sFzMZMiA0C_uabfAQ5247iK%ug;7C$wBL;!rO+r~jCNy->WlHVZOt}wNn8*Na! zxXsOYrUZ|m??Hap+?;QuMMqj2N3IhE(5@Qi0w`-4IW>?b2XQl*&70n?g$gv4kXp!v z�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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/fill-line-zero-span.json b/test/fixtures/element.line/fill-line-zero-span.json new file mode 100644 index 000000000..64fbbb315 --- /dev/null +++ b/test/fixtures/element.line/fill-line-zero-span.json @@ -0,0 +1,55 @@ +{ + "config": { + "type": "line", + "data": { + "labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8"], + "datasets": [{ + "backgroundColor": "rgba(0, 0, 192, 0.25)", + "data": [null, null, 2, 3, 4, -4, -2, 1, 0] + }, { + "backgroundColor": "rgba(0, 192, 0, 0.25)", + "data": [6, 2, null, 4, 5, null, null, 2, 1] + }, { + "backgroundColor": "rgba(192, 0, 0, 0.25)", + "data": [7, 3, 4, 5, 6, 1, 4, null, null] + }, { + "backgroundColor": "rgba(0, 64, 192, 0.25)", + "data": [8, 7, 6, -6, -4, -6, 4, 5, 8] + }] + }, + "options": { + "responsive": false, + "spanGaps": true, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "display": false + } + }], + "yAxes": [{ + "ticks": { + "display": false + } + }] + }, + "elements": { + "point": { + "radius": 0 + }, + "line": { + "borderColor": "transparent", + "fill": "zero", + "tension": 0 + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.line/fill-line-zero-span.png b/test/fixtures/element.line/fill-line-zero-span.png new file mode 100644 index 0000000000000000000000000000000000000000..727cc0309b0f2baa70c52218ba2975ed790f4547 GIT binary patch literal 17340 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 E1GxNTRR910 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/fill-line-zero.json b/test/fixtures/element.line/fill-line-zero.json new file mode 100644 index 000000000..1958fc5d0 --- /dev/null +++ b/test/fixtures/element.line/fill-line-zero.json @@ -0,0 +1,55 @@ +{ + "config": { + "type": "line", + "data": { + "labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8"], + "datasets": [{ + "backgroundColor": "rgba(0, 0, 192, 0.25)", + "data": [null, null, 2, 3, 4, -4, -2, 1, 0] + }, { + "backgroundColor": "rgba(0, 192, 0, 0.25)", + "data": [6, 2, null, 4, 5, null, null, 2, 1] + }, { + "backgroundColor": "rgba(192, 0, 0, 0.25)", + "data": [7, 3, 4, 5, 6, 1, 4, null, null] + }, { + "backgroundColor": "rgba(0, 64, 192, 0.25)", + "data": [8, 7, 6, -6, -4, -6, 4, 5, 8] + }] + }, + "options": { + "responsive": false, + "spanGaps": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "display": false + } + }], + "yAxes": [{ + "ticks": { + "display": false + } + }] + }, + "elements": { + "point": { + "radius": 0 + }, + "line": { + "borderColor": "transparent", + "fill": "zero", + "tension": 0 + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/element.line/fill-line-zero.png b/test/fixtures/element.line/fill-line-zero.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f0208d4fde7f1f79a312e59ff3f3d5af6ae163 GIT binary patch literal 16008 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 WSV|4qK9sKj0000@T7>#ZG?&tfi_pf``%v$^G zdCtaj_TDowYAUiQh=hm$0HDarNofE82=W&Mz{5g*j9ja%0Dv5jmlD_VHa_k798bLx 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' + + 'thr: ' + toPercent(threshold) + '%, ' + + 'tol: '+ toPercent(tolerance) + '%' + } + ].forEach(function(values) { + var item = document.createElement('div'); + item.style.cssText = 'text-align: center; font: 12px monospace; line-height: 1.4; margin: 8px'; + item.innerHTML = '
' + values.label + '
'; + item.appendChild(canvasFromImageData(values.data)); + wrapper.appendChild(item); + }); + + // WORKAROUND: https://github.com/karma-runner/karma-jasmine/issues/139 + wrapper.indexOf = function() { + return -1; + }; + + return wrapper; +} + function toBeCloseToPixel() { return { compare: function(actual, expected) { @@ -105,9 +156,50 @@ function toBeChartOfSize() { }; } +function toEqualImageData() { + return { + compare: function(actual, expected, opts) { + var message = null; + var debug = opts.debug || false; + var tolerance = opts.tolerance === undefined? 0.001 : opts.tolerance; + var threshold = opts.threshold === undefined? 0.1 : opts.threshold; + var ctx, idata, ddata, w, h, count, ratio; + + if (actual instanceof Chart) { + ctx = actual.ctx; + } else if (actual instanceof HTMLCanvasElement) { + ctx = actual.getContext('2d'); + } else if (actual instanceof CanvasRenderingContext2D) { + ctx = actual; + } + + if (ctx) { + h = expected.height; + w = expected.width; + idata = ctx.getImageData(0, 0, w, h); + ddata = createImageData(w, h); + count = pixelmatch(idata.data, expected.data, ddata.data, w, h, {threshold: threshold}); + ratio = count / (w * h); + + if ((ratio > tolerance) || debug) { + message = buildPixelMatchPreview(idata, expected, ddata, threshold, tolerance, count); + } + } else { + message = 'Input value is not a valid image source.'; + } + + return { + message: message, + pass: !message + }; + } + }; +} + module.exports = { toBeCloseToPixel: toBeCloseToPixel, toEqualOneOf: toEqualOneOf, toBeValidChart: toBeValidChart, - toBeChartOfSize: toBeChartOfSize + toBeChartOfSize: toBeChartOfSize, + toEqualImageData: toEqualImageData }; diff --git a/test/jasmine.utils.js b/test/jasmine.utils.js index 77f05c6e0..f5ead49ec 100644 --- a/test/jasmine.utils.js +++ b/test/jasmine.utils.js @@ -1,3 +1,40 @@ +/* global __karma__ */ + +function loadJSON(url, callback) { + var request = new XMLHttpRequest(); + request.onreadystatechange = function() { + if (request.readyState === 4) { + return callback(JSON.parse(request.responseText)); + } + }; + + request.overrideMimeType('application/json'); + request.open('GET', url, true); + request.send(null); +} + +function createCanvas(w, h) { + var canvas = document.createElement('canvas'); + canvas.width = w; + canvas.height = h; + return canvas; +} + +function readImageData(url, callback) { + var image = new Image(); + + image.onload = function() { + var h = image.height; + var w = image.width; + var canvas = createCanvas(w, h); + var ctx = canvas.getContext('2d'); + ctx.drawImage(image, 0, 0, w, h); + callback(ctx.getImageData(0, 0, w, h)); + }; + + image.src = url; +} + /** * Injects a new canvas (and div wrapper) and creates teh associated Chart instance * using the given config. Additional options allow tweaking elements generation. @@ -69,8 +106,53 @@ function injectCSS(css) { head.appendChild(style); } +function specFromFixture(description, inputs) { + it(inputs.json, function(done) { + loadJSON(inputs.json, function(json) { + var chart = acquireChart(json.config, json.options); + if (!inputs.png) { + fail('Missing PNG comparison file for ' + inputs.json); + if (!json.debug) { + releaseChart(chart); + } + done(); + } + + readImageData(inputs.png, function(expected) { + expect(chart).toEqualImageData(expected, json); + releaseChart(chart); + done(); + }); + }); + }); +} + +function specsFromFixtures(path) { + var regex = new RegExp('(^/base/test/fixtures/' + path + '.+)\\.(png|json)'); + var inputs = {}; + + Object.keys(__karma__.files || {}).forEach(function(file) { + var matches = file.match(regex); + var name = matches && matches[1]; + var type = matches && matches[2]; + + if (name && type) { + inputs[name] = inputs[name] || {}; + inputs[name][type] = file; + } + }); + + return function() { + Object.keys(inputs).forEach(function(key) { + specFromFixture(key, inputs[key]); + }); + }; +} + module.exports = { injectCSS: injectCSS, + createCanvas: createCanvas, acquireChart: acquireChart, - releaseChart: releaseChart + releaseChart: releaseChart, + specsFromFixtures: specsFromFixtures }; diff --git a/test/specs/element.line.tests.js b/test/specs/element.line.tests.js index 0a2a6eced..52d94cd37 100644 --- a/test/specs/element.line.tests.js +++ b/test/specs/element.line.tests.js @@ -1,5 +1,7 @@ // Tests for the line element -describe('Line element tests', function() { +describe('Chart.elements.Line', function() { + describe('auto', jasmine.specsFromFixtures('element.line')); + it('should be constructed', function() { var line = new Chart.elements.Line({ _datasetindex: 2,