• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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