/** @deprecated using deprecated code */
  public void testCharacterLiteral() throws Exception {
    IPackageFragment pack1 = this.sourceFolder.createPackageFragment("test1", false, null);
    StringBuffer buf = new StringBuffer();
    buf.append("    function foo() {\n");
    buf.append("        return 'x';\n");
    buf.append("    }\n");
    IJavaScriptUnit cu = pack1.createCompilationUnit("E.js", buf.toString(), false, null);

    JavaScriptUnit astRoot = createAST(cu);
    ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());

    assertTrue("Parse errors", (astRoot.getFlags() & ASTNode.MALFORMED) == 0);
    //		TypeDeclaration type= findTypeDeclaration(astRoot, "E");

    FunctionDeclaration methodDecl = findMethodDeclaration(astRoot, "foo");
    Block block = methodDecl.getBody();
    List statements = block.statements();
    assertTrue("Number of statements not 1", statements.size() == 1);
    { // replace number
      ReturnStatement returnStatement = (ReturnStatement) statements.get(0);

      StringLiteral literal = (StringLiteral) returnStatement.getExpression();
      rewrite.set(literal, StringLiteral.ESCAPED_VALUE_PROPERTY, "'y'", null);
    }

    String preview = evaluateRewrite(cu, rewrite);

    buf = new StringBuffer();
    buf.append("    function foo() {\n");
    buf.append("        return 'y';\n");
    buf.append("    }\n");
    assertEqualString(preview, buf.toString());
  }
  /** @deprecated using deprecated code */
  public void testSimpleName() throws Exception {
    IPackageFragment pack1 = this.sourceFolder.createPackageFragment("test1", false, null);
    StringBuffer buf = new StringBuffer();
    buf.append("    function foo(hello) {\n");
    buf.append("        return hello;\n");
    buf.append("    }\n");
    IJavaScriptUnit cu = pack1.createCompilationUnit("E.js", buf.toString(), false, null);

    JavaScriptUnit astRoot = createAST(cu);
    ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());

    assertTrue("Parse errors", (astRoot.getFlags() & ASTNode.MALFORMED) == 0);
    //		TypeDeclaration type= findTypeDeclaration(astRoot, "E");

    FunctionDeclaration methodDecl = findMethodDeclaration(astRoot, "foo");
    Block block = methodDecl.getBody();
    List statements = block.statements();
    assertTrue("Number of statements not 1", statements.size() == 1);
    { // replace identifier
      ReturnStatement returnStatement = (ReturnStatement) statements.get(0);

      SimpleName simpleName = (SimpleName) returnStatement.getExpression();
      rewrite.set(simpleName, SimpleName.IDENTIFIER_PROPERTY, "changed", null);
    }

    String preview = evaluateRewrite(cu, rewrite);

    buf = new StringBuffer();
    buf.append("    function foo(hello) {\n");
    buf.append("        return changed;\n");
    buf.append("    }\n");
    assertEqualString(preview, buf.toString());
  }
 /*
  * @see ASTVisitor#visit(ReturnStatement)
  */
 public boolean visit(ReturnStatement node) {
   this.fBuffer.append("return"); // $NON-NLS-1$
   if (node.getExpression() != null) {
     this.fBuffer.append(" "); // $NON-NLS-1$
     node.getExpression().accept(this);
   }
   this.fBuffer.append(";"); // $NON-NLS-1$
   return false;
 }
  // TODO fix
  public void XtestThisExpression() throws Exception {
    IPackageFragment pack1 = this.sourceFolder.createPackageFragment("test1", false, null);
    StringBuffer buf = new StringBuffer();
    buf.append("function foo() {\n");
    buf.append("    return this;\n");
    buf.append("    return Outer.this;\n");
    buf.append("}\n");
    IJavaScriptUnit cu = pack1.createCompilationUnit("E.js", buf.toString(), false, null);

    JavaScriptUnit astRoot = createAST(cu);
    ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST());

    AST ast = astRoot.getAST();

    assertTrue("Parse errors", (astRoot.getFlags() & ASTNode.MALFORMED) == 0);

    FunctionDeclaration methodDecl = findMethodDeclaration(astRoot, "foo");
    Block block = methodDecl.getBody();
    List statements = block.statements();
    assertTrue("Number of statements not 2", statements.size() == 2);
    { // add qualifier
      ReturnStatement returnStatement = (ReturnStatement) statements.get(0);

      ThisExpression thisExpression = (ThisExpression) returnStatement.getExpression();

      SimpleName newExpression = ast.newSimpleName("X");
      rewrite.set(thisExpression, ThisExpression.QUALIFIER_PROPERTY, newExpression, null);
    }
    { // remove qualifier
      ReturnStatement returnStatement = (ReturnStatement) statements.get(1);

      ThisExpression thisExpression = (ThisExpression) returnStatement.getExpression();

      rewrite.remove(thisExpression.getQualifier(), null);
    }

    String preview = evaluateRewrite(cu, rewrite);

    buf = new StringBuffer();
    buf.append("    function foo() {\n");
    buf.append("        return X.this;\n");
    buf.append("        return this;\n");
    buf.append("    }\n");
    assertEqualString(preview, buf.toString());
  }