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/data_vector.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 memset(output_buffer, 0xbd, sizeof(output_buffer));
22 EXPECT_FALSE(fileread->ReadBlockAtOffset({output_buffer, 0u}, 0));
23 EXPECT_EQ(0xbd, output_buffer[0]);
24}
25
27 std::vector<RetainPtr<const CPDF_Stream>> streams;
28 streams.push_back(pdfium::MakeRetain<CPDF_Stream>());
29 auto fileread =
30 pdfium::MakeRetain<CPDF_SeekableMultiStream>(std::move(streams));
31
32 uint8_t output_buffer[16];
33 memset(output_buffer, 0xbd, sizeof(output_buffer));
34 EXPECT_FALSE(fileread->ReadBlockAtOffset({output_buffer, 0u}, 0));
35 EXPECT_EQ(0xbd, output_buffer[0]);
36}
37
39 // 16 chars total.
40 static const char kOne[] = "one t";
41 static const char kTwo[] = "wo ";
42 static const char kThree[] = "three!!!";
43
44 ByteStringView one_view(kOne);
45 ByteStringView two_view(kTwo);
46 ByteStringView three_view(kThree);
47 auto stream1 = pdfium::MakeRetain<CPDF_Stream>(
48 DataVector<uint8_t>(one_view.begin(), one_view.end()),
49 pdfium::MakeRetain<CPDF_Dictionary>());
50 auto stream2 = pdfium::MakeRetain<CPDF_Stream>(
51 DataVector<uint8_t>(two_view.begin(), two_view.end()),
52 pdfium::MakeRetain<CPDF_Dictionary>());
53 auto stream3 = pdfium::MakeRetain<CPDF_Stream>(
54 DataVector<uint8_t>(three_view.begin(), three_view.end()),
55 pdfium::MakeRetain<CPDF_Dictionary>());
56
57 std::vector<RetainPtr<const CPDF_Stream>> streams;
58 streams.push_back(std::move(stream1));
59 streams.push_back(std::move(stream2));
60 streams.push_back(std::move(stream3));
61 auto fileread =
62 pdfium::MakeRetain<CPDF_SeekableMultiStream>(std::move(streams));
63
64 uint8_t output_buffer[16];
65 memset(output_buffer, 0xbd, sizeof(output_buffer));
66 EXPECT_TRUE(fileread->ReadBlockAtOffset({output_buffer, 0u}, 0));
67 EXPECT_EQ(0xbd, output_buffer[0]);
68
69 memset(output_buffer, 0xbd, sizeof(output_buffer));
70 EXPECT_TRUE(fileread->ReadBlockAtOffset({output_buffer, 0u}, 1));
71 EXPECT_EQ(0xbd, output_buffer[0]);
72
73 memset(output_buffer, 0xbd, sizeof(output_buffer));
74 EXPECT_TRUE(fileread->ReadBlockAtOffset({output_buffer, 1u}, 0));
75 EXPECT_EQ(0, memcmp(output_buffer, "o", 1));
76 EXPECT_EQ(0xbd, output_buffer[1]);
77
78 memset(output_buffer, 0xbd, sizeof(output_buffer));
79 EXPECT_TRUE(fileread->ReadBlockAtOffset(output_buffer, 0));
80 EXPECT_EQ(0, memcmp(output_buffer, "one two three!!!", 16));
81
82 memset(output_buffer, 0xbd, sizeof(output_buffer));
83 EXPECT_TRUE(fileread->ReadBlockAtOffset({output_buffer, 10u}, 2));
84 EXPECT_EQ(0, memcmp(output_buffer, "e two thre", 10));
85 EXPECT_EQ(0xbd, output_buffer[11]);
86
87 memset(output_buffer, 0xbd, sizeof(output_buffer));
88 EXPECT_FALSE(fileread->ReadBlockAtOffset(output_buffer, 1));
89 EXPECT_EQ(0, memcmp(output_buffer, "ne two three!!!", 15));
90 EXPECT_EQ(0xbd, output_buffer[15]);
91}
TEST(FXCRYPT, MD5GenerateEmtpyData)