/* * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of * the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Copyright (c) 2014 Digi International Inc., All Rights Reserved. */ package com.digi.android.wva.test.util; import android.test.InstrumentationTestCase; import com.digi.android.wva.model.VehicleData; import com.digi.android.wva.util.MessageCourier; import com.digi.android.wva.util.MessageCourier.ChartMessage; import com.digi.android.wva.util.MessageCourier.DashboardMessage; import org.joda.time.DateTime; public class MessageCourierTest extends InstrumentationTestCase { @Override protected void setUp() throws Exception { MessageCourier.clear(); } public void testConnected() { MessageCourier.sendDashConnected("Test"); DashboardMessage[] msgs = MessageCourier.getDashboardMessages(); assertEquals("Not exactly 1 message for dashboard", 1, msgs.length); assertEquals("First message is not what we expected", "Test", msgs[0].getContents()); assertFalse("First message is error", msgs[0].isError()); } public void testError() { // sendError puts the message on both lists // TODO: It also puts the error at the front of the queue. Test this. MessageCourier.sendError("Error!"); DashboardMessage[] dmsgs = MessageCourier.getDashboardMessages(); ChartMessage[] cmsgs = MessageCourier.getChartMessages(); assertEquals("Not exactly 1 message for dashboard", 1, dmsgs.length); assertEquals("Not exactly 1 message for chart", 1, cmsgs.length); DashboardMessage dm = dmsgs[0]; ChartMessage cm = cmsgs[0]; assertEquals("First dash message is wrong", "Error!", dm.getContents()); assertEquals("First chart message is wrong", "Error!", cm.getError()); assertTrue("First dash message is not an error", dm.isError()); assertNull("First chart message contains data, but should be an error", cm.getData()); } public void testNewData() { VehicleData data = new VehicleData("Test", 10, DateTime.now()); MessageCourier.sendChartNewData(data); ChartMessage[] msgs = MessageCourier.getChartMessages(); assertEquals("Not exactly 1 message for chart", 1, msgs.length); ChartMessage msg = msgs[0]; assertSame("Wrong first message", msg.getData(), data); assertNull("Message contains error", msg.getError()); } public void testDashSize() { // Dashboard message list "max size" is 5 for (int i = 0; i < 10; i++) { MessageCourier.sendDashConnected(Integer.toString(i)); } DashboardMessage[] msgs = MessageCourier.getDashboardMessages(); assertEquals("Not exactly 5 messages for chart", 5, msgs.length); // Check that the first five messages were dropped assertTrue("Dash list buffer works incorrectly", "5".equals(msgs[0].getContents())); } public void testChartSize() { // Chart message list "max size" is 20 for (int i = 0; i < 40; i++) { MessageCourier.sendChartNewData(new VehicleData("", i, null)); } ChartMessage[] msgs = MessageCourier.getChartMessages(); assertEquals("Chart message list incorrect size", 20, msgs.length); // Check that the first twenty messages were dropped assertEquals("Wrong message at front of list", 20, (int)msgs[0].getData().value); } public void testClearEtc() { // setUp should clear these out... assertEquals("Chart messages not cleared", 0, MessageCourier.getChartMessages().length); assertEquals("Dash messages not cleared", 0, MessageCourier.getDashboardMessages().length); // should be empty just after being dumped out assertEquals("getChartMessages() doesn't clear", 0, MessageCourier.getChartMessages().length); assertEquals("getDashboardMessages() doesn't clear", 0, MessageCourier.getDashboardMessages().length); // Put something into them MessageCourier.sendError(null); assertEquals("sendError() didn't send to chart", 1, MessageCourier.getChartMessages().length); assertEquals("sendError() didn't send to dash", 1, MessageCourier.getDashboardMessages().length); // should be empty just after being dumped out assertEquals("getChartMessages() doesn't clear", 0, MessageCourier.getChartMessages().length); assertEquals("getDashboardMessages() doesn't clear", 0, MessageCourier.getDashboardMessages().length); // Put something into them MessageCourier.sendError(null); // Now clear them out MessageCourier.clear(); assertEquals("clear() didn't clear chart messages", 0, MessageCourier.getChartMessages().length); assertEquals("clear() didn't clear dash messages", 0, MessageCourier.getDashboardMessages().length); } }