/cpp/src/test/java/com/google/test/metric/cpp/CppClassRepositoryTest.java
http://testability-explorer.googlecode.com/ · Java · 146 lines · 119 code · 12 blank · 15 comment · 0 complexity · 7f627b8b6937beb64785f865f77659ba MD5 · raw file
- /*
- * Copyright 2008 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
- package com.google.test.metric.cpp;
- import com.google.test.metric.ClassInfo;
- import com.google.test.metric.LocalVariableInfo;
- import com.google.test.metric.MethodInfo;
- import com.google.test.metric.Visibility;
- import com.google.test.metric.method.op.turing.FieldAssignment;
- import com.google.test.metric.method.op.turing.LocalAssignment;
- import com.google.test.metric.method.op.turing.Operation;
- import com.google.test.metric.method.op.turing.ReturnOperation;
- import junit.framework.TestCase;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- public class CppClassRepositoryTest extends TestCase {
- public void testSimpleClass() throws Exception {
- CppClassRepository repository = new CppClassRepository();
- repository.parse("class A{};");
- ClassInfo classInfo = repository.getClass("A");
- assertNotNull(classInfo);
- assertFalse(classInfo.isInterface());
- assertTrue(classInfo.getMethods().isEmpty());
- }
- public void testRepositoryAddClass() throws Exception {
- CppClassRepository repository = new CppClassRepository();
- ClassInfo classInfo = new ClassInfo("A", false, null,
- new ArrayList<ClassInfo>(), null);
- repository.addClass(classInfo);
- assertNotNull(repository.getClass("A"));
- }
- public void testClassWithMethod() throws Exception {
- CppClassRepository repository = new CppClassRepository();
- repository.parse("class A{ void foo() {} };");
- ClassInfo classInfo = repository.getClass("A");
- assertNotNull(classInfo);
- assertFalse(classInfo.isInterface());
- assertEquals(1, classInfo.getMethods().size());
- Iterator<MethodInfo> it = classInfo.getMethods().iterator();
- MethodInfo methodInfo = it.next();
- assertEquals("foo", methodInfo.getName());
- assertEquals(Visibility.PRIVATE, methodInfo.getVisibility());
- }
- public void testClassWithMethodWithParameters() throws Exception {
- CppClassRepository repository = new CppClassRepository();
- repository.parse("class A{ public: void foo(int a, int b) {} };");
- ClassInfo classInfo = repository.getClass("A");
- assertNotNull(classInfo);
- assertFalse(classInfo.isInterface());
- assertEquals(1, classInfo.getMethods().size());
- Iterator<MethodInfo> it = classInfo.getMethods().iterator();
- MethodInfo methodInfo = it.next();
- assertEquals("foo", methodInfo.getName());
- assertEquals(2, methodInfo.getParameters().size());
- assertEquals(Visibility.PUBLIC, methodInfo.getVisibility());
- }
- public void testMethodWithLocalVariables() throws Exception {
- CppClassRepository repository = new CppClassRepository();
- repository.parse("class A{ protected: void foo() { int a; int b; } };");
- ClassInfo classInfo = repository.getClass("A");
- assertNotNull(classInfo);
- assertFalse(classInfo.isInterface());
- assertEquals(1, classInfo.getMethods().size());
- Iterator<MethodInfo> it = classInfo.getMethods().iterator();
- MethodInfo methodInfo = it.next();
- assertEquals("foo", methodInfo.getName());
- List<LocalVariableInfo> localVariables = methodInfo.getLocalVariables();
- assertEquals(2, localVariables.size());
- LocalVariableInfo variableA = localVariables.get(0);
- assertEquals("a", variableA.getName());
- LocalVariableInfo variableB = localVariables.get(1);
- assertEquals("b", variableB.getName());
- assertEquals(Visibility.PROTECTED, methodInfo.getVisibility());
- }
- public void testMethodReturnOperation() throws Exception {
- CppClassRepository repository = new CppClassRepository();
- repository.parse("class A{ protected: void foo() { return; } };");
- ClassInfo classInfo = repository.getClass("A");
- assertNotNull(classInfo);
- Iterator<MethodInfo> it = classInfo.getMethods().iterator();
- MethodInfo methodInfo = it.next();
- List<Operation> operations = methodInfo.getOperations();
- assertEquals(1, operations.size());
- Operation operation = operations.get(0);
- assertTrue(operation instanceof ReturnOperation);
- ReturnOperation returnOperation = (ReturnOperation) operation;
- assertEquals(1, returnOperation.getLineNumber());
- }
- public void testLocalAssignmentOperation() throws Exception {
- CppClassRepository repository = new CppClassRepository();
- repository.parse("class A{ protected: void foo() { int a = 0; int b = 1; b = a; } };");
- ClassInfo classInfo = repository.getClass("A");
- assertNotNull(classInfo);
- Iterator<MethodInfo> it = classInfo.getMethods().iterator();
- MethodInfo methodInfo = it.next();
- List<Operation> operations = methodInfo.getOperations();
- assertEquals(1, operations.size());
- Operation operation = operations.get(0);
- assertTrue(operation instanceof LocalAssignment);
- LocalAssignment localAssignment = (LocalAssignment) operation;
- assertEquals(1, localAssignment.getLineNumber());
- assertEquals("b", localAssignment.getVariable().getName());
- assertEquals("a", localAssignment.getValue().getName());
- }
- public void testFieldAssignmentOperation() throws Exception {
- CppClassRepository repository = new CppClassRepository();
- repository.parse("class A{ void foo() { int b = 1; a = b; } int a; };");
- ClassInfo classInfo = repository.getClass("A");
- assertNotNull(classInfo);
- Iterator<MethodInfo> it = classInfo.getMethods().iterator();
- MethodInfo methodInfo = it.next();
- List<Operation> operations = methodInfo.getOperations();
- assertEquals(1, operations.size());
- Operation operation = operations.get(0);
- assertTrue(operation instanceof FieldAssignment);
- FieldAssignment fieldAssignment = (FieldAssignment) operation;
- assertEquals(1, fieldAssignment.getLineNumber());
- assertEquals("a", fieldAssignment.getFieldInstance().getName());
- assertEquals("b", fieldAssignment.getValue().getName());
- }
- }