description("Test for invalid input of setLineDash, getLineDash and lineDashOffset"); var canvas = document.createElement('canvas'); document.body.appendChild(canvas); canvas.setAttribute('width', '700'); canvas.setAttribute('height', '700'); var ctx = canvas.getContext('2d'); var initialLineDash = [1.5, 2.5]; var initialLineDashOffset = 1.5; function resetLineDash() { ctx.setLineDash(initialLineDash); ctx.lineDashOffset = initialLineDashOffset; } function trySettingLineDash(value) { resetLineDash(); ctx.setLineDash(value); return ctx.getLineDash(); } function trySettingLineDashWithNoArgs() { resetLineDash(); ctx.setLineDash(); return ctx.getLineDash(); } function trySettingLineDashOffset(value) { resetLineDash(); ctx.lineDashOffset = value; return ctx.lineDashOffset; } shouldBe("trySettingLineDash([1, -1])", "initialLineDash"); shouldBe("trySettingLineDash([1, Infinity])", "initialLineDash"); shouldBe("trySettingLineDash([1, -Infinity])", "initialLineDash"); shouldBe("trySettingLineDash([1, NaN])", "initialLineDash"); shouldBe("trySettingLineDash([1, 'string'])", "initialLineDash"); shouldThrow("trySettingLineDashWithNoArgs()", '"TypeError: Failed to execute \'setLineDash\' on \'CanvasRenderingContext2D\': 1 argument required, but only 0 present."'); shouldBe("trySettingLineDashOffset(Infinity)", "initialLineDashOffset"); shouldBe("trySettingLineDashOffset(-Infinity)", "initialLineDashOffset"); shouldBe("trySettingLineDashOffset(NaN)", "initialLineDashOffset"); shouldBe("trySettingLineDashOffset('string')", "initialLineDashOffset");