mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-07 17:56:01 +02:00
Unit test for CPPVariableReadWriteFlags class.
This commit is contained in:
parent
8a58ba3dda
commit
104a413f12
2 changed files with 147 additions and 0 deletions
|
@ -56,6 +56,7 @@ public class DOMParserTestSuite extends TestCase {
|
||||||
suite.addTest(LanguageExtensionsTest.suite());
|
suite.addTest(LanguageExtensionsTest.suite());
|
||||||
suite.addTest(ASTInactiveCodeTests.suite());
|
suite.addTest(ASTInactiveCodeTests.suite());
|
||||||
suite.addTest(AccessControlTests.suite());
|
suite.addTest(AccessControlTests.suite());
|
||||||
|
suite.addTest(VariableReadWriteFlagsTest.suite());
|
||||||
return suite;
|
return suite;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,146 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2012 Google, Inc and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Sergey Prigogin (Google) - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.tests.ast2;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.ast.IASTName;
|
||||||
|
import org.eclipse.cdt.internal.core.dom.parser.c.CVariableReadWriteFlags;
|
||||||
|
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVariableReadWriteFlags;
|
||||||
|
import org.eclipse.cdt.internal.core.parser.ParserException;
|
||||||
|
import org.eclipse.cdt.internal.core.pdom.dom.PDOMName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit tests for CPPVariableReadWriteFlags and CVariableReadWriteFlags classes.
|
||||||
|
*/
|
||||||
|
public class VariableReadWriteFlagsTest extends AST2BaseTest {
|
||||||
|
private static final int READ = PDOMName.READ_ACCESS;
|
||||||
|
private static final int WRITE = PDOMName.WRITE_ACCESS;
|
||||||
|
|
||||||
|
protected class AssertionHelper extends BindingAssertionHelper {
|
||||||
|
AssertionHelper(String contents, boolean isCPP) throws ParserException {
|
||||||
|
super(contents, isCPP);
|
||||||
|
}
|
||||||
|
|
||||||
|
void assertReadWriteFlags(String section, int expectedFlags) throws Exception {
|
||||||
|
int len;
|
||||||
|
for (len = 0; len < section.length(); len++) {
|
||||||
|
if (!Character.isJavaIdentifierPart(section.charAt(len)))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
assertReadWriteFlags(section, len, expectedFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
void assertReadWriteFlags(String section, int len, int expectedFlags) throws Exception {
|
||||||
|
IASTName variable = findName(section, len);
|
||||||
|
assertNotNull(variable);
|
||||||
|
assertEquals(flagsToString(expectedFlags), flagsToString(getReadWriteFlags(variable)));
|
||||||
|
}
|
||||||
|
|
||||||
|
int getReadWriteFlags(IASTName variable) {
|
||||||
|
return isCPP ?
|
||||||
|
CPPVariableReadWriteFlags.getReadWriteFlags(variable) :
|
||||||
|
CVariableReadWriteFlags.getReadWriteFlags(variable);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String flagsToString(int flags) {
|
||||||
|
StringBuilder buf = new StringBuilder();
|
||||||
|
if ((flags & READ) != 0) {
|
||||||
|
buf.append("READ");
|
||||||
|
}
|
||||||
|
if ((flags & WRITE) != 0) {
|
||||||
|
if (buf.length() != 0)
|
||||||
|
buf.append(" | ");
|
||||||
|
buf.append("WRITE");
|
||||||
|
}
|
||||||
|
if (buf.length() == 0)
|
||||||
|
buf.append("0");
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public VariableReadWriteFlagsTest() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public VariableReadWriteFlagsTest(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TestSuite suite() {
|
||||||
|
return suite(VariableReadWriteFlagsTest.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected AssertionHelper getCAssertionHelper() throws ParserException, IOException {
|
||||||
|
String code= getAboveComment();
|
||||||
|
return new AssertionHelper(code, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected AssertionHelper getCPPAssertionHelper() throws ParserException, IOException {
|
||||||
|
String code= getAboveComment();
|
||||||
|
return new AssertionHelper(code, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// int test() {
|
||||||
|
// int a;
|
||||||
|
// a = 2;
|
||||||
|
// return a + 1;
|
||||||
|
// }
|
||||||
|
public void testSimpleAccess() throws Exception {
|
||||||
|
AssertionHelper a = getCPPAssertionHelper();
|
||||||
|
a.assertReadWriteFlags("a = 2", WRITE);
|
||||||
|
a.assertReadWriteFlags("a +", READ);
|
||||||
|
}
|
||||||
|
|
||||||
|
// int a = 1;
|
||||||
|
public void _testEqualsInitializer() throws Exception {
|
||||||
|
AssertionHelper a = getCPPAssertionHelper();
|
||||||
|
a.assertReadWriteFlags("a", WRITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// struct A { int x; };
|
||||||
|
//
|
||||||
|
// void test() {
|
||||||
|
// A a;
|
||||||
|
// a.x = 1;
|
||||||
|
// };
|
||||||
|
public void _testFieldAccess() throws Exception {
|
||||||
|
AssertionHelper a = getCPPAssertionHelper();
|
||||||
|
a.assertReadWriteFlags("a.", WRITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// struct A { int x; };
|
||||||
|
//
|
||||||
|
// void test(A* a) {
|
||||||
|
// a->x = 1;
|
||||||
|
// };
|
||||||
|
public void testFieldAccessWithDereference() throws Exception {
|
||||||
|
AssertionHelper a = getCPPAssertionHelper();
|
||||||
|
a.assertReadWriteFlags("a->", READ);
|
||||||
|
}
|
||||||
|
|
||||||
|
// struct A {
|
||||||
|
// void m1();
|
||||||
|
// void m2() const;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// void test() {
|
||||||
|
// A a;
|
||||||
|
// a.m1();
|
||||||
|
// a.m2();
|
||||||
|
// };
|
||||||
|
public void _testMethodCall() throws Exception {
|
||||||
|
AssertionHelper a = getCPPAssertionHelper();
|
||||||
|
a.assertReadWriteFlags("a.m1", READ | WRITE);
|
||||||
|
a.assertReadWriteFlags("a.m2", READ);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue