27 std::locale::global(std::locale(
""));
44 int factor_limit =
static_cast<int>(sqrt(1.0 +
kPrimeLimit));
45 for (
int f = 3; f <= factor_limit; f += 2) {
71 for (
int i = 0;
i < map.
size(); ++
i) {
80 bv->
Init((end_byte - start_byte) * 8 * spacing);
81 for (
int byte_value = start_byte; byte_value < end_byte; ++byte_value) {
82 for (
int bit = 0; bit < 8; ++bit) {
83 if (byte_value & (1 << bit)) {
84 bv->
SetBit((byte_value - start_byte) * 8 * spacing + bit);
94 int prev_bit_index = -1;
95 int num_bits_tested = 0;
96 while ((bit_index = bv.
NextSetBit(bit_index)) >= 0) {
99 for (
int i = prev_bit_index + 1;
i < bit_index; ++
i) {
100 EXPECT_EQ(0, bv[
i]) <<
"i = " <<
i <<
" prev = " << prev_bit_index;
103 EXPECT_EQ(1, bv[bit_index]) <<
"Bit index = " << bit_index;
105 prev_bit_index = bit_index;
108 for (
int i = prev_bit_index + 1;
i < bv.
size(); ++
i) {
128 std::string filename = OutputNameToPath(
"primesbitvector");
129 FILE *fp = fopen(filename.c_str(),
"wb");
133 fp = fopen(filename.c_str(),
"rb");
138 TestPrimes(read_map);
157 for (
int spacing = 1; spacing <= 5; ++spacing) {
158 SetBitPattern(0, 256, spacing, &bv);
159 ExpectCorrectBits(bv);
167 for (
int byte = 0;
byte < 256; ++byte) {
168 SetBitPattern(
byte,
byte + 1, 1, &bv);
169 ExpectCorrectBits(bv);
#define EXPECT_EQ(val1, val2)
#define EXPECT_TRUE(condition)
#define ASSERT_TRUE(condition)
#define EXPECT_FALSE(condition)
#define EXPECT_LT(val1, val2)
TEST_F(EuroText, FastLatinOCR)
void SetValue(int index, bool value)
bool DeSerialize(bool swap, FILE *fp)
int NextSetBit(int prev_bit) const
bool Serialize(FILE *fp) const
std::string OutputNameToPath(const std::string &name)
void ComputePrimes(BitVector *map)
void TestPrimes(const BitVector &map)
void TestAll(const BitVector &map, bool value)
void ExpectCorrectBits(const BitVector &bv)
void SetBitPattern(int start_byte, int end_byte, int spacing, BitVector *bv)
static std::string JoinPath(const std::string &s1, const std::string &s2)