Moved the code in the "tests" plugin (plural) to the "test" fragment (singular)....
[phpeclipse.git] / net.sourceforge.phpeclipse.test / src / net / sourceforge / phpdt / internal / formatter / CodeFormatterTest.java
diff --git a/net.sourceforge.phpeclipse.test/src/net/sourceforge/phpdt/internal/formatter/CodeFormatterTest.java b/net.sourceforge.phpeclipse.test/src/net/sourceforge/phpdt/internal/formatter/CodeFormatterTest.java
new file mode 100644 (file)
index 0000000..d3befec
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * Created on 28.04.2003
+ *
+ */
+package net.sourceforge.phpdt.internal.formatter;
+
+import java.util.Map;
+
+import junit.framework.TestCase;
+import net.sourceforge.phpdt.core.JavaCore;
+import net.sourceforge.phpdt.internal.corext.codemanipulation.StubUtility;
+import net.sourceforge.phpdt.internal.corext.util.Strings;
+import net.sourceforge.phpdt.internal.formatter.CodeFormatter;
+import net.sourceforge.phpdt.internal.ui.preferences.CodeFormatterPreferencePage;
+import net.sourceforge.phpeclipse.phpeditor.php.test.DummyDocument;
+
+import org.eclipse.jface.text.IDocument;
+
+/**
+ * Testcase for the PHP CodeFormatter
+ * 
+ * @author Stefan Langer
+ * @version $Revision: 1.7 $
+ */
+public class CodeFormatterTest extends TestCase {
+       private CodeFormatter fFormatter;
+
+       private IDocument fDocument;
+
+       private String fInitialIndentation;
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see junit.framework.TestCase#setUp()
+        */
+       protected void setUp() throws Exception {
+               Map options = JavaCore.getOptions();
+               fFormatter = new CodeFormatter(options);
+               fDocument = new DummyDocument();
+       }
+
+       public void testFormatter0() {
+               System.out.println("----- testFormatter0 -----");
+               String text = "<?php\nheader(\"Location: http://www.phpeclipse.de/eclipse/space/eclipse/faq/longlinetester\"); exit; ?>";
+               fDocument.set(text);
+               String lineDelimiter = StubUtility.getLineDelimiterFor(fDocument);
+               int indent = 0;
+               if (fInitialIndentation != null) {
+                       indent = Strings.computeIndent(fInitialIndentation,
+                                       CodeFormatterPreferencePage.getTabSize());
+               }
+               String formatedString = fFormatter.format(text, indent, null,
+                               lineDelimiter);
+               String testResult = "<?php"
+                               + lineDelimiter
+                               + "header(\"Location: http://www.phpeclipse.de/eclipse/space/eclipse/faq/longlinetester\");"
+                               + lineDelimiter + "exit;" + lineDelimiter + "?>";
+               junit.framework.Assert.assertEquals(formatedString, testResult);
+       }
+
+       public void testFormatter1() {
+               System.out.println("----- testFormatter1 -----");
+               String text = "<?php\n" + "function test()\n" + "{echo 'Test!';}\n"
+                               + "?>";
+               fDocument.set(text);
+               String lineDelimiter = StubUtility.getLineDelimiterFor(fDocument);
+               int indent = 0;
+               if (fInitialIndentation != null) {
+                       indent = Strings.computeIndent(fInitialIndentation,
+                                       CodeFormatterPreferencePage.getTabSize());
+               }
+               String formatedString = fFormatter.format(text, indent, null,
+                               lineDelimiter);
+               String testResult = "<?php" + lineDelimiter + "function test() {"
+                               + lineDelimiter + "\techo 'Test!';" + lineDelimiter + "}"
+                               + lineDelimiter + "?>";
+               junit.framework.Assert.assertEquals(formatedString, testResult);
+       }
+
+       public void testFormatter2() {
+               // bug 741752
+               System.out.println("----- testFormatter2 -----");
+               String text = "<?php\n" + "if ( ${ $feldname }== $modellvar) $i=0;\n"
+                               + "?>";
+               fDocument.set(text);
+               String lineDelimiter = StubUtility.getLineDelimiterFor(fDocument);
+               int indent = 0;
+               if (fInitialIndentation != null) {
+                       indent = Strings.computeIndent(fInitialIndentation,
+                                       CodeFormatterPreferencePage.getTabSize());
+               }
+               String formatedString = fFormatter.format(text, indent, null,
+                               lineDelimiter);
+               String testResult = "<?php" + lineDelimiter
+                               + "if (${ $feldname } == $modellvar)" + lineDelimiter
+                               + "\t$i = 0;" + lineDelimiter + "?>";
+               junit.framework.Assert.assertEquals(formatedString, testResult);
+       }
+
+       public void testFormatter3() {
+               System.out.println("----- testFormatter1 -----");
+               String text = "<?php\n \r\n \r\n" + "function test()\n"
+                               + "{echo 'Test!';}\n" + "?>";
+               fDocument.set(text);
+               String lineDelimiter = StubUtility.getLineDelimiterFor(fDocument);
+               int indent = 0;
+               if (fInitialIndentation != null) {
+                       indent = Strings.computeIndent(fInitialIndentation,
+                                       CodeFormatterPreferencePage.getTabSize());
+               }
+               String formatedString = fFormatter.format(text, indent, null,
+                               lineDelimiter);
+               String testResult = "<?php" + lineDelimiter + "function test() {"
+                               + lineDelimiter + "\techo 'Test!';" + lineDelimiter + "}"
+                               + lineDelimiter + "?>";
+               junit.framework.Assert.assertEquals(formatedString, testResult);
+       }
+
+       public void testArrayFormatting() throws Exception {
+               System.out.println("-----testArrayFormatting-----");
+               String text = "<?php\n"
+                               + "$my_array = array('first' => 'ok','snd' => 'right','3th' => 'super');\n"
+                               + "?>";
+               fDocument.set(text);
+               String lineDelimiter = StubUtility.getLineDelimiterFor(fDocument);
+               int indent = 0;
+               if (fInitialIndentation != null) {
+                       indent = Strings.computeIndent(fInitialIndentation,
+                                       CodeFormatterPreferencePage.getTabSize());
+               }
+               String formatedString = fFormatter.format(text, indent, null,
+                               lineDelimiter);
+               String testResult = "<?php" + lineDelimiter + "$my_array = array ("
+                               + lineDelimiter + "\t'first' => 'ok'," + lineDelimiter
+                               + "\t'snd' => 'right'," + lineDelimiter + "\t'3th' => 'super'"
+                               + lineDelimiter + ");" + lineDelimiter + "?>";
+               junit.framework.Assert.assertEquals(formatedString, testResult);
+       }
+
+       public void testDoubleArrayFormatting() throws Exception {
+               System.out.println("-----testDoubleArrayFormatting-----");
+               String text = "<?php\n"
+                               + "$my_array = array('first' => 'ok', 'snd' => array ('1' => '11','2' => '22'),'3th' => 'super');\n"
+                               + "?>";
+               fDocument.set(text);
+               String lineDelimiter = StubUtility.getLineDelimiterFor(fDocument);
+               int indent = 0;
+               if (fInitialIndentation != null) {
+                       indent = Strings.computeIndent(fInitialIndentation,
+                                       CodeFormatterPreferencePage.getTabSize());
+               }
+               String formatedString = fFormatter.format(text, indent, null,
+                               lineDelimiter);
+               String testResult = "<?php" + lineDelimiter + "$my_array = array ("
+                               + lineDelimiter + "\t'first' => 'ok'," + lineDelimiter
+                               + "\t'snd' => array (" + lineDelimiter + "\t\t'1' => '11',"
+                               + lineDelimiter + "\t\t'2' => '22'" + lineDelimiter + "\t),"
+                               + lineDelimiter + "\t'3th' => 'super'" + lineDelimiter + ");"
+                               + lineDelimiter + "?>";
+               junit.framework.Assert.assertEquals(formatedString, testResult);
+       }
+
+}
\ No newline at end of file