105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol/* 205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * Copyright (C) 2016 The Android Open Source Project 305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * 405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * Licensed under the Apache License, Version 2.0 (the "License"); 505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * you may not use this file except in compliance with the License. 605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * You may obtain a copy of the License at 705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * 805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * http://www.apache.org/licenses/LICENSE-2.0 905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * 1005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * Unless required by applicable law or agreed to in writing, software 1105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * distributed under the License is distributed on an "AS IS" BASIS, 1205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * See the License for the specific language governing permissions and 1405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol * limitations under the License. 1505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol */ 1605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 1705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol#include <algorithm> 1805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 1905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol#include "gtest/gtest.h" 2005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 2105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol#include "chre/core/request_multiplexer.h" 2205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 2305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignolusing chre::RequestMultiplexer; 2405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 2505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignolclass DummyRequest { 2605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol public: 2705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest() : DummyRequest(0) {} 2805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 2905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest(int priority) : mPriority(priority) {} 3005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 3105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool isEquivalentTo(const DummyRequest& request) const { 3205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol return (mPriority == request.mPriority); 3305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 3405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 352d93f2a877a9c68a2ef249ba996188188d8469acAndrew Rossignol bool mergeWith(const DummyRequest& request) { 362d93f2a877a9c68a2ef249ba996188188d8469acAndrew Rossignol bool newMaximal = false; 372d93f2a877a9c68a2ef249ba996188188d8469acAndrew Rossignol if (request.mPriority > mPriority) { 382d93f2a877a9c68a2ef249ba996188188d8469acAndrew Rossignol mPriority = request.mPriority; 392d93f2a877a9c68a2ef249ba996188188d8469acAndrew Rossignol newMaximal = true; 402d93f2a877a9c68a2ef249ba996188188d8469acAndrew Rossignol } 412d93f2a877a9c68a2ef249ba996188188d8469acAndrew Rossignol 422d93f2a877a9c68a2ef249ba996188188d8469acAndrew Rossignol return newMaximal; 4305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 4405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 4505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol int getPriority() const { 4605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol return mPriority; 4705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 4805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 4905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol private: 5005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol int mPriority; 5105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol}; 5205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 5305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew RossignolTEST(RequestMultiplexer, DefaultRequestDoesNotCauseNewMaximal) { 5405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol RequestMultiplexer<DummyRequest> multiplexer; 5505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request; 561de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol size_t index; 5705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 581de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, &maximalRequestChanged)); 5905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_FALSE(maximalRequestChanged); 6005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 0); 6105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol} 6205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 6305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew RossignolTEST(RequestMultiplexer, FirstHighPriorityRequestCausesNewMaximal) { 6405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol RequestMultiplexer<DummyRequest> multiplexer; 6505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(10); 661de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol size_t index; 6705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 681de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, &maximalRequestChanged)); 6905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 7005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 7105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol} 7205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 7305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew RossignolTEST(RequestMultiplexer, NewLowerPriorityRequestDoesNotCauseNewMaximal) { 7405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol RequestMultiplexer<DummyRequest> multiplexer; 751de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol size_t index; 7605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 7705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 7805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(10); 7905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 801de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 811de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 8205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 8305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 8405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 8505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 8605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 8705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(5); 8805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 891de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 901de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 9105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_FALSE(maximalRequestChanged); 9205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 9305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 9405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol} 9505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 9605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew RossignolTEST(RequestMultiplexer, AddOneRemoveMaximal) { 9705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol RequestMultiplexer<DummyRequest> multiplexer; 9805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(10); 991de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol size_t index; 10005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 1011de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, &maximalRequestChanged)); 10205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 1031de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 10); 10405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 10505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 10605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest defaultRequest; 10705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol multiplexer.removeRequest(0, &maximalRequestChanged); 10805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 10905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(multiplexer.getCurrentMaximalRequest() 11005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol .isEquivalentTo(defaultRequest)); 11105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(multiplexer.getRequests().empty()); 11205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol} 11305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 11405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew RossignolTEST(RequestMultiplexer, AddManyRemoveMaximal) { 11505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol RequestMultiplexer<DummyRequest> multiplexer; 1161de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol size_t index; 11705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 11805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 11905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(10); 12005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 1211de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 1221de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 12305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 1241de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 10); 12505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 12605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 12705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 12805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 12905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(5); 13005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 1311de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 1321de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 13305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_FALSE(maximalRequestChanged); 1341de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 5); 13505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 13605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 13705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 13805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 13905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(10); 14005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 1411de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 1421de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 14305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_FALSE(maximalRequestChanged); 1441de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 10); 14505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 14605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 14705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 14805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 14905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol multiplexer.removeRequest(0, &maximalRequestChanged); 15005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_FALSE(maximalRequestChanged); 15105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 15205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getRequests()[0].getPriority(), 5); 15305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getRequests()[1].getPriority(), 10); 15405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol} 15505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 15605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew RossignolTEST(RequestMultiplexer, AddManyRemoveBeforeMaximalThenRemoveMaximal) { 15705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol RequestMultiplexer<DummyRequest> multiplexer; 1581de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol size_t index; 15905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 16005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 16105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(1); 16205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 1631de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 1641de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 16505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 1661de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 1); 16705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 1); 16805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 16905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 17005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 17105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(5); 17205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 1731de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 1741de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 17505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 1761de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 5); 17705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 5); 17805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 17905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 18005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 18105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(10); 18205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 1831de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 1841de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 18505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 1861de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 10); 18705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 18805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 18905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 19005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 19105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol multiplexer.removeRequest(0, &maximalRequestChanged); 19205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_FALSE(maximalRequestChanged); 19305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 19405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getRequests()[0].getPriority(), 5); 19505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getRequests()[1].getPriority(), 10); 19605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 19705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol multiplexer.removeRequest(1, &maximalRequestChanged); 19805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 19905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 5); 20005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getRequests()[0].getPriority(), 5); 20105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol} 20205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 20305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew RossignolTEST(RequestMultiplexer, AddManyRemoveAfterMaximalThenRemoveMaximal) { 20405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol RequestMultiplexer<DummyRequest> multiplexer; 2051de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol size_t index; 20605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 20705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 20805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(1); 20905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 2101de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 2111de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 21205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 2131de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 1); 21405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 1); 21505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 21605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 21705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 21805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(5); 21905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 2201de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 2211de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 22205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 2231de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 5); 22405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 5); 22505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 22605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 22705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 22805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(10); 22905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 2301de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 2311de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 23205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 2331de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 10); 23405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 23505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 23605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 23705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol { 23805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol DummyRequest request(5); 23905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 2401de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 2411de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 24205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_FALSE(maximalRequestChanged); 2431de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 5); 24405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 24505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol } 24605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 24705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol bool maximalRequestChanged; 24805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol multiplexer.removeRequest(3, &maximalRequestChanged); 24905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_FALSE(maximalRequestChanged); 25005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 25105ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getRequests()[0].getPriority(), 1); 25205ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getRequests()[1].getPriority(), 5); 25305ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getRequests()[2].getPriority(), 10); 25405ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol 25505ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol multiplexer.removeRequest(2, &maximalRequestChanged); 25605ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_TRUE(maximalRequestChanged); 25705ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 5); 25805ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getRequests()[0].getPriority(), 1); 25905ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol EXPECT_EQ(multiplexer.getRequests()[1].getPriority(), 5); 26005ae3086fc807d601355d1cdd5646c7c4aae4655Andrew Rossignol} 26136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 26236a2039ea80015d6f38f538204b131da41b41e4cAndrew RossignolTEST(RequestMultiplexer, AddManyUpdateWithLowerPriority) { 26336a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol RequestMultiplexer<DummyRequest> multiplexer; 2641de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol size_t index; 26536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 26636a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 26736a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(1); 26836a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 2691de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 2701de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 27136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_TRUE(maximalRequestChanged); 2721de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 1); 27336a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 1); 27436a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 27536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 27636a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 27736a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(5); 27836a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 2791de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 2801de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 28136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_TRUE(maximalRequestChanged); 2821de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 5); 28336a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 5); 28436a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 28536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 28636a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 28736a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(10); 28836a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 2891de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 2901de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 29136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_TRUE(maximalRequestChanged); 2921de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 10); 29336a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 29436a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 29536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 29636a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 29736a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(8); 29836a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 29936a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol multiplexer.updateRequest(1, request, &maximalRequestChanged); 30036a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_FALSE(maximalRequestChanged); 30136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[1].getPriority(), 8); 30236a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 30336a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 30436a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol} 30536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 30636a2039ea80015d6f38f538204b131da41b41e4cAndrew RossignolTEST(RequestMultiplexer, AddManyUpdateWithNewMaximalLowerPriority) { 30736a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol RequestMultiplexer<DummyRequest> multiplexer; 3081de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol size_t index; 30936a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 31036a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 31136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(1); 31236a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 3131de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 3141de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 31536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_TRUE(maximalRequestChanged); 3161de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 1); 31736a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 1); 31836a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 31936a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 32036a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 32136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(5); 32236a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 3231de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 3241de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 32536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_TRUE(maximalRequestChanged); 3261de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 5); 32736a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 5); 32836a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 32936a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 33036a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 33136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(10); 33236a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 3331de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 3341de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 33536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_TRUE(maximalRequestChanged); 3361de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 10); 33736a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 33836a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 33936a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 34036a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 34136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(8); 34236a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 34336a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol multiplexer.updateRequest(2, request, &maximalRequestChanged); 34436a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_TRUE(maximalRequestChanged); 34536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[2].getPriority(), 8); 34636a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 8); 34736a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 34836a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol} 34936a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 35036a2039ea80015d6f38f538204b131da41b41e4cAndrew RossignolTEST(RequestMultiplexer, AddManyUpdateNewMaximal) { 35136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol RequestMultiplexer<DummyRequest> multiplexer; 3521de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol size_t index; 35336a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 35436a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 35536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(1); 35636a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 3571de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 3581de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 35936a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_TRUE(maximalRequestChanged); 3601de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 1); 36136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 1); 36236a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 36336a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 36436a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 36536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(5); 36636a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 3671de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 3681de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 36936a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_TRUE(maximalRequestChanged); 3701de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 5); 37136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 5); 37236a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 37336a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 37436a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 37536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(10); 37636a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 3771de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol ASSERT_TRUE(multiplexer.addRequest(request, &index, 3781de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol &maximalRequestChanged)); 37936a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_TRUE(maximalRequestChanged); 3801de1c6c5fc1c743d3378d1cea36b8b151bd6aefbAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[index].getPriority(), 10); 38136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 10); 38236a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 38336a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol 38436a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol { 38536a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol DummyRequest request(20); 38636a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol bool maximalRequestChanged; 38736a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol multiplexer.updateRequest(1, request, &maximalRequestChanged); 38836a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_TRUE(maximalRequestChanged); 38936a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getRequests()[1].getPriority(), 20); 39036a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 20); 39136a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol } 39236a2039ea80015d6f38f538204b131da41b41e4cAndrew Rossignol} 393cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung 394cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan ChungTEST(RequestMultiplexer, RemoveAllRequestsEmpty) { 395cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung RequestMultiplexer<DummyRequest> multiplexer; 396cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung 397cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung bool maximalRequestChanged; 398cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung multiplexer.removeAllRequests(&maximalRequestChanged); 399cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung 400cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung EXPECT_FALSE(maximalRequestChanged); 401cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 0); 402cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung} 403cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung 404cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan ChungTEST(RequestMultiplexer, RemoveAllRequestsNonEmpty) { 405cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung RequestMultiplexer<DummyRequest> multiplexer; 406cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung size_t index; 407cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung 408cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung { 409cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung DummyRequest request(1); 410cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung bool maximalRequestChanged; 411cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung ASSERT_TRUE(multiplexer.addRequest(request, &index, 412cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung &maximalRequestChanged)); 413cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung } 414cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung 415cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung bool maximalRequestChanged; 416cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung multiplexer.removeAllRequests(&maximalRequestChanged); 417cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung 418cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung EXPECT_TRUE(maximalRequestChanged); 419cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung EXPECT_EQ(multiplexer.getCurrentMaximalRequest().getPriority(), 0); 420cea64a899fafc0e75dc0e63dbe699ca5679564adMeng-hsuan Chung} 421