summaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
Diffstat (limited to 'testing')
-rw-r--r--testing/resources/text_form.in57
-rw-r--r--testing/resources/text_form.pdf69
-rw-r--r--testing/test_support.cpp17
-rw-r--r--testing/test_support.h6
4 files changed, 149 insertions, 0 deletions
diff --git a/testing/resources/text_form.in b/testing/resources/text_form.in
new file mode 100644
index 0000000000..4872986af1
--- /dev/null
+++ b/testing/resources/text_form.in
@@ -0,0 +1,57 @@
+{{header}}
+{{object 1 0}}
+<<
+ /Type /Catalog
+ /Pages 2 0 R
+ /AcroForm << /Fields [ 4 0 R ] /DR 5 0 R >>
+>>
+endobj
+{{object 2 0}}
+<< /Count 1 /Kids [ 3 0 R ] /Type /Pages >>
+endobj
+{{object 3 0}}
+<<
+ /Type /Page
+ /Parent 2 0 R
+ /Resources 5 0 R
+ /MediaBox [ 0 0 300 300 ]
+ /Contents 8 0 R
+ /Annots [ 4 0 R ]
+>>
+endobj
+{{object 4 0}}
+<<
+ /Type /Annot
+ /FT /Tx
+ /T (Text Box)
+ /DA (0 0 0 rg /F1 12 Tf)
+ /Rect [ 100 100 200 130 ]
+ /Subtype /Widget
+>>
+endobj
+{{object 5 0}}
+<< /Font 6 0 R >>
+endobj
+{{object 6 0}}
+<< /F1 7 0 R >>
+endobj
+{{object 7 0}} <<
+ /Type /Font
+ /Subtype /Type1
+ /BaseFont /Helvetica
+>>
+{{object 8 0}}
+<< /Length 51 >>
+stream
+BT
+0 0 0 rg
+/F1 12 Tf
+100 150 Td
+(Test Form) Tj
+ET
+endstream
+endobj
+{{xref}}
+trailer<< /Size 8 /Root 1 0 R >>
+{{startxref}}
+%%EOF
diff --git a/testing/resources/text_form.pdf b/testing/resources/text_form.pdf
new file mode 100644
index 0000000000..f72a73567b
--- /dev/null
+++ b/testing/resources/text_form.pdf
@@ -0,0 +1,69 @@
+%PDF-1.7
+% ò¤ô
+1 0 obj
+<<
+ /Type /Catalog
+ /Pages 2 0 R
+ /AcroForm << /Fields [ 4 0 R ] /DR 5 0 R >>
+>>
+endobj
+2 0 obj
+<< /Count 1 /Kids [ 3 0 R ] /Type /Pages >>
+endobj
+3 0 obj
+<<
+ /Type /Page
+ /Parent 2 0 R
+ /Resources 5 0 R
+ /MediaBox [ 0 0 300 300 ]
+ /Contents 8 0 R
+ /Annots [ 4 0 R ]
+>>
+endobj
+4 0 obj
+<<
+ /Type /Annot
+ /FT /Tx
+ /T (Text Box)
+ /DA (0 0 0 rg /F1 12 Tf)
+ /Rect [ 100 100 200 130 ]
+ /Subtype /Widget
+>>
+endobj
+5 0 obj
+<< /Font 6 0 R >>
+endobj
+6 0 obj
+<< /F1 7 0 R >>
+endobj
+7 0 obj <<
+ /Type /Font
+ /Subtype /Type1
+ /BaseFont /Helvetica
+>>
+8 0 obj
+<< /Length 51 >>
+stream
+BT
+0 0 0 rg
+/F1 12 Tf
+100 150 Td
+(Test Form) Tj
+ET
+endstream
+endobj
+xref
+0 9
+0000000000 65535 f
+0000000015 00000 n
+0000000114 00000 n
+0000000173 00000 n
+0000000309 00000 n
+0000000445 00000 n
+0000000478 00000 n
+0000000509 00000 n
+0000000578 00000 n
+trailer<< /Size 8 /Root 1 0 R >>
+startxref
+678
+%%EOF
diff --git a/testing/test_support.cpp b/testing/test_support.cpp
index 20f1cadf09..1f527811c4 100644
--- a/testing/test_support.cpp
+++ b/testing/test_support.cpp
@@ -212,6 +212,23 @@ int TestSaver::WriteBlockCallback(FPDF_FILEWRITE* pFileWrite,
return 1;
}
+// static
+int TestSaver::GetBlockFromString(void* param,
+ unsigned long pos,
+ unsigned char* buf,
+ unsigned long size) {
+ std::string* new_file = static_cast<std::string*>(param);
+ if (!new_file || pos + size < pos)
+ return 0;
+
+ unsigned long file_size = new_file->size();
+ if (pos + size > file_size)
+ return 0;
+
+ memcpy(buf, new_file->data() + pos, size);
+ return 1;
+}
+
namespace pdfium {
void FPDF_Test::SetUp() {
diff --git a/testing/test_support.h b/testing/test_support.h
index b734bc31f0..f175811078 100644
--- a/testing/test_support.h
+++ b/testing/test_support.h
@@ -115,6 +115,12 @@ class TestSaver : public FPDF_FILEWRITE {
void ClearString();
const std::string& GetString() const { return m_String; }
+ protected:
+ static int GetBlockFromString(void* param,
+ unsigned long pos,
+ unsigned char* buf,
+ unsigned long size);
+
private:
static int WriteBlockCallback(FPDF_FILEWRITE* pFileWrite,
const void* data,