Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cpdf_seekablemultistream_unittest.cpp
Go to the documentation of this file.
1// Copyright 2016 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "core/fpdfapi/parser/cpdf_seekablemultistream.h"
6
7#include <utility>
8#include <vector>
9
10#include "core/fpdfapi/parser/cpdf_dictionary.h"
11#include "core/fpdfapi/parser/cpdf_stream.h"
12#include "core/fxcrt/stl_util.h"
13#include "testing/gtest/include/gtest/gtest.h"
14
16 std::vector<RetainPtr<const CPDF_Stream>> streams;
17 auto fileread =
18 pdfium::MakeRetain<CPDF_SeekableMultiStream>(std::move(streams));
19
20 uint8_t output_buffer[16];
21 fxcrt::Fill(output_buffer, 0xbd);
22 EXPECT_FALSE(fileread->ReadBlockAtOffset(
23 pdfium::make_span(output_buffer).first(0u), 0));
24 EXPECT_EQ(0xbd, output_buffer[0]);
25}
26
28 std::vector<RetainPtr<const CPDF_Stream>> streams;
29 streams.push_back(
30 pdfium::MakeRetain<CPDF_Stream>(pdfium::MakeRetain<CPDF_Dictionary>()));
31
32 auto fileread =
33 pdfium::MakeRetain<CPDF_SeekableMultiStream>(std::move(streams));
34
35 uint8_t output_buffer[16];
36 fxcrt::Fill(output_buffer, 0xbd);
37 EXPECT_FALSE(fileread->ReadBlockAtOffset(
38 pdfium::make_span(output_buffer).first(0u), 0));
39 EXPECT_EQ(0xbd, output_buffer[0]);
40}
41
43 // 16 chars total.
44 static const char kOne[] = "one t";
45 static const char kTwo[] = "wo ";
46 static const char kThree[] = "three!!!";
47
48 ByteStringView one_view(kOne);
49 ByteStringView two_view(kTwo);
50 ByteStringView three_view(kThree);
51 auto stream1 = pdfium::MakeRetain<CPDF_Stream>(one_view.unsigned_span());
52 auto stream2 = pdfium::MakeRetain<CPDF_Stream>(two_view.unsigned_span());
53 auto stream3 = pdfium::MakeRetain<CPDF_Stream>(three_view.unsigned_span());
54
55 std::vector<RetainPtr<const CPDF_Stream>> streams;
56 streams.push_back(std::move(stream1));
57 streams.push_back(std::move(stream2));
58 streams.push_back(std::move(stream3));
59 auto fileread =
60 pdfium::MakeRetain<CPDF_SeekableMultiStream>(std::move(streams));
61
62 uint8_t output_buffer[16];
63 fxcrt::Fill(output_buffer, 0xbd);
64 EXPECT_TRUE(fileread->ReadBlockAtOffset(
65 pdfium::make_span(output_buffer).first(0u), 0));
66 EXPECT_EQ(0xbd, output_buffer[0]);
67
68 fxcrt::Fill(output_buffer, 0xbd);
69 EXPECT_TRUE(fileread->ReadBlockAtOffset(
70 pdfium::make_span(output_buffer).first(0u), 1));
71 EXPECT_EQ(0xbd, output_buffer[0]);
72
73 fxcrt::Fill(output_buffer, 0xbd);
74 EXPECT_TRUE(fileread->ReadBlockAtOffset(
75 pdfium::make_span(output_buffer).first(1u), 0));
76 EXPECT_EQ(0, memcmp(output_buffer, "o", 1));
77 EXPECT_EQ(0xbd, output_buffer[1]);
78
79 fxcrt::Fill(output_buffer, 0xbd);
80 EXPECT_TRUE(fileread->ReadBlockAtOffset(output_buffer, 0));
81 EXPECT_EQ(0, memcmp(output_buffer, "one two three!!!", 16));
82
83 fxcrt::Fill(output_buffer, 0xbd);
84 EXPECT_TRUE(fileread->ReadBlockAtOffset(
85 pdfium::make_span(output_buffer).first(10u), 2));
86 EXPECT_EQ(0, memcmp(output_buffer, "e two thre", 10));
87 EXPECT_EQ(0xbd, output_buffer[11]);
88
89 fxcrt::Fill(output_buffer, 0xbd);
90 EXPECT_FALSE(fileread->ReadBlockAtOffset(output_buffer, 1));
91 EXPECT_EQ(0, memcmp(output_buffer, "ne two three!!!", 15));
92 EXPECT_EQ(0xbd, output_buffer[15]);
93}
std::map< ByteString, RetainPtr< CPDF_Object >, std::less<> > DictMap
TEST(FXCRYPT, MD5GenerateEmtpyData)
fxcrt::ByteStringView ByteStringView