blob: 5a269a3cf65f50a568ee0db57af7145741756327 [file] [log] [blame]
Svet Ganove6986e12015-06-04 14:52:15 -07001// Copyright 2014 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef TESTING_FX_STRING_TESTHELPERS_H_
6#define TESTING_FX_STRING_TESTHELPERS_H_
7
8#include <ostream>
9
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070010#include "core/fxcrt/cfx_datetime.h"
11#include "core/fxcrt/fx_stream.h"
Svet Ganove6986e12015-06-04 14:52:15 -070012
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070013// Output stream operator so GTEST macros work with CFX_DateTime objects.
14std::ostream& operator<<(std::ostream& os, const CFX_DateTime& dt);
15
16class CFX_InvalidSeekableReadStream : public IFX_SeekableReadStream {
17 public:
18 template <typename T, typename... Args>
19 friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
20
21 // IFX_SeekableReadStream overrides:
22 bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override {
23 return false;
24 }
25 FX_FILESIZE GetSize() override { return data_size_; }
26
27 private:
28 explicit CFX_InvalidSeekableReadStream(FX_FILESIZE data_size)
29 : data_size_(data_size) {}
30
31 FX_FILESIZE data_size_;
32};
33
34class CFX_BufferSeekableReadStream : public IFX_SeekableReadStream {
35 public:
36 template <typename T, typename... Args>
37 friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
38
39 // IFX_SeekableReadStream:
40 bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override {
41 if (offset < 0 || static_cast<size_t>(offset) >= data_size_)
42 return false;
43
44 if (static_cast<size_t>(offset) + size > data_size_)
45 size = data_size_ - static_cast<size_t>(offset);
46 if (size == 0)
47 return false;
48
49 memcpy(buffer, data_ + offset, size);
50 return true;
51 }
52
53 FX_FILESIZE GetSize() override {
54 return static_cast<FX_FILESIZE>(data_size_);
55 }
56
57 private:
58 CFX_BufferSeekableReadStream(const unsigned char* src, size_t src_size)
59 : data_(src), data_size_(src_size) {}
60
61 const unsigned char* data_;
62 size_t data_size_;
63};
Svet Ganove6986e12015-06-04 14:52:15 -070064
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070065#endif // TESTING_FX_STRING_TESTHELPERS_H_