150a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org/* 250a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org * Copyright 2013 Google Inc. 350a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org * 450a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be 550a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org * found in the LICENSE file. 650a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org */ 750a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org 850a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org#include "SkMessageBus.h" 950a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org#include "Test.h" 1050a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org 1150a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.orgstruct TestMessage { 1250a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org int x; 1350a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org float y; 1450a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org}; 15c665804300096c2e7617379835bb83d715538788commit-bot@chromium.orgDECLARE_SKMESSAGEBUS_MESSAGE(TestMessage) 1650a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org 1750a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.orgDEF_TEST(MessageBus, r) { 1850a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org // Register two inboxes to receive all TestMessages. 1950a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org SkMessageBus<TestMessage>::Inbox inbox1, inbox2; 2050a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org 2150a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org // Send two messages. 2250a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org const TestMessage m1 = { 5, 4.2f }; 2350a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org const TestMessage m2 = { 6, 4.3f }; 2450a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org SkMessageBus<TestMessage>::Post(m1); 2550a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org SkMessageBus<TestMessage>::Post(m2); 2650a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org 2750a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org // Make sure we got two. 2850a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org SkTDArray<TestMessage> messages; 2950a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org inbox1.poll(&messages); 3050a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org REPORTER_ASSERT(r, 2 == messages.count()); 3150a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org REPORTER_ASSERT(r, 5 == messages[0].x); 3250a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org REPORTER_ASSERT(r, 6 == messages[1].x); 3350a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org 3450a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org // Send another; check we get just that one. 3550a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org const TestMessage m3 = { 1, 0.3f }; 3650a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org SkMessageBus<TestMessage>::Post(m3); 3750a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org inbox1.poll(&messages); 3850a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org REPORTER_ASSERT(r, 1 == messages.count()); 3950a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org REPORTER_ASSERT(r, 1 == messages[0].x); 4050a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org 4150a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org // Nothing was sent since the last read. 4250a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org inbox1.poll(&messages); 4350a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org REPORTER_ASSERT(r, 0 == messages.count()); 4450a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org 4550a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org // Over all this time, inbox2 should have piled up 3 messages. 4650a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org inbox2.poll(&messages); 4750a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org REPORTER_ASSERT(r, 3 == messages.count()); 4850a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org REPORTER_ASSERT(r, 5 == messages[0].x); 4950a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org REPORTER_ASSERT(r, 6 == messages[1].x); 5050a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org REPORTER_ASSERT(r, 1 == messages[2].x); 5150a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org} 5250a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org 5350a3043194cf278a74ff51c33c6cdb52cbe1f8f9commit-bot@chromium.org// Multithreaded tests tbd. 54