/* * Copyright 2007 Alin Dreghiciu. All Rights Reserved. * * 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 org.qi4j.library.beans.properties; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import org.qi4j.api.composite.Composite; import org.qi4j.api.composite.TransientBuilder; import org.qi4j.api.composite.TransientComposite; import org.qi4j.api.mixin.Mixins; import org.qi4j.bootstrap.AssemblyException; import org.qi4j.bootstrap.ModuleAssembly; import org.qi4j.test.AbstractQi4jTest; import java.util.Iterator; public class PropertiesMixinTest extends AbstractQi4jTest { private SampleJavaBean m_proxy; public void assemble( ModuleAssembly aModule ) throws AssemblyException { aModule.addTransients( SampleJavaBeanComposite.class ); } @Override @Before public void setUp() throws Exception { super.setUp(); TransientBuilder<SampleJavaBeanComposite> builder = transientBuilderFactory.newTransientBuilder( SampleJavaBeanComposite.class ); m_proxy = builder.newInstance(); } @Test public void setAndGetFoo() { m_proxy.setFoo( "aValue" ); assertEquals( "aValue", m_proxy.getFoo() ); } @Test public void setAndGet() { m_proxy.set( "aValue" ); assertEquals( "aValue", m_proxy.get() ); } @Test public void getFooWithoutSetFoo() { assertEquals( null, m_proxy.getFoo() ); } @Test public void iterateBarAfterAddBar() { m_proxy.addBar( "aValue" ); Iterator<String> iterator = m_proxy.barIterator(); assertNotNull( "iterator should not be null", iterator ); assertEquals( "iterator has a value", true, iterator.hasNext() ); assertEquals( "iterator content", "aValue", iterator.next() ); } @Test public void iterateAfterAdd() { m_proxy.add( "aValue" ); Iterator<String> iterator = m_proxy.iterator(); assertNotNull( "iterator should not be null", iterator ); assertEquals( "iterator has a value", true, iterator.hasNext() ); assertEquals( "iterator content", "aValue", iterator.next() ); } @Test public void iterateBarAfterAddAndRemoveBar() { m_proxy.addBar( "aValue" ); m_proxy.removeBar( "aValue" ); Iterator<String> iterator = m_proxy.barIterator(); assertNotNull( iterator ); assertFalse( iterator.hasNext() ); } @Test public void iterateAfterAddAndRemove() { m_proxy.add( "aValue" ); m_proxy.remove( "aValue" ); Iterator<String> iterator = m_proxy.iterator(); assertNotNull( iterator ); assertFalse( iterator.hasNext() ); } @Test public void removeBarWithoutAddBar() { m_proxy.removeBar( "aValue" ); } @Test public void removeWithoutAdd() { m_proxy.remove( "aValue" ); } @Test public void iterateBarWithoutAddBar() { Iterator<String> iterator = m_proxy.barIterator(); assertNotNull( "iterator not supposed to be null", iterator ); assertFalse( iterator.hasNext() ); } @Test public void iterateWithoutAdd() { Iterator<String> iterator = m_proxy.barIterator(); assertNotNull( "iterator not supposed to be null", iterator ); assertFalse( iterator.hasNext() ); } @Test public void addFooAndGetFoo() { m_proxy.addFoo( "aValue" ); assertNull( "getter supposed to be null", m_proxy.getFoo() ); } @Test public void addFooAndSetFoo() { m_proxy.addFoo( "addValue" ); m_proxy.setFoo( "setValue" ); } @Test public void setFooAndAddFoo() { m_proxy.setFoo( "setValue" ); m_proxy.addFoo( "addValue" ); } @Test public void setFooAndRemoveFoo() { m_proxy.setFoo( "aValue" ); m_proxy.removeFoo( "aValue" ); assertEquals( "aValue", m_proxy.getFoo() ); } @Test public void setFooAndIterateFoo() { m_proxy.setFoo( "aValue" ); Iterator<String> iterator = m_proxy.fooIterator(); assertNotNull( "iterator not supposed to be null", iterator ); assertFalse( iterator.hasNext() ); } @Test public void setValidAndIsValid() { m_proxy.setValid( true ); assertTrue( m_proxy.isValid() ); } @Test public void setTestedAndHasTested() { m_proxy.setTested( true ); assertTrue( m_proxy.hasTested() ); } @Mixins( PropertiesMixin.class ) public static interface SampleJavaBeanComposite extends SampleJavaBean, TransientComposite { } public static interface SampleJavaBean { public String getFoo(); public void setFoo( String value ); public String get(); public void set( String value ); public void addFoo( String value ); public void removeFoo( String value ); public Iterator<String> fooIterator(); public void addBar( String value ); public void removeBar( String value ); public Iterator<String> barIterator(); public void add( String value ); public void remove( String value ); public Iterator<String> iterator(); public boolean isValid(); public void setValid( boolean value ); public boolean hasTested(); public void setTested( boolean value ); } }