diff options
Diffstat (limited to 'printing/pdf_metafile_cairo_linux_unittest.cc')
-rw-r--r-- | printing/pdf_metafile_cairo_linux_unittest.cc | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/printing/pdf_metafile_cairo_linux_unittest.cc b/printing/pdf_metafile_cairo_linux_unittest.cc new file mode 100644 index 0000000..c644a3d --- /dev/null +++ b/printing/pdf_metafile_cairo_linux_unittest.cc @@ -0,0 +1,85 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "printing/pdf_metafile_cairo_linux.h" + +#include <fcntl.h> +#include <string> +#include <vector> + +#include "base/file_descriptor_posix.h" +#include "base/file_path.h" +#include "base/file_util.h" +#include "base/string_util.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "ui/gfx/size.h" +#include "ui/gfx/point.h" + +typedef struct _cairo cairo_t; + +namespace { + +class PdfMetafileCairoTest : public testing::Test {}; + +} // namespace + +namespace printing { + +TEST_F(PdfMetafileCairoTest, Pdf) { + // Tests in-renderer constructor. + printing::PdfMetafileCairo pdf; + EXPECT_TRUE(pdf.Init()); + + // Renders page 1. + EXPECT_TRUE(pdf.StartPage(gfx::Size(72, 73), gfx::Point(4, 5), 1)); + // In theory, we should use Cairo to draw something on |context|. + EXPECT_TRUE(pdf.FinishPage()); + + // Renders page 2. + EXPECT_TRUE(pdf.StartPage(gfx::Size(72, 73), gfx::Point(4, 5), 1)); + // In theory, we should use Cairo to draw something on |context|. + EXPECT_TRUE(pdf.FinishPage()); + + // Closes the file. + pdf.FinishDocument(); + + // Checks data size. + uint32 size = pdf.GetDataSize(); + EXPECT_GT(size, 0u); + + // Gets resulting data. + std::vector<char> buffer(size, 0x00); + pdf.GetData(&buffer.front(), size); + + // Tests another constructor. + printing::PdfMetafileCairo pdf2; + EXPECT_TRUE(pdf2.InitFromData(&buffer.front(), size)); + + // Tries to get the first 4 characters from pdf2. + std::vector<char> buffer2(4, 0x00); + pdf2.GetData(&buffer2.front(), 4); + + // Tests if the header begins with "%PDF". + std::string header(&buffer2.front(), 4); + EXPECT_EQ(header.find("%PDF", 0), 0u); + + // Tests if we can save data. + EXPECT_TRUE(pdf.SaveTo(FilePath("/dev/null"))); + + // Test overriding the metafile with raw data. + printing::PdfMetafileCairo pdf3; + EXPECT_TRUE(pdf3.Init()); + EXPECT_TRUE(pdf3.StartPage(gfx::Size(72, 73), gfx::Point(4, 5), 1)); + std::string test_raw_data = "Dummy PDF"; + EXPECT_TRUE(pdf3.InitFromData(test_raw_data.c_str(), test_raw_data.size())); + EXPECT_TRUE(pdf3.FinishPage()); + pdf3.FinishDocument(); + size = pdf3.GetDataSize(); + EXPECT_EQ(test_raw_data.size(), size); + std::string output; + pdf3.GetData(WriteInto(&output, size + 1), size); + EXPECT_EQ(test_raw_data, output); +} + +} // namespace printing |