<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="disabled-testcases.xsl"?>
<!--
  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$ -->
<!--DOCTYPE disabled-testcases SYSTEM "disabled-testcases.dtd"-->
<disabled-testcases>
  <testcase>
    <name>Auto-height block-containers produce fences</name>
    <file>block-container_space-before_space-after_3.xml</file>
    <description>Block-containers with no height currently don't
    create a fence for spaces as they should (they behave like a
    normal block).</description>
  </testcase>
  <testcase>
    <name>font-stretch NYI</name>
    <file>block_font-stretch.xml</file>
    <description>Font-stretch is not implemented, yet.</description>
  </testcase>
  <testcase>
    <name>linefeed-treatment</name>
    <file>block_linefeed-treatment.xml</file>
    <description>Preserved linefeeds in a fo:character are not handled
    correctly.</description>
  </testcase>
  <testcase>
    <name>white-space-treatment</name>
    <file>block_white-space-treatment_3.xml</file>
    <description>White space handling incorrectly stops at fo:inline
      boundaries when it comes to formatter generated line breaks.</description>
  </testcase>
  <testcase>
    <name>Empty blocks produce fences</name>
    <file>block_space-before_space-after_8.xml</file>
    <description>An empty block currently produces a fence for
    stacking constraints which it shouldn't.</description>
  </testcase>
  <testcase>
    <name>block white-space nbsp 2</name>
    <file>block_white-space_nbsp_2.xml</file>
    <description>The nbsp given as an fo:character is not adjustable and therefore
    the justification does not work in this case.</description>
  </testcase>
  <testcase>
    <name>block word-spacing</name>
    <file>block_word-spacing.xml</file>
    <description>Word-spacing may not work as expected.</description>
  </testcase>
  <testcase>
    <name>block word-spacing text-align justify</name>
    <file>block_word-spacing_text-align_justify.xml</file>
    <description>Word-spacing may not work as expected.</description>
  </testcase>
  <testcase>
    <name>external-graphic don't shrink</name>
    <file>external-graphic_oversized.xml</file>
    <description>Images currently don't shrink so they fit on a page
    when they are too big and shrinking is allowed to
    happen (min/opt/max).</description>
  </testcase>
  <testcase>
    <name>Test case with HTTP URL</name>
    <file>external-graphic_src_uri.xml</file>
    <description>Doesn't work behind a proxy which requires
    authorization.</description>
  </testcase>
  <testcase>
    <name>Space Resolution in foot note area</name>
    <file>footnote_space-resolution.xml</file>
    <description>Space resolution does not work between footnote
    regions.</description>
  </testcase>
  <testcase>
    <name>NPE for table inside an inline</name>
    <file>inline_block_nested_3.xml</file>
    <description>Placing a table as a child of an fo:inline produces a
    NullPointerException.</description>
  </testcase>
  <testcase>
    <name>Keeps on inline-container are not implemented, yet.</name>
    <file>inline-container_keeps.xml</file>
    <description>The keep-with-previous and keep-with-next properties have not been implemented on
      inline-container yet. They will be treated as if they had the value "auto".</description>
  </testcase>
  <testcase>
    <name>Borders and padding inline-container are not implemented, yet.</name>
    <file>inline-container_border_padding.xml</file>
    <description>Borders and paddings on an inline-container will be ignored.</description>
  </testcase>
  <testcase>
    <name>inline letter-spacing</name>
    <file>inline_letter-spacing.xml</file>
    <description>Letter-spacing may not work as
    expected within fo:inline.</description>
  </testcase>
  <testcase>
    <name>inline word-spacing</name>
    <file>inline_word-spacing.xml</file>
    <description>Word-spacing may not work as expected within
    fo:inline.</description>
  </testcase>
  <testcase>
    <name>inline word-spacing text-align justify</name>
    <file>inline_word-spacing_text-align_justify.xml</file>
    <description></description>
  </testcase>
  <testcase>
    <name>leader-alignment NYI</name>
    <file>leader-alignment.xml</file>
    <description>Leader-alignment is not yet
    implemented.</description>
  </testcase>
  <testcase>
    <name>leader-pattern="use-content": Problem with line height</name>
    <file>leader_leader-pattern_use-content_bug.xml</file>
    <description>Line height is not correctly calculated for
    use-content leaders whose height is larger than the rest of the
    line.</description>
    <reference>http://www.nabble.com/leaders-with-leader-pattern%3D%22use-content%22-t546244.html</reference>
  </testcase>
  <testcase>
    <name>Page breaking doesn't deal with IPD changes</name>
    <file>page-breaking_4.xml</file>
    <description>Page breaking currently doesn't support changing available IPD
    between pages of a single page-sequence. Element list generation has to be reset to
    redetermine line breaks in this case.</description>
  </testcase>
  <testcase>
    <name>Overflow handing is incomplete</name>
    <file>page-breaking_6.xml</file>
    <description>Line breaking is not 100% correct when there's too little space.
    Overflows are not detected and warned.</description>
  </testcase>
  <testcase>
    <name>Indefinite page height handling is imcomplete</name>
    <file>page-height_indefinite_simple.xml</file>
    <description>A RuntimeException is thrown for a page of indefinite height. Lots of warnings.</description>
  </testcase>
  <testcase>
    <name>page-number-citation: Problem with background-image</name>
    <file>page-number-citation_background-image.xml</file>
    <description>Background-images on page-number-citations are not
    placed correctly.</description>
  </testcase>
  <testcase>
    <name>IDs are not working on all FO elements</name>
    <file>page-number-citation_complex_1.xml</file>
    <description>The "id" attributes are not properly handled for all block-level FO elements.</description>
  </testcase>
  <testcase>
    <name>IDs are not working on all FO elements</name>
    <file>page-number-citation_complex_2.xml</file>
    <description>The "id" attributes are not properly handled for all inline-level FO elements.</description>
  </testcase>
  <testcase>
    <name>Footnotes in multi-column documents</name>
    <file>region-body_column-count_footnote.xml</file>
    <description>Footnotes may overlap with text of the region-body in
    multi-column documents.</description>
  </testcase>
  <testcase>
    <name>Column Balancing problems</name>
    <file>region-body_column-count_balance_4col.xml</file>
    <description>Situation in a 4-column document where the column balancing doesn't work and even causes some
    content to disappear.</description>
  </testcase>
  <testcase>
    <name>Column Balancing problems</name>
    <file>region-body_column-count_bug36356.xml</file>
    <description>Column balancing doesn't work as expected.</description>
  </testcase>
  <testcase>
    <name>table-cell empty area with marker.xml</name>
    <file>table-cell_empty_area_with_marker.xml</file>
    <description>A table-cell producing an empty area does currently not add any markers to a page.
      See TODO entry in AreaAdditionUtil.</description>
  </testcase>
  <testcase>
    <name>Border conditionality on table</name>
    <file>table_border-width_conditionality.xml</file>
    <description>The code should be ok, but the test case uses shorthands and therefore
    is probably not expressing the indended outcome according to the spec. The test
    case should be revisited.</description>
  </testcase>
  <testcase>
    <name>Page-keep not respected in multi-column layout</name>
    <file>keep_within-page_multi-column_overflow.xml</file>
    <description>The block should cause overflow in the
    last column on the page, rather than be broken.</description>
  </testcase>
  <testcase>
    <name>Block Container Reference Orientation Bug</name>
    <file>block-container_reference-orientation_bug36391.xml</file>
    <description>An assert is failing</description>
  </testcase>
  <testcase>
    <name>Writing mode problems</name>
    <file>simple-page-master_writing-mode_rl_region-body_writing-mode-lr.xml</file>
    <description>Test erroneously depends upon incorrect implementation of writing-mode trait
    derivation on fo:region-*.</description>
  </testcase>
  <testcase>
    <name>Footnotes and "id" property</name>
    <file>footnote_id.xml</file>
    <description>The "id" for fo:footnote and fo:footnote-body is properly
    processed, but implementation in the layout engine remains incomplete/</description>
  </testcase>
</disabled-testcases>
