1 package org.apidesign.sidemeanings.test;
4 import org.apidesign.sidemeanings.MixedClass;
5 import org.apidesign.sidemeanings.NonMixed;
6 import org.apidesign.sidemeanings.NonMixed.Callback;
7 import org.junit.After;
8 import org.junit.Before;
10 import static org.junit.Assert.*;
12 public class MixedTest {
22 public void tearDown() {
25 // BEGIN: sidemeanings.Mixed.Use
26 @Test public void useOfClassWithMixedMeanings() {
27 class AddFiveMixedCounter extends MixedClass {
29 protected int toBeImplementedBySubclass() {
30 toBeCalledBySubclass();
34 AddFiveMixedCounter add5 = new AddFiveMixedCounter();
35 assertEquals("5/1 = 5", 5, add5.apiForClients());
36 assertEquals("10/2 = 5", 5, add5.apiForClients());
37 assertEquals("15/3 = 5", 5, add5.apiForClients());
39 // END: sidemeanings.Mixed.Use
41 // BEGIN: sidemeanings.Mixed.Clean.Use
42 @Test public void useWithoutMixedMeanings() {
43 class AddFiveMixedCounter implements NonMixed.Provider {
44 private Callback callback;
46 public int toBeImplementedBySubclass() {
47 callback.toBeCalledBySubclass();
51 public void initialize(Callback c) {
55 NonMixed add5 = NonMixed.create(new AddFiveMixedCounter());
56 assertEquals("5/1 = 5", 5, add5.apiForClients());
57 assertEquals("10/2 = 5", 5, add5.apiForClients());
58 assertEquals("15/3 = 5", 5, add5.apiForClients());
60 // END: sidemeanings.Mixed.Clean.Use