<!DOCTYPE HTML>
<title>Use of SVGAnimatedEnumeration within SVGFEConvolveMatrixElement</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
test(function() {
  // This test checks the use of SVGAnimatedEnumeration within SVGFEConvolveMatrixElement.

  var feConvolveMatrixElement = document.createElementNS("http://www.w3.org/2000/svg", "feConvolveMatrix");
  feConvolveMatrixElement.setAttribute("edgeMode", "duplicate");

  // Check initial 'edgeMode' value.
  assert_true(feConvolveMatrixElement.edgeMode instanceof SVGAnimatedEnumeration);
  assert_equals(typeof(feConvolveMatrixElement.edgeMode.baseVal), "number");
  assert_equals(feConvolveMatrixElement.edgeMode.baseVal, SVGFEConvolveMatrixElement.SVG_EDGEMODE_DUPLICATE);

  // Switch to 'wrap'.
  feConvolveMatrixElement.edgeMode.baseVal = SVGFEConvolveMatrixElement.SVG_EDGEMODE_WRAP;
  assert_equals(feConvolveMatrixElement.edgeMode.baseVal, SVGFEConvolveMatrixElement.SVG_EDGEMODE_WRAP);
  assert_equals(feConvolveMatrixElement.getAttribute('edgeMode'), "wrap");

  // Switch to 'none'.
  feConvolveMatrixElement.edgeMode.baseVal = SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE;
  assert_equals(feConvolveMatrixElement.edgeMode.baseVal, SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE);
  assert_equals(feConvolveMatrixElement.getAttribute('edgeMode'), "none");

  // Try setting invalid values.
  assert_throws_js(TypeError, function() { feConvolveMatrixElement.edgeMode.baseVal = 4; });
  assert_equals(feConvolveMatrixElement.edgeMode.baseVal, SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE);
  assert_equals(feConvolveMatrixElement.getAttribute('edgeMode'), "none");

  assert_throws_js(TypeError, function() { feConvolveMatrixElement.edgeMode.baseVal = -1; });
  assert_equals(feConvolveMatrixElement.edgeMode.baseVal, SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE);
  assert_equals(feConvolveMatrixElement.getAttribute('edgeMode'), "none");

  assert_throws_js(TypeError, function() { feConvolveMatrixElement.edgeMode.baseVal = 0; });
  assert_equals(feConvolveMatrixElement.edgeMode.baseVal, SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE);
  assert_equals(feConvolveMatrixElement.getAttribute('edgeMode'), "none");

  // Switch to 'duplicate'.
  feConvolveMatrixElement.edgeMode.baseVal = SVGFEConvolveMatrixElement.SVG_EDGEMODE_DUPLICATE;
  assert_equals(feConvolveMatrixElement.edgeMode.baseVal, SVGFEConvolveMatrixElement.SVG_EDGEMODE_DUPLICATE);
  assert_equals(feConvolveMatrixElement.getAttribute('edgeMode'), "duplicate");
});
</script>