blob: 4cddefab0a98a3ad3e5750d3d6339d7fdde461bf [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"
Lei Zhang9160cec2018-07-25 20:09:58 +000012#include "third_party/base/span.h"
Henrique Nakashimab9776c72017-06-23 15:03:50 -040013
14// Output stream operator so GTEST macros work with CFX_DateTime objects.
15std::ostream& operator<<(std::ostream& os, const CFX_DateTime& dt);
16
Ryan Harrisona5c32a12017-09-28 17:12:31 -040017class CFX_InvalidSeekableReadStream : public IFX_SeekableReadStream {
18 public:
19 template <typename T, typename... Args>
20 friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
21
22 // IFX_SeekableReadStream overrides:
23 bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override {
24 return false;
25 }
26 FX_FILESIZE GetSize() override { return data_size_; }
27
28 private:
Lei Zhang86688de2018-05-22 22:06:49 +000029 explicit CFX_InvalidSeekableReadStream(FX_FILESIZE data_size);
30 ~CFX_InvalidSeekableReadStream() override;
Ryan Harrisona5c32a12017-09-28 17:12:31 -040031
Lei Zhang86688de2018-05-22 22:06:49 +000032 const FX_FILESIZE data_size_;
Ryan Harrisona5c32a12017-09-28 17:12:31 -040033};
34
35class CFX_BufferSeekableReadStream : public IFX_SeekableReadStream {
36 public:
37 template <typename T, typename... Args>
38 friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
39
40 // IFX_SeekableReadStream:
Lei Zhang9160cec2018-07-25 20:09:58 +000041 bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override;
Ryan Harrisona5c32a12017-09-28 17:12:31 -040042
43 FX_FILESIZE GetSize() override {
Lei Zhang9160cec2018-07-25 20:09:58 +000044 return static_cast<FX_FILESIZE>(data_.size());
Ryan Harrisona5c32a12017-09-28 17:12:31 -040045 }
46
47 private:
Lei Zhang9160cec2018-07-25 20:09:58 +000048 explicit CFX_BufferSeekableReadStream(pdfium::span<const uint8_t> data);
Lei Zhang86688de2018-05-22 22:06:49 +000049 ~CFX_BufferSeekableReadStream() override;
Ryan Harrisona5c32a12017-09-28 17:12:31 -040050
Lei Zhang9160cec2018-07-25 20:09:58 +000051 pdfium::span<const uint8_t> data_;
Ryan Harrisona5c32a12017-09-28 17:12:31 -040052};
53
Henrique Nakashimab9776c72017-06-23 15:03:50 -040054#endif // TESTING_FX_STRING_TESTHELPERS_H_