Index: ui/events/gesture_detection/bitset_32_unittest.cc |
diff --git a/ui/events/gesture_detection/bitset_32_unittest.cc b/ui/events/gesture_detection/bitset_32_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2e5d2711e02567d54aee2202639ee818bceb46be |
--- /dev/null |
+++ b/ui/events/gesture_detection/bitset_32_unittest.cc |
@@ -0,0 +1,100 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/basictypes.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "ui/events/gesture_detection/bitset_32.h" |
+ |
+namespace ui { |
+ |
+class BitSet32Test : public testing::Test {}; |
+ |
+TEST_F(BitSet32Test, Basic) { |
+ BitSet32 bits; |
+ |
+ // Test the empty set. |
+ EXPECT_EQ(0U, bits.count()); |
+ EXPECT_TRUE(bits.is_empty()); |
+ EXPECT_FALSE(bits.is_full()); |
+ EXPECT_FALSE(bits.has_bit(0)); |
+ EXPECT_FALSE(bits.has_bit(31)); |
+ |
+ // Mark the first bit. |
+ bits.mark_bit(0); |
+ EXPECT_EQ(1U, bits.count()); |
+ EXPECT_FALSE(bits.is_empty()); |
+ EXPECT_FALSE(bits.is_full()); |
+ EXPECT_TRUE(bits.has_bit(0)); |
+ EXPECT_FALSE(bits.has_bit(31)); |
+ EXPECT_EQ(0U, bits.first_marked_bit()); |
+ EXPECT_EQ(0U, bits.last_marked_bit()); |
+ EXPECT_EQ(1U, bits.first_unmarked_bit()); |
+ |
+ // Mark the last bit. |
+ bits.mark_bit(31); |
+ EXPECT_EQ(2U, bits.count()); |
+ EXPECT_FALSE(bits.is_empty()); |
+ EXPECT_FALSE(bits.is_full()); |
+ EXPECT_TRUE(bits.has_bit(0)); |
+ EXPECT_TRUE(bits.has_bit(31)); |
+ EXPECT_FALSE(bits.has_bit(15)); |
+ EXPECT_EQ(0U, bits.first_marked_bit()); |
+ EXPECT_EQ(31U, bits.last_marked_bit()); |
+ EXPECT_EQ(1U, bits.first_unmarked_bit()); |
+ EXPECT_EQ(0U, bits.get_index_of_bit(0)); |
+ EXPECT_EQ(1U, bits.get_index_of_bit(1)); |
+ EXPECT_EQ(1U, bits.get_index_of_bit(2)); |
+ EXPECT_EQ(1U, bits.get_index_of_bit(31)); |
+ |
+ // Clear the first bit. |
+ bits.clear_first_marked_bit(); |
+ EXPECT_EQ(1U, bits.count()); |
+ EXPECT_FALSE(bits.is_empty()); |
+ EXPECT_FALSE(bits.is_full()); |
+ EXPECT_FALSE(bits.has_bit(0)); |
+ EXPECT_TRUE(bits.has_bit(31)); |
+ EXPECT_EQ(31U, bits.first_marked_bit()); |
+ EXPECT_EQ(31U, bits.last_marked_bit()); |
+ EXPECT_EQ(0U, bits.first_unmarked_bit()); |
+ EXPECT_EQ(0U, bits.get_index_of_bit(0)); |
+ EXPECT_EQ(0U, bits.get_index_of_bit(1)); |
+ EXPECT_EQ(0U, bits.get_index_of_bit(31)); |
+ |
+ // Clear the last bit (the set should be empty). |
+ bits.clear_last_marked_bit(); |
+ EXPECT_EQ(0U, bits.count()); |
+ EXPECT_TRUE(bits.is_empty()); |
+ EXPECT_FALSE(bits.is_full()); |
+ EXPECT_FALSE(bits.has_bit(0)); |
+ EXPECT_FALSE(bits.has_bit(31)); |
+ EXPECT_EQ(0U, bits.get_index_of_bit(0)); |
+ EXPECT_EQ(0U, bits.get_index_of_bit(31)); |
+ EXPECT_EQ(BitSet32(), bits); |
+ |
+ // Mark the first unmarked bit (bit 0). |
+ bits.mark_first_unmarked_bit(); |
+ EXPECT_EQ(1U, bits.count()); |
+ EXPECT_FALSE(bits.is_empty()); |
+ EXPECT_FALSE(bits.is_full()); |
+ EXPECT_TRUE(bits.has_bit(0)); |
+ EXPECT_EQ(0U, bits.first_marked_bit()); |
+ EXPECT_EQ(0U, bits.last_marked_bit()); |
+ EXPECT_EQ(1U, bits.first_unmarked_bit()); |
+ |
+ // Mark the next unmarked bit (bit 1). |
+ bits.mark_first_unmarked_bit(); |
+ EXPECT_EQ(2U, bits.count()); |
+ EXPECT_FALSE(bits.is_empty()); |
+ EXPECT_FALSE(bits.is_full()); |
+ EXPECT_TRUE(bits.has_bit(0)); |
+ EXPECT_TRUE(bits.has_bit(1)); |
+ EXPECT_EQ(0U, bits.first_marked_bit()); |
+ EXPECT_EQ(1U, bits.last_marked_bit()); |
+ EXPECT_EQ(2U, bits.first_unmarked_bit()); |
+ EXPECT_EQ(0U, bits.get_index_of_bit(0)); |
+ EXPECT_EQ(1U, bits.get_index_of_bit(1)); |
+ EXPECT_EQ(2U, bits.get_index_of_bit(2)); |
+} |
+ |
+} // namespace ui |