<?xml version="1.0" standalone="no"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<testcase>
  <info>
    <p>
      This test checks that IDs coming from images properly appear in the IF output.
    </p>
  </info>
  <fo>
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
      <fo:layout-master-set>
        <fo:simple-page-master master-name="page"
          page-height="320pt" page-width="420pt" margin="10pt">
          <fo:region-body/>
        </fo:simple-page-master>
      </fo:layout-master-set>

      <fo:page-sequence master-reference="page">
        <fo:flow flow-name="xsl-region-body" text-align="justify">
          <fo:block>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum leo a diam 
            bibendum auctor. <fo:external-graphic src="../resources/images/fop-logo-color-24bit.png" 
              id="external-graphic"/>Vivamus porttitor sollicitudin tortor eu vulputate. In vel 
            libero libero, a semper est.</fo:block>
        </fo:flow>
      </fo:page-sequence>

      <fo:page-sequence master-reference="page">
        <fo:flow flow-name="xsl-region-body" text-align="justify">
          <fo:block>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum leo a diam 
            bibendum auctor. <fo:instream-foreign-object id="instream-foreign-object" width="120pt" 
              display-align="center" content-width="scale-to-fit">
              <svg xmlns="http://www.w3.org/2000/svg" width="300" height="286.6">
                <g style="fill-opacity:0.7; stroke:black; stroke-width:3"
                  transform="translate(0, 286.6) scale(1, -1) translate(100, 100)">
                  <circle cx="50"  cy="86.6" r="80" style="fill:red;"/>
                  <circle cx="0"   cy="0"    r="80" style="fill:green;"/>
                  <circle cx="100" cy="0"    r="80" style="fill:blue;"/>
                </g>
              </svg>
            </fo:instream-foreign-object> Vivamus porttitor sollicitudin tortor eu vulputate. In vel 
            libero libero, a semper est.</fo:block>
        </fo:flow>
      </fo:page-sequence>

    </fo:root>
  </fo>
  <if-checks xmlns:if="http://xmlgraphics.apache.org/fop/intermediate">

    <!-- Page 1 -->
    <eval expected="7"          xpath="count(//if:page-sequence[1]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'])"/>

    <eval expected="text"  xpath="local-name(//if:page-sequence[1]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][1])"/>
    <eval expected="text"  xpath="local-name(//if:page-sequence[1]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][2])"/>
    <eval expected="id"    xpath="local-name(//if:page-sequence[1]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][3])"/>
    <eval expected="image" xpath="local-name(//if:page-sequence[1]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][4])"/>
    <eval expected="id"    xpath="local-name(//if:page-sequence[1]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][5])"/>
    <eval expected="text"  xpath="local-name(//if:page-sequence[1]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][6])"/>
    <eval expected="text"  xpath="local-name(//if:page-sequence[1]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][7])"/>

    <eval expected="external-graphic" xpath="//if:page-sequence[1]/descendant::*[local-name() = 'id'][1]/@name"/>
    <eval expected=""                 xpath="//if:page-sequence[1]/descendant::*[local-name() = 'id'][2]/@name"/>

    <!-- Page 2 -->
    <eval expected="7"          xpath="count(//if:page-sequence[2]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'])"/>

    <eval expected="text"  xpath="local-name(//if:page-sequence[2]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][1])"/>
    <eval expected="text"  xpath="local-name(//if:page-sequence[2]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][2])"/>
    <eval expected="id"    xpath="local-name(//if:page-sequence[2]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][3])"/>
    <eval expected="image" xpath="local-name(//if:page-sequence[2]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][4])"/>
    <eval expected="id"    xpath="local-name(//if:page-sequence[2]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][5])"/>
    <eval expected="text"  xpath="local-name(//if:page-sequence[2]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][6])"/>
    <eval expected="text"  xpath="local-name(//if:page-sequence[2]/descendant::*[local-name() = 'text' or local-name() = 'image' or local-name() = 'id'][7])"/>

    <eval expected="instream-foreign-object" xpath="//if:page-sequence[2]/descendant::*[local-name() = 'id'][1]/@name"/>
    <eval expected=""                        xpath="//if:page-sequence[2]/descendant::*[local-name() = 'id'][2]/@name"/>

  </if-checks>
</testcase>
