<?php
    // Not embedded. Do not check here.
    echo 'Long open tag test case file';
?>
<html>
<head>
<title><?php echo $title ?></title>
<script><?php echo $script; ?></script>
</head>
<body>
    <?php
        echo $body;
    ?>
    hello
    <?php
    echo $moreBody;
    ?>
    <?php  echo 'one'; ?>
    <?php  echo 'two';   ?>
    <?php echo 'three;' ?>
    <?php echo 'fourA'; echo 'fourB;'; ?>
    <?php  echo 'fiveA'; echo 'fiveB;';   ?>

    <?php
    ?>
    <?php ?>

    <?php

        echo $start - $indent + $end;

    ?>
    <?php

    echo $blankLines;

        ?>

    <?php
    echo $closerNeedsOwnLine; ?>
    <?php echo $openerNeedsOwnLine;
    ?>

            <?php
        echo 'hi';
            ?>

    <?php
echo 'hi';
    ?>
</body>
</html>
<?php
function test()
{
    foreach ($root->section as $section) {
        ?>
        <table>
            <?php if ($foo) {
            ?>
            <tr>
            </tr>
            <?php }
            ?>
        <?php
        foreach ($bar as $bar) {
            echo $bar;
        }
    }

    foreach ($root->section as $section) {
        ?>
        <table>
            <?php
            if ($foo) {
            ?>
            <tr>
            </tr>
            <?php
}
            ?>
        <?php
        foreach ($bar as $bar) {
            echo $bar;
        }
    }
}

echo 'goodbye';

function foo()
{

    ?><a onClick="Javascript: set_hidden_field('<?php echo $link_offset - $num_per_page; ?>'); set_hidden_field('process_form', '0'); submit_form(); return false;"><?php

}

?>

            <strong><?php
            echo 'foo';
            ?></strong>

?>

</html>

<?php if ($foo) { ?>
<?php } ?>

<?php echo 'okay'; // Something. ?>
<?php echo 'too much space before close'; // Something.      ?>
<?php echo 'no space before close'; // Something.?>

<?php /* translators: okay */ ?>
<?php /* translators: no space before close */?>
<?php /* translators: too much space before close */      ?>

<?php echo 'okay'; // phpcs:ignore Standard.Category.Sniff -- reason. ?>
<?php echo 'too much space before close'; // phpcs:ignore Standard.Category.Sniff -- reason.    ?>
<?php echo 'no space before close'; // phpcs:ignore Standard.Category.Sniff -- reason.?>

<!--
Make sure the empty tag set fixer removes the complete line, including indentation for an empty tag set and ensure
that the fixer does not remove too many tokens, like new lines tokens _before_ the affected line
or indentation if there is code _after_ the removed empty tag.
-->
        <div><?php ?></div>
    <?php ?><?php echo $i; ?>


        <?php ?>

    <?php if (true) { ?><?php echo $i; ?>  <?php ?>  <?php } ?>

        <div><?php
        ?></div>
    <?php
    ?><?php echo $i; ?>


    <?php
    ?>

    <?php if (true) { ?><?php echo $i; ?>  <?php
    ?>  <?php } ?>

<!--
Make sure the "content after opener" fixer does not leave trailing space behind.
-->
    <?php   echo $openerNeedsOwnLine;
    ?>

<!--
Make sure the "content before closer" fixer does not leave trailing space behind.
-->
    <?php
    echo $closerNeedsOwnLine;   ?>

<!--
Make sure the "content after closer" fixer does not leave trailing space behind.
-->
    <?php
    echo $closerNeedsOwnLine;
    ?>  </div>

    <?php
    echo $closerNeedsOwnLine;
    ?>  <?php echo $i; ?>

<!--
Make sure the fixer does not add stray new lines when there are consecutive PHP blocks.
-->
<?php
    // Do something.
    ?><?php
    echo 'embedded';
    ?>  <?php
        echo 'embedded';
    ?><?php
echo 'embedded';
    ?>

<!--
Safeguard closing tag indent calculation for when the last content on the close tag line is a scope closer.
-->
<?php if (true) { ?>
<?php
    } ?>

<!--
Safeguard that blank lines between a PHP tag and a scope closer are not touched as the scope closer may have its own rules.
-->
    <?php if ($foo) { ?>
    <tr></tr>
    <?php


}
    ?>

<!--
Safeguard correct content indent calculation.
-->
<?php
echo 'indent is correct - first on line for open tag is open tag';
?>

    <?php
    echo 'indent is correct - first on line for open tag is inline HTML without content';
    ?>
        <div><?php
        echo 'indent is correct - first on line for open tag is inline HTML with content';
    ?><?php
    echo 'indent is correct - first on line for open tag is whitespace';
?>

<?php
    echo 'indent is incorrect - first on line for open tag is open tag';
?>

    <?php
       echo 'indent is incorrect - first on line for open tag is inline HTML';
    ?>
        <div><?php
                       echo 'indent is correct - first on line for open tag is inline HTML with content';
    ?><?php
echo 'indent is incorrect - first on line for open tag is whitespace';
?>

<!--
Safeguard correct close tag indent calculation.
-->
    <?php
    /* Single line star comments are not problematic. */ ?>

    <?php
    /* Subsequent lines of inline slash-star comments
       contain the indent in the comment token.
       This means the calculated indent would be 0 unless we
       walk to the first line in the comment. */ ?>

<!--
Safeguard correct open tag indent calculation when the previous non-empty line contains a comment.
-->
    <?php
    /* Subsequent lines of inline slash-star comments
       contain the indent in the comment token. */ ?>
<?php
echo 'the PHP tag is correctly indented as an indent less than the previous code indent is accepted';

    /* Subsequent lines of inline slash-star comments
       contain the indent in the comment token. */ ?>
    <?php
    echo 'the PHP tag is correctly indented';

    /* Subsequent lines of inline slash-star comments
       contain the indent in the comment token. */ ?>
        <?php
        echo 'the PHP tag is correctly indented as a diff of 4 is accepted';

    /* Subsequent lines of inline slash-star comments
       contain the indent in the comment token. */ ?>
                <?php
                echo 'the PHP tag is incorrectly indented as the indent is more than 4 different from the indent of the previous code';
    ?>

<?php
// This test case file MUST always end with an unclosed long open PHP tag (with this comment) to prevent
// the tests running into the "last PHP closing tag excepted" condition breaking tests.
// Tests related to that "last PHP closing tag excepted" condition should go in separate files.
