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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 M?snW&WKE0tAF8A@o&W#< literal 0 Hc-jL100001 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 zc-rd>@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is@IUU<4VhE&A8z2?Zsz`(&| z_%i;Mg1NLo&4ywY4gm#+1_!@{oky62fh-0_rgVl1CMJ-$fQSJ@)6#AqkRS^WgFRT5 zrHP5nVMED8PLRF^#s};W0|E{(a7@!PVgzY4VEDrTW^iyxFdV$(ss`4`)*uft-;t47 zA!64Fu+0Y;J}`qB3K|IvEZ*WX!5SqP>cCcUu(0wpB)n9DIE?uKKgcSE#sv+G0y?oN zU^gZ({9qh)?5JZ$9XsmSQOAxtcGR(>jvaOE2z6{D`#uv!#s~l6&H$Uf44$rjF6*2U FngAQ@L$Lq= literal 0 Hc-jL100001 diff --git a/test/fixtures/element.line/skip/first-span.js b/test/fixtures/element.line/skip/first-span.js new file mode 100644 index 000000000..4e29d2828 --- /dev/null +++ b/test/fixtures/element.line/skip/first-span.js @@ -0,0 +1,30 @@ +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, + 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/first-span.png b/test/fixtures/element.line/skip/first-span.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2d454cac065cf2fdf3f3e0cff60f576c9de3f1 GIT binary patch literal 5950 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 WD8uI$4lF_7Lp?$}T=*;f%Krh1&+=FR literal 0 Hc-jL100001 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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 WD8uI$4lF_7Lp?$}T=*;f%Krh1&+=FR literal 0 Hc-jL100001 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 Hc-jL100001 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 zc-rk(`%@EF6u!G8f*=weiVD_HVzvq>Ehw}=ND-?+5@=DdHG#}f1QY@#D2Y6hbhMVL z6*ol?B%oA5eBq;N1R>*;;V_Ltpz&-cyuowKuh z&Ml1Qt+TgXWD5YW=d2I^3;>vTgn-Q~;?`2smJEPn5hwiPjgt7$$5FL4N%O3A+IF>{ zW5;n{@ojDgEi8#jz3%HvIko${yYqd#A8!o*wCi~2e(JrGyJ>Z6!w*xt?lQ$5SH3#- zFl?I#s_-}zvn{14^-iVR)g#AB*WM1Cl(tVvSgw4V9F@3jC|LVjNzPX1P>KzW&X%)- z6x@bF`$#!}V2VvR$ecaBy#|7+209K*?^8g|bll&C1{SU8y+v}_Ak%sV{8qt=V~{XN z+IbK6EXVavu_cqtzHWxYs_fMtSXi{p#hQ9hU%}5~7`pth^96_8uQSzyH*rC(@?ZvP z9ebi`p#?_28!6lj0@1wDLdJQXC?x6ibNsIWWJymszx#IAHBwZ#3HG$o2og3l>8|5w zKGsxms;|69#!%;bN&A@6t(%<6JlGbq2PofA<<(gFL8e2KzriTQ_5_`5-XN0X>RUoE zH@Agu#bicjc%)?GQ;EK_MrqZG#*J|F7je}MtYQkyIL8ZHL&{bivSg4b@t5YHm5Vn_ zh$`42*APR5XF|0TQ30UXWIM+m1UY9QdzJj`tk?Sj5L2H6nLIuEJvwmt!;4Fnu#Q5J zFPH9^P1fz097KP6-k*fkI?+HK-no=CzXyid9!(w7(h+P>i^i3Zc3o_3z@AqT&ZOpY z;vGfA3uZ)SL}op!76!jaSM#J4>X#N)GDj6JJE6BU+w*ELmBp9nUVv z5}?mlV-?$nKV4!0`Nj$hflh+HL0VsZf;Jyqj14E#Gj&%npPB-#1D3Dl%uP3qy{{pE z9NDx5rkj1dxrn;fYS7z{Re}$jQztO|@FS*mTU0^+d8@5m$618;Oc4xg)CR7hhALn7 z=wvFv9jVheLH&N5_$#LcK_h(XT$6{|ycC-kWIdV(T?;l`ZiWNnVr42KyD^(N4qz;L ze0cmpD4fT_cA_P!1-+s0h?p7~L8NbfcKZ3^-+3ZlmJT;2JURMGMt11C;Tl&ta~~@| z5~>>h;{Z`lg_5Y#{nK>dFKE0#*rJ2+CM%e&eN%3cX#)N?h}HcTw{mhd6Z`MR6rHwd zNCwfTpEcs>C?2o{%L%}os~61&pJ3;Vd`S4GUB^2Re3tS(BTj@|H7!+-m0-QvNRdRU ze|Q$pFUNH@b0FdFzbMJJz}cI#k1}g^8WJ%0v#cQY-Ar%k(->?(#*pPQ3~fJQA$yfk zf+C|hLw~|C-4=LmL;_<#sgUyp!*_lET&YUp6D4@z(rp?r^dP9UP@T3~S!yjU^~YD2i6JU2w$sY!b7MS2h-S z8Fb&SrpO)ZoR2O8k@XB8rv;46$78ZBsMcZmpTGOL1Rmy_`TCQ4mEE$ko}3+7FFUb2 zQ)s&g&286}UV6O>>OXTWKDgN%G)i`+I>E_a{f5vj7m^Ch>-AkB*gA7@@a5u>sH{vc z_4bWBAmI-qzqbDkZ#H~=d7ZFIJ|v^RSmA!7f`6U!PVb&-lhzT|qzn|RwAA{JmXv)O z7*?67MaX*|gtZ?XeRe_nqjxYBA5wzN;*r$sk{R#}`2Pm}+b#`pb?3h5Rr0UgAH9GN zoW<+7`UkHY9u0_yA)w*Zhxa}w8e=z_Cp$jzQ-oY&M|{FY-7v0eMz6kbzksNxim?;9 zsMSi{dRf|M5G3qqso364P{bi^l?Yqtr10dZjFs_~ks`IXdRv0NkgL})5>v#k#PlFw zAAM;934b{|d_<$RGx}hc2%?=bc@mL5Vf1}8Y0E2J%Lb)MF%3OKJF^mb#-Y7H!Gfp0 zM>3?|Qr&}F2az29p`Pq`{S~ghhULPX2YSeZmXm~Kn0Se6saiXn&N29YU~GxdE$4Q?4{nmH?iT>?ndg dBk`6cO!h^P!-|Ieo_2t^IBR*~=fZ?v{{zU8UyuL* literal 0 Hc-jL100001 diff --git a/test/fixtures/element.line/stepped/before.js b/test/fixtures/element.line/stepped/before.js new file mode 100644 index 000000000..e30447365 --- /dev/null +++ b/test/fixtures/element.line/stepped/before.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: 'before' + } + ] + }, + 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/before.png b/test/fixtures/element.line/stepped/before.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e464072a42a82d3bf2971ad676f25595174046 GIT binary patch literal 4354 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 literal 0 Hc-jL100001 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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

pa)Bd|wKx~Q17 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 literal 0 Hc-jL100001 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); - }); }); -- 2.47.2