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.DeepInterfaceTest.SubscriberClass; 24 import java.util.List; 25 26 public class DeepInterfaceTest extends AbstractEventBusTest<SubscriberClass> { 27 interface Interface1 { 28 @Subscribe annotatedIn1(Object o)29 void annotatedIn1(Object o); 30 31 @Subscribe annotatedIn1And2(Object o)32 void annotatedIn1And2(Object o); 33 34 @Subscribe annotatedIn1And2AndClass(Object o)35 void annotatedIn1And2AndClass(Object o); 36 declaredIn1AnnotatedIn2(Object o)37 void declaredIn1AnnotatedIn2(Object o); 38 declaredIn1AnnotatedInClass(Object o)39 void declaredIn1AnnotatedInClass(Object o); 40 nowhereAnnotated(Object o)41 void nowhereAnnotated(Object o); 42 } 43 44 interface Interface2 extends Interface1 { 45 @Override 46 @Subscribe declaredIn1AnnotatedIn2(Object o)47 void declaredIn1AnnotatedIn2(Object o); 48 49 @Override 50 @Subscribe annotatedIn1And2(Object o)51 void annotatedIn1And2(Object o); 52 53 @Override 54 @Subscribe annotatedIn1And2AndClass(Object o)55 void annotatedIn1And2AndClass(Object o); 56 declaredIn2AnnotatedInClass(Object o)57 void declaredIn2AnnotatedInClass(Object o); 58 59 @Subscribe annotatedIn2(Object o)60 void annotatedIn2(Object o); 61 } 62 63 static class SubscriberClass implements Interface2 { 64 final List<Object> annotatedIn1Events = Lists.newArrayList(); 65 final List<Object> annotatedIn1And2Events = Lists.newArrayList(); 66 final List<Object> annotatedIn1And2AndClassEvents = Lists.newArrayList(); 67 final List<Object> declaredIn1AnnotatedIn2Events = Lists.newArrayList(); 68 final List<Object> declaredIn1AnnotatedInClassEvents = Lists.newArrayList(); 69 final List<Object> declaredIn2AnnotatedInClassEvents = Lists.newArrayList(); 70 final List<Object> annotatedIn2Events = Lists.newArrayList(); 71 final List<Object> nowhereAnnotatedEvents = Lists.newArrayList(); 72 73 @Override annotatedIn1(Object o)74 public void annotatedIn1(Object o) { 75 annotatedIn1Events.add(o); 76 } 77 78 @Subscribe 79 @Override declaredIn1AnnotatedInClass(Object o)80 public void declaredIn1AnnotatedInClass(Object o) { 81 declaredIn1AnnotatedInClassEvents.add(o); 82 } 83 84 @Override declaredIn1AnnotatedIn2(Object o)85 public void declaredIn1AnnotatedIn2(Object o) { 86 declaredIn1AnnotatedIn2Events.add(o); 87 } 88 89 @Override annotatedIn1And2(Object o)90 public void annotatedIn1And2(Object o) { 91 annotatedIn1And2Events.add(o); 92 } 93 94 @Subscribe 95 @Override annotatedIn1And2AndClass(Object o)96 public void annotatedIn1And2AndClass(Object o) { 97 annotatedIn1And2AndClassEvents.add(o); 98 } 99 100 @Subscribe 101 @Override declaredIn2AnnotatedInClass(Object o)102 public void declaredIn2AnnotatedInClass(Object o) { 103 declaredIn2AnnotatedInClassEvents.add(o); 104 } 105 106 @Override annotatedIn2(Object o)107 public void annotatedIn2(Object o) { 108 annotatedIn2Events.add(o); 109 } 110 111 @Override nowhereAnnotated(Object o)112 public void nowhereAnnotated(Object o) { 113 nowhereAnnotatedEvents.add(o); 114 } 115 } 116 testAnnotatedIn1()117 public void testAnnotatedIn1() { 118 assertThat(getSubscriber().annotatedIn1Events).contains(EVENT); 119 } 120 testAnnotatedIn2()121 public void testAnnotatedIn2() { 122 assertThat(getSubscriber().annotatedIn2Events).contains(EVENT); 123 } 124 testAnnotatedIn1And2()125 public void testAnnotatedIn1And2() { 126 assertThat(getSubscriber().annotatedIn1And2Events).contains(EVENT); 127 } 128 testAnnotatedIn1And2AndClass()129 public void testAnnotatedIn1And2AndClass() { 130 assertThat(getSubscriber().annotatedIn1And2AndClassEvents).contains(EVENT); 131 } 132 testDeclaredIn1AnnotatedIn2()133 public void testDeclaredIn1AnnotatedIn2() { 134 assertThat(getSubscriber().declaredIn1AnnotatedIn2Events).contains(EVENT); 135 } 136 testDeclaredIn1AnnotatedInClass()137 public void testDeclaredIn1AnnotatedInClass() { 138 assertThat(getSubscriber().declaredIn1AnnotatedInClassEvents).contains(EVENT); 139 } 140 testDeclaredIn2AnnotatedInClass()141 public void testDeclaredIn2AnnotatedInClass() { 142 assertThat(getSubscriber().declaredIn2AnnotatedInClassEvents).contains(EVENT); 143 } 144 testNowhereAnnotated()145 public void testNowhereAnnotated() { 146 assertThat(getSubscriber().nowhereAnnotatedEvents).isEmpty(); 147 } 148 149 @Override createSubscriber()150 SubscriberClass createSubscriber() { 151 return new SubscriberClass(); 152 } 153 } 154