diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2018-03-04 08:21:35 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2018-03-04 08:21:35 +0000 |
commit | b4c1397d5df9370f6358d4f8e9efd27e0f67dec1 (patch) | |
tree | 6789ec288d344cf5fd5d057bcf1efc9545b1af28 /javaparser-testing/src/test/java/com/github/javaparser/bdd/steps/VisitorSteps.java | |
parent | 92d661a1d239131fb5c1e019a8f2ac7584d2d3f6 (diff) | |
parent | 1afe9e0652b9b53edade5aa276162abe27b32a67 (diff) | |
download | javaparser-pie-platform-release.tar.gz |
Snap for 4632767 from 1afe9e0652b9b53edade5aa276162abe27b32a67 to pi-releaseandroid-wear-9.0.0_r9android-wear-9.0.0_r8android-wear-9.0.0_r7android-wear-9.0.0_r6android-wear-9.0.0_r5android-wear-9.0.0_r4android-wear-9.0.0_r34android-wear-9.0.0_r33android-wear-9.0.0_r32android-wear-9.0.0_r31android-wear-9.0.0_r30android-wear-9.0.0_r3android-wear-9.0.0_r29android-wear-9.0.0_r28android-wear-9.0.0_r27android-wear-9.0.0_r26android-wear-9.0.0_r25android-wear-9.0.0_r24android-wear-9.0.0_r23android-wear-9.0.0_r22android-wear-9.0.0_r21android-wear-9.0.0_r20android-wear-9.0.0_r2android-wear-9.0.0_r19android-wear-9.0.0_r18android-wear-9.0.0_r17android-wear-9.0.0_r16android-wear-9.0.0_r15android-wear-9.0.0_r14android-wear-9.0.0_r13android-wear-9.0.0_r12android-wear-9.0.0_r11android-wear-9.0.0_r10android-wear-9.0.0_r1android-vts-9.0_r9android-vts-9.0_r8android-vts-9.0_r7android-vts-9.0_r6android-vts-9.0_r5android-vts-9.0_r4android-vts-9.0_r19android-vts-9.0_r18android-vts-9.0_r17android-vts-9.0_r16android-vts-9.0_r15android-vts-9.0_r14android-vts-9.0_r13android-vts-9.0_r12android-vts-9.0_r11android-vts-9.0_r10android-security-9.0.0_r76android-security-9.0.0_r75android-security-9.0.0_r74android-security-9.0.0_r73android-security-9.0.0_r72android-security-9.0.0_r71android-security-9.0.0_r70android-security-9.0.0_r69android-security-9.0.0_r68android-security-9.0.0_r67android-security-9.0.0_r66android-security-9.0.0_r65android-security-9.0.0_r64android-security-9.0.0_r63android-security-9.0.0_r62android-cts-9.0_r9android-cts-9.0_r8android-cts-9.0_r7android-cts-9.0_r6android-cts-9.0_r5android-cts-9.0_r4android-cts-9.0_r3android-cts-9.0_r20android-cts-9.0_r2android-cts-9.0_r19android-cts-9.0_r18android-cts-9.0_r17android-cts-9.0_r16android-cts-9.0_r15android-cts-9.0_r14android-cts-9.0_r13android-cts-9.0_r12android-cts-9.0_r11android-cts-9.0_r10android-cts-9.0_r1android-9.0.0_r9android-9.0.0_r8android-9.0.0_r7android-9.0.0_r61android-9.0.0_r60android-9.0.0_r6android-9.0.0_r59android-9.0.0_r58android-9.0.0_r57android-9.0.0_r56android-9.0.0_r55android-9.0.0_r54android-9.0.0_r53android-9.0.0_r52android-9.0.0_r51android-9.0.0_r50android-9.0.0_r5android-9.0.0_r49android-9.0.0_r48android-9.0.0_r3android-9.0.0_r2android-9.0.0_r18android-9.0.0_r17android-9.0.0_r10android-9.0.0_r1security-pi-releasepie-vts-releasepie-security-releasepie-s2-releasepie-release-2pie-releasepie-r2-s2-releasepie-r2-s1-releasepie-r2-releasepie-platform-releasepie-gsipie-cuttlefish-testingpie-cts-release
Change-Id: Ibe65883e94ed5a7272dff3f100393987a1cf3da2
Diffstat (limited to 'javaparser-testing/src/test/java/com/github/javaparser/bdd/steps/VisitorSteps.java')
-rw-r--r-- | javaparser-testing/src/test/java/com/github/javaparser/bdd/steps/VisitorSteps.java | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/javaparser-testing/src/test/java/com/github/javaparser/bdd/steps/VisitorSteps.java b/javaparser-testing/src/test/java/com/github/javaparser/bdd/steps/VisitorSteps.java new file mode 100644 index 000000000..ba20eaf16 --- /dev/null +++ b/javaparser-testing/src/test/java/com/github/javaparser/bdd/steps/VisitorSteps.java @@ -0,0 +1,171 @@ +/* + * Copyright (C) 2007-2010 JĂșlio Vilmar Gesser. + * Copyright (C) 2011, 2013-2016 The JavaParser Team. + * + * This file is part of JavaParser. + * + * JavaParser can be used either under the terms of + * a) the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * b) the terms of the Apache License + * + * You should have received a copy of both licenses in LICENCE.LGPL and + * LICENCE.APACHE. Please refer to those files for details. + * + * JavaParser is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + */ + +package com.github.javaparser.bdd.steps; + +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.body.Parameter; +import com.github.javaparser.ast.body.VariableDeclarator; +import com.github.javaparser.ast.visitor.CloneVisitor; +import com.github.javaparser.ast.visitor.GenericListVisitorAdapter; +import com.github.javaparser.ast.visitor.GenericVisitorAdapter; +import com.github.javaparser.ast.visitor.VoidVisitorAdapter; +import com.github.javaparser.bdd.visitors.PositionTestVisitor; +import org.jbehave.core.annotations.Given; +import org.jbehave.core.annotations.Then; +import org.jbehave.core.annotations.When; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; + +public class VisitorSteps { + + /* Fields used to maintain step state within this step class */ + private VoidVisitorAdapter<AtomicReference<String>> toUpperCaseVariableNameVisitor; + private VoidVisitorAdapter<AtomicReference<String>> collectVariableNameVisitor; + private PositionTestVisitor positionTestVisitor; + private GenericVisitorAdapter<String, Void> nameReturningVisitor; + private GenericListVisitorAdapter<String, Void> allNameReturningVisitor; + private AtomicReference<String> collectedVariableName; + private String returnedVariableName; + private List<String> returnedVariableNames; + + /* Map that maintains shares state across step classes. If manipulating the objects in the map you must update the state */ + private Map<String, Object> state; + + public VisitorSteps(Map<String, Object> state) { + this.state = state; + } + + @Given("a VoidVisitorAdapter with a visit method that changes variable names to uppercase") + public void givenAVoidVisitorAdapterWithAVisitMethodThatChangesVariableNamesToUppercase() { + toUpperCaseVariableNameVisitor = new VoidVisitorAdapter<AtomicReference<String>>() { + @Override + public void visit(VariableDeclarator n, AtomicReference<String> arg) { + n.setName(n.getNameAsString().toUpperCase()); + } + }; + } + + @Given("a VoidVisitorAdapter with a visit method and collects the variable names") + public void givenAVoidVisitorAdapterWithAVisitMethodThatCollectsTheVariableName() { + collectVariableNameVisitor = new VoidVisitorAdapter<AtomicReference<String>>() { + @Override + public void visit(VariableDeclarator n, AtomicReference<String> arg) { + arg.set(arg.get() + n.getName() + ";"); + } + + @Override + public void visit(Parameter n, AtomicReference<String> arg) { + arg.set(arg.get() + n.getName() + ";"); + } + }; + } + + @Given("a GenericVisitorAdapter with a visit method that returns variable names") + public void givenAGenericVisitorAdapterWithAVisitMethodThatReturnsVariableNames() { + nameReturningVisitor = new GenericVisitorAdapter<String, Void>() { + @Override + public String visit(VariableDeclarator n, Void arg) { + return n.getNameAsString(); + } + }; + } + + @Given("a GenericListVisitorAdapter with a visit method that returns all variable names") + public void givenAGenericListVisitorAdapterWithAVisitMethodThatReturnsAllVariableNames() { + allNameReturningVisitor = new GenericListVisitorAdapter<String, Void>() { + @Override + public List<String> visit(VariableDeclarator n, Void arg) { + return Collections.singletonList(n.getNameAsString()); + } + }; + } + + @Given("a VoidVisitorAdapter with a visit method that asserts sensible line positions") + public void givenAVoidVisitorAdapterWithAVisitMethodThatAssertsSensibleLinePositions() { + positionTestVisitor = new PositionTestVisitor(); + } + + @When("the CompilationUnit is cloned to the second CompilationUnit") + public void whenTheSecondCompilationUnitIsCloned() { + CompilationUnit compilationUnit = (CompilationUnit) state.get("cu1"); + CompilationUnit compilationUnit2 = (CompilationUnit) compilationUnit.accept(new CloneVisitor(), null); + state.put("cu2", compilationUnit2); + } + + @When("the CompilationUnit is visited by the to uppercase visitor") + public void whenTheCompilationUnitIsVisitedByTheVistor() { + CompilationUnit compilationUnit = (CompilationUnit) state.get("cu1"); + toUpperCaseVariableNameVisitor.visit(compilationUnit, null); + state.put("cu1", compilationUnit); + } + + @When("the CompilationUnit is visited by the variable name collector visitor") + public void whenTheCompilationUnitIsVisitedByTheVariableNameCollectorVisitor() { + CompilationUnit compilationUnit = (CompilationUnit) state.get("cu1"); + collectedVariableName = new AtomicReference<>(""); + collectVariableNameVisitor.visit(compilationUnit, collectedVariableName); + } + + @When("the CompilationUnit is visited by the visitor that returns variable names") + public void whenTheCompilationUnitIsVisitedByTheVisitorThatReturnsVariableNames() { + CompilationUnit compilationUnit = (CompilationUnit) state.get("cu1"); + returnedVariableName = nameReturningVisitor.visit(compilationUnit, null); + } + + @When("the CompilationUnit is visited by the visitor that returns all variable names") + public void whenTheCompilationUnitIsVisitedByTheVisitorThatReturnsAllVariableNames() { + CompilationUnit compilationUnit = (CompilationUnit) state.get("cu1"); + returnedVariableNames = allNameReturningVisitor.visit(compilationUnit, null); + } + + @When("the CompilationUnit is visited by the PositionTestVisitor") + public void whenTheCompilationUnitIsVisitedByThePositionTestVisitor() { + CompilationUnit compilationUnit = (CompilationUnit) state.get("cu1"); + compilationUnit.accept(positionTestVisitor, null); + } + + @Then("the collected variable name is \"$nameUnderTest\"") + public void thenTheCollectedVariableNameIs(String nameUnderTest) { + assertThat(collectedVariableName.get(), is(nameUnderTest)); + } + + @Then("the return variable name is \"$nameUnderTest\"") + public void thenTheReturnVariableNameIs(String nameUnderTest) { + assertThat(returnedVariableName, is(nameUnderTest)); + } + + @Then("the first return variable name is \"$nameUnderTest\"") + public void thenTheFirstReturnVariableNameIs(String nameUnderTest) { + assertThat(returnedVariableNames.get(0), is(nameUnderTest)); + } + + @Then("the total number of nodes visited is $expectedCount") + public void thenTheTotalNumberOfNodesVisitedIs(int expectedCount) { + assertThat(positionTestVisitor.getNumberOfNodesVisited(), is(expectedCount)); + } +} |