1 /* 2 * Copyright (C) 2012 The Guava Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.common.eventbus.outside; 18 19 import static com.google.common.truth.Truth.assertThat; 20 21 import com.google.common.collect.Lists; 22 import com.google.common.eventbus.Subscribe; 23 import com.google.common.eventbus.outside.AnnotatedNotAbstractInSuperclassTest.SubClass; 24 import java.util.List; 25 26 public class AnnotatedNotAbstractInSuperclassTest extends AbstractEventBusTest<SubClass> { 27 static class SuperClass { 28 final List<Object> notOverriddenInSubclassEvents = Lists.newArrayList(); 29 final List<Object> overriddenNotAnnotatedInSubclassEvents = Lists.newArrayList(); 30 final List<Object> overriddenAndAnnotatedInSubclassEvents = Lists.newArrayList(); 31 final List<Object> differentlyOverriddenNotAnnotatedInSubclassBadEvents = Lists.newArrayList(); 32 final List<Object> differentlyOverriddenAnnotatedInSubclassBadEvents = Lists.newArrayList(); 33 34 @Subscribe notOverriddenInSubclass(Object o)35 public void notOverriddenInSubclass(Object o) { 36 notOverriddenInSubclassEvents.add(o); 37 } 38 39 @Subscribe overriddenNotAnnotatedInSubclass(Object o)40 public void overriddenNotAnnotatedInSubclass(Object o) { 41 overriddenNotAnnotatedInSubclassEvents.add(o); 42 } 43 44 @Subscribe overriddenAndAnnotatedInSubclass(Object o)45 public void overriddenAndAnnotatedInSubclass(Object o) { 46 overriddenAndAnnotatedInSubclassEvents.add(o); 47 } 48 49 @Subscribe differentlyOverriddenNotAnnotatedInSubclass(Object o)50 public void differentlyOverriddenNotAnnotatedInSubclass(Object o) { 51 // the subclass overrides this and does *not* call super.dONAIS(o) 52 differentlyOverriddenNotAnnotatedInSubclassBadEvents.add(o); 53 } 54 55 @Subscribe differentlyOverriddenAnnotatedInSubclass(Object o)56 public void differentlyOverriddenAnnotatedInSubclass(Object o) { 57 // the subclass overrides this and does *not* call super.dOAIS(o) 58 differentlyOverriddenAnnotatedInSubclassBadEvents.add(o); 59 } 60 } 61 62 static class SubClass extends SuperClass { 63 final List<Object> differentlyOverriddenNotAnnotatedInSubclassGoodEvents = Lists.newArrayList(); 64 final List<Object> differentlyOverriddenAnnotatedInSubclassGoodEvents = Lists.newArrayList(); 65 66 @Override overriddenNotAnnotatedInSubclass(Object o)67 public void overriddenNotAnnotatedInSubclass(Object o) { 68 super.overriddenNotAnnotatedInSubclass(o); 69 } 70 71 @Subscribe 72 @Override overriddenAndAnnotatedInSubclass(Object o)73 public void overriddenAndAnnotatedInSubclass(Object o) { 74 super.overriddenAndAnnotatedInSubclass(o); 75 } 76 77 @Override differentlyOverriddenNotAnnotatedInSubclass(Object o)78 public void differentlyOverriddenNotAnnotatedInSubclass(Object o) { 79 differentlyOverriddenNotAnnotatedInSubclassGoodEvents.add(o); 80 } 81 82 @Subscribe 83 @Override differentlyOverriddenAnnotatedInSubclass(Object o)84 public void differentlyOverriddenAnnotatedInSubclass(Object o) { 85 differentlyOverriddenAnnotatedInSubclassGoodEvents.add(o); 86 } 87 } 88 testNotOverriddenInSubclass()89 public void testNotOverriddenInSubclass() { 90 assertThat(getSubscriber().notOverriddenInSubclassEvents).contains(EVENT); 91 } 92 testOverriddenNotAnnotatedInSubclass()93 public void testOverriddenNotAnnotatedInSubclass() { 94 assertThat(getSubscriber().overriddenNotAnnotatedInSubclassEvents).contains(EVENT); 95 } 96 testDifferentlyOverriddenNotAnnotatedInSubclass()97 public void testDifferentlyOverriddenNotAnnotatedInSubclass() { 98 assertThat(getSubscriber().differentlyOverriddenNotAnnotatedInSubclassGoodEvents) 99 .contains(EVENT); 100 assertThat(getSubscriber().differentlyOverriddenNotAnnotatedInSubclassBadEvents).isEmpty(); 101 } 102 testOverriddenAndAnnotatedInSubclass()103 public void testOverriddenAndAnnotatedInSubclass() { 104 assertThat(getSubscriber().overriddenAndAnnotatedInSubclassEvents).contains(EVENT); 105 } 106 testDifferentlyOverriddenAndAnnotatedInSubclass()107 public void testDifferentlyOverriddenAndAnnotatedInSubclass() { 108 assertThat(getSubscriber().differentlyOverriddenAnnotatedInSubclassGoodEvents).contains(EVENT); 109 assertThat(getSubscriber().differentlyOverriddenAnnotatedInSubclassBadEvents).isEmpty(); 110 } 111 112 @Override createSubscriber()113 SubClass createSubscriber() { 114 return new SubClass(); 115 } 116 } 117