Home | History | Annotate | Download | only in printing
      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_cg_mac.h"
      6 
      7 #import <ApplicationServices/ApplicationServices.h>
      8 
      9 #include <string>
     10 #include <vector>
     11 
     12 #include "testing/gtest/include/gtest/gtest.h"
     13 #include "ui/gfx/rect.h"
     14 
     15 namespace printing {
     16 
     17 TEST(PdfMetafileCgTest, Pdf) {
     18   // Test in-renderer constructor.
     19   PdfMetafileCg pdf;
     20   EXPECT_TRUE(pdf.Init());
     21   EXPECT_TRUE(pdf.context() != NULL);
     22 
     23   // Render page 1.
     24   gfx::Rect rect_1(10, 10, 520, 700);
     25   gfx::Size size_1(540, 720);
     26   pdf.StartPage(size_1, rect_1, 1.25);
     27   pdf.FinishPage();
     28 
     29   // Render page 2.
     30   gfx::Rect rect_2(10, 10, 520, 700);
     31   gfx::Size size_2(720, 540);
     32   pdf.StartPage(size_2, rect_2, 2.0);
     33   pdf.FinishPage();
     34 
     35   pdf.FinishDocument();
     36 
     37   // Check data size.
     38   uint32 size = pdf.GetDataSize();
     39   EXPECT_GT(size, 0U);
     40 
     41   // Get resulting data.
     42   std::vector<char> buffer(size, 0);
     43   pdf.GetData(&buffer.front(), size);
     44 
     45   // Test browser-side constructor.
     46   PdfMetafileCg pdf2;
     47   EXPECT_TRUE(pdf2.InitFromData(&buffer.front(), size));
     48 
     49   // Get the first 4 characters from pdf2.
     50   std::vector<char> buffer2(4, 0);
     51   pdf2.GetData(&buffer2.front(), 4);
     52 
     53   // Test that the header begins with "%PDF".
     54   std::string header(&buffer2.front(), 4);
     55   EXPECT_EQ(0U, header.find("%PDF", 0));
     56 
     57   // Test that the PDF is correctly reconstructed.
     58   EXPECT_EQ(2U, pdf2.GetPageCount());
     59   gfx::Size page_size = pdf2.GetPageBounds(1).size();
     60   EXPECT_EQ(540, page_size.width());
     61   EXPECT_EQ(720, page_size.height());
     62   page_size = pdf2.GetPageBounds(2).size();
     63   EXPECT_EQ(720, page_size.width());
     64   EXPECT_EQ(540, page_size.height());
     65 }
     66 
     67 }  // namespace printing
     68