10e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz/* 20e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * Copyright (C) 2017 The Android Open Source Project 30e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * 40e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * Licensed under the Apache License, Version 2.0 (the "License"); 50e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * you may not use this file except in compliance with the License. 60e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * You may obtain a copy of the License at 70e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * 80e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * http://www.apache.org/licenses/LICENSE-2.0 90e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * 100e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * Unless required by applicable law or agreed to in writing, software 110e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * distributed under the License is distributed on an "AS IS" BASIS, 120e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * See the License for the specific language governing permissions and 140e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz * limitations under the License. 150e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz */ 160e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 179fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onorato#include "src/anomaly/indexed_priority_queue.h" 180e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 190e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz#include <gtest/gtest.h> 200e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 21b487b5533eba8635232009c7f32a54a0380a532dBookatzusing namespace android::os::statsd; 220e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 230e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz/** struct for template in indexed_priority_queue */ 240e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatzstruct AATest : public RefBase { 25e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac AATest(uint32_t val, std::string a, std::string b) : val(val), a(a), b(b) { 260e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz } 270e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 280e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz const int val; 29e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac const std::string a; 30e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac const std::string b; 310e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 320e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz struct Smaller { 330e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz bool operator()(const sp<const AATest> a, const sp<const AATest> b) const { 340e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz return (a->val < b->val); 350e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz } 360e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz }; 370e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz}; 380e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 390e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz#ifdef __ANDROID__ 400e95909ef0b2aac44f305551ea2aa03209b1eec0BookatzTEST(indexed_priority_queue, empty_and_size) { 41e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyMetricId; 42e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyDimensionId; 430e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz indexed_priority_queue<AATest, AATest::Smaller> ipq; 44e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa4 = new AATest{4, emptyMetricId, emptyDimensionId}; 45e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa8 = new AATest{8, emptyMetricId, emptyDimensionId}; 460e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 470e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(0u, ipq.size()); 480e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.empty()); 490e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 500e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa4); 510e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(1u, ipq.size()); 520e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.empty()); 530e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 540e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa8); 550e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(2u, ipq.size()); 560e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.empty()); 570e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 580e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(aa4); 590e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(1u, ipq.size()); 600e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.empty()); 610e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 620e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(aa8); 630e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(0u, ipq.size()); 640e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.empty()); 650e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz} 660e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 670e95909ef0b2aac44f305551ea2aa03209b1eec0BookatzTEST(indexed_priority_queue, top) { 68e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyMetricId; 69e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyDimensionId; 700e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz indexed_priority_queue<AATest, AATest::Smaller> ipq; 71e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa2 = new AATest{2, emptyMetricId, emptyDimensionId}; 72e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa4 = new AATest{4, emptyMetricId, emptyDimensionId}; 73e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa8 = new AATest{8, emptyMetricId, emptyDimensionId}; 74e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa12 = new AATest{12, emptyMetricId, emptyDimensionId}; 75e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa16 = new AATest{16, emptyMetricId, emptyDimensionId}; 76e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa20 = new AATest{20, emptyMetricId, emptyDimensionId}; 770e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 780e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), nullptr); 790e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 800e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz // add 8, 4, 12 810e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa8); 820e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), aa8); 830e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 840e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa12); 850e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), aa8); 860e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 870e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa4); 880e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), aa4); 890e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 900e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz // remove 12, 4 910e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(aa12); 920e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), aa4); 930e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 940e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(aa4); 950e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), aa8); 960e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 970e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz // add 16, 2, 20 980e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa16); 990e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), aa8); 1000e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1010e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa2); 1020e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), aa2); 1030e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1040e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa20); 1050e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), aa2); 1060e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1070e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz // remove 2, 20, 16, 8 1080e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(aa2); 1090e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), aa8); 1100e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1110e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(aa20); 1120e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), aa8); 1130e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1140e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(aa16); 1150e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), aa8); 1160e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1170e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(aa8); 1180e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(ipq.top(), nullptr); 1190e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz} 1200e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1210e95909ef0b2aac44f305551ea2aa03209b1eec0BookatzTEST(indexed_priority_queue, push_same_aa) { 122e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyMetricId; 123e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyDimensionId; 1240e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz indexed_priority_queue<AATest, AATest::Smaller> ipq; 125e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa4_a = new AATest{4, emptyMetricId, emptyDimensionId}; 126e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa4_b = new AATest{4, emptyMetricId, emptyDimensionId}; 1270e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1280e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa4_a); 1290e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(1u, ipq.size()); 1300e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.contains(aa4_a)); 1310e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.contains(aa4_b)); 1320e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1330e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa4_a); 1340e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(1u, ipq.size()); 1350e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.contains(aa4_a)); 1360e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.contains(aa4_b)); 1370e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1380e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa4_b); 1390e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(2u, ipq.size()); 1400e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.contains(aa4_a)); 1410e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.contains(aa4_b)); 1420e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz} 1430e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1440e95909ef0b2aac44f305551ea2aa03209b1eec0BookatzTEST(indexed_priority_queue, remove_nonexistant) { 145e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyMetricId; 146e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyDimensionId; 1470e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz indexed_priority_queue<AATest, AATest::Smaller> ipq; 148e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa4 = new AATest{4, emptyMetricId, emptyDimensionId}; 149e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa5 = new AATest{5, emptyMetricId, emptyDimensionId}; 1500e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1510e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa4); 1520e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(aa5); 1530e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(1u, ipq.size()); 1540e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.contains(aa4)); 1550e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.contains(aa5)); 1560e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz} 1570e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1580e95909ef0b2aac44f305551ea2aa03209b1eec0BookatzTEST(indexed_priority_queue, remove_same_aa) { 1590e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz indexed_priority_queue<AATest, AATest::Smaller> ipq; 160e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyMetricId; 161e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyDimensionId; 162e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa4_a = new AATest{4, emptyMetricId, emptyDimensionId}; 163e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> aa4_b = new AATest{4, emptyMetricId, emptyDimensionId}; 1640e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1650e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa4_a); 1660e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(aa4_b); 1670e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(2u, ipq.size()); 1680e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.contains(aa4_a)); 1690e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.contains(aa4_b)); 1700e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1710e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(aa4_b); 1720e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(1u, ipq.size()); 1730e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.contains(aa4_a)); 1740e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.contains(aa4_b)); 1750e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1760e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(aa4_a); 1770e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_EQ(0u, ipq.size()); 1780e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.contains(aa4_a)); 1790e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.contains(aa4_b)); 1800e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz} 1810e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1820e95909ef0b2aac44f305551ea2aa03209b1eec0BookatzTEST(indexed_priority_queue, nulls) { 1830e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz indexed_priority_queue<AATest, AATest::Smaller> ipq; 1840e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1850e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.empty()); 1860e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.contains(nullptr)); 1870e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1880e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.push(nullptr); 1890e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.empty()); 1900e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.contains(nullptr)); 1910e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 1920e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz ipq.remove(nullptr); 1930e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_TRUE(ipq.empty()); 1940e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz EXPECT_FALSE(ipq.contains(nullptr)); 1950e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz} 1960e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz 197ece5f705d59c6b73005edc7eeaa6953482f7c6f0BookatzTEST(indexed_priority_queue, pop) { 198ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz indexed_priority_queue<AATest, AATest::Smaller> ipq; 199e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyMetricId; 200e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac std::string emptyDimensionId; 201e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> a = new AATest{1, emptyMetricId, emptyDimensionId}; 202e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> b = new AATest{2, emptyMetricId, emptyDimensionId}; 203e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3Yangster-mac sp<const AATest> c = new AATest{3, emptyMetricId, emptyDimensionId}; 204ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz 205ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz ipq.push(c); 206ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz ipq.push(b); 207ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz ipq.push(a); 208ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_EQ(3u, ipq.size()); 209ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz 210ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz ipq.pop(); 211ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_EQ(2u, ipq.size()); 212ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_FALSE(ipq.contains(a)); 213ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_TRUE(ipq.contains(b)); 214ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_TRUE(ipq.contains(c)); 215ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz 216ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz ipq.pop(); 217ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_EQ(1u, ipq.size()); 218ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_FALSE(ipq.contains(a)); 219ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_FALSE(ipq.contains(b)); 220ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_TRUE(ipq.contains(c)); 221ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz 222ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz ipq.pop(); 223ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_EQ(0u, ipq.size()); 224ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_FALSE(ipq.contains(a)); 225ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_FALSE(ipq.contains(b)); 226ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_FALSE(ipq.contains(c)); 227ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_TRUE(ipq.empty()); 228ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz 229ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz ipq.pop(); // pop an empty queue 230ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz EXPECT_TRUE(ipq.empty()); 231ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz} 232ece5f705d59c6b73005edc7eeaa6953482f7c6f0Bookatz 2330e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz#else 2340e95909ef0b2aac44f305551ea2aa03209b1eec0BookatzGTEST_LOG_(INFO) << "This test does nothing.\n"; 2350e95909ef0b2aac44f305551ea2aa03209b1eec0Bookatz#endif 236