<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<title>OffscreenCanvas test: 2d.filter.canvasFilterObject.turbulence.inputTypes.tentative</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>

<h1>2d.filter.canvasFilterObject.turbulence.inputTypes.tentative</h1>
<p class="desc">Test exceptions on CanvasFilter() turbulence object</p>


<script>
var t = async_test("Test exceptions on CanvasFilter() turbulence object");
var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
    throw reason;
});
t.step(function() {

var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');

const errorTestCases = [
  {baseFrequency: {}},
  {baseFrequency: -1},
  {baseFrequency: [0, -1]},
  {baseFrequency: NaN},
  {baseFrequency: Infinity},
  {baseFrequency: undefined},
  {baseFrequency: -Infinity},
  {baseFrequency: "test"},

  {numOctaves: {}},
  {numOctaves: -1},
  {numOctaves: NaN},
  {numOctaves: Infinity},
  {numOctaves: undefined},
  {numOctaves: -Infinity},
  {numOctaves: [1, 1]},
  {numOctaves: "test"},

  {seed: {}},
  {seed: NaN},
  {seed: Infinity},
  {seed: undefined},
  {seed: -Infinity},
  {seed: [1, 1]},
  {seed: "test"},

  {stitchTiles: {}},
  {stitchTiles: NaN},
  {stitchTiles: Infinity},
  {stitchTiles: undefined},
  {stitchTiles: -Infinity},
  {stitchTiles: [1, 1]},
  {stitchTiles: "test"},
  {stitchTiles: null},
  {stitchTiles: []},
  {stitchTiles: [10]},
  {stitchTiles: 30},
  {stitchTiles: false},
  {stitchTiles: true},
  {stitchTiles: "10"},
  {stitchTiles: -1},

  {type: {}},
  {type: NaN},
  {type: Infinity},
  {type: undefined},
  {type: -Infinity},
  {type: [1, 1]},
  {type: "test"},
  {type: null},
  {type: []},
  {type: [10]},
  {type: 30},
  {type: false},
  {type: true},
  {type: "10"},
  {type: -1},
]

// null and [] = 0 when parsed as number
const workingTestCases = [
  {baseFrequency: null},
  {baseFrequency: []},
  {baseFrequency: [10]},
  {baseFrequency: [10, 3]},
  {baseFrequency: 30},
  {baseFrequency: false},
  {baseFrequency: true},
  {baseFrequency: "10"},

  {numOctaves: null},
  {numOctaves: []},
  {numOctaves: [10]},
  {numOctaves: 30},
  {numOctaves: false},
  {numOctaves: true},
  {numOctaves: "10"},

  {seed: null},
  {seed: []},
  {seed: [10]},
  {seed: 30},
  {seed: false},
  {seed: true},
  {seed: "10"},
  {seed: -1},

  {stitchTiles: "stitch"},
  {stitchTiles: "noStitch"},

  {type: "fractalNoise"},
  {type: "turbulence"},
]

for (testCase of errorTestCases) {
  const filterOptions = {...{filter: "turbulence"}, ...testCase};
  assert_throws_js(TypeError, function() { CanvasFilter(filterOptions); });
}

for (testCase of workingTestCases) {
  const filterOptions = {...{filter: "turbulence"}, ...testCase};
  _assert(new CanvasFilter(filterOptions) != null, "new CanvasFilter(filterOptions) != null");
}
t.done();

});
</script>
