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