BitSetTest.cpp revision e4fafb146e85cdfcf9d5418597b6818aa0754ada
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc.
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
7e4fafb146e85cdfcf9d5418597b6818aa0754adatfarina@chromium.org
8d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org#include "Test.h"
9e4fafb146e85cdfcf9d5418597b6818aa0754adatfarina@chromium.org#include "TestClassDef.h"
10d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org#include "SkBitSet.h"
11d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org
12e4fafb146e85cdfcf9d5418597b6818aa0754adatfarina@chromium.orgDEF_TEST(BitSet, reporter) {
13d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    SkBitSet set0(65536);
14d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(0) == false);
15d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(32767) == false);
16d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(65535) == false);
17d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org
18d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    SkBitSet set1(65536);
19d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0 == set1);
20d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org
21d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set0.setBit(22, true);
22d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(22) == true);
23d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set0.setBit(24, true);
24d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(24) == true);
25d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set0.setBit(35, true);  // on a different DWORD
26d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(35) == true);
27d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set0.setBit(22, false);
28d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(22) == false);
29d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(24) == true);
30d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(35) == true);
31d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org
3217e66e2d341ab684eec7841fd383af85bb4aa625vandebo@chromium.org    SkTDArray<unsigned int> data;
3317e66e2d341ab684eec7841fd383af85bb4aa625vandebo@chromium.org    set0.exportTo(&data);
3417e66e2d341ab684eec7841fd383af85bb4aa625vandebo@chromium.org    REPORTER_ASSERT(reporter, data.count() == 2);
3517e66e2d341ab684eec7841fd383af85bb4aa625vandebo@chromium.org    REPORTER_ASSERT(reporter, data[0] == 24);
3617e66e2d341ab684eec7841fd383af85bb4aa625vandebo@chromium.org    REPORTER_ASSERT(reporter, data[1] == 35);
3717e66e2d341ab684eec7841fd383af85bb4aa625vandebo@chromium.org
38d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set1.setBit(12345, true);
39d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set1.orBits(set0);
40d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(12345) == false);
41d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set1.isBitSet(12345) == true);
42d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set1.isBitSet(22) == false);
43d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set1.isBitSet(24) == true);
44d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(35) == true);
45d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set1 != set0);
46d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org
47d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set1.clearAll();
48d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set0.isBitSet(12345) == false);
49d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set1.isBitSet(12345) == false);
50d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set1.isBitSet(22) == false);
51d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set1.isBitSet(24) == false);
52d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set1.isBitSet(35) == false);
53d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org
54d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set1.orBits(set0);
55d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set1 == set0);
56d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org
57d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    SkBitSet set2(1);
58d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    SkBitSet set3(1);
59d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    SkBitSet set4(4);
60d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    SkBitSet set5(33);
61d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org
62d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set2 == set3);
63d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set2 != set4);
64d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set2 != set5);
65d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org
66d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set2.setBit(0, true);
67d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set2 != set5);
68d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set5.setBit(0, true);
69d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set2 != set5);
70d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set2 != set3);
71d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set3.setBit(0, true);
72d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set2 == set3);
73d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set3.clearAll();
74d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set3 = set2;
75d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    set2 = set2;
76d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org    REPORTER_ASSERT(reporter, set2 == set3);
77d3a8c94dfdabb333b12da3ff796d1f558cb06fbavandebo@chromium.org}
78