| 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 |