~louis/ubuntu/trusty/clamav/lp799623_fix_logrotate

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/unittests/ADT/SmallBitVectorTest.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-03-12 11:30:04 UTC
  • mfrom: (0.41.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100312113004-b0fop4bkycszdd0z
Tags: 0.96~rc1+dfsg-0ubuntu1
* New upstream RC - FFE (LP: #537636):
  - Add OfficialDatabaseOnly option to clamav-base.postinst.in
  - Add LocalSocketGroup option to clamav-base.postinst.in
  - Add LocalSocketMode option to clamav-base.postinst.in
  - Add CrossFilesystems option to clamav-base.postinst.in
  - Add ClamukoScannerCount option to clamav-base.postinst.in
  - Add BytecodeSecurity opiton to clamav-base.postinst.in
  - Add DetectionStatsHostID option to clamav-freshclam.postinst.in
  - Add Bytecode option to clamav-freshclam.postinst.in
  - Add MilterSocketGroup option to clamav-milter.postinst.in
  - Add MilterSocketMode option to clamav-milter.postinst.in
  - Add ReportHostname option to clamav-milter.postinst.in
  - Bump libclamav SO version to 6.1.0 in libclamav6.install
  - Drop clamdmon from clamav.examples (no longer shipped by upstream)
  - Drop libclamav.a from libclamav-dev.install (not built by upstream)
  - Update SO version for lintian override for libclamav6
  - Add new Bytecode Testing Tool, usr/bin/clambc, to clamav.install
  - Add build-depends on python and python-setuptools for new test suite
  - Update debian/copyright for the embedded copy of llvm (using the system
    llvm is not currently feasible)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//===- llvm/unittest/ADT/SmallBitVectorTest.cpp - SmallBitVector tests ----===//
 
2
//
 
3
//                     The LLVM Compiler Infrastructure
 
4
//
 
5
// This file is distributed under the University of Illinois Open Source
 
6
// License. See LICENSE.TXT for details.
 
7
//
 
8
//===----------------------------------------------------------------------===//
 
9
 
 
10
#include "llvm/ADT/SmallBitVector.h"
 
11
#include "gtest/gtest.h"
 
12
 
 
13
using namespace llvm;
 
14
 
 
15
namespace {
 
16
 
 
17
TEST(SmallBitVectorTest, TrivialOperation) {
 
18
  SmallBitVector Vec;
 
19
  EXPECT_EQ(0U, Vec.count());
 
20
  EXPECT_EQ(0U, Vec.size());
 
21
  EXPECT_FALSE(Vec.any());
 
22
  EXPECT_TRUE(Vec.none());
 
23
  EXPECT_TRUE(Vec.empty());
 
24
 
 
25
  Vec.resize(5, true);
 
26
  EXPECT_EQ(5U, Vec.count());
 
27
  EXPECT_EQ(5U, Vec.size());
 
28
  EXPECT_TRUE(Vec.any());
 
29
  EXPECT_FALSE(Vec.none());
 
30
  EXPECT_FALSE(Vec.empty());
 
31
 
 
32
  Vec.resize(11);
 
33
  EXPECT_EQ(5U, Vec.count());
 
34
  EXPECT_EQ(11U, Vec.size());
 
35
  EXPECT_TRUE(Vec.any());
 
36
  EXPECT_FALSE(Vec.none());
 
37
  EXPECT_FALSE(Vec.empty());
 
38
 
 
39
  SmallBitVector Inv = ~Vec;
 
40
  EXPECT_EQ(6U, Inv.count());
 
41
  EXPECT_EQ(11U, Inv.size());
 
42
  EXPECT_TRUE(Inv.any());
 
43
  EXPECT_FALSE(Inv.none());
 
44
  EXPECT_FALSE(Inv.empty());
 
45
 
 
46
  EXPECT_FALSE(Inv == Vec);
 
47
  EXPECT_TRUE(Inv != Vec);
 
48
  Vec = ~Vec;
 
49
  EXPECT_TRUE(Inv == Vec);
 
50
  EXPECT_FALSE(Inv != Vec);
 
51
 
 
52
  // Add some "interesting" data to Vec.
 
53
  Vec.resize(23, true);
 
54
  Vec.resize(25, false);
 
55
  Vec.resize(26, true);
 
56
  Vec.resize(29, false);
 
57
  Vec.resize(33, true);
 
58
  Vec.resize(61, false);
 
59
  unsigned Count = 0;
 
60
  for (unsigned i = Vec.find_first(); i != -1u; i = Vec.find_next(i)) {
 
61
    ++Count;
 
62
    EXPECT_TRUE(Vec[i]);
 
63
    EXPECT_TRUE(Vec.test(i));
 
64
  }
 
65
  EXPECT_EQ(Count, Vec.count());
 
66
  EXPECT_EQ(Count, 23u);
 
67
  EXPECT_FALSE(Vec[0]);
 
68
  EXPECT_TRUE(Vec[32]);
 
69
  EXPECT_FALSE(Vec[60]);
 
70
 
 
71
  SmallBitVector Copy = Vec;
 
72
  SmallBitVector Alt(3, false);
 
73
  Alt.resize(6, true);
 
74
  std::swap(Alt, Vec);
 
75
  EXPECT_TRUE(Copy == Alt);
 
76
  EXPECT_TRUE(Vec.size() == 6);
 
77
  EXPECT_TRUE(Vec.count() == 3);
 
78
  EXPECT_TRUE(Vec.find_first() == 3);
 
79
  std::swap(Copy, Vec);
 
80
 
 
81
  // Add some more "interesting" data.
 
82
  Vec.resize(68, true);
 
83
  Vec.resize(78, false);
 
84
  Vec.resize(89, true);
 
85
  Vec.resize(90, false);
 
86
  Vec.resize(91, true);
 
87
  Vec.resize(130, false);
 
88
  Count = 0;
 
89
  for (unsigned i = Vec.find_first(); i != -1u; i = Vec.find_next(i)) {
 
90
    ++Count;
 
91
    EXPECT_TRUE(Vec[i]);
 
92
    EXPECT_TRUE(Vec.test(i));
 
93
  }
 
94
  EXPECT_EQ(Count, Vec.count());
 
95
  EXPECT_EQ(Count, 42u);
 
96
  EXPECT_FALSE(Vec[0]);
 
97
  EXPECT_TRUE(Vec[32]);
 
98
  EXPECT_FALSE(Vec[60]);
 
99
  EXPECT_FALSE(Vec[129]);
 
100
 
 
101
  Vec.flip(60);
 
102
  EXPECT_TRUE(Vec[60]);
 
103
  EXPECT_EQ(Count + 1, Vec.count());
 
104
  Vec.flip(60);
 
105
  EXPECT_FALSE(Vec[60]);
 
106
  EXPECT_EQ(Count, Vec.count());
 
107
 
 
108
  Vec.reset(32);
 
109
  EXPECT_FALSE(Vec[32]);
 
110
  EXPECT_EQ(Count - 1, Vec.count());
 
111
  Vec.set(32);
 
112
  EXPECT_TRUE(Vec[32]);
 
113
  EXPECT_EQ(Count, Vec.count());
 
114
 
 
115
  Vec.flip();
 
116
  EXPECT_EQ(Vec.size() - Count, Vec.count());
 
117
 
 
118
  Vec.reset();
 
119
  EXPECT_EQ(0U, Vec.count());
 
120
  EXPECT_EQ(130U, Vec.size());
 
121
  EXPECT_FALSE(Vec.any());
 
122
  EXPECT_TRUE(Vec.none());
 
123
  EXPECT_FALSE(Vec.empty());
 
124
 
 
125
  Inv = ~SmallBitVector();
 
126
  EXPECT_EQ(0U, Inv.count());
 
127
  EXPECT_EQ(0U, Inv.size());
 
128
  EXPECT_FALSE(Inv.any());
 
129
  EXPECT_TRUE(Inv.none());
 
130
  EXPECT_TRUE(Inv.empty());
 
131
 
 
132
  Vec.clear();
 
133
  EXPECT_EQ(0U, Vec.count());
 
134
  EXPECT_EQ(0U, Vec.size());
 
135
  EXPECT_FALSE(Vec.any());
 
136
  EXPECT_TRUE(Vec.none());
 
137
  EXPECT_TRUE(Vec.empty());
 
138
}
 
139
 
 
140
TEST(SmallBitVectorTest, CompoundAssignment) {
 
141
  SmallBitVector A;
 
142
  A.resize(10);
 
143
  A.set(4);
 
144
  A.set(7);
 
145
 
 
146
  SmallBitVector B;
 
147
  B.resize(50);
 
148
  B.set(5);
 
149
  B.set(18);
 
150
 
 
151
  A |= B;
 
152
  EXPECT_TRUE(A.test(4));
 
153
  EXPECT_TRUE(A.test(5));
 
154
  EXPECT_TRUE(A.test(7));
 
155
  EXPECT_TRUE(A.test(18));
 
156
  EXPECT_EQ(4U, A.count());
 
157
  EXPECT_EQ(50U, A.size());
 
158
 
 
159
  B.resize(10);
 
160
  B.set();
 
161
  B.reset(2);
 
162
  B.reset(7);
 
163
  A &= B;
 
164
  EXPECT_FALSE(A.test(2));
 
165
  EXPECT_FALSE(A.test(7));
 
166
  EXPECT_EQ(2U, A.count());
 
167
  EXPECT_EQ(50U, A.size());
 
168
 
 
169
  B.resize(100);
 
170
  B.set();
 
171
 
 
172
  A ^= B;
 
173
  EXPECT_TRUE(A.test(2));
 
174
  EXPECT_TRUE(A.test(7));
 
175
  EXPECT_EQ(98U, A.count());
 
176
  EXPECT_EQ(100U, A.size());
 
177
}
 
178
 
 
179
}