Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(346)

Side by Side Diff: net/http2/hpack/huffman/http2_hpack_huffman_decoder_test.cc

Issue 2572343002: Use std::function instead of base::Callback in net/http2/. (Closed)
Patch Set: Rebase. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http2/hpack/huffman/http2_hpack_huffman_decoder.h" 5 #include "net/http2/hpack/huffman/http2_hpack_huffman_decoder.h"
6 6
7 // Tests of HpackHuffmanDecoder and HuffmanBitBuffer. 7 // Tests of HpackHuffmanDecoder and HuffmanBitBuffer.
8 8
9 #include <iostream> 9 #include <iostream>
10 #include <string> 10 #include <string>
11 11
12 #include "base/bind.h"
13 #include "base/bind_helpers.h"
14 #include "base/macros.h" 12 #include "base/macros.h"
15 #include "base/strings/string_piece.h" 13 #include "base/strings/string_piece.h"
16 #include "net/http2/decoder/decode_buffer.h" 14 #include "net/http2/decoder/decode_buffer.h"
17 #include "net/http2/decoder/decode_status.h" 15 #include "net/http2/decoder/decode_status.h"
18 #include "net/http2/tools/failure.h" 16 #include "net/http2/tools/failure.h"
19 #include "net/http2/tools/random_decoder_test.h" 17 #include "net/http2/tools/random_decoder_test.h"
20 #include "net/spdy/spdy_test_utils.h" 18 #include "net/spdy/spdy_test_utils.h"
21 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
22 20
23 using ::testing::AssertionResult; 21 using ::testing::AssertionResult;
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 case DecoderChoice::IF_TREE: 193 case DecoderChoice::IF_TREE:
196 return decoder_.DecodeWithIfTreeAndStruct(sp, &output_buffer_); 194 return decoder_.DecodeWithIfTreeAndStruct(sp, &output_buffer_);
197 case DecoderChoice::SHORT_CODE: 195 case DecoderChoice::SHORT_CODE:
198 return decoder_.DecodeShortCodesFirst(sp, &output_buffer_); 196 return decoder_.DecodeShortCodesFirst(sp, &output_buffer_);
199 } 197 }
200 198
201 NOTREACHED(); 199 NOTREACHED();
202 return false; 200 return false;
203 } 201 }
204 202
205 AssertionResult ValidatorForHuffmanDecodeAndValidateSeveralWays(
206 StringPiece expected_plain) {
207 VERIFY_EQ(output_buffer_.size(), expected_plain.size());
208 VERIFY_EQ(output_buffer_, expected_plain);
209 return AssertionSuccess();
210 }
211
212 AssertionResult HuffmanDecodeAndValidateSeveralWays( 203 AssertionResult HuffmanDecodeAndValidateSeveralWays(
213 StringPiece encoded, 204 StringPiece encoded,
214 StringPiece expected_plain) { 205 StringPiece expected_plain) {
215 input_bytes_expected_ = encoded.size(); 206 input_bytes_expected_ = encoded.size();
207 NoArgValidator validator = [expected_plain, this]() -> AssertionResult {
208 VERIFY_EQ(output_buffer_.size(), expected_plain.size());
209 VERIFY_EQ(output_buffer_, expected_plain);
210 return AssertionSuccess();
211 };
216 DecodeBuffer db(encoded); 212 DecodeBuffer db(encoded);
217 bool return_non_zero_on_first = false; 213 bool return_non_zero_on_first = false;
218 return DecodeAndValidateSeveralWays( 214 return DecodeAndValidateSeveralWays(&db, return_non_zero_on_first,
219 &db, return_non_zero_on_first, 215 ValidateDoneAndEmpty(validator));
220 ValidateDoneAndEmpty(
221 base::Bind(&HpackHuffmanDecoderTest::
222 ValidatorForHuffmanDecodeAndValidateSeveralWays,
223 base::Unretained(this), expected_plain)));
224 } 216 }
225 217
226 HpackHuffmanDecoder decoder_; 218 HpackHuffmanDecoder decoder_;
227 string output_buffer_; 219 string output_buffer_;
228 size_t input_bytes_seen_; 220 size_t input_bytes_seen_;
229 size_t input_bytes_expected_; 221 size_t input_bytes_expected_;
230 }; 222 };
231 INSTANTIATE_TEST_CASE_P(AllDecoders, 223 INSTANTIATE_TEST_CASE_P(AllDecoders,
232 HpackHuffmanDecoderTest, 224 HpackHuffmanDecoderTest,
233 ::testing::Values(DecoderChoice::IF_TREE, 225 ::testing::Values(DecoderChoice::IF_TREE,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 decoder.Reset(); 275 decoder.Reset();
284 EXPECT_TRUE(decoder.Decode(huffman_encoded, &buffer)) << decoder; 276 EXPECT_TRUE(decoder.Decode(huffman_encoded, &buffer)) << decoder;
285 EXPECT_TRUE(decoder.InputProperlyTerminated()) << decoder; 277 EXPECT_TRUE(decoder.InputProperlyTerminated()) << decoder;
286 EXPECT_EQ(buffer, plain_string); 278 EXPECT_EQ(buffer, plain_string);
287 } 279 }
288 } 280 }
289 281
290 } // namespace 282 } // namespace
291 } // namespace test 283 } // namespace test
292 } // namespace net 284 } // namespace net
OLDNEW
« no previous file with comments | « net/http2/hpack/decoder/hpack_varint_decoder_test.cc ('k') | net/http2/tools/random_decoder_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698