Title: [1475] trunk/qdox/src: Add Assignment + test

Diff

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/DefaultAnnotationTransformer.java (1474 => 1475)


--- trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/DefaultAnnotationTransformer.java	2011-12-30 20:44:35 UTC (rev 1474)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/DefaultAnnotationTransformer.java	2011-12-30 21:30:20 UTC (rev 1475)
@@ -31,6 +31,7 @@
 import com.thoughtworks.qdox.model._expression_.And;
 import com.thoughtworks.qdox.model._expression_.AnnotationValue;
 import com.thoughtworks.qdox.model._expression_.AnnotationValueList;
+import com.thoughtworks.qdox.model._expression_.Assignment;
 import com.thoughtworks.qdox.model._expression_.Cast;
 import com.thoughtworks.qdox.model._expression_.Constant;
 import com.thoughtworks.qdox.model._expression_.Divide;
@@ -411,8 +412,10 @@
 
     public AnnotationValue transform( AssignmentDef assignmentDef )
     {
-        
-        return null;
+        _expression_ leftHandSide = assignmentDef.getLetfHandSide().transform( this );
+        String operator = assignmentDef.getOperator();
+        _expression_ assignmentExpression = assignmentDef.getAssignmentExpression().transform( this );
+        return new Assignment( leftHandSide, operator, assignmentExpression );
     }
 
     public AnnotationValue transform( PreIncrementDef preIncrementDef )

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/EvaluatingVisitor.java (1474 => 1475)


--- trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/EvaluatingVisitor.java	2011-12-30 20:44:35 UTC (rev 1474)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/EvaluatingVisitor.java	2011-12-30 21:30:20 UTC (rev 1475)
@@ -31,6 +31,7 @@
 import com.thoughtworks.qdox.model._expression_.And;
 import com.thoughtworks.qdox.model._expression_.AnnotationValue;
 import com.thoughtworks.qdox.model._expression_.AnnotationValueList;
+import com.thoughtworks.qdox.model._expression_.Assignment;
 import com.thoughtworks.qdox.model._expression_.Cast;
 import com.thoughtworks.qdox.model._expression_.Constant;
 import com.thoughtworks.qdox.model._expression_.Divide;
@@ -971,4 +972,9 @@
     {
         throw new IllegalArgumentException( "Cannot evaluate '" + postIncrement + "'." );
     }
+
+    public Object visit( Assignment assignment )
+    {
+        throw new IllegalArgumentException( "Cannot evaluate '" + assignment + "'." );
+    }
 }
\ No newline at end of file

Added: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/Assignment.java (0 => 1475)


--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/Assignment.java	                        (rev 0)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/Assignment.java	2011-12-30 21:30:20 UTC (rev 1475)
@@ -0,0 +1,52 @@
+package com.thoughtworks.qdox.model._expression_;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+public class Assignment implements AnnotationValue
+{
+    private _expression_ leftHandSide;
+    private String operator;
+    private _expression_ assignmentExpression;
+
+    public Assignment( _expression_ leftHandSide, String operator, _expression_ assignmentExpression )
+    {
+        this.leftHandSide = leftHandSide;
+        this.operator = operator;
+        this.assignmentExpression = assignmentExpression;
+    }
+
+    /** {@inheritDoc} */
+    public Object accept( ExpressionVisitor visitor )
+    {
+        return visitor.visit( this );
+    }
+
+    /** {@inheritDoc} */
+    public Object getParameterValue()
+    {
+        return leftHandSide.getParameterValue() + " " + operator + ' ' + assignmentExpression.getParameterValue();
+    }
+
+    @Override
+    public String toString()
+    {
+        return leftHandSide.toString() + ' ' + operator+ ' ' + assignmentExpression.toString();
+    }
+}
\ No newline at end of file

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/ExpressionVisitor.java (1474 => 1475)


--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/ExpressionVisitor.java	2011-12-30 20:44:35 UTC (rev 1474)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/ExpressionVisitor.java	2011-12-30 21:30:20 UTC (rev 1475)
@@ -19,7 +19,6 @@
  * under the License.
  */
 
-
 import com.thoughtworks.qdox.model.JavaAnnotation;
 
 /**
@@ -99,4 +98,6 @@
 
     Object visit( PostIncrement postIncrement );
 
+    Object visit( Assignment assignment );
+
 }
\ No newline at end of file

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/parser/_expression_/TransformerDef.java (1474 => 1475)


--- trunk/qdox/src/main/java/com/thoughtworks/qdox/parser/_expression_/TransformerDef.java	2011-12-30 20:44:35 UTC (rev 1474)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/parser/_expression_/TransformerDef.java	2011-12-30 21:30:20 UTC (rev 1475)
@@ -1,10 +1,28 @@
 package com.thoughtworks.qdox.parser._expression_;
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
 import com.thoughtworks.qdox.parser.structs.AnnoDef;
 
 public interface TransformerDef<U>
 {
-
     U transform( AnnoDef annoDef );
 
     U transform( AddDef annotationAdd );

Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/JavaProjectBuilderTest.java (1474 => 1475)


--- trunk/qdox/src/test/java/com/thoughtworks/qdox/JavaProjectBuilderTest.java	2011-12-30 20:44:35 UTC (rev 1474)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/JavaProjectBuilderTest.java	2011-12-30 21:30:20 UTC (rev 1475)
@@ -1369,7 +1369,10 @@
                 " XOREQ ( a ^= b )," +
                 " OREQ  ( a |= b )" +
         		" }";
-        builder.addSource(new StringReader( source ));
+        JavaClass cls = builder.addSource(new StringReader( source )).getClassByName( "AssignmentOperators" );
+        JavaField xoreq = cls.getFieldByName( "XOREQ" );
+        assertEquals( 1, xoreq.getEnumConstantArguments().size() );
+        assertEquals( "a ^= b", xoreq.getEnumConstantArguments().get(0).getParameterValue() );
     }
     
     public void testIncrementAndDecrement() throws Exception

Added: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/_expression_/AssignmentTest.java (0 => 1475)


--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/_expression_/AssignmentTest.java	                        (rev 0)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/_expression_/AssignmentTest.java	2011-12-30 21:30:20 UTC (rev 1475)
@@ -0,0 +1,41 @@
+package com.thoughtworks.qdox.model._expression_;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.junit.Test;
+
+public class AssignmentTest
+{
+    @Test
+    public void testParameterValue()
+    {
+        _expression_ lhs = mock( _expression_.class );
+        _expression_ rhs = mock( _expression_.class );
+        when( lhs.getParameterValue() ).thenReturn( "2" );
+        when( rhs.getParameterValue() ).thenReturn( "3" );
+        Assignment expr = new Assignment( lhs, ">>>=", rhs );
+        assertEquals( "2 >>>= 3", expr.getParameterValue() );
+    }
+
+    @Test
+    public void testToString()
+    {
+        _expression_ lhs = mock( _expression_.class );
+        _expression_ rhs = mock( _expression_.class );
+        Assignment expr = new Assignment( lhs, "+=",rhs );
+        assertEquals( lhs + " += " + rhs, expr.toString() );
+    }
+    
+    @Test
+    public void testAccept()
+    {
+        ExpressionVisitor visitor = mock( ExpressionVisitor.class );
+        Assignment expr = new Assignment( null, null, null );
+        Object visitResult = new Object();
+        when( visitor.visit( expr ) ).thenReturn( visitResult );
+        assertSame( expr.accept( visitor ), visitResult );
+    }
+}
\ No newline at end of file

To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to