blob: 5a269a3cf65f50a568ee0db57af7145741756327 [file] [log] [blame]
Henrique Nakashimab9776c72017-06-23 15:03:50 -04001// 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
10#include "core/fxcrt/cfx_datetime.h"
Ryan Harrisona5c32a12017-09-28 17:12:31 -040011#include "core/fxcrt/fx_stream.h"
Henrique Nakashimab9776c72017-06-23 15:03:50 -040012
13// Output stream operator so GTEST macros work with CFX_DateTime objects.
14std::ostream& operator<<(std::ostream& os, const CFX_DateTime& dt);
15
Ryan Harrisona5c32a12017-09-28 17:12:31 -040016class 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};
64
Henrique Nakashimab9776c72017-06-23 15:03:50 -040065#endif // TESTING_FX_STRING_TESTHELPERS_H_