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

Side by Side Diff: pdf/chunk_stream_unittest.cc

Issue 2558573002: Revert "reland of Improve linearized pdf load/show time." (Closed)
Patch Set: Changes to make tests pass ... Created 4 years 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
« no previous file with comments | « pdf/chunk_stream.cc ('k') | pdf/document_loader.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "pdf/chunk_stream.h" 5 #include "pdf/chunk_stream.h"
6 6
7 #include <array>
8 #include <memory>
9
10 #include "base/memory/ptr_util.h"
11 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
12 8
13 namespace chrome_pdf { 9 namespace chrome_pdf {
14 namespace {
15 typedef ChunkStream<10> TestChunkStream;
16 10
17 std::unique_ptr<TestChunkStream::ChunkData> CreateChunkData() { 11 TEST(ChunkStreamTest, Simple) {
18 return base::MakeUnique<TestChunkStream::ChunkData>(); 12 ChunkStream stream;
19 } 13 stream.Preallocate(1000);
14 EXPECT_FALSE(stream.IsRangeAvailable(100, 500));
20 } 15 }
21 16
22 TEST(ChunkStreamTest, InRow) {
23 TestChunkStream stream;
24 EXPECT_FALSE(stream.IsComplete());
25 EXPECT_FALSE(stream.IsRangeAvailable(gfx::Range(0, 10)));
26 stream.SetChunkData(0, CreateChunkData());
27 EXPECT_TRUE(stream.IsRangeAvailable(gfx::Range(0, 10)));
28 EXPECT_FALSE(stream.IsRangeAvailable(gfx::Range(0, 20)));
29 stream.SetChunkData(1, CreateChunkData());
30 EXPECT_TRUE(stream.IsRangeAvailable(gfx::Range(0, 20)));
31 EXPECT_FALSE(stream.IsRangeAvailable(gfx::Range(0, 30)));
32 stream.SetChunkData(2, CreateChunkData());
33 EXPECT_TRUE(stream.IsRangeAvailable(gfx::Range(0, 30)));
34 stream.set_eof_pos(25);
35 EXPECT_FALSE(stream.IsRangeAvailable(gfx::Range(0, 30)));
36 EXPECT_TRUE(stream.IsRangeAvailable(gfx::Range(0, 25)));
37 EXPECT_TRUE(stream.IsComplete());
38 }
39
40 TEST(ChunkStreamTest, InBackRow) {
41 TestChunkStream stream;
42 stream.set_eof_pos(25);
43 EXPECT_FALSE(stream.IsComplete());
44 EXPECT_FALSE(stream.IsRangeAvailable(gfx::Range(20, 25)));
45 stream.SetChunkData(2, CreateChunkData());
46 EXPECT_TRUE(stream.IsRangeAvailable(gfx::Range(20, 25)));
47 EXPECT_FALSE(stream.IsRangeAvailable(gfx::Range(10, 20)));
48 stream.SetChunkData(1, CreateChunkData());
49 EXPECT_TRUE(stream.IsRangeAvailable(gfx::Range(10, 20)));
50 EXPECT_FALSE(stream.IsRangeAvailable(gfx::Range(0, 10)));
51 stream.SetChunkData(0, CreateChunkData());
52 EXPECT_TRUE(stream.IsRangeAvailable(gfx::Range(0, 10)));
53 EXPECT_TRUE(stream.IsComplete());
54 }
55
56 TEST(ChunkStreamTest, FillGap) {
57 TestChunkStream stream;
58 stream.set_eof_pos(25);
59 EXPECT_FALSE(stream.IsComplete());
60 stream.SetChunkData(0, CreateChunkData());
61 stream.SetChunkData(2, CreateChunkData());
62 EXPECT_TRUE(stream.IsRangeAvailable(gfx::Range(0, 10)));
63 EXPECT_TRUE(stream.IsRangeAvailable(gfx::Range(20, 25)));
64 EXPECT_FALSE(stream.IsRangeAvailable(gfx::Range(0, 25)));
65 stream.SetChunkData(1, CreateChunkData());
66 EXPECT_TRUE(stream.IsRangeAvailable(gfx::Range(0, 25)));
67 EXPECT_TRUE(stream.IsComplete());
68 }
69
70 TEST(ChunkStreamTest, Read) {
71 TestChunkStream stream;
72 stream.set_eof_pos(25);
73 const unsigned char start_value = 33;
74 unsigned char value = start_value;
75 auto chunk_0 = CreateChunkData();
76 for (auto& it : *chunk_0) {
77 it = ++value;
78 }
79 auto chunk_1 = CreateChunkData();
80 for (auto& it : *chunk_1) {
81 it = ++value;
82 }
83 auto chunk_2 = CreateChunkData();
84 for (auto& it : *chunk_2) {
85 it = ++value;
86 }
87 stream.SetChunkData(0, std::move(chunk_0));
88 stream.SetChunkData(2, std::move(chunk_2));
89 stream.SetChunkData(1, std::move(chunk_1));
90
91 std::array<unsigned char, 25> result_data;
92 EXPECT_TRUE(stream.ReadData(gfx::Range(0, 25), result_data.data()));
93
94 value = start_value;
95 for (const auto& it : result_data) {
96 EXPECT_EQ(++value, it);
97 }
98 }
99 } // namespace chrome_pdf 17 } // namespace chrome_pdf
OLDNEW
« no previous file with comments | « pdf/chunk_stream.cc ('k') | pdf/document_loader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698