1 package org.apidesign.sidemeanings.test;
4 import org.apidesign.sidemeanings.MixedClass;
5 import org.apidesign.sidemeanings.NonMixed;
6 import org.apidesign.sidemeanings.NonMixedFactory;
7 import org.apidesign.sidemeanings.NonMixedFactory.Callback;
8 import org.junit.After;
9 import org.junit.Before;
10 import org.junit.Test;
11 import static org.junit.Assert.*;
13 public class MixedTest {
23 public void tearDown() {
26 // BEGIN: sidemeanings.Mixed.Use
27 @Test public void useOfClassWithMixedMeanings() {
28 class AddFiveMixedCounter extends MixedClass {
30 protected int toBeImplementedBySubclass() {
31 toBeCalledBySubclass();
35 AddFiveMixedCounter add5 = new AddFiveMixedCounter();
36 assertEquals("5/1 = 5", 5, add5.apiForClients());
37 assertEquals("10/2 = 5", 5, add5.apiForClients());
38 assertEquals("15/3 = 5", 5, add5.apiForClients());
40 // END: sidemeanings.Mixed.Use
42 // BEGIN: sidemeanings.Mixed.Clean.Use
43 @Test public void useWithoutMixedMeanings() {
44 class AddFiveMixedCounter implements NonMixedFactory.Provider {
45 private Callback callback;
47 public int toBeImplementedBySubclass() {
48 callback.toBeCalledBySubclass();
52 public void initialize(Callback c) {
56 NonMixed add5 = NonMixedFactory.create(new AddFiveMixedCounter());
57 assertEquals("5/1 = 5", 5, add5.apiForClients());
58 assertEquals("10/2 = 5", 5, add5.apiForClients());
59 assertEquals("15/3 = 5", 5, add5.apiForClients());
61 // END: sidemeanings.Mixed.Clean.Use