jtulach@208: package org.apidesign.sidemeanings.test; jtulach@208: jtulach@208: jtulach@208: import org.apidesign.sidemeanings.MixedClass; jtulach@208: import org.apidesign.sidemeanings.NonMixed; jtulach@326: import org.apidesign.sidemeanings.NonMixedFactory; jtulach@326: import org.apidesign.sidemeanings.NonMixedFactory.Callback; jtulach@208: import org.junit.After; jtulach@208: import org.junit.Before; jtulach@208: import org.junit.Test; jtulach@208: import static org.junit.Assert.*; jtulach@208: jtulach@208: public class MixedTest { jtulach@208: jtulach@208: public MixedTest() { jtulach@208: } jtulach@208: jtulach@208: @Before jtulach@208: public void setUp() { jtulach@208: } jtulach@208: jtulach@208: @After jtulach@208: public void tearDown() { jtulach@208: } jtulach@208: jtulach@208: // BEGIN: sidemeanings.Mixed.Use jtulach@208: @Test public void useOfClassWithMixedMeanings() { jtulach@208: class AddFiveMixedCounter extends MixedClass { jtulach@208: @Override jtulach@208: protected int toBeImplementedBySubclass() { jtulach@208: toBeCalledBySubclass(); jtulach@208: return 5; jtulach@208: } jtulach@208: } jtulach@208: AddFiveMixedCounter add5 = new AddFiveMixedCounter(); jtulach@208: assertEquals("5/1 = 5", 5, add5.apiForClients()); jtulach@208: assertEquals("10/2 = 5", 5, add5.apiForClients()); jtulach@208: assertEquals("15/3 = 5", 5, add5.apiForClients()); jtulach@208: } jtulach@208: // END: sidemeanings.Mixed.Use jtulach@208: jtulach@208: // BEGIN: sidemeanings.Mixed.Clean.Use jtulach@208: @Test public void useWithoutMixedMeanings() { jtulach@326: class AddFiveMixedCounter implements NonMixedFactory.Provider { jtulach@208: private Callback callback; jtulach@208: jtulach@208: public int toBeImplementedBySubclass() { jtulach@208: callback.toBeCalledBySubclass(); jtulach@208: return 5; jtulach@208: } jtulach@208: jtulach@208: public void initialize(Callback c) { jtulach@208: callback = c; jtulach@208: } jtulach@208: } jtulach@326: NonMixed add5 = NonMixedFactory.create(new AddFiveMixedCounter()); jtulach@208: assertEquals("5/1 = 5", 5, add5.apiForClients()); jtulach@208: assertEquals("10/2 = 5", 5, add5.apiForClients()); jtulach@208: assertEquals("15/3 = 5", 5, add5.apiForClients()); jtulach@208: } jtulach@208: // END: sidemeanings.Mixed.Clean.Use jtulach@208: } jtulach@208: