~ubuntu-branches/ubuntu/maverick/clamav/maverick-backports

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Stephen Gran, Stephen Gran, Michael Tautschnig
  • Date: 2010-04-26 21:41:18 UTC
  • mfrom: (2.1.6 squeeze)
  • Revision ID: james.westby@ubuntu.com-20100426214118-i6lo606wnh7ywfj6
Tags: 0.96+dfsg-4
[ Stephen Gran ]
* Fixed typo in clamav-milter's postinst

[ Michael Tautschnig ]
* Fixed typo in clamav-freshclam's postinst (closes: #579271)
* Debconf translation updates
  - Portuguese (closes: #579068)

Show diffs side-by-side

added added

removed removed

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