/************************************************************************************** * Copyright (c) Jonas Bon�r, Alexandre Vasseur. All rights reserved. * * http://aspectwerkz.codehaus.org * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the LGPL license * * a copy of which has been included with this distribution in the license.txt file. * **************************************************************************************/ package test.staticfield; import junit.framework.TestCase; import java.util.ArrayList; import java.util.Collection; /** * Test case for AW-92 for collection field altered * * @author <a href="mailto:alex@gnilux.com">Alexandre Vasseur </a> */ public class CollectionFieldTest extends TestCase { public static String s_log = ""; private static Collection s_field = new ArrayList(); private Collection m_field = new ArrayList(); //-- member field --// public void testCollectionFieldOutsideStaticContext() { s_log = ""; alterFieldOutsideStaticContext(); assertEquals("MyPreAdvice2 ", s_log); } public void testCollectionFieldInsideStaticContext() { s_log = ""; alterFieldInsideStaticContext(this); assertEquals("MyPreAdvice2 ", s_log); } public void testGetCollectionFieldOusideStaticContext() { s_log = ""; getFieldOutsideStaticContext(); assertEquals("MyPostAdvice2 MyPreAdvice2 ", s_log); } public void testGetCollectionFieldInsideStaticContext() { s_log = ""; getFieldInsideStaticContext(this); assertEquals("MyPostAdvice2 MyPreAdvice2 ", s_log); } //-- static field --// public void testStaticCollectionFieldOutsideStaticContext() { s_log = ""; alterStaticFieldOutsideStaticContext(); assertEquals("MyPreAdvice1 ", s_log); } public void testStaticCollectionFieldInsideStaticContext() { s_log = ""; alterStaticFieldInsideStaticContext(); assertEquals("MyPreAdvice1 ", s_log); } public void testGetStaticCollectionFieldInsideStaticContext() { s_log = ""; getStaticFieldInsideStaticContext(); assertEquals("MyPostAdvice1 MyPreAdvice1 ", s_log); } public void testGetStaticCollectionFieldOutsideStaticContext() { s_log = ""; getStaticFieldOutsideStaticContext(); assertEquals("MyPostAdvice1 MyPreAdvice1 ", s_log); } // -- methods for member collection field -- // public void alterFieldOutsideStaticContext() { m_field.clear(); } public static void alterFieldInsideStaticContext(CollectionFieldTest myself) { myself.m_field.clear(); } public void getFieldOutsideStaticContext() { Collection ref = m_field; m_field = new ArrayList(); } public static void getFieldInsideStaticContext(CollectionFieldTest myself) { Collection ref = myself.m_field; myself.m_field = new ArrayList(); } // -- method for static member collection -- // public void alterStaticFieldOutsideStaticContext() { s_field.clear(); } public static void alterStaticFieldInsideStaticContext() { s_field.clear(); } public void getStaticFieldOutsideStaticContext() { Collection ref = s_field; s_field = new ArrayList(); } public static void getStaticFieldInsideStaticContext() { Collection ref = s_field; s_field = new ArrayList(); } //-- check the bytecode created FYI. That's fun here. --// public void showComplexUsage() { int local = 0; while (m_field.remove(null)) { local++; } } //-- junit hooks --// public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public static junit.framework.Test suite() { return new junit.framework.TestSuite(CollectionFieldTest.class); } }