<?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 a block-container 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. Vivamus porttitor sollicitudin tortor eu vulputate.</fo:block>
          <fo:block-container id="block-container" space-before="10pt" color="purple" 
            font-family="serif"><fo:block>In vel libero libero, a semper est. Vivamus dapibus ante id 
              lorem mattis eget mattis urna sodales. Vestibulum nec dui urna, in porta 
              mi.</fo:block></fo:block-container>
          <fo:block space-before="10pt">Proin varius egestas erat. Proin ante eros, consequat eget 
            semper a, molestie non arcu. Praesent hendrerit dolor vel leo luctus dapibus.</fo:block>
        </fo:flow>
      </fo:page-sequence>

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

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

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

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