<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<!-- $Id$ -->
<testcase>
  <info>
    <p>
      This test checks the basics of fox:external-document.
    </p>
  </info>
  <fo>
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
        xmlns:fox="http://xmlgraphics.apache.org/fop/extensions">
      <fo:layout-master-set>
        <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
          <fo:region-body/>
        </fo:simple-page-master>
      </fo:layout-master-set>
      <fox:external-document id="img" src="../resources/images/bgimg72dpi.png"/>
    </fo:root>
  </fo>
  <checks>
    <eval expected="1" xpath="count(/areaTree/pageSequence)"/>
    <eval expected="1" xpath="count(//pageViewport)"/>
    <eval expected="1" xpath="/areaTree/pageSequence/pageViewport/@formatted-nr"/>
    <eval expected="1" xpath="/areaTree/pageSequence/pageViewport/@nr"/>
    <eval expected="0 0 191976 191976" xpath="/areaTree/pageSequence/pageViewport/@bounds"/>
    
    <eval expected="191976" xpath="//regionViewport/@ipd"/>
    <eval expected="191976" xpath="//regionViewport/@bpd"/>
    <eval expected="191976" xpath="//lineArea/@ipd"/>
    <eval expected="191976" xpath="//lineArea/@bpd"/>
    <eval expected="191976" xpath="//viewport/@ipd"/>
    <eval expected="191976" xpath="//viewport/@bpd"/>
    <eval expected="0 0 191976 191976" xpath="//viewport/@pos"/>
    <eval expected="img" xpath="//viewport/@prod-id"/>
    <eval expected="img" xpath="//image/@prod-id"/>
  </checks>
</testcase>
