Added TestCase for PHP with Comment and
authormusk <musk>
Mon, 28 Apr 2003 20:04:54 +0000 (20:04 +0000)
committermusk <musk>
Mon, 28 Apr 2003 20:04:54 +0000 (20:04 +0000)
PHP, Comment and HTML

net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/test/PHPPartitionScannerTest.java

index 5813d6e..53e1d48 100644 (file)
@@ -13,7 +13,7 @@ import junit.framework.*;
 /**
  * Testcase for the PHPPartitionScanner
  * @author Stefan Langer
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
  */
 public class PHPPartitionScannerTest extends TestCase
 {
@@ -49,6 +49,337 @@ public class PHPPartitionScannerTest extends TestCase
         junit.framework.Assert.assertEquals(0, fScanner.getTokenOffset());
     }
 
+    public void testBrokenPHPPartition()
+    {
+        String text =
+            "<?php\n"
+                + "$test = \"<?php this is a dummy text ?>;\n"
+                + "function test()\n"
+                + "{echo 'Tes";
+        fDocument.set(text);
+        fScanner.setRange(fDocument, 0, fDocument.getLength());
+        IToken token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            IPHPPartitionScannerConstants.PHP,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            fDocument.getLength(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(0, fScanner.getTokenOffset());
+    }
+    
+    public void testPHP_PHPCOMMENT_HTML_Partition()
+    {
+        String php1 = "<? echo \"This is php with\"; ";
+        String phpcomment1 = "/** @param This is a comment ?> */";
+        String php2 = "echo \" short tags enabled!\"; ?>";
+        String html1 = "<html><head><title>";
+        String php3 =
+            "<? echo \"/** this is no comment */The ?> <?php Title\"?>";
+        String html2 = "</title></head><body>";
+        String php4 = "<? echo \"Some text ?>\"\n\r";
+        String phpcomment2 =
+            "/** This is another comment @param test @return test*/";
+        String php5 = " echo \" just to fill up another php partition\"?>";
+        String html3 = "<p>Copyright 2003 by PHPEclipse</body></html>";
+
+        fDocument.set(
+            php1
+                + phpcomment1
+                + php2
+                + html1
+                + php3
+                + html2
+                + php4
+                + phpcomment2
+                + php5
+                + html3);
+        fScanner.setRange(fDocument, 0, fDocument.getLength());
+        // php 1
+        IToken token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "PHP Partition 1 not recognized!",
+            IPHPPartitionScannerConstants.PHP,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of PHP Partition 1 not correct!",
+            php1.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of PHP Partition 1 not correct!",
+            0,
+            fScanner.getTokenOffset());
+        // comment1  
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "PHPComment Partition 1 not recognized!",
+            IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of PHPComment Partition 1 not correct!",
+            phpcomment1.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of PHPComment Partition 1 not correct!",
+            php1.length(),
+            fScanner.getTokenOffset());
+
+        // php 2
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "PHP Partition 2 not recognized!",
+            IPHPPartitionScannerConstants.PHP,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of PHP Partition 2 not correct!",
+            php2.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of PHP Partition 2 not correct!",
+            php1.length() + phpcomment1.length(),
+            fScanner.getTokenOffset());
+
+        // check html 1
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "HTML 1 not recognized!",
+            IPHPPartitionScannerConstants.HTML,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of HTML 1 not correct!",
+            html1.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of HTML 1 not correct!",
+            php1.length() + phpcomment1.length() + php2.length(),
+            fScanner.getTokenOffset());
+
+        //     php 3
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "PHP Partition 3 not recognized!",
+            IPHPPartitionScannerConstants.PHP,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of PHP Partition 3 not correct!",
+            php3.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of PHP Partition 3 not correct!",
+            php1.length()
+                + phpcomment1.length()
+                + php2.length()
+                + html1.length(),
+            fScanner.getTokenOffset());
+
+        //     check html 2
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "HTML 2 not recognized!",
+            IPHPPartitionScannerConstants.HTML,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of HTML 2 not correct!",
+            html2.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of HTML 2 not correct!",
+            php1.length()
+                + phpcomment1.length()
+                + php2.length()
+                + html1.length()
+                + php3.length(),
+            fScanner.getTokenOffset());
+
+        //     php 4
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "PHP Partition 4 not recognized!",
+            IPHPPartitionScannerConstants.PHP,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of PHP Partition 4 not correct!",
+            php4.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of PHP Partition 4 not correct!",
+            php1.length()
+                + phpcomment1.length()
+                + php2.length()
+                + html1.length()
+                + php3.length()
+                + html2.length(),
+            fScanner.getTokenOffset());
+
+        //     check comment 2
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "PHP Multilinecomment 2 not recognized!",
+            IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of PHP Multilinecomment 2  not correct!",
+            phpcomment2.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of PHP Multilinecomment 2  not correct!",
+            php1.length()
+                + phpcomment1.length()
+                + php2.length()
+                + html1.length()
+                + php3.length()
+                + html2.length()
+                + php4.length(),
+            fScanner.getTokenOffset());
+
+        //     php 5
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "PHP Partition 5 not recognized!",
+            IPHPPartitionScannerConstants.PHP,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of PHP Partition 5 not correct!",
+            php5.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of PHP Partition 5 not correct!",
+            php1.length()
+                + phpcomment1.length()
+                + php2.length()
+                + html1.length()
+                + php3.length()
+                + html2.length()
+                + php4.length()
+                + phpcomment2.length(),
+            fScanner.getTokenOffset());
+        //     check html 3
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "HTML 3 not recognized!",
+            IPHPPartitionScannerConstants.HTML,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of HTML 3 not correct!",
+            html3.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of HTML 3 not correct!",
+            php1.length()
+                + phpcomment1.length()
+                + php2.length()
+                + html1.length()
+                + php3.length()
+                + html2.length()
+                + php4.length()
+                + phpcomment2.length()
+                + php5.length(),
+            fScanner.getTokenOffset());
+
+    }
+
+    public void testPHP_HTML_Partition()
+    {
+        String php1 = "<? echo \"This is php with short tags enabled!\"; ?>";
+        String html1 = "<html><head><title>";
+        String php2 = "<? echo \"The ?> <?php Title\"?>";
+        String html2 = "</title></head><body>";
+        String php3 =
+            "<? echo \"Some text ?> just to fill up another php partition\"?>";
+        String html3 = "<p>Copyright 2003 by PHPEclipse</body></html>";
+
+        fDocument.set(php1 + html1 + php2 + html2 + php3 + html3);
+        fScanner.setRange(fDocument, 0, fDocument.getLength());
+        // php 1
+        IToken token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "PHP Partition 1 not recognized!",
+            IPHPPartitionScannerConstants.PHP,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of PHP Partition 1 not correct!",
+            php1.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of PHP Partition 1 not correct!",
+            0,
+            fScanner.getTokenOffset());
+        // check html 1
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "HTML 1 not recognized!",
+            IPHPPartitionScannerConstants.HTML,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of HTML 1 not correct!",
+            html1.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of HTML 1 not correct!",
+            php1.length(),
+            fScanner.getTokenOffset());
+        //     php 2
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "PHP Partition 2 not recognized!",
+            IPHPPartitionScannerConstants.PHP,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of PHP Partition 2 not correct!",
+            php2.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of PHP Partition 2 not correct!",
+            html1.length() + php1.length(),
+            fScanner.getTokenOffset());
+        //     check html 2
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "HTML 2 not recognized!",
+            IPHPPartitionScannerConstants.HTML,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of HTML 2 not correct!",
+            html2.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of HTML 2 not correct!",
+            php1.length() + html1.length() + php2.length(),
+            fScanner.getTokenOffset());
+        //     php 3
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "PHP Partition 3 not recognized!",
+            IPHPPartitionScannerConstants.PHP,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of PHP Partition 3 not correct!",
+            php3.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of PHP Partition 3 not correct!",
+            html2.length() + php2.length() + html1.length() + php1.length(),
+            fScanner.getTokenOffset());
+        //     check html 3
+        token = fScanner.nextToken();
+        junit.framework.Assert.assertEquals(
+            "HTML 3 not recognized!",
+            IPHPPartitionScannerConstants.HTML,
+            (String) token.getData());
+        junit.framework.Assert.assertEquals(
+            "Length of HTML 3 not correct!",
+            html3.length(),
+            fScanner.getTokenLength());
+        junit.framework.Assert.assertEquals(
+            "Offset of HTML 3 not correct!",
+            php1.length()
+                + html1.length()
+                + php2.length()
+                + html2.length()
+                + php3.length(),
+            fScanner.getTokenOffset());
+    }
+
     public void testHTMLPartition()
     {
         String text =
@@ -68,15 +399,15 @@ public class PHPPartitionScannerTest extends TestCase
 
     public void testPHPMultiLineCommentPartition()
     {
-        String text = "<?php $test=\"Some data\";";
+        String text = "<?php $test=\"Some <?php ?> /** */ data\";";
         String text2 =
-            "/** A comment with some data \n"
+            "/** A comment with <?php This is acutally not a php partition ?> some data \n"
                 + " * @param test A test parameter \n"
                 + " */";
         String text3 =
             "\nfunction test($test)\n"
                 + "{\n"
-                + "    echo \"Test <?php ?>\";\n"
+                + "    echo \"Test <?php /** This is not a comment */function alsoItLooksLikeOne(){echo \"It is actually not a comment\";} ?>\";\n"
                 + "}?>";
         fDocument.set(text + text2 + text3);
         fScanner.setRange(fDocument, 0, fDocument.getLength());