--- /dev/null
+/*
+ * 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