bitset_32_unittest.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/basictypes.h" 6#include "testing/gtest/include/gtest/gtest.h" 7#include "ui/events/gesture_detection/bitset_32.h" 8 9namespace ui { 10 11class BitSet32Test : public testing::Test {}; 12 13TEST_F(BitSet32Test, Basic) { 14 BitSet32 bits; 15 16 // Test the empty set. 17 EXPECT_EQ(0U, bits.count()); 18 EXPECT_TRUE(bits.is_empty()); 19 EXPECT_FALSE(bits.is_full()); 20 EXPECT_FALSE(bits.has_bit(0)); 21 EXPECT_FALSE(bits.has_bit(31)); 22 23 // Mark the first bit. 24 bits.mark_bit(0); 25 EXPECT_EQ(1U, bits.count()); 26 EXPECT_FALSE(bits.is_empty()); 27 EXPECT_FALSE(bits.is_full()); 28 EXPECT_TRUE(bits.has_bit(0)); 29 EXPECT_FALSE(bits.has_bit(31)); 30 EXPECT_EQ(0U, bits.first_marked_bit()); 31 EXPECT_EQ(0U, bits.last_marked_bit()); 32 EXPECT_EQ(1U, bits.first_unmarked_bit()); 33 34 // Mark the last bit. 35 bits.mark_bit(31); 36 EXPECT_EQ(2U, bits.count()); 37 EXPECT_FALSE(bits.is_empty()); 38 EXPECT_FALSE(bits.is_full()); 39 EXPECT_TRUE(bits.has_bit(0)); 40 EXPECT_TRUE(bits.has_bit(31)); 41 EXPECT_FALSE(bits.has_bit(15)); 42 EXPECT_EQ(0U, bits.first_marked_bit()); 43 EXPECT_EQ(31U, bits.last_marked_bit()); 44 EXPECT_EQ(1U, bits.first_unmarked_bit()); 45 EXPECT_EQ(0U, bits.get_index_of_bit(0)); 46 EXPECT_EQ(1U, bits.get_index_of_bit(1)); 47 EXPECT_EQ(1U, bits.get_index_of_bit(2)); 48 EXPECT_EQ(1U, bits.get_index_of_bit(31)); 49 50 // Clear the first bit. 51 bits.clear_first_marked_bit(); 52 EXPECT_EQ(1U, bits.count()); 53 EXPECT_FALSE(bits.is_empty()); 54 EXPECT_FALSE(bits.is_full()); 55 EXPECT_FALSE(bits.has_bit(0)); 56 EXPECT_TRUE(bits.has_bit(31)); 57 EXPECT_EQ(31U, bits.first_marked_bit()); 58 EXPECT_EQ(31U, bits.last_marked_bit()); 59 EXPECT_EQ(0U, bits.first_unmarked_bit()); 60 EXPECT_EQ(0U, bits.get_index_of_bit(0)); 61 EXPECT_EQ(0U, bits.get_index_of_bit(1)); 62 EXPECT_EQ(0U, bits.get_index_of_bit(31)); 63 64 // Clear the last bit (the set should be empty). 65 bits.clear_last_marked_bit(); 66 EXPECT_EQ(0U, bits.count()); 67 EXPECT_TRUE(bits.is_empty()); 68 EXPECT_FALSE(bits.is_full()); 69 EXPECT_FALSE(bits.has_bit(0)); 70 EXPECT_FALSE(bits.has_bit(31)); 71 EXPECT_EQ(0U, bits.get_index_of_bit(0)); 72 EXPECT_EQ(0U, bits.get_index_of_bit(31)); 73 EXPECT_EQ(BitSet32(), bits); 74 75 // Mark the first unmarked bit (bit 0). 76 bits.mark_first_unmarked_bit(); 77 EXPECT_EQ(1U, bits.count()); 78 EXPECT_FALSE(bits.is_empty()); 79 EXPECT_FALSE(bits.is_full()); 80 EXPECT_TRUE(bits.has_bit(0)); 81 EXPECT_EQ(0U, bits.first_marked_bit()); 82 EXPECT_EQ(0U, bits.last_marked_bit()); 83 EXPECT_EQ(1U, bits.first_unmarked_bit()); 84 85 // Mark the next unmarked bit (bit 1). 86 bits.mark_first_unmarked_bit(); 87 EXPECT_EQ(2U, bits.count()); 88 EXPECT_FALSE(bits.is_empty()); 89 EXPECT_FALSE(bits.is_full()); 90 EXPECT_TRUE(bits.has_bit(0)); 91 EXPECT_TRUE(bits.has_bit(1)); 92 EXPECT_EQ(0U, bits.first_marked_bit()); 93 EXPECT_EQ(1U, bits.last_marked_bit()); 94 EXPECT_EQ(2U, bits.first_unmarked_bit()); 95 EXPECT_EQ(0U, bits.get_index_of_bit(0)); 96 EXPECT_EQ(1U, bits.get_index_of_bit(1)); 97 EXPECT_EQ(2U, bits.get_index_of_bit(2)); 98} 99 100} // namespace ui 101