From 30cbdc6a4d47e06b20f70534b2bccc46118d1401 Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Tue, 12 Nov 2019 20:59:29 +0200 Subject: [PATCH] Convert element.line mock tests to fixtures (#6730) --- test/fixtures/element.line/default.js | 26 + test/fixtures/element.line/default.png | Bin 0 -> 7608 bytes test/fixtures/element.line/skip/all.js | 29 + test/fixtures/element.line/skip/all.png | Bin 0 -> 2849 bytes test/fixtures/element.line/skip/first-span.js | 30 + .../fixtures/element.line/skip/first-span.png | Bin 0 -> 5950 bytes test/fixtures/element.line/skip/first.js | 29 + test/fixtures/element.line/skip/first.png | Bin 0 -> 5950 bytes test/fixtures/element.line/skip/last-span.js | 30 + test/fixtures/element.line/skip/last-span.png | Bin 0 -> 6756 bytes test/fixtures/element.line/skip/last.js | 29 + test/fixtures/element.line/skip/last.png | Bin 0 -> 6756 bytes .../fixtures/element.line/skip/middle-span.js | 30 + .../element.line/skip/middle-span.png | Bin 0 -> 6298 bytes test/fixtures/element.line/skip/middle.js | 29 + test/fixtures/element.line/skip/middle.png | Bin 0 -> 4278 bytes test/fixtures/element.line/stepped/after.js | 30 + test/fixtures/element.line/stepped/after.png | Bin 0 -> 4553 bytes test/fixtures/element.line/stepped/before.js | 30 + test/fixtures/element.line/stepped/before.png | Bin 0 -> 4354 bytes test/fixtures/element.line/stepped/default.js | 30 + .../fixtures/element.line/stepped/default.png | Bin 0 -> 4354 bytes test/fixtures/element.line/stepped/middle.js | 30 + test/fixtures/element.line/stepped/middle.png | Bin 0 -> 4811 bytes test/fixtures/element.line/tension/default.js | 28 + .../fixtures/element.line/tension/default.png | Bin 0 -> 8539 bytes test/fixtures/element.line/tension/one.js | 29 + test/fixtures/element.line/tension/one.png | Bin 0 -> 8475 bytes test/fixtures/element.line/tension/zero.js | 29 + test/fixtures/element.line/tension/zero.png | Bin 0 -> 7412 bytes test/specs/element.line.tests.js | 1518 +---------------- 31 files changed, 440 insertions(+), 1516 deletions(-) create mode 100644 test/fixtures/element.line/default.js create mode 100644 test/fixtures/element.line/default.png create mode 100644 test/fixtures/element.line/skip/all.js create mode 100644 test/fixtures/element.line/skip/all.png create mode 100644 test/fixtures/element.line/skip/first-span.js create mode 100644 test/fixtures/element.line/skip/first-span.png create mode 100644 test/fixtures/element.line/skip/first.js create mode 100644 test/fixtures/element.line/skip/first.png create mode 100644 test/fixtures/element.line/skip/last-span.js create mode 100644 test/fixtures/element.line/skip/last-span.png create mode 100644 test/fixtures/element.line/skip/last.js create mode 100644 test/fixtures/element.line/skip/last.png create mode 100644 test/fixtures/element.line/skip/middle-span.js create mode 100644 test/fixtures/element.line/skip/middle-span.png create mode 100644 test/fixtures/element.line/skip/middle.js create mode 100644 test/fixtures/element.line/skip/middle.png create mode 100644 test/fixtures/element.line/stepped/after.js create mode 100644 test/fixtures/element.line/stepped/after.png create mode 100644 test/fixtures/element.line/stepped/before.js create mode 100644 test/fixtures/element.line/stepped/before.png create mode 100644 test/fixtures/element.line/stepped/default.js create mode 100644 test/fixtures/element.line/stepped/default.png create mode 100644 test/fixtures/element.line/stepped/middle.js create mode 100644 test/fixtures/element.line/stepped/middle.png create mode 100644 test/fixtures/element.line/tension/default.js create mode 100644 test/fixtures/element.line/tension/default.png create mode 100644 test/fixtures/element.line/tension/one.js create mode 100644 test/fixtures/element.line/tension/one.png create mode 100644 test/fixtures/element.line/tension/zero.js create mode 100644 test/fixtures/element.line/tension/zero.png diff --git a/test/fixtures/element.line/default.js b/test/fixtures/element.line/default.js new file mode 100644 index 000000000..718faa9cc --- /dev/null +++ b/test/fixtures/element.line/default.js @@ -0,0 +1,26 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [{x: 1, y: 10}, {x: 5, y: 0}, {x: 15, y: -10}, {x: 19, y: -5}], + } + ] + }, + options: { + legend: false, + title: false, + scales: { + xAxes: [{type: 'linear', display: false, ticks: {min: 0, max: 20}}], + yAxes: [{display: false, ticks: {min: -15, max: 15}}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.line/default.png b/test/fixtures/element.line/default.png new file mode 100644 index 0000000000000000000000000000000000000000..b686f4d4972ec4f121bac093c95163123e22886d GIT binary patch literal 7608 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/skip/all.js b/test/fixtures/element.line/skip/all.js new file mode 100644 index 000000000..1e65f6337 --- /dev/null +++ b/test/fixtures/element.line/skip/all.js @@ -0,0 +1,29 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [{x: 0, y: NaN}, {x: NaN, y: 0}, {x: NaN, y: -10}, {x: 19, y: NaN}], + borderColor: 'red', + fill: true, + lineTension: 0 + } + ] + }, + options: { + legend: false, + title: false, + scales: { + xAxes: [{type: 'linear', display: false, ticks: {min: 0, max: 20}}], + yAxes: [{display: false, ticks: {min: -15, max: 15}}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.line/skip/all.png b/test/fixtures/element.line/skip/all.png new file mode 100644 index 0000000000000000000000000000000000000000..5031ab9bb1c611ddc7d62b1cb54b0167f600e4f6 GIT binary patch literal 2849 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/skip/first.js b/test/fixtures/element.line/skip/first.js new file mode 100644 index 000000000..5637cb526 --- /dev/null +++ b/test/fixtures/element.line/skip/first.js @@ -0,0 +1,29 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [{x: NaN, y: 10}, {x: 5, y: 0}, {x: 15, y: -10}, {x: 19, y: -5}], + borderColor: 'red', + fill: true, + lineTension: 0 + } + ] + }, + options: { + legend: false, + title: false, + scales: { + xAxes: [{type: 'linear', display: false, ticks: {min: 0, max: 20}}], + yAxes: [{display: false, ticks: {min: -15, max: 15}}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.line/skip/first.png b/test/fixtures/element.line/skip/first.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2d454cac065cf2fdf3f3e0cff60f576c9de3f1 GIT binary patch literal 5950 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/skip/last-span.js b/test/fixtures/element.line/skip/last-span.js new file mode 100644 index 000000000..f479ea079 --- /dev/null +++ b/test/fixtures/element.line/skip/last-span.js @@ -0,0 +1,30 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [{x: 0, y: 10}, {x: 5, y: 0}, {x: 15, y: -10}, {x: NaN, y: -5}], + borderColor: 'red', + fill: true, + spanGaps: true, + lineTension: 0 + } + ] + }, + options: { + legend: false, + title: false, + scales: { + xAxes: [{type: 'linear', display: false, ticks: {min: 0, max: 20}}], + yAxes: [{display: false, ticks: {min: -15, max: 15}}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.line/skip/last-span.png b/test/fixtures/element.line/skip/last-span.png new file mode 100644 index 0000000000000000000000000000000000000000..23990d1efe0fe03e5dda963f0c85c6857a472423 GIT binary patch literal 6756 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/skip/last.js b/test/fixtures/element.line/skip/last.js new file mode 100644 index 000000000..cb294564f --- /dev/null +++ b/test/fixtures/element.line/skip/last.js @@ -0,0 +1,29 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [{x: 0, y: 10}, {x: 5, y: 0}, {x: 15, y: -10}, {x: NaN, y: -5}], + borderColor: 'red', + fill: true, + lineTension: 0 + } + ] + }, + options: { + legend: false, + title: false, + scales: { + xAxes: [{type: 'linear', display: false, ticks: {min: 0, max: 20}}], + yAxes: [{display: false, ticks: {min: -15, max: 15}}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.line/skip/last.png b/test/fixtures/element.line/skip/last.png new file mode 100644 index 0000000000000000000000000000000000000000..23990d1efe0fe03e5dda963f0c85c6857a472423 GIT binary patch literal 6756 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/skip/middle-span.js b/test/fixtures/element.line/skip/middle-span.js new file mode 100644 index 000000000..75a3c155f --- /dev/null +++ b/test/fixtures/element.line/skip/middle-span.js @@ -0,0 +1,30 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [{x: 0, y: 10}, {x: 5, y: 0}, {x: NaN, y: -10}, {x: 19, y: -5}], + borderColor: 'red', + fill: true, + spanGaps: true, + lineTension: 0 + } + ] + }, + options: { + legend: false, + title: false, + scales: { + xAxes: [{type: 'linear', display: false, ticks: {min: 0, max: 20}}], + yAxes: [{display: false, ticks: {min: -15, max: 15}}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.line/skip/middle-span.png b/test/fixtures/element.line/skip/middle-span.png new file mode 100644 index 0000000000000000000000000000000000000000..604a0a354756a77eb55d0dcd4923a44ffdaab4b0 GIT binary patch literal 6298 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 aN?K>%MLX6!&l>(80Rnu3S16YAvi<~P0DhAI literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/stepped/after.js b/test/fixtures/element.line/stepped/after.js new file mode 100644 index 000000000..43e5668dc --- /dev/null +++ b/test/fixtures/element.line/stepped/after.js @@ -0,0 +1,30 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [{x: 1, y: 10}, {x: 5, y: 0}, {x: 15, y: -10}, {x: 19, y: -5}], + borderColor: 'red', + fill: false, + lineTension: 0, + steppedLine: 'after' + } + ] + }, + options: { + legend: false, + title: false, + scales: { + xAxes: [{type: 'linear', display: false, ticks: {min: 0, max: 20}}], + yAxes: [{display: false, ticks: {min: -15, max: 15}}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.line/stepped/after.png b/test/fixtures/element.line/stepped/after.png new file mode 100644 index 0000000000000000000000000000000000000000..1fda475d1262e5d3273f956ce4dc1cb65300708e GIT binary patch literal 4553 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/stepped/default.js b/test/fixtures/element.line/stepped/default.js new file mode 100644 index 000000000..88b286ffa --- /dev/null +++ b/test/fixtures/element.line/stepped/default.js @@ -0,0 +1,30 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [{x: 1, y: 10}, {x: 5, y: 0}, {x: 15, y: -10}, {x: 19, y: -5}], + borderColor: 'red', + fill: false, + lineTension: 0, + steppedLine: true + } + ] + }, + options: { + legend: false, + title: false, + scales: { + xAxes: [{type: 'linear', display: false, ticks: {min: 0, max: 20}}], + yAxes: [{display: false, ticks: {min: -15, max: 15}}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.line/stepped/default.png b/test/fixtures/element.line/stepped/default.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e464072a42a82d3bf2971ad676f25595174046 GIT binary patch literal 4354 zcmeHL`&$!N8a^|U0-+*aakT=ji9x_1!ec;g5kDmzuN^-@tnlEO$-1mZ*pDIxTX{m1!1^`}I;+j>PbJGU8gwKYC1+Erz zs?>bxY5e5_d{xP3ao^pHoBQtR>vJx}pFgni^Elq_#-c_hwX1uVmH+*&f`PcTtVKTy zPHmU(EnYV(_`<)x{(NC)Ls7`IFIKS*)x_qv-`(%|x04-3#<9_rYI9rUFP2y1c~Qa! zbDFUGhS0^$%a1K%SL^Ebrcap(F9CvX1VIRbLW}>b6hK|gTK?uH1-yi|$zT6#b>O`Z zMzF{Zy7~#7rByjhJfgfAKlo|K+Qn~nt=8rEY?&mB*h73fk>q^Zg^l|r#pFqds&+-J zo<0$^{`v=R_qtMd0nJ=t@7bSdsML>j&pZRE6uj2|^5 zknNDbXt)5x<|51-qmCNmVnZ#FcH)>=B!+Ueo{W zUSE@3b9G76P$OO^+~9Orq@%_f{6*lZ)BPn>cBwTY+bLc)2(Vi#97VO6fzq#1vn+*A3dKoGkBRR9T+DZjM|Fdr>* zM(pFWk=)*`P8tM%*qRDohCA()TNrIL0mJKdQ0oSaoXqcN1*5|;$sfJES zq0Gsk$wEwa#Q!ig3=29LzFb0AlsJ-T$dmV677(KPFEGgeAL%Ca$78m@`-94HDNPu0 zR4*B|1=GvAkLVTn=7ohv-7k4WUEuh9n6OJFMEp4twcZ&=95iyB{hN?*TJCnml`pr= zEeG;cm*fG(LEdY3f3Tx65bTi8FV}IsQ$YT;pB7L29c{pPLg_bcYT%4%8vhLcnIk3o zJYro(-8GrM#r!3fbBQtHkFqG5EXoXuX4xobVur~Bn^M>-RO=EDl@81)rD{G7p*H zZCVfZHWTx09>g0&noyA|oI)u9CMc(liTPbzFhb6l9Vit#=A&NWX?{YN7D~#=$GDxaM%Ju|D*ZL?pk&1X%Sqff=D6N&#aulV zMg#pHsVzK&ck)FQ+~B!E8gSdgyoV^8I4&M9z-r6Wa#q@V`xWJ-bm_I88&n;2i;)J0 zvk0MxwuX=4-#^Cd%NW|R9BgS}eWX%lUq#&ZrQ6=)?A`td^Hjw0{=@Ymrf#Wl-1NW_Iv5e_oaQI^^Ij|?CwAnb zZeuGS316RN{3Ap$+YiEh_qjML05jhe_=AiQY~KQ!aoh0w6w$HsL*&xmz@~Kt(t40`otku54Bmd zp#*L44p&DFiwUDyA&eFGzruyau0d5;g%+WVsJbC_-_1D%nY?hgV#mQ+FV7PyRH8OaQ-g`ah&%v-iw z;m~Vx@_qb;k0tZtb&iyx+Cl=i9dzyv>wgV{9h z)@nVW&O~@;`nyP)FSeu;-oXs*>ulmmA-6fCsn_qoi(I1e&)i|v4M>7?ks8XbE=<1P z+o^t9?QI-pxlY)EYmyG0wFSYG;+&pe!$|e^stC}44M{hf-yAn|aZnW&)^XpQE#+rm oo(F$vDI!t2O$PnH6(Sa0p>=0^KHxut?>0bUeDa#QIMJcs03m=4Q2+n{ literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/stepped/middle.js b/test/fixtures/element.line/stepped/middle.js new file mode 100644 index 000000000..3008aef6e --- /dev/null +++ b/test/fixtures/element.line/stepped/middle.js @@ -0,0 +1,30 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [{x: 1, y: 10}, {x: 5, y: 0}, {x: 15, y: -10}, {x: 19, y: -5}], + borderColor: 'red', + fill: false, + lineTension: 0, + steppedLine: 'middle' + } + ] + }, + options: { + legend: false, + title: false, + scales: { + xAxes: [{type: 'linear', display: false, ticks: {min: 0, max: 20}}], + yAxes: [{display: false, ticks: {min: -15, max: 15}}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.line/stepped/middle.png b/test/fixtures/element.line/stepped/middle.png new file mode 100644 index 0000000000000000000000000000000000000000..d605617023fbbf9c1f3fc5ba630166b0e421362d GIT binary patch literal 4811 zcmeHLXIN8N8b0@u1PCHUtRN^P0i^^51f_XXhFB+5NH4v-@lPbq^2U`TF~w?@Jcj z&r_E?gA4%BWqG*=0)WCJ0<=i*bK^*JGysM?mb=TUU15Elq2F&^lT4B(QAgd+PW@@Y z+zWvlg|$b1Sg!Bbzz*DhVo|XBhTM=#<~IZfr?l-Q_$CIp1-#v#HzoH(%=&dJ4YtiK zcU(pGwV86^fR+L360>PW0KJ0IQ)2VDgup+yZ|q#v%ezhwccERs6m3iEPS%t~Rh%mx z$pi>W(9$pR<2XFY*;@4JuLG!5Uw;-816*yQ5vJ`{9fixx5&~xp{LAFHB1F#B)~!d? z;#Q#f4<&3SQe?k2iJ{U7UsV4$62fUiMZRUJvye2cpEt#ZQk^6Xnj*dRf3!q_4G=V0 z)V>&#RLfais=cy|Ta7KO#O>2sqn#wR*V?}e#Vah{f;*riv6TBa?haM-rt*u^7bvT` z(+3&WlKjl$6~M$JXQvBnvN^;l)}V*~G>xMCTOGe++%|dOw5&R;s8e-G)>OITV* ziCC2&L?IS62e)`>3LB6ItpL%+2Ujcn2}9WjJP|9-T5r7D&q1KLE+sROJAt^a7+WDQ zdL97C!3Bme7tGC2k^W(nExwqCV`ZI=71+Pa2ty0XaZg&;L0i{P0wa+P6-V7el+2uM z`o;8@gnwzX|95a@27${G?=B-)wVG)t@RZ_Tls|OQ_nRFv1W5h!I zuA(k&V`}g1@gSmbv+GN9Q9Xu=>JvKXBLd{|p>GDS7-2WE_F&9Z$eDZGNfc2!oHoW! zcX@Ff;o;KtyFMH}lq@#YZ`doA!h;lQRJ)9_|VoC!56AA-g!&GhwX_ix{{$-uh_b|$-^||Fx6xAKf7od3!1l1`Pq)~j#+qNV7EeU&95GJ zR{k20=*wGwnAZ}1(^~Lb0Fg6iZ9laYvO$bVPMbHHxeAzej4Z6($?pu`+a7TN6=@vv z)XKIKg6uM((rlQ1=hnEcxYY@4KJx>pu$8A0W@uRfU03_7VT6f;Bo5vF%&sgno=ox4 zGC78!@iAG=b!J4)@Y~7QlfI=aPB4UM`>P3Qu1utT%*zVYbtLn|B8W**+w>5my<<8X zy!Yr`PPl2n1~(few%^3?VDf)QcwP7j&?)uyT6VKWFR&> zNJd!s*A0ctNJuOR&K}mA*V=Vi*(4WHj0)#k*(1h*TPPc@k4 z2?MvZ=6}%UoOKWa8|s?|!VHM2L)Yf5V~PC%)eh#k`2`EjoDI1Zj`7dN$s>u)7>u-S z$cF0zapaQW@V-T>26h4a^Da>BgTajEvcb;kAqqDFibkAts6j>5(9qjM_YZ1iTfk=I z=d%PMVqLM^(*5&n#De!bVIdm=QVh5Wux1Gt=btsk%JB^Sl_;nP1Ieo?69xbEw)~>z zQ`(wvuVpEDD*50YJBr{d?~n2PrMn-~)5&4bd`{&*>QQ0^1YU~42&c#ap7@50KVIDV zu3RSX)(kJ`jQ3T1u;vx}&|g=LOlB<`c;zhUpq%e_Sl7=o!n%}2Ibw6vk}NiVI&i-X z?cuAQX0?@-%2u=_{J65TgA)Ct-o2m0kfH_2qh)aJFLL_WPgQ=*>SI_)=%%DBW6U+@ z(;AU!F7i!d6n^X$)DkLFD9ODVl0vhlzNr*?!}I&;!`)XFeT?LH&L1%iG7d+A5B-`6 zH;I7ScaAd;u4q;*juVW|rt8%Jn;#Ruo!}2W}v+WzDnr_uZ2LK-r1v;V`@S; zx{<%Zbt9-X>@w?&Q4_V?D>&$E_qs9x_kqcYg20Q47g(s}X2Q}>oKwVAJ6i!?hl&aE tZE87T1_a}5q66*&;C>0}Kd+REFgs+Xoi6fs7W|P4u$KF|SGscc{tl1fU?l(m literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/tension/default.js b/test/fixtures/element.line/tension/default.js new file mode 100644 index 000000000..c12485925 --- /dev/null +++ b/test/fixtures/element.line/tension/default.js @@ -0,0 +1,28 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [{x: 1, y: 10}, {x: 5, y: 0}, {x: 15, y: -10}, {x: 19, y: -5}], + borderColor: 'red', + fill: false + } + ] + }, + options: { + legend: false, + title: false, + scales: { + xAxes: [{type: 'linear', display: false, ticks: {min: 0, max: 20}}], + yAxes: [{display: false, ticks: {min: -15, max: 15}}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.line/tension/default.png b/test/fixtures/element.line/tension/default.png new file mode 100644 index 0000000000000000000000000000000000000000..d8aeba911caec8120512b258c741d20ce77453e5 GIT binary patch literal 8539 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/element.line/tension/one.js b/test/fixtures/element.line/tension/one.js new file mode 100644 index 000000000..7210a7d6b --- /dev/null +++ b/test/fixtures/element.line/tension/one.js @@ -0,0 +1,29 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [{x: 1, y: 10}, {x: 5, y: 0}, {x: 15, y: -10}, {x: 19, y: -5}], + borderColor: 'red', + fill: false, + lineTension: 1 + } + ] + }, + options: { + legend: false, + title: false, + scales: { + xAxes: [{type: 'linear', display: false, ticks: {min: 0, max: 20}}], + yAxes: [{display: false, ticks: {min: -15, max: 15}}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.line/tension/one.png b/test/fixtures/element.line/tension/one.png new file mode 100644 index 0000000000000000000000000000000000000000..d1773c5f46e7aa048c830e4d2cd15e387836243e GIT binary patch literal 8475 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 literal 0 HcmV?d00001 diff --git a/test/specs/element.line.tests.js b/test/specs/element.line.tests.js index e509bbfc9..5697c481a 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('Chart.elements.Line', function() { + describe('auto', jasmine.fixture.specs('element.line')); + it('should be constructed', function() { var line = new Chart.elements.Line({ _datasetindex: 2, @@ -10,1520 +12,4 @@ describe('Chart.elements.Line', function() { expect(line._datasetindex).toBe(2); expect(line._points).toEqual([1, 2, 3, 4]); }); - - it('should draw with default settings', function() { - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5 - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: false, // don't want to fill - tension: 0, // no bezier curve for now - } - }); - - line.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'save', - args: [], - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0.0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 10] - }, { - name: 'lineTo', - args: [5, 0] - }, { - name: 'lineTo', - args: [15, -10] - }, { - name: 'lineTo', - args: [19, -5] - }, { - name: 'stroke', - args: [], - }, { - name: 'restore', - args: [] - }]); - }); - - it('should draw with straight lines for a tension of 0', function() { - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10, - tension: 0 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0, - tension: 0 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10, - tension: 0 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5, - tension: 0 - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: false, // don't want to fill - tension: 0, // no bezier curve for now - } - }); - - line.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'save', - args: [], - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0.0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 10] - }, { - name: 'lineTo', - args: [5, 0] - }, { - name: 'lineTo', - args: [15, -10] - }, { - name: 'lineTo', - args: [19, -5] - }, { - name: 'stroke', - args: [], - }, { - name: 'restore', - args: [] - }]); - }); - - it('should draw stepped lines, with "before" interpolation', function() { - - // Both `true` and `'before'` should draw the same steppedLine - var beforeInterpolations = [true, 'before']; - - beforeInterpolations.forEach(function(mode) { - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10, - steppedLine: mode - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0, - steppedLine: mode - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10, - steppedLine: mode - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5, - steppedLine: mode - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: false, // don't want to fill - tension: 0, // no bezier curve for now - } - }); - - line.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'save', - args: [], - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0.0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 10] - }, { - name: 'lineTo', - args: [5, 10] - }, { - name: 'lineTo', - args: [5, 0] - }, { - name: 'lineTo', - args: [15, 0] - }, { - name: 'lineTo', - args: [15, -10] - }, { - name: 'lineTo', - args: [19, -10] - }, { - name: 'lineTo', - args: [19, -5] - }, { - name: 'stroke', - args: [], - }, { - name: 'restore', - args: [] - }]); - }); - }); - - it('should draw stepped lines, with "middle" interpolation', function() { - - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10, - steppedLine: 'middle' - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0, - steppedLine: 'middle' - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10, - steppedLine: 'middle' - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5, - steppedLine: 'middle' - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: false, // don't want to fill - tension: 0, // no bezier curve for now - } - }); - - line.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'save', - args: [], - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0.0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 10] - }, { - name: 'lineTo', - args: [2.5, 10] - }, { - name: 'lineTo', - args: [2.5, 0] - }, { - name: 'lineTo', - args: [5, 0] - }, { - name: 'lineTo', - args: [10, 0] - }, { - name: 'lineTo', - args: [10, -10] - }, { - name: 'lineTo', - args: [15, -10] - }, { - name: 'lineTo', - args: [17, -10] - }, { - name: 'lineTo', - args: [17, -5] - }, { - name: 'lineTo', - args: [19, -5] - }, { - name: 'stroke', - args: [], - }, { - name: 'restore', - args: [] - }]); - }); - - it('should draw stepped lines, with "after" interpolation', function() { - - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10, - steppedLine: 'after' - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0, - steppedLine: 'after' - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10, - steppedLine: 'after' - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5, - steppedLine: 'after' - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: false, // don't want to fill - tension: 0, // no bezier curve for now - } - }); - - line.draw(); - - expect(mockContext.getCalls()).toEqual([{ - name: 'save', - args: [], - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0.0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 10] - }, { - name: 'lineTo', - args: [0, 0] - }, { - name: 'lineTo', - args: [5, 0] - }, { - name: 'lineTo', - args: [5, -10] - }, { - name: 'lineTo', - args: [15, -10] - }, { - name: 'lineTo', - args: [15, -5] - }, { - name: 'lineTo', - args: [19, -5] - }, { - name: 'stroke', - args: [], - }, { - name: 'restore', - args: [] - }]); - }); - - it('should draw with custom settings', function() { - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5 - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: true, - tension: 0, // no bezier curve for now - - borderCapStyle: 'round', - borderColor: 'rgb(255, 255, 0)', - borderDash: [2, 2], - borderDashOffset: 1.5, - borderJoinStyle: 'bevel', - borderWidth: 4, - backgroundColor: 'rgb(0, 0, 0)' - } - }); - - line.draw(); - - var expected = [{ - name: 'save', - args: [] - }, { - name: 'setLineCap', - args: ['round'] - }, { - name: 'setLineDash', - args: [ - [2, 2] - ] - }, { - name: 'setLineDashOffset', - args: [1.5] - }, { - name: 'setLineJoin', - args: ['bevel'] - }, { - name: 'setLineWidth', - args: [4] - }, { - name: 'setStrokeStyle', - args: ['rgb(255, 255, 0)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 10] - }, { - name: 'lineTo', - args: [5, 0] - }, { - name: 'lineTo', - args: [15, -10] - }, { - name: 'lineTo', - args: [19, -5] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]; - expect(mockContext.getCalls()).toEqual(expected); - }); - - it('should skip points correctly', function() { - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10, - skip: true - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5 - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: true, - tension: 0, // no bezier curve for now - } - }); - - line.draw(); - - var expected = [{ - name: 'save', - args: [] - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 10] - }, { - name: 'lineTo', - args: [5, 0] - }, { - name: 'moveTo', - args: [19, -5] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]; - expect(mockContext.getCalls()).toEqual(expected); - }); - - it('should skip points correctly when spanGaps is true', function() { - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10, - skip: true - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5 - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: true, - tension: 0, // no bezier curve for now - spanGaps: true - } - }); - - line.draw(); - - var expected = [{ - name: 'save', - args: [] - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 10] - }, { - name: 'lineTo', - args: [5, 0] - }, { - name: 'lineTo', - args: [19, -5] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]; - expect(mockContext.getCalls()).toEqual(expected); - }); - - it('should skip points correctly when all points are skipped', function() { - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10, - skip: true - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0, - skip: true - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10, - skip: true - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5, - skip: true - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: true, - tension: 0, // no bezier curve for now - spanGaps: true - } - }); - - line.draw(); - - var expected = [{ - name: 'save', - args: [] - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]; - expect(mockContext.getCalls()).toEqual(expected); - }); - - it('should skip the first point correctly', function() { - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10, - skip: true - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5 - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: true, - tension: 0, // no bezier curve for now - } - }); - - line.draw(); - - var expected = [{ - name: 'save', - args: [] - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [5, 0] - }, { - name: 'lineTo', - args: [15, -10] - }, { - name: 'lineTo', - args: [19, -5] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]; - expect(mockContext.getCalls()).toEqual(expected); - }); - - it('should skip the first point correctly when spanGaps is true', function() { - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10, - skip: true - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5 - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: true, - tension: 0, // no bezier curve for now - spanGaps: true - } - }); - - line.draw(); - - var expected = [{ - name: 'save', - args: [] - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [5, 0] - }, { - name: 'lineTo', - args: [15, -10] - }, { - name: 'lineTo', - args: [19, -5] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]; - expect(mockContext.getCalls()).toEqual(expected); - }); - - it('should skip the last point correctly', function() { - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5, - skip: true - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: true, - tension: 0, // no bezier curve for now - } - }); - - line.draw(); - - var expected = [{ - name: 'save', - args: [] - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 10] - }, { - name: 'lineTo', - args: [5, 0] - }, { - name: 'lineTo', - args: [15, -10] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]; - expect(mockContext.getCalls()).toEqual(expected); - }); - - it('should skip the last point correctly when spanGaps is true', function() { - var mockContext = window.createMockContext(); - - // Create our points - var points = []; - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 0, - _view: { - x: 0, - y: 10, - controlPointNextX: 0, - controlPointNextY: 10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 1, - _view: { - x: 5, - y: 0, - controlPointPreviousX: 5, - controlPointPreviousY: 0, - controlPointNextX: 5, - controlPointNextY: 0 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 2, - _view: { - x: 15, - y: -10, - controlPointPreviousX: 15, - controlPointPreviousY: -10, - controlPointNextX: 15, - controlPointNextY: -10 - } - })); - points.push(new Chart.elements.Point({ - _datasetindex: 2, - _index: 3, - _view: { - x: 19, - y: -5, - controlPointPreviousX: 19, - controlPointPreviousY: -5, - controlPointNextX: 19, - controlPointNextY: -5, - skip: true - } - })); - - var line = new Chart.elements.Line({ - _datasetindex: 2, - _ctx: mockContext, - _children: points, - // Need to provide some settings - _view: { - fill: true, - tension: 0, // no bezier curve for now - spanGaps: true - } - }); - - line.draw(); - - var expected = [{ - name: 'save', - args: [] - }, { - name: 'setLineCap', - args: ['butt'] - }, { - name: 'setLineDash', - args: [ - [] - ] - }, { - name: 'setLineDashOffset', - args: [0] - }, { - name: 'setLineJoin', - args: ['miter'] - }, { - name: 'setLineWidth', - args: [3] - }, { - name: 'setStrokeStyle', - args: ['rgba(0,0,0,0.1)'] - }, { - name: 'beginPath', - args: [] - }, { - name: 'moveTo', - args: [0, 10] - }, { - name: 'lineTo', - args: [5, 0] - }, { - name: 'lineTo', - args: [15, -10] - }, { - name: 'stroke', - args: [] - }, { - name: 'restore', - args: [] - }]; - expect(mockContext.getCalls()).toEqual(expected); - }); });