/***********************************************************************************
*
* Copyright (c) 2014 Kamil Baczkowicz
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v1.0 which accompany this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
*
* Kamil Baczkowicz - initial API and implementation and/or initial documentation
*
*/
package pl.baczkowicz.mqttspy.connectivity.messagestore;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.Before;
import org.junit.Test;
import pl.baczkowicz.mqttspy.messages.FormattedMqttMessage;
import pl.baczkowicz.spy.common.generated.FormatterDetails;
import pl.baczkowicz.spy.formatting.FormattingManager;
import pl.baczkowicz.spy.ui.events.queuable.EventQueueManager;
import pl.baczkowicz.spy.ui.storage.ManagedMessageStoreWithFiltering;
public class ObservableMessageStoreWithFilteringTest
{
/** Class under test. */
private ManagedMessageStoreWithFiltering<FormattedMqttMessage> store;
private FormattingManager mockedFormattingManager;
private Mockery context = new Mockery()
{
{
setImposteriser(ClassImposteriser.INSTANCE);
}
};
@Before
public void setUp() throws Exception
{
mockedFormattingManager = context.mock(FormattingManager.class);
store = new ManagedMessageStoreWithFiltering<FormattedMqttMessage>(
"test", 5, 5, 5, new EventQueueManager<FormattedMqttMessage>(), mockedFormattingManager, 0);
context.checking(new Expectations()
{
{
allowing(mockedFormattingManager).formatMessage(with(any(FormattedMqttMessage.class)), with(any(FormatterDetails.class)));
}
});
}
@Test
public final void testStoreMaxSize()
{
final FormattedMqttMessage message = new FormattedMqttMessage(1, "t1", new MqttMessage("test1".getBytes()), null);
store.messageReceived(message);
assertEquals(1, store.getMessages().size());
store.messageReceived(message);
store.messageReceived(message);
store.messageReceived(message);
store.messageReceived(message);
assertEquals(5, store.getMessages().size());
store.messageReceived(message);
assertEquals(5, store.getMessages().size());
}
@Test
public final void testDefaultActiveFilters()
{
testStoreMaxSize();
assertTrue(store.getFilteredMessageStore().getBrowsedTopics().contains("t1"));
final FormattedMqttMessage message = new FormattedMqttMessage(2, "t2", new MqttMessage("test2".getBytes()), null);
store.messageReceived(message);
assertTrue(store.getFilteredMessageStore().getBrowsedTopics().contains("t2"));
}
@Test
public final void testActiveFiltersWhenNotAllEnabled()
{
testDefaultActiveFilters();
store.getFilteredMessageStore().updateTopicFilter("t2", false);
final FormattedMqttMessage message = new FormattedMqttMessage(3, "t3", new MqttMessage("test3".getBytes()), null);
store.messageReceived(message);
assertFalse(store.getFilteredMessageStore().getBrowsedTopics().contains("t3"));
}
}