1a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev/* 2a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * Copyright (C) 2015 The Android Open Source Project 3a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * 4a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * Licensed under the Apache License, Version 2.0 (the "License"); 5a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * you may not use this file except in compliance with the License. 6a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * You may obtain a copy of the License at 7a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * 8a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * http://www.apache.org/licenses/LICENSE-2.0 9a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * 10a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * Unless required by applicable law or agreed to in writing, software 11a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * distributed under the License is distributed on an "AS IS" BASIS, 12a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * See the License for the specific language governing permissions and 14a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * limitations under the License. 15a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev */ 16a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 17a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevpackage android.support.v7.util; 18a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 19a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport android.support.test.runner.AndroidJUnit4; 20f1b288ec2104488f4a92e911b0ab80c8f0f3e9d1Yigit Boyarimport android.test.suitebuilder.annotation.SmallTest; 21a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 22a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport org.junit.Before; 23a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport org.junit.Test; 24a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport org.junit.runner.RunWith; 25a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 26a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport static org.hamcrest.CoreMatchers.is; 27a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport static org.hamcrest.CoreMatchers.nullValue; 28a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport static org.hamcrest.CoreMatchers.sameInstance; 29a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport static org.hamcrest.MatcherAssert.assertThat; 30a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 31a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev@RunWith(AndroidJUnit4.class) 32f1b288ec2104488f4a92e911b0ab80c8f0f3e9d1Yigit Boyar@SmallTest 33a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevpublic class MessageQueueTest { 34a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev MessageThreadUtil.MessageQueue mQueue; 35a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 36a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Before 37a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev public void setUp() throws Exception { 38a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue = new MessageThreadUtil.MessageQueue(); 39a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 40a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 41a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Test 420a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void allArguments() { 43a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev String data = "data"; 44a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(MessageThreadUtil.SyncQueueItem.obtainMessage( 45a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 0, 1, 2, 3, 4, 5, data)); 46a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 47a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev MessageThreadUtil.SyncQueueItem msg = mQueue.next(); 48a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.what, is(0)); 49a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg1, is(1)); 50a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg2, is(2)); 51a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg3, is(3)); 52a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg4, is(4)); 53a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg5, is(5)); 54a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat((String)msg.data, sameInstance(data)); 55a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 56a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 57a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Test 580a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void sendInOrder() { 59a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(obtainMessage(1, 2)); 60a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(obtainMessage(3, 4)); 61a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(obtainMessage(5, 6)); 62a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 63a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev MessageThreadUtil.SyncQueueItem msg = mQueue.next(); 64a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.what, is(1)); 65a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg1, is(2)); 66a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 67a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev msg = mQueue.next(); 68a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.what, is(3)); 69a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg1, is(4)); 70a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 71a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev msg = mQueue.next(); 72a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.what, is(5)); 73a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg1, is(6)); 74a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 75a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev msg = mQueue.next(); 76a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg, nullValue()); 77a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 78a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 79a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Test 800a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void sendAtFront() { 81a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(obtainMessage(1, 2)); 82a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessageAtFrontOfQueue(obtainMessage(3, 4)); 83a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(obtainMessage(5, 6)); 84a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 85a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev MessageThreadUtil.SyncQueueItem msg = mQueue.next(); 86a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.what, is(3)); 87a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg1, is(4)); 88a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 89a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev msg = mQueue.next(); 90a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.what, is(1)); 91a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg1, is(2)); 92a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 93a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev msg = mQueue.next(); 94a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.what, is(5)); 95a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg1, is(6)); 96a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 97a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev msg = mQueue.next(); 98a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg, nullValue()); 99a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 100a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 101a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Test 1020a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void remove() { 103a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(obtainMessage(1, 0)); 104a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(obtainMessage(2, 0)); 105a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(obtainMessage(1, 0)); 106a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(obtainMessage(2, 1)); 107a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(obtainMessage(3, 0)); 108a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.sendMessage(obtainMessage(1, 0)); 109a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 110a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mQueue.removeMessages(1); 111a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 112a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev MessageThreadUtil.SyncQueueItem msg = mQueue.next(); 113a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.what, is(2)); 114a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg1, is(0)); 115a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 116a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev msg = mQueue.next(); 117a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.what, is(2)); 118a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg1, is(1)); 119a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 120a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev msg = mQueue.next(); 121a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.what, is(3)); 122a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg.arg1, is(0)); 123a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 124a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev msg = mQueue.next(); 125a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(msg, nullValue()); 126a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 127a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 128a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev private MessageThreadUtil.SyncQueueItem obtainMessage(int what, int arg) { 129a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev return MessageThreadUtil.SyncQueueItem.obtainMessage(what, arg, null); 130a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 131a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev} 132