<svg id="svg-root" width="100%" height="100%"
  viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink" onload="runtest()">
  <!--======================================================================-->
  <!--=  Copyright 2008 World Wide Web Consortium, (Massachusetts          =-->
  <!--=  Institute of Technology, European Research Consortium for         =-->
  <!--=  Informatics and Mathematics (ERCIM), Keio University).            =-->
  <!--=  All Rights Reserved.                                              =-->
  <!--=  See http://www.w3.org/Consortium/Legal/.                          =-->
  <!--======================================================================-->
  <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
    template-version="1.4" reviewer="CM" author="ED" status="accepted"
    version="$Revision: 1.5 $" testname="$RCSfile: types-dom-06-f.svg,v $">
    <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/types.html#InterfaceSVGStringList">
      <p>
        This tests parts of the SVGStringList interface. Particularly it tests that
        strings that are taken from one SVGStringList and then inserted into another
        SVGStringList duplicates the value instead of removing the value from the
        first list when it's inserted into the second list.
      </p>
    </d:testDescription>
    <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
      <p>
        Run the test. No interaction required.
      </p>
    </d:operatorScript>
    <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
      <p>
        
      </p>
      <p>
        The test has passed if there are three green rectangles visible and no red. Red is an indication that the test failed.
      </p>
    </d:passCriteria>
  </d:SVGTestCase>
  <title id="test-title">$RCSfile: types-dom-06-f.svg,v $</title>
  <defs>
    <font-face
      font-family="SVGFreeSansASCII"
      unicode-range="U+0-7F">
      <font-face-src>
        <font-face-uri xlink:href="../custom/resources/SVGFreeSans.svg#ascii"/>
      </font-face-src>
    </font-face>
  </defs>
  <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">

		<defs>
			<script type="application/ecmascript">
				function runtest()
				{
					try {
						var r1 = document.getElementById("r1");
						var r2 = document.getElementById("r2");
						var r3 = document.getElementById("r3");
						var i0 = r1.requiredFeatures.getItem(0);
						var i1 = r1.requiredFeatures.getItem(1);
						
						if(i0 != "http://www.w3.org/TR/SVG11/feature#Shape")
						{
							r1.removeAttribute("requiredFeatures");
							return;
						}
						if(i1 != "this.is.a.bogus.feature.string")
						{
							r1.removeAttribute("requiredFeatures");
							return;
						}
						if(r1.requiredFeatures.numberOfItems != 2)
						{
							r1.removeAttribute("requiredFeatures");
							return;
						}
						r2.requiredFeatures.appendItem(i1);
						if(r1.requiredFeatures.numberOfItems != 2)
						{
							r1.removeAttribute("requiredFeatures");
							return;
						}
						if(r2.requiredFeatures.numberOfItems != 1)
						{
							r1.removeAttribute("requiredFeatures");
							return;
						}
						r3.requiredFeatures.insertItemBefore(i0,0);
						if(r3.requiredFeatures.numberOfItems != 2)
						{
							r3.setAttribute("fill", "red");
							return;
						}
						if(r1.requiredFeatures.numberOfItems != 2)
						{
							r1.removeAttribute("requiredFeatures");
							return;
						}
					}
					catch(e)
					{
						var f = document.getElementById("fail");
						f.setAttribute("fill", "red");
					}				
				}
			</script>
		</defs>
		
		<text x="50%" y="70" text-anchor="middle">SVGStringList DOM</text>
		
		<!-- background images -->
		<g>
			<rect width="100" height="100" fill="lime" transform="translate(80 100)"/>
			<rect width="100" height="100" fill="lime" transform="translate(190 100)"/>
			<rect width="100" height="100" fill="red" transform="translate(300 100)"/>
		</g>
		
		<!-- tests -->
		<rect id="r1" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Shape this.is.a.bogus.feature.string" width="100" height="100" fill="red" transform="translate(100 100)"/>
		<rect id="r2" width="100" height="100" fill="red" transform="translate(190 100)"/>
		<rect id="r3" width="100" height="100" fill="lime" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Shape" transform="translate(300 100)"/>
		
		<rect id="fail" width="100%" height="100%" fill="none"/>
  </g>
  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
    <text id="revision" x="10" y="340" stroke="none"
      fill="black">$Revision: 1.5 $</text>
  </g>
  <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
  <!-- comment out this watermark once the test is approved --><!--
  <g id="draft-watermark">
    <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
    <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
      text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
  </g>-->
</svg>
