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

  var feMorphologyElement = document.createElementNS("http://www.w3.org/2000/svg", "feMorphology");
  feMorphologyElement.setAttribute("operator", "erode");

  // Check initial 'operator' value.
  assert_true(feMorphologyElement.operator instanceof SVGAnimatedEnumeration);
  assert_equals(typeof(feMorphologyElement.operator.baseVal), "number");
  assert_equals(feMorphologyElement.operator.baseVal, SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_ERODE);

  // Switch to 'dilate'.
  feMorphologyElement.operator.baseVal = SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE;
  assert_equals(feMorphologyElement.operator.baseVal, SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE);
  assert_equals(feMorphologyElement.getAttribute('operator'), "dilate");

  // Try setting invalid values.
  assert_throws_js(TypeError, function() { feMorphologyElement.operator.baseVal = 4; });
  assert_equals(feMorphologyElement.operator.baseVal, SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE);
  assert_equals(feMorphologyElement.getAttribute('operator'), "dilate");

  assert_throws_js(TypeError, function() { feMorphologyElement.operator.baseVal = -1; });
  assert_equals(feMorphologyElement.operator.baseVal, SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE);
  assert_equals(feMorphologyElement.getAttribute('operator'), "dilate");

  assert_throws_js(TypeError, function() { feMorphologyElement.operator.baseVal = 0; });
  assert_equals(feMorphologyElement.operator.baseVal, SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE);
  assert_equals(feMorphologyElement.getAttribute('operator'), "dilate");

  // Switch to 'erode'.
  feMorphologyElement.operator.baseVal = SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_ERODE;
  assert_equals(feMorphologyElement.operator.baseVal, SVGFEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_ERODE);
  assert_equals(feMorphologyElement.getAttribute('operator'), "erode");
});
</script>