17dd252788645e940eada959bdde927426e2531c9Paul Duffin/*
27dd252788645e940eada959bdde927426e2531c9Paul Duffin * Copyright (C) 2011 The Guava Authors
37dd252788645e940eada959bdde927426e2531c9Paul Duffin *
47dd252788645e940eada959bdde927426e2531c9Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License");
57dd252788645e940eada959bdde927426e2531c9Paul Duffin * you may not use this file except in compliance with the License.
67dd252788645e940eada959bdde927426e2531c9Paul Duffin * You may obtain a copy of the License at
77dd252788645e940eada959bdde927426e2531c9Paul Duffin *
87dd252788645e940eada959bdde927426e2531c9Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0
97dd252788645e940eada959bdde927426e2531c9Paul Duffin *
107dd252788645e940eada959bdde927426e2531c9Paul Duffin * Unless required by applicable law or agreed to in writing, software
117dd252788645e940eada959bdde927426e2531c9Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS,
127dd252788645e940eada959bdde927426e2531c9Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137dd252788645e940eada959bdde927426e2531c9Paul Duffin * See the License for the specific language governing permissions and
147dd252788645e940eada959bdde927426e2531c9Paul Duffin * limitations under the License.
157dd252788645e940eada959bdde927426e2531c9Paul Duffin */
167dd252788645e940eada959bdde927426e2531c9Paul Duffin
177dd252788645e940eada959bdde927426e2531c9Paul Duffinpackage com.google.common.eventbus.outside;
187dd252788645e940eada959bdde927426e2531c9Paul Duffin
197dd252788645e940eada959bdde927426e2531c9Paul Duffinimport com.google.common.eventbus.EventBus;
207dd252788645e940eada959bdde927426e2531c9Paul Duffinimport com.google.common.eventbus.Subscribe;
217dd252788645e940eada959bdde927426e2531c9Paul Duffin
220888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport junit.framework.TestCase;
230888a09821a98ac0680fad765217302858e70fa4Paul Duffin
247dd252788645e940eada959bdde927426e2531c9Paul Duffinimport java.util.concurrent.atomic.AtomicInteger;
257dd252788645e940eada959bdde927426e2531c9Paul Duffinimport java.util.concurrent.atomic.AtomicReference;
267dd252788645e940eada959bdde927426e2531c9Paul Duffin
277dd252788645e940eada959bdde927426e2531c9Paul Duffin/**
287dd252788645e940eada959bdde927426e2531c9Paul Duffin * Test cases for {@code EventBus} that must not be in the same package.
297dd252788645e940eada959bdde927426e2531c9Paul Duffin *
307dd252788645e940eada959bdde927426e2531c9Paul Duffin * @author Louis Wasserman
317dd252788645e940eada959bdde927426e2531c9Paul Duffin */
327dd252788645e940eada959bdde927426e2531c9Paul Duffinpublic class OutsideEventBusTest extends TestCase {
337dd252788645e940eada959bdde927426e2531c9Paul Duffin
347dd252788645e940eada959bdde927426e2531c9Paul Duffin  /*
357dd252788645e940eada959bdde927426e2531c9Paul Duffin   * If you do this test from common.eventbus.EventBusTest, it doesn't actually test the behavior.
367dd252788645e940eada959bdde927426e2531c9Paul Duffin   * That is, even if exactly the same method works from inside the common.eventbus package tests,
377dd252788645e940eada959bdde927426e2531c9Paul Duffin   * it can fail here.
387dd252788645e940eada959bdde927426e2531c9Paul Duffin   */
397dd252788645e940eada959bdde927426e2531c9Paul Duffin  public void testAnonymous() {
407dd252788645e940eada959bdde927426e2531c9Paul Duffin    final AtomicReference<String> holder = new AtomicReference<String>();
417dd252788645e940eada959bdde927426e2531c9Paul Duffin    final AtomicInteger deliveries = new AtomicInteger();
427dd252788645e940eada959bdde927426e2531c9Paul Duffin    EventBus bus = new EventBus();
437dd252788645e940eada959bdde927426e2531c9Paul Duffin    bus.register(new Object() {
447dd252788645e940eada959bdde927426e2531c9Paul Duffin      @Subscribe
457dd252788645e940eada959bdde927426e2531c9Paul Duffin      public void accept(String str) {
467dd252788645e940eada959bdde927426e2531c9Paul Duffin        holder.set(str);
477dd252788645e940eada959bdde927426e2531c9Paul Duffin        deliveries.incrementAndGet();
487dd252788645e940eada959bdde927426e2531c9Paul Duffin      }
497dd252788645e940eada959bdde927426e2531c9Paul Duffin    });
507dd252788645e940eada959bdde927426e2531c9Paul Duffin
517dd252788645e940eada959bdde927426e2531c9Paul Duffin    String EVENT = "Hello!";
527dd252788645e940eada959bdde927426e2531c9Paul Duffin    bus.post(EVENT);
537dd252788645e940eada959bdde927426e2531c9Paul Duffin
547dd252788645e940eada959bdde927426e2531c9Paul Duffin    assertEquals("Only one event should be delivered.", 1, deliveries.get());
557dd252788645e940eada959bdde927426e2531c9Paul Duffin    assertEquals("Correct string should be delivered.", EVENT, holder.get());
567dd252788645e940eada959bdde927426e2531c9Paul Duffin  }
577dd252788645e940eada959bdde927426e2531c9Paul Duffin}
58