@Override public void onCmdMessageReceived(List<EMMessage> messages) { for (EMMessage message : messages) { // To handle group-ack msg. EaseDingMessageHelper.get().handleAckMessage(message); } } });
@Test public void testHandleAckMessage() throws Exception { assertNotNull(helper); // Data will store in memory. helper.handleAckMessage(createDingAckMessage("1", "-1", "user1")); assertEquals(helper.getDataCache().size(), 1); LruCache<String, List<String>> msgCache = helper.getDataCache().get("1"); assertNotNull(msgCache); List<String> userList = msgCache.get("-1"); assertNotNull(userList); assertEquals(userList.size(), 1); assertEquals(userList.get(0), "user1"); // Data will store in SharedPreferences too. assertTrue(helper.getDataPrefs().contains(helper.generateKey("1", "-1"))); }
@Test public void testLruCache() throws Exception { /** * {@link EaseDingMessageHelper#dataCache} dataCache can contains {@link EaseDingMessageHelper#CACHE_SIZE_CONVERSATION} * size of conversations at most. */ // Clear memory cache first. helper.getDataCache().evictAll(); // Create size + 1 ding-type ack msg and add to dataCache. for (int i = 0; i <= EaseDingMessageHelper.CACHE_SIZE_CONVERSATION; i++) { helper.handleAckMessage(createDingAckMessage(String.valueOf(i), String.valueOf(-i), String.valueOf("user" + i))); } assertEquals(helper.getDataCache().size(), EaseDingMessageHelper.CACHE_SIZE_CONVERSATION); /** * Every conversation can contains {@link EaseDingMessageHelper#CACHE_SIZE_MESSAGE} size of ding-type msg at most. */ // Clear memory cache first. helper.getDataCache().evictAll(); for (int i = 0; i <= EaseDingMessageHelper.CACHE_SIZE_MESSAGE; i++) { helper.handleAckMessage(createDingAckMessage("1", String.valueOf(-i), String.valueOf("user" + i))); } LruCache<String, List<String>> msgCache = helper.getDataCache().get("1"); assertEquals(msgCache.size(), EaseDingMessageHelper.CACHE_SIZE_MESSAGE); }