<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<title>Canvas test: 2d.text.drawing.style.textRendering.settings</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
<body class="show_output">

<h1>2d.text.drawing.style.textRendering.settings</h1>
<p class="desc">Testing basic functionalities of textRendering in Canvas</p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>

<ul id="d"></ul>
<script>
var t = async_test("Testing basic functionalities of textRendering in Canvas");
_addTest(function(canvas, ctx) {

// Setting textRendering with lower cases
_assertSame(ctx.textRendering, "Auto", "ctx.textRendering", "\"Auto\"");

ctx.textRendering = "auto";
_assertSame(ctx.textRendering, "Auto", "ctx.textRendering", "\"Auto\"");

ctx.textRendering = "optimizespeed";
_assertSame(ctx.textRendering, "OptimizeSpeed", "ctx.textRendering", "\"OptimizeSpeed\"");

ctx.textRendering = "optimizelegibility";
_assertSame(ctx.textRendering, "OptimizeLegibility", "ctx.textRendering", "\"OptimizeLegibility\"");

ctx.textRendering = "geometricprecision";
_assertSame(ctx.textRendering, "GeometricPrecision", "ctx.textRendering", "\"GeometricPrecision\"");

// Setting textRendering with lower cases and upper cases word.
ctx.textRendering = "aUto";
_assertSame(ctx.textRendering, "Auto", "ctx.textRendering", "\"Auto\"");

ctx.textRendering = "OPtimizeSpeed";
_assertSame(ctx.textRendering, "OptimizeSpeed", "ctx.textRendering", "\"OptimizeSpeed\"");

ctx.textRendering = "OPtimizELEgibility";
_assertSame(ctx.textRendering, "OptimizeLegibility", "ctx.textRendering", "\"OptimizeLegibility\"");

ctx.textRendering = "GeometricPrecision";
_assertSame(ctx.textRendering, "GeometricPrecision", "ctx.textRendering", "\"GeometricPrecision\"");

// Setting textRendering with non-existing font variant.
ctx.textRendering = "abcd";
_assertSame(ctx.textRendering, "GeometricPrecision", "ctx.textRendering", "\"GeometricPrecision\"");


});
</script>

