160da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti/*
260da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * Copyright (C) 2007-2010 Júlio Vilmar Gesser.
360da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * Copyright (C) 2011, 2013-2016 The JavaParser Team.
460da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti *
560da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * This file is part of JavaParser.
660da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti *
760da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * JavaParser can be used either under the terms of
860da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * a) the GNU Lesser General Public License as published by
960da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti *     the Free Software Foundation, either version 3 of the License, or
1060da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti *     (at your option) any later version.
1160da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * b) the terms of the Apache License
1260da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti *
1360da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * You should have received a copy of both licenses in LICENCE.LGPL and
1460da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * LICENCE.APACHE. Please refer to those files for details.
1560da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti *
1660da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * JavaParser is distributed in the hope that it will be useful,
1760da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * but WITHOUT ANY WARRANTY; without even the implied warranty of
1860da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1960da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti * GNU Lesser General Public License for more details.
2060da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti */
2160da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti
2260da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassettipackage com.github.javaparser.ast.body;
2360da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti
2497d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassettiimport com.github.javaparser.ast.expr.Expression;
2597d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassettiimport com.github.javaparser.ast.expr.IntegerLiteralExpr;
2660da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassettiimport com.github.javaparser.ast.expr.SimpleName;
2760da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassettiimport org.junit.Test;
2860da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti
2900e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggenimport static org.junit.Assert.assertEquals;
3097d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassettiimport static org.junit.Assert.assertFalse;
3160da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassettiimport static org.junit.Assert.assertTrue;
3260da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti
3360da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassettipublic class AnnotationMemberDeclarationTest {
3460da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti
3560da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti    @Test
3660da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti    public void whenSettingNameTheParentOfNameIsAssigned() {
3700e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen        AnnotationMemberDeclaration decl = new AnnotationMemberDeclaration();
3860da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti        SimpleName name = new SimpleName("foo");
3900e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen        decl.setName(name);
4060da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti        assertTrue(name.getParentNode().isPresent());
4100e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen        assertTrue(decl == name.getParentNode().get());
4260da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti    }
4397d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti
4497d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti    @Test
4597d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti    public void removeDefaultValueWhenNoDefaultValueIsPresent() {
4600e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen        AnnotationMemberDeclaration decl = new AnnotationMemberDeclaration();
4797d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti        SimpleName name = new SimpleName("foo");
4800e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen        decl.setName(name);
4900e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen
5000e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen        decl.removeDefaultValue();
5100e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen
5200e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen        assertFalse(decl.getDefaultValue().isPresent());
5397d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti    }
5497d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti
5597d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti    @Test
5697d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti    public void removeDefaultValueWhenDefaultValueIsPresent() {
5700e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen        AnnotationMemberDeclaration decl = new AnnotationMemberDeclaration();
5897d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti        SimpleName name = new SimpleName("foo");
5900e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen        decl.setName(name);
6097d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti        Expression defaultValue = new IntegerLiteralExpr("2");
6100e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen        decl.setDefaultValue(defaultValue);
6200e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen
6300e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen        decl.removeDefaultValue();
6400e95181f47b51e4529b8cb3ad8cb310faa10b07Danny van Bruggen
6597d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti        assertFalse(defaultValue.getParentNode().isPresent());
6697d0f9f7adeddce0deba68a5db8a11f5b7b6ba0aFederico Tomassetti    }
6760da5f543f1ee17277d66b36c8ab33c98813c68dFederico Tomassetti}
68