OLD | NEW |
| (Empty) |
1 // Copyright (c) 2009 The Chromium 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 #include "printing/pdf_ps_metafile_linux.h" | |
6 | |
7 #include <fcntl.h> | |
8 #include <string> | |
9 #include <vector> | |
10 | |
11 #include "base/file_descriptor_posix.h" | |
12 #include "base/file_util.h" | |
13 #include "testing/gtest/include/gtest/gtest.h" | |
14 | |
15 typedef struct _cairo cairo_t; | |
16 | |
17 class PdfPsTest : public testing::Test { | |
18 protected: | |
19 base::FileDescriptor DevNullFD() { | |
20 return base::FileDescriptor(open("/dev/null", O_WRONLY), true); | |
21 } | |
22 }; | |
23 | |
24 TEST_F(PdfPsTest, Pdf) { | |
25 // Tests in-renderer constructor. | |
26 printing::PdfPsMetafile pdf(printing::PdfPsMetafile::PDF); | |
27 EXPECT_TRUE(pdf.Init()); | |
28 | |
29 // Renders page 1. | |
30 cairo_t* context = pdf.StartPage(72, 72); | |
31 EXPECT_TRUE(context != NULL); | |
32 // In theory, we should use Cairo to draw something on |context|. | |
33 EXPECT_TRUE(pdf.FinishPage(1.5)); | |
34 | |
35 // Renders page 2. | |
36 context = pdf.StartPage(64, 64); | |
37 EXPECT_TRUE(context != NULL); | |
38 // In theory, we should use Cairo to draw something on |context|. | |
39 EXPECT_TRUE(pdf.FinishPage(0.5)); | |
40 | |
41 // Closes the file. | |
42 pdf.Close(); | |
43 | |
44 // Checks data size. | |
45 unsigned int size = pdf.GetDataSize(); | |
46 EXPECT_GT(size, 0u); | |
47 | |
48 // Gets resulting data. | |
49 std::vector<char> buffer(size, 0x00); | |
50 pdf.GetData(&buffer.front(), size); | |
51 | |
52 // Tests another constructor. | |
53 printing::PdfPsMetafile pdf2(printing::PdfPsMetafile::PDF); | |
54 EXPECT_TRUE(pdf2.Init(&buffer.front(), size)); | |
55 | |
56 // Tries to get the first 4 characters from pdf2. | |
57 std::vector<char> buffer2(4, 0x00); | |
58 pdf2.GetData(&buffer2.front(), 4); | |
59 | |
60 // Tests if the header begins with "%PDF". | |
61 std::string header(&buffer2.front(), 4); | |
62 EXPECT_EQ(header.find("%PDF", 0), 0u); | |
63 | |
64 // Tests if we can save data. | |
65 EXPECT_TRUE(pdf.SaveTo(DevNullFD())); | |
66 } | |
67 | |
68 TEST_F(PdfPsTest, Ps) { | |
69 // Tests in-renderer constructor. | |
70 printing::PdfPsMetafile ps(printing::PdfPsMetafile::PS); | |
71 EXPECT_TRUE(ps.Init()); | |
72 | |
73 // Renders page 1. | |
74 cairo_t* context = ps.StartPage(72, 72); | |
75 EXPECT_TRUE(context != NULL); | |
76 // In theory, we should use Cairo to draw something on |context|. | |
77 EXPECT_TRUE(ps.FinishPage(1.5)); | |
78 | |
79 // Renders page 2. | |
80 context = ps.StartPage(64, 64); | |
81 EXPECT_TRUE(context != NULL); | |
82 // In theory, we should use Cairo to draw something on |context|. | |
83 EXPECT_TRUE(ps.FinishPage(0.5)); | |
84 | |
85 // Closes the file. | |
86 ps.Close(); | |
87 | |
88 // Checks data size. | |
89 unsigned int size = ps.GetDataSize(); | |
90 EXPECT_GT(size, 0u); | |
91 | |
92 // Gets resulting data. | |
93 std::vector<char> buffer(size, 0x00); | |
94 ps.GetData(&buffer.front(), size); | |
95 | |
96 // Tests another constructor. | |
97 printing::PdfPsMetafile ps2(printing::PdfPsMetafile::PS); | |
98 EXPECT_TRUE(ps2.Init(&buffer.front(), size)); | |
99 | |
100 // Tries to get the first 4 characters from ps2. | |
101 std::vector<char> buffer2(4, 0x00); | |
102 ps2.GetData(&buffer2.front(), 4); | |
103 | |
104 // Tests if the header begins with "%!PS". | |
105 std::string header(&buffer2.front(), 4); | |
106 EXPECT_EQ(header.find("%!PS", 0), 0u); | |
107 | |
108 // Tests if we can save data. | |
109 EXPECT_TRUE(ps.SaveTo(DevNullFD())); | |
110 } | |
OLD | NEW |