| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2011 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_metafile_cairo_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_path.h" | |
| 13 #include "base/file_util.h" | |
| 14 #include "base/string_util.h" | |
| 15 #include "testing/gtest/include/gtest/gtest.h" | |
| 16 #include "ui/gfx/rect.h" | |
| 17 #include "ui/gfx/size.h" | |
| 18 | |
| 19 typedef struct _cairo cairo_t; | |
| 20 | |
| 21 namespace { | |
| 22 | |
| 23 class PdfMetafileCairoTest : public testing::Test {}; | |
| 24 | |
| 25 } // namespace | |
| 26 | |
| 27 namespace printing { | |
| 28 | |
| 29 TEST_F(PdfMetafileCairoTest, Pdf) { | |
| 30 // Tests in-renderer constructor. | |
| 31 printing::PdfMetafileCairo pdf; | |
| 32 EXPECT_TRUE(pdf.Init()); | |
| 33 | |
| 34 // Renders page 1. | |
| 35 EXPECT_TRUE(pdf.StartPage(gfx::Size(72, 73), gfx::Rect(4, 5, 64, 63), 1)); | |
| 36 // In theory, we should use Cairo to draw something on |context|. | |
| 37 EXPECT_TRUE(pdf.FinishPage()); | |
| 38 | |
| 39 // Renders page 2. | |
| 40 EXPECT_TRUE(pdf.StartPage(gfx::Size(72, 73), gfx::Rect(4, 5, 64, 63), 1)); | |
| 41 // In theory, we should use Cairo to draw something on |context|. | |
| 42 EXPECT_TRUE(pdf.FinishPage()); | |
| 43 | |
| 44 // Closes the file. | |
| 45 pdf.FinishDocument(); | |
| 46 | |
| 47 // Checks data size. | |
| 48 uint32 size = pdf.GetDataSize(); | |
| 49 EXPECT_GT(size, 0u); | |
| 50 | |
| 51 // Gets resulting data. | |
| 52 std::vector<char> buffer(size, 0x00); | |
| 53 pdf.GetData(&buffer.front(), size); | |
| 54 | |
| 55 // Tests another constructor. | |
| 56 printing::PdfMetafileCairo pdf2; | |
| 57 EXPECT_TRUE(pdf2.InitFromData(&buffer.front(), size)); | |
| 58 | |
| 59 // Tries to get the first 4 characters from pdf2. | |
| 60 std::vector<char> buffer2(4, 0x00); | |
| 61 pdf2.GetData(&buffer2.front(), 4); | |
| 62 | |
| 63 // Tests if the header begins with "%PDF". | |
| 64 std::string header(&buffer2.front(), 4); | |
| 65 EXPECT_EQ(header.find("%PDF", 0), 0u); | |
| 66 | |
| 67 // Tests if we can save data. | |
| 68 EXPECT_TRUE(pdf.SaveTo(FilePath("/dev/null"))); | |
| 69 | |
| 70 // Test overriding the metafile with raw data. | |
| 71 printing::PdfMetafileCairo pdf3; | |
| 72 EXPECT_TRUE(pdf3.Init()); | |
| 73 EXPECT_TRUE(pdf3.StartPage(gfx::Size(72, 73), gfx::Rect(4, 5, 64, 63), 1)); | |
| 74 std::string test_raw_data = "Dummy PDF"; | |
| 75 EXPECT_TRUE(pdf3.InitFromData(test_raw_data.c_str(), test_raw_data.size())); | |
| 76 EXPECT_TRUE(pdf3.FinishPage()); | |
| 77 pdf3.FinishDocument(); | |
| 78 size = pdf3.GetDataSize(); | |
| 79 EXPECT_EQ(test_raw_data.size(), size); | |
| 80 std::string output; | |
| 81 pdf3.GetData(WriteInto(&output, size + 1), size); | |
| 82 EXPECT_EQ(test_raw_data, output); | |
| 83 } | |
| 84 | |
| 85 } // namespace printing | |
| OLD | NEW |