/* * Copyright 2014 Bevbot LLC <info@bevbot.com> * * This file is part of the Kegtab package from the Kegbot project. For * more information on Kegtab or Kegbot, see <http://kegbot.org/>. * * Kegtab is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free * Software Foundation, version 2. * * Kegtab 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 General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with Kegtab. If not, see <http://www.gnu.org/licenses/>. */ package org.kegbot.kegboard; import android.test.InstrumentationTestCase; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @author mike */ public class KegboardMessageFactoryTest extends InstrumentationTestCase { private KegboardMessageFactory mFactory; @Override protected void setUp() throws Exception { super.setUp(); mFactory = new KegboardMessageFactory(); } @Override protected void tearDown() throws Exception { super.tearDown(); } public void testReader() throws IOException { List<KegboardMessage> messages = new ArrayList<KegboardMessage>(); InputStream is = getInstrumentation().getTargetContext().getResources().getAssets().open("one_flow_active.bin"); try { byte[] buf = new byte[76]; while (true) { int amt = is.read(buf); if (amt < 0) { break; } mFactory.addBytes(buf, amt); } while (true) { final KegboardMessage message = mFactory.getMessage(); if (message == null) { break; } messages.add(message); } assertEquals(23, messages.size()); assertTrue(messages.get(0) instanceof KegboardHelloMessage); assertTrue(messages.get(2) instanceof KegboardMeterStatusMessage); KegboardMeterStatusMessage status = (KegboardMeterStatusMessage) messages.get(2); Map<Integer, byte[]> tags = status.mTags; dumpTags(tags); assertEquals(2, tags.size()); for (KegboardMessage message : messages) { System.out.println(message); } } finally { is.close(); } } private void dumpTags(Map<Integer, byte[]> tags) { for (Map.Entry<Integer, byte[]> entry : tags.entrySet()) { System.out.println(String.format("%04x", entry.getKey()) + HexDump.dumpHexString(entry.getValue())); } } }