1413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom/* 2413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * Copyright (C) 2013 The Android Open Source Project 3413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * 4413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License"); 5413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * you may not use this file except in compliance with the License. 6413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * You may obtain a copy of the License at 7413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * 8413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * http://www.apache.org/licenses/LICENSE-2.0 9413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * 10413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * Unless required by applicable law or agreed to in writing, software 11413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS, 12413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * See the License for the specific language governing permissions and 14413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom * limitations under the License. 15413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom */ 16413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 17700a402244a1a423da4f3ba8032459f4b65fa18fIan Rogers#include <memory> 18700a402244a1a423da4f3ba8032459f4b65fa18fIan Rogers 19e77493c7217efdd1a0ecef521a6845a13da0305bIan Rogers#include "allocator.h" 20e77493c7217efdd1a0ecef521a6845a13da0305bIan Rogers#include "bit_vector-inl.h" 21ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom#include "gtest/gtest.h" 22413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 23413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstromnamespace art { 24413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 25413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian CarlstromTEST(BitVector, Test) { 26413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom const size_t kBits = 32; 27413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 28413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom BitVector bv(kBits, false, Allocator::GetMallocAllocator()); 29413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(1U, bv.GetStorageSize()); 30ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers EXPECT_EQ(sizeof(uint32_t), bv.GetSizeOf()); 31413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_FALSE(bv.IsExpandable()); 32413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 33ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(0U, bv.NumSetBits()); 34d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(0U, bv.NumSetBits(1)); 35d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(0U, bv.NumSetBits(kBits)); 36413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom for (size_t i = 0; i < kBits; i++) { 37413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_FALSE(bv.IsBitSet(i)); 38413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom } 39413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0U, bv.GetRawStorageWord(0)); 40413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0U, *bv.GetRawStorage()); 41413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 42a5b8fde2d2bc3167078694fad417fddfe442a6fdVladimir Marko EXPECT_TRUE(bv.Indexes().begin().Done()); 43a5b8fde2d2bc3167078694fad417fddfe442a6fdVladimir Marko EXPECT_TRUE(bv.Indexes().begin() == bv.Indexes().end()); 44413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 45413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom bv.SetBit(0); 46413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom bv.SetBit(kBits - 1); 47ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(2U, bv.NumSetBits()); 48d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(1U, bv.NumSetBits(1)); 49d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(2U, bv.NumSetBits(kBits)); 50413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_TRUE(bv.IsBitSet(0)); 51413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom for (size_t i = 1; i < kBits - 1; i++) { 52413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_FALSE(bv.IsBitSet(i)); 53413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom } 54413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_TRUE(bv.IsBitSet(kBits - 1)); 55413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0x80000001U, bv.GetRawStorageWord(0)); 56413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0x80000001U, *bv.GetRawStorage()); 57413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 58a5b8fde2d2bc3167078694fad417fddfe442a6fdVladimir Marko BitVector::IndexIterator iterator = bv.Indexes().begin(); 59a5b8fde2d2bc3167078694fad417fddfe442a6fdVladimir Marko EXPECT_TRUE(iterator != bv.Indexes().end()); 60040719630f33019693b5c4d9b573311b2f935c39Vladimir Marko EXPECT_EQ(0u, *iterator); 61a5b8fde2d2bc3167078694fad417fddfe442a6fdVladimir Marko ++iterator; 62a5b8fde2d2bc3167078694fad417fddfe442a6fdVladimir Marko EXPECT_TRUE(iterator != bv.Indexes().end()); 63040719630f33019693b5c4d9b573311b2f935c39Vladimir Marko EXPECT_EQ(kBits - 1u, *iterator); 64a5b8fde2d2bc3167078694fad417fddfe442a6fdVladimir Marko ++iterator; 65a5b8fde2d2bc3167078694fad417fddfe442a6fdVladimir Marko EXPECT_TRUE(iterator == bv.Indexes().end()); 66413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom} 67413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 68413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian CarlstromTEST(BitVector, NoopAllocator) { 69413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom const uint32_t kWords = 2; 70413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 71413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom uint32_t bits[kWords]; 72413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom memset(bits, 0, sizeof(bits)); 73413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 74f695a009725c8c840d916d01c14998f5c5f816d2Andreas Gampe BitVector bv(false, Allocator::GetNoopAllocator(), kWords, bits); 75413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(kWords, bv.GetStorageSize()); 76ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers EXPECT_EQ(kWords * sizeof(uint32_t), bv.GetSizeOf()); 77413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(bits, bv.GetRawStorage()); 78ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(0U, bv.NumSetBits()); 79413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 80413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom bv.SetBit(8); 81ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(1U, bv.NumSetBits()); 82413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0x00000100U, bv.GetRawStorageWord(0)); 83413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0x00000000U, bv.GetRawStorageWord(1)); 84ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(1U, bv.NumSetBits()); 85413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 86413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom bv.SetBit(16); 87ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(2U, bv.NumSetBits()); 88413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0x00010100U, bv.GetRawStorageWord(0)); 89413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0x00000000U, bv.GetRawStorageWord(1)); 90ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(2U, bv.NumSetBits()); 91413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 92413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom bv.SetBit(32); 93ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(3U, bv.NumSetBits()); 94413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0x00010100U, bv.GetRawStorageWord(0)); 95413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0x00000001U, bv.GetRawStorageWord(1)); 96ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(3U, bv.NumSetBits()); 97413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 98413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom bv.SetBit(48); 99ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(4U, bv.NumSetBits()); 100413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0x00010100U, bv.GetRawStorageWord(0)); 101413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom EXPECT_EQ(0x00010001U, bv.GetRawStorageWord(1)); 102ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(4U, bv.NumSetBits()); 103ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom 104d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(0U, bv.NumSetBits(1)); 105ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom 106d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(0U, bv.NumSetBits(8)); 107ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(1U, bv.NumSetBits(9)); 108d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(1U, bv.NumSetBits(10)); 109ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom 110d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(1U, bv.NumSetBits(16)); 111ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(2U, bv.NumSetBits(17)); 112d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(2U, bv.NumSetBits(18)); 113ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom 114d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(2U, bv.NumSetBits(32)); 115ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(3U, bv.NumSetBits(33)); 116d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(3U, bv.NumSetBits(34)); 117ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom 118d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(3U, bv.NumSetBits(48)); 119ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom EXPECT_EQ(4U, bv.NumSetBits(49)); 120d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(4U, bv.NumSetBits(50)); 121ba150c37d582eeeb8c11ba5245edc281cf31793cBrian Carlstrom 122d3c5bebcb52a67cb06e7ab303eaf45f230c08b60Vladimir Marko EXPECT_EQ(4U, bv.NumSetBits(64)); 123413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom} 124413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom 1254812d436ebf538043a7827253b2e940a52a43fcbVladimir MarkoTEST(BitVector, SetInitialBits) { 1264812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko const uint32_t kWords = 2; 1274812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko 1284812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko uint32_t bits[kWords]; 1294812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko memset(bits, 0, sizeof(bits)); 1304812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko 131f695a009725c8c840d916d01c14998f5c5f816d2Andreas Gampe BitVector bv(false, Allocator::GetNoopAllocator(), kWords, bits); 1324812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko bv.SetInitialBits(0u); 1334812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko EXPECT_EQ(0u, bv.NumSetBits()); 1344812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko bv.SetInitialBits(1u); 1354812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko EXPECT_EQ(1u, bv.NumSetBits()); 1364812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko bv.SetInitialBits(32u); 1374812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko EXPECT_EQ(32u, bv.NumSetBits()); 1384812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko bv.SetInitialBits(63u); 1394812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko EXPECT_EQ(63u, bv.NumSetBits()); 1404812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko bv.SetInitialBits(64u); 1414812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko EXPECT_EQ(64u, bv.NumSetBits()); 1424812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko} 1434812d436ebf538043a7827253b2e940a52a43fcbVladimir Marko 144b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas GeoffrayTEST(BitVector, UnionIfNotIn) { 145b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray { 146b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray BitVector first(2, true, Allocator::GetMallocAllocator()); 147b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray BitVector second(5, true, Allocator::GetMallocAllocator()); 148b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray BitVector third(5, true, Allocator::GetMallocAllocator()); 149b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray 150b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray second.SetBit(64); 151b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray third.SetBit(64); 152b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray bool changed = first.UnionIfNotIn(&second, &third); 153b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray EXPECT_EQ(0u, first.NumSetBits()); 154b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray EXPECT_FALSE(changed); 155b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray } 156b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray 157b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray { 158b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray BitVector first(2, true, Allocator::GetMallocAllocator()); 159b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray BitVector second(5, true, Allocator::GetMallocAllocator()); 160b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray BitVector third(5, true, Allocator::GetMallocAllocator()); 161b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray 162b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray second.SetBit(64); 163b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray bool changed = first.UnionIfNotIn(&second, &third); 164b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray EXPECT_EQ(1u, first.NumSetBits()); 165b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray EXPECT_TRUE(changed); 166b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray EXPECT_TRUE(first.IsBitSet(64)); 167b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray } 168b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray} 169b556761d14e8dd0d41f1cc0f7d19726fe3497e8fNicolas Geoffray 1707d275379bf490a87805852129e3fe2e8afe961e7David BrazdilTEST(BitVector, Subset) { 1717d275379bf490a87805852129e3fe2e8afe961e7David Brazdil { 1727d275379bf490a87805852129e3fe2e8afe961e7David Brazdil BitVector first(2, true, Allocator::GetMallocAllocator()); 1737d275379bf490a87805852129e3fe2e8afe961e7David Brazdil BitVector second(5, true, Allocator::GetMallocAllocator()); 1747d275379bf490a87805852129e3fe2e8afe961e7David Brazdil 1757d275379bf490a87805852129e3fe2e8afe961e7David Brazdil EXPECT_TRUE(first.IsSubsetOf(&second)); 1767d275379bf490a87805852129e3fe2e8afe961e7David Brazdil second.SetBit(4); 1777d275379bf490a87805852129e3fe2e8afe961e7David Brazdil EXPECT_TRUE(first.IsSubsetOf(&second)); 1787d275379bf490a87805852129e3fe2e8afe961e7David Brazdil } 1797d275379bf490a87805852129e3fe2e8afe961e7David Brazdil 1807d275379bf490a87805852129e3fe2e8afe961e7David Brazdil { 1817d275379bf490a87805852129e3fe2e8afe961e7David Brazdil BitVector first(5, true, Allocator::GetMallocAllocator()); 1827d275379bf490a87805852129e3fe2e8afe961e7David Brazdil BitVector second(5, true, Allocator::GetMallocAllocator()); 1837d275379bf490a87805852129e3fe2e8afe961e7David Brazdil 1847d275379bf490a87805852129e3fe2e8afe961e7David Brazdil first.SetBit(5); 1857d275379bf490a87805852129e3fe2e8afe961e7David Brazdil EXPECT_FALSE(first.IsSubsetOf(&second)); 1867d275379bf490a87805852129e3fe2e8afe961e7David Brazdil second.SetBit(4); 1877d275379bf490a87805852129e3fe2e8afe961e7David Brazdil EXPECT_FALSE(first.IsSubsetOf(&second)); 1887d275379bf490a87805852129e3fe2e8afe961e7David Brazdil } 1897d275379bf490a87805852129e3fe2e8afe961e7David Brazdil 1907d275379bf490a87805852129e3fe2e8afe961e7David Brazdil { 1917d275379bf490a87805852129e3fe2e8afe961e7David Brazdil BitVector first(5, true, Allocator::GetMallocAllocator()); 1927d275379bf490a87805852129e3fe2e8afe961e7David Brazdil BitVector second(5, true, Allocator::GetMallocAllocator()); 1937d275379bf490a87805852129e3fe2e8afe961e7David Brazdil 1947d275379bf490a87805852129e3fe2e8afe961e7David Brazdil first.SetBit(16); 1957d275379bf490a87805852129e3fe2e8afe961e7David Brazdil first.SetBit(32); 1967d275379bf490a87805852129e3fe2e8afe961e7David Brazdil first.SetBit(48); 1977d275379bf490a87805852129e3fe2e8afe961e7David Brazdil second.SetBit(16); 1987d275379bf490a87805852129e3fe2e8afe961e7David Brazdil second.SetBit(32); 1997d275379bf490a87805852129e3fe2e8afe961e7David Brazdil second.SetBit(48); 2007d275379bf490a87805852129e3fe2e8afe961e7David Brazdil 2017d275379bf490a87805852129e3fe2e8afe961e7David Brazdil EXPECT_TRUE(first.IsSubsetOf(&second)); 2027d275379bf490a87805852129e3fe2e8afe961e7David Brazdil second.SetBit(8); 2037d275379bf490a87805852129e3fe2e8afe961e7David Brazdil EXPECT_TRUE(first.IsSubsetOf(&second)); 2047d275379bf490a87805852129e3fe2e8afe961e7David Brazdil second.SetBit(40); 2057d275379bf490a87805852129e3fe2e8afe961e7David Brazdil EXPECT_TRUE(first.IsSubsetOf(&second)); 2067d275379bf490a87805852129e3fe2e8afe961e7David Brazdil second.SetBit(52); 2077d275379bf490a87805852129e3fe2e8afe961e7David Brazdil EXPECT_TRUE(first.IsSubsetOf(&second)); 2087d275379bf490a87805852129e3fe2e8afe961e7David Brazdil 2097d275379bf490a87805852129e3fe2e8afe961e7David Brazdil first.SetBit(9); 2107d275379bf490a87805852129e3fe2e8afe961e7David Brazdil EXPECT_FALSE(first.IsSubsetOf(&second)); 2117d275379bf490a87805852129e3fe2e8afe961e7David Brazdil } 2127d275379bf490a87805852129e3fe2e8afe961e7David Brazdil} 2137d275379bf490a87805852129e3fe2e8afe961e7David Brazdil 214413e89f277ec6ba1bdf2040f5b5611f29a27a447Brian Carlstrom} // namespace art 215