package org.jacorb.test.notification;
/*
* JacORB - a free Java ORB
*
* Copyright (C) 1997-2014 Gerald Brose / The JacORB Team.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import org.jacorb.notification.OfferManager;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.omg.CosNotification.EventType;
import org.omg.CosNotifyComm.NotifyPublishOperations;
/**
* @author Alphonse Bendt
*/
public class OfferManagerTest {
public static final EventType[] EMPTY_EVENT_TYPE_ARRAY = new EventType[0];
OfferManager offerManager_;
List added_;
List removed_;
NotifyPublishOperations listener_;
////////////////////////////////////////
@Before
public void setUp() throws Exception
{
offerManager_ = new OfferManager();
added_ = new ArrayList();
removed_ = new ArrayList();
listener_ = new NotifyPublishOperations() {
public void offer_change(EventType[] added, EventType[] removed) {
for (int x=0; x<added.length; ++x) {
added_.add(added[x]);
}
for (int x=0; x<removed.length; ++x) {
removed_.add(removed[x]);
}
}
};
}
@Ignore
@Test
public void testRemoveNonExistent() throws Exception {
offerManager_.addListener(listener_);
offerManager_.offer_change(EMPTY_EVENT_TYPE_ARRAY,
new EventType[] { new EventType("domain1", "type1") });
assertEquals(0, added_.size());
assertEquals(1, removed_.size());
assertEquals("domain1", ((EventType)removed_.get(0)).domain_name);
assertEquals("type1", ((EventType)removed_.get(0)).type_name);
}
@Test
public void testRemoveNotifies() throws Exception {
EventType[] _toBeAdded = new EventType[] {new EventType("domain1", "type1")};
offerManager_.offer_change(_toBeAdded, EMPTY_EVENT_TYPE_ARRAY);
offerManager_.addListener(listener_);
offerManager_.offer_change(EMPTY_EVENT_TYPE_ARRAY,
new EventType[] { new EventType("domain1", "type1") });
assertEquals(0, added_.size());
assertEquals(1, removed_.size());
assertEquals("domain1", ((EventType)removed_.get(0)).domain_name);
assertEquals("type1", ((EventType)removed_.get(0)).type_name);
// shouldn't cause a problem
offerManager_.offer_change(EMPTY_EVENT_TYPE_ARRAY,
new EventType[] { new EventType("domain1", "type1") });
}
@Test
public void testAddNotifies() throws Exception {
EventType[] _toBeAdded = new EventType[] {new EventType("domain1", "type1")};
offerManager_.offer_change(_toBeAdded, EMPTY_EVENT_TYPE_ARRAY);
offerManager_.addListener(listener_);
_toBeAdded = new EventType[] {new EventType("domain2", "type2")};
offerManager_.offer_change(_toBeAdded, EMPTY_EVENT_TYPE_ARRAY);
assertEquals(1, added_.size());
assertEquals("domain2", ((EventType)added_.get(0)).domain_name);
assertEquals("type2", ((EventType)added_.get(0)).type_name);
assertEquals(0, removed_.size());
// another offer with known event types should cause a notification
offerManager_.offer_change(_toBeAdded, EMPTY_EVENT_TYPE_ARRAY);
assertEquals(1, added_.size());
}
}