1/*
2 * Copyright (C) 2007-2010 Júlio Vilmar Gesser.
3 * Copyright (C) 2011, 2013-2016 The JavaParser Team.
4 *
5 * This file is part of JavaParser.
6 *
7 * JavaParser can be used either under the terms of
8 * a) the GNU Lesser General Public License as published by
9 *     the Free Software Foundation, either version 3 of the License, or
10 *     (at your option) any later version.
11 * b) the terms of the Apache License
12 *
13 * You should have received a copy of both licenses in LICENCE.LGPL and
14 * LICENCE.APACHE. Please refer to those files for details.
15 *
16 * JavaParser is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU Lesser General Public License for more details.
20 */
21
22package com.github.javaparser.printer;
23
24import com.github.javaparser.JavaParser;
25import com.github.javaparser.ast.Node;
26import com.github.javaparser.ast.expr.ClassExpr;
27import org.junit.Test;
28
29import static com.github.javaparser.utils.Utils.EOL;
30import static org.junit.Assert.assertEquals;
31
32public class ConcreteSyntaxModelTest {
33
34    private String print(Node node) {
35        return ConcreteSyntaxModel.genericPrettyPrint(node);
36    }
37
38    @Test
39    public void printSimpleClassExpr() {
40        ClassExpr expr = JavaParser.parseExpression("Foo.class");
41        assertEquals("Foo.class", print(expr));
42    }
43
44    @Test
45    public void printArrayClassExpr() {
46        ClassExpr expr = JavaParser.parseExpression("Foo[].class");
47        assertEquals("Foo[].class", print(expr));
48    }
49
50    @Test
51    public void printGenericClassExpr() {
52        ClassExpr expr = JavaParser.parseExpression("Foo<String>.class");
53        assertEquals("Foo<String>.class", print(expr));
54    }
55
56    @Test
57    public void printSimplestClass() {
58        Node node = JavaParser.parse("class A {}");
59        assertEquals("class A {" + EOL +
60                "}" + EOL, print(node));
61    }
62
63    @Test
64    public void printAClassWithField() {
65        Node node = JavaParser.parse("class A { int a; }");
66        assertEquals("class A {" + EOL
67                + EOL +
68                "    int a;" + EOL +
69                "}" + EOL, print(node));
70    }
71
72    @Test
73    public void printParameters() {
74        Node node = JavaParser.parseBodyDeclaration("int x(int y, int z) {}");
75        assertEquals("int x(int y, int z) {" + EOL + "}", print(node));
76    }
77
78    @Test
79    public void printReceiverParameter() {
80        Node node = JavaParser.parseBodyDeclaration("int x(X A.B.this, int y, int z) {}");
81        assertEquals("int x(X A.B.this, int y, int z) {" + EOL + "}", print(node));
82    }
83
84    @Test
85    public void printAnEmptyInterface() {
86        Node node = JavaParser.parse("interface A {}");
87        assertEquals("interface A {" + EOL +
88                "}" + EOL, print(node));
89    }
90
91    @Test
92    public void printAnEmptyInterfaceWithModifier() {
93        Node node = JavaParser.parse("public interface A {}");
94        assertEquals("public interface A {" + EOL +
95                "}" + EOL, print(node));
96    }
97}
98