1818
1919#include < fstream>
2020#include < iostream>
21- #include < vector>
2221
2322#include " Firestore/core/src/util/hard_assert.h"
2423#include " Firestore/core/src/util/json_reader.h"
@@ -31,39 +30,40 @@ namespace firestore {
3130namespace remote {
3231namespace {
3332
33+ using nanopb::ByteString;
3434using nlohmann::json;
3535using util::JsonReader;
3636using util::Path;
3737using util::Status;
3838using util::StatusOr;
3939
4040TEST (BloomFilterUnitTest, CanInstantiateEmptyBloomFilter) {
41- BloomFilter bloom_filter (std::vector< uint8_t > {}, 0 , 0 );
41+ BloomFilter bloom_filter (ByteString {}, 0 , 0 );
4242 EXPECT_EQ (bloom_filter.bit_count (), 0 );
4343}
4444
4545TEST (BloomFilterUnitTest, CanInstantiateNonEmptyBloomFilter) {
4646 {
47- BloomFilter bloom_filter (std::vector< uint8_t > {1 }, 0 , 1 );
47+ BloomFilter bloom_filter (ByteString {1 }, 0 , 1 );
4848 EXPECT_EQ (bloom_filter.bit_count (), 8 );
4949 }
5050 {
51- BloomFilter bloom_filter (std::vector< uint8_t > {1 }, 7 , 1 );
51+ BloomFilter bloom_filter (ByteString {1 }, 7 , 1 );
5252 EXPECT_EQ (bloom_filter.bit_count (), 1 );
5353 }
5454}
5555
5656TEST (BloomFilterUnitTest, CreateShouldReturnBloomFilterOnValidInputs) {
5757 StatusOr<BloomFilter> maybe_bloom_filter =
58- BloomFilter::Create (std::vector< uint8_t > {1 }, 1 , 1 );
58+ BloomFilter::Create (ByteString {1 }, 1 , 1 );
5959 ASSERT_TRUE (maybe_bloom_filter.ok ());
6060 BloomFilter bloom_filter = maybe_bloom_filter.ValueOrDie ();
6161 EXPECT_EQ (bloom_filter.bit_count (), 7 );
6262}
6363
6464TEST (BloomFilterUnitTest, CreateShouldBeAbleToCreatEmptyBloomFilter) {
6565 StatusOr<BloomFilter> maybe_bloom_filter =
66- BloomFilter::Create (std::vector< uint8_t > {}, 0 , 0 );
66+ BloomFilter::Create (ByteString {}, 0 , 0 );
6767 ASSERT_TRUE (maybe_bloom_filter.ok ());
6868 BloomFilter bloom_filter = maybe_bloom_filter.ValueOrDie ();
6969 EXPECT_EQ (bloom_filter.bit_count (), 0 );
@@ -72,14 +72,14 @@ TEST(BloomFilterUnitTest, CreateShouldBeAbleToCreatEmptyBloomFilter) {
7272TEST (BloomFilterUnitTest, CreateShouldReturnNotOKStatusOnNegativePadding) {
7373 {
7474 StatusOr<BloomFilter> maybe_bloom_filter =
75- BloomFilter::Create (std::vector< uint8_t > {}, -1 , 0 );
75+ BloomFilter::Create (ByteString {}, -1 , 0 );
7676 ASSERT_FALSE (maybe_bloom_filter.ok ());
7777 EXPECT_EQ (maybe_bloom_filter.status ().error_message (),
7878 " Invalid padding: -1" );
7979 }
8080 {
8181 StatusOr<BloomFilter> maybe_bloom_filter =
82- BloomFilter::Create (std::vector< uint8_t > {1 }, -1 , 1 );
82+ BloomFilter::Create (ByteString {1 }, -1 , 1 );
8383 ASSERT_FALSE (maybe_bloom_filter.ok ());
8484 EXPECT_EQ (maybe_bloom_filter.status ().error_message (),
8585 " Invalid padding: -1" );
@@ -89,14 +89,14 @@ TEST(BloomFilterUnitTest, CreateShouldReturnNotOKStatusOnNegativePadding) {
8989TEST (BloomFilterUnitTest, CreateShouldReturnNotOKStatusOnNegativeHashCount) {
9090 {
9191 StatusOr<BloomFilter> maybe_bloom_filter =
92- BloomFilter::Create (std::vector< uint8_t > {}, 0 , -1 );
92+ BloomFilter::Create (ByteString {}, 0 , -1 );
9393 ASSERT_FALSE (maybe_bloom_filter.ok ());
9494 EXPECT_EQ (maybe_bloom_filter.status ().error_message (),
9595 " Invalid hash count: -1" );
9696 }
9797 {
9898 StatusOr<BloomFilter> maybe_bloom_filter =
99- BloomFilter::Create (std::vector< uint8_t > {1 }, 1 , -1 );
99+ BloomFilter::Create (ByteString {1 }, 1 , -1 );
100100 ASSERT_FALSE (maybe_bloom_filter.ok ());
101101 EXPECT_EQ (maybe_bloom_filter.status ().error_message (),
102102 " Invalid hash count: -1" );
@@ -105,51 +105,51 @@ TEST(BloomFilterUnitTest, CreateShouldReturnNotOKStatusOnNegativeHashCount) {
105105
106106TEST (BloomFilterUnitTest, CreateShouldReturnNotOKStatusOnZeroHashCount) {
107107 StatusOr<BloomFilter> maybe_bloom_filter =
108- BloomFilter::Create (std::vector< uint8_t > {1 }, 1 , 0 );
108+ BloomFilter::Create (ByteString {1 }, 1 , 0 );
109109 ASSERT_FALSE (maybe_bloom_filter.ok ());
110110 EXPECT_EQ (maybe_bloom_filter.status ().error_message (),
111111 " Invalid hash count: 0" );
112112}
113113
114114TEST (BloomFilterUnitTest, CreateShouldReturnNotOKStatusIfPaddingIsTooLarge) {
115115 StatusOr<BloomFilter> maybe_bloom_filter =
116- BloomFilter::Create (std::vector< uint8_t > {1 }, 8 , 1 );
116+ BloomFilter::Create (ByteString {1 }, 8 , 1 );
117117 ASSERT_FALSE (maybe_bloom_filter.ok ());
118118 EXPECT_EQ (maybe_bloom_filter.status ().error_message (), " Invalid padding: 8" );
119119}
120120
121121TEST (BloomFilterTest, CheckBloomFiltersEqualityWithSameInput) {
122- BloomFilter bloom_filter1 (std::vector< uint8_t > {1 }, 1 , 1 );
123- BloomFilter bloom_filter2 (std::vector< uint8_t > {1 }, 1 , 1 );
122+ BloomFilter bloom_filter1 (ByteString {1 }, 1 , 1 );
123+ BloomFilter bloom_filter2 (ByteString {1 }, 1 , 1 );
124124 EXPECT_TRUE (bloom_filter1 == bloom_filter2);
125125 EXPECT_FALSE (bloom_filter1 != bloom_filter2);
126126}
127127
128128TEST (BloomFilterTest, CheckBloomFiltersEqualityWithDifferentBitmap) {
129129 {
130- BloomFilter bloom_filter1 (std::vector< uint8_t > {1 }, 1 , 1 );
131- BloomFilter bloom_filter2 (std::vector< uint8_t > {2 }, 1 , 1 );
130+ BloomFilter bloom_filter1 (ByteString {1 }, 1 , 1 );
131+ BloomFilter bloom_filter2 (ByteString {2 }, 1 , 1 );
132132 EXPECT_FALSE (bloom_filter1 == bloom_filter2);
133133 EXPECT_TRUE (bloom_filter1 != bloom_filter2);
134134 }
135135 {
136- BloomFilter bloom_filter1 (std::vector< uint8_t > {1 }, 1 , 1 );
137- BloomFilter bloom_filter2 (std::vector< uint8_t > {1 , 1 }, 1 , 1 );
136+ BloomFilter bloom_filter1 (ByteString {1 }, 1 , 1 );
137+ BloomFilter bloom_filter2 (ByteString {1 , 1 }, 1 , 1 );
138138 EXPECT_FALSE (bloom_filter1 == bloom_filter2);
139139 EXPECT_TRUE (bloom_filter1 != bloom_filter2);
140140 }
141141}
142142
143143TEST (BloomFilterTest, CheckBloomFiltersEqualityWithDifferentPadding) {
144- BloomFilter bloom_filter1 (std::vector< uint8_t > {1 }, 1 , 1 );
145- BloomFilter bloom_filter2 (std::vector< uint8_t > {1 }, 2 , 1 );
144+ BloomFilter bloom_filter1 (ByteString {1 }, 1 , 1 );
145+ BloomFilter bloom_filter2 (ByteString {1 }, 2 , 1 );
146146 EXPECT_FALSE (bloom_filter1 == bloom_filter2);
147147 EXPECT_TRUE (bloom_filter1 != bloom_filter2);
148148}
149149
150150TEST (BloomFilterTest, CheckBloomFiltersEqualityWithDifferentHashCount) {
151- BloomFilter bloom_filter1 (std::vector< uint8_t > {1 }, 1 , 1 );
152- BloomFilter bloom_filter2 (std::vector< uint8_t > {1 }, 1 , 2 );
151+ BloomFilter bloom_filter1 (ByteString {1 }, 1 , 1 );
152+ BloomFilter bloom_filter2 (ByteString {1 }, 1 , 2 );
153153 EXPECT_FALSE (bloom_filter1 == bloom_filter2);
154154 EXPECT_TRUE (bloom_filter1 != bloom_filter2);
155155}
@@ -159,17 +159,17 @@ TEST(BloomFilterTest,
159159 // In BloomFilter bitmap, padding is guaranteed to be less than 8, and
160160 // starts counting from the leftmost indexes of the last byte.
161161 {
162- BloomFilter bloom_filter1 (std::vector< uint8_t > {255 , 127 }, 1 ,
162+ BloomFilter bloom_filter1 (ByteString {255 , 127 }, 1 ,
163163 1 ); // bitmap -> 11111111 01111111
164- BloomFilter bloom_filter2 (std::vector< uint8_t > {255 , 255 }, 1 ,
164+ BloomFilter bloom_filter2 (ByteString {255 , 255 }, 1 ,
165165 1 ); // bitmap -> 11111111 11111111
166166 EXPECT_TRUE (bloom_filter1 == bloom_filter2);
167167 EXPECT_FALSE (bloom_filter1 != bloom_filter2);
168168 }
169169 {
170- BloomFilter bloom_filter1 (std::vector< uint8_t > {255 , 207 }, 4 ,
170+ BloomFilter bloom_filter1 (ByteString {255 , 207 }, 4 ,
171171 1 ); // bitmap -> 11111111 11001111
172- BloomFilter bloom_filter2 (std::vector< uint8_t > {255 , 255 }, 4 ,
172+ BloomFilter bloom_filter2 (ByteString {255 , 255 }, 4 ,
173173 1 ); // bitmap -> 11111111 11111111
174174 EXPECT_TRUE (bloom_filter1 == bloom_filter2);
175175 EXPECT_FALSE (bloom_filter1 != bloom_filter2);
@@ -178,25 +178,25 @@ TEST(BloomFilterTest,
178178
179179TEST (BloomFilterTest, MightContainCanProcessNonStandardCharacters) {
180180 // A non-empty BloomFilter object with 1 insertion : "ÀÒ∑"
181- BloomFilter bloom_filter (std::vector< uint8_t > {237 , 5 }, 5 , 8 );
181+ BloomFilter bloom_filter (ByteString {237 , 5 }, 5 , 8 );
182182 EXPECT_TRUE (bloom_filter.MightContain (" ÀÒ∑" ));
183183 EXPECT_FALSE (bloom_filter.MightContain (" Ò∑À" ));
184184}
185185
186186TEST (BloomFilterUnitTest, MightContainOnEmptyBloomFilterShouldReturnFalse) {
187- BloomFilter bloom_filter (std::vector< uint8_t > {}, 0 , 0 );
187+ BloomFilter bloom_filter (ByteString {}, 0 , 0 );
188188 EXPECT_FALSE (bloom_filter.MightContain (" " ));
189189 EXPECT_FALSE (bloom_filter.MightContain (" a" ));
190190}
191191
192192TEST (BloomFilterUnitTest,
193193 MightContainWithEmptyStringMightReturnFalsePositiveResult) {
194194 {
195- BloomFilter bloom_filter (std::vector< uint8_t > {1 }, 1 , 1 );
195+ BloomFilter bloom_filter (ByteString {1 }, 1 , 1 );
196196 EXPECT_FALSE (bloom_filter.MightContain (" " ));
197197 }
198198 {
199- BloomFilter bloom_filter (std::vector< uint8_t > {255 }, 0 , 16 );
199+ BloomFilter bloom_filter (ByteString {255 }, 0 , 16 );
200200 EXPECT_TRUE (bloom_filter.MightContain (" " ));
201201 }
202202}
@@ -241,7 +241,7 @@ class BloomFilterGoldenTest : public ::testing::Test {
241241 int hash_count = reader.OptionalInt (" hashCount" , test_file, 0 );
242242 std::string decoded;
243243 absl::Base64Unescape (bitmap, &decoded);
244- std::vector< uint8_t > decoded_map (decoded. begin (), decoded. end () );
244+ ByteString decoded_map (decoded);
245245
246246 StatusOr<BloomFilter> maybe_bloom_filter =
247247 BloomFilter::Create (std::move (decoded_map), padding, hash_count);
0 commit comments