Movatterモバイル変換


[0]ホーム

URL:


Google Git
Sign in
chromium /chromium /src /refs/heads/main /. /printing /page_setup_unittest.cc
blob: 62817e39b3e7def3971cd56cb52b9b18d3095d57 [file] [log] [blame] [edit]
// Copyright 2011 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include"printing/page_setup.h"
#include<stdlib.h>
#include<time.h>
#include<algorithm>
#include"testing/gtest/include/gtest/gtest.h"
namespace printing{
TEST(PageSetupTest,Random){
time_t seed= time(NULL);
int kMax=10;
srand(static_cast<unsigned>(seed));
// Margins.
PageMargins margins;
margins.header= rand()% kMax;
margins.footer= rand()% kMax;
margins.left= rand()% kMax;
margins.top= rand()% kMax;
margins.right= rand()% kMax;
margins.bottom= rand()% kMax;
int kTextHeight= rand()% kMax;
// Page description.
gfx::Size page_size(100+ rand()% kMax,200+ rand()% kMax);
gfx::Rect printable_area(rand()% kMax, rand()% kMax,0,0);
printable_area.set_width(page_size.width()-(rand()% kMax)-
printable_area.x());
printable_area.set_height(page_size.height()-(rand()% kMax)-
printable_area.y());
// Make the calculations.
PageSetup setup;
setup.SetRequestedMargins(margins);
setup.Init(page_size, printable_area, kTextHeight);
// Calculate the effective margins.
PageMargins effective_margins;
effective_margins.header= std::max(margins.header, printable_area.y());
effective_margins.left= std::max(margins.left, printable_area.x());
effective_margins.top=
std::max(margins.top, effective_margins.header+ kTextHeight);
effective_margins.footer=
std::max(margins.footer, page_size.height()- printable_area.bottom());
effective_margins.right=
std::max(margins.right, page_size.width()- printable_area.right());
effective_margins.bottom=
std::max(margins.bottom, effective_margins.footer+ kTextHeight);
// Calculate the overlay area.
gfx::Rect overlay_area(
effective_margins.left, effective_margins.header,
page_size.width()- effective_margins.right- effective_margins.left,
page_size.height()- effective_margins.footer- effective_margins.header);
// Calculate the content area.
gfx::Rect content_area(
overlay_area.x(), effective_margins.top, overlay_area.width(),
page_size.height()- effective_margins.bottom- effective_margins.top);
// Test values.
EXPECT_EQ(page_size, setup.physical_size())
<< seed<<" "<< page_size.ToString()<<" "<< printable_area.ToString()
<<" "<< kTextHeight;
EXPECT_EQ(overlay_area, setup.overlay_area())
<< seed<<" "<< page_size.ToString()<<" "<< printable_area.ToString()
<<" "<< kTextHeight;
EXPECT_EQ(content_area, setup.content_area())
<< seed<<" "<< page_size.ToString()<<" "<< printable_area.ToString()
<<" "<< kTextHeight;
EXPECT_EQ(effective_margins.header, setup.effective_margins().header)
<< seed<<" "<< page_size.ToString()<<" "<< printable_area.ToString()
<<" "<< kTextHeight;
EXPECT_EQ(effective_margins.footer, setup.effective_margins().footer)
<< seed<<" "<< page_size.ToString()<<" "<< printable_area.ToString()
<<" "<< kTextHeight;
EXPECT_EQ(effective_margins.left, setup.effective_margins().left)
<< seed<<" "<< page_size.ToString()<<" "<< printable_area.ToString()
<<" "<< kTextHeight;
EXPECT_EQ(effective_margins.top, setup.effective_margins().top)
<< seed<<" "<< page_size.ToString()<<" "<< printable_area.ToString()
<<" "<< kTextHeight;
EXPECT_EQ(effective_margins.right, setup.effective_margins().right)
<< seed<<" "<< page_size.ToString()<<" "<< printable_area.ToString()
<<" "<< kTextHeight;
EXPECT_EQ(effective_margins.bottom, setup.effective_margins().bottom)
<< seed<<" "<< page_size.ToString()<<" "<< printable_area.ToString()
<<" "<< kTextHeight;
}
TEST(PageSetupTest,HardCoded){
// Margins.
PageMargins margins;
margins.header=2;
margins.footer=2;
margins.left=4;
margins.top=4;
margins.right=4;
margins.bottom=4;
int kTextHeight=3;
// Page description.
gfx::Size page_size(100,100);
gfx::Rect printable_area(3,3,94,94);
// Make the calculations.
PageSetup setup;
setup.SetRequestedMargins(margins);
setup.Init(page_size, printable_area, kTextHeight);
// Calculate the effective margins.
PageMargins effective_margins;
effective_margins.header=3;
effective_margins.left=4;
effective_margins.top=6;
effective_margins.footer=3;
effective_margins.right=4;
effective_margins.bottom=6;
// Calculate the overlay area.
gfx::Rect overlay_area(4,3,92,94);
// Calculate the content area.
gfx::Rect content_area(4,6,92,88);
// Test values.
EXPECT_EQ(page_size, setup.physical_size())
<<" "<< page_size.ToString()<<" "<< printable_area.ToString()<<" "
<< kTextHeight;
EXPECT_EQ(overlay_area, setup.overlay_area())
<<" "<< page_size.ToString()<<" "<< printable_area.ToString()<<" "
<< kTextHeight;
EXPECT_EQ(content_area, setup.content_area())
<<" "<< page_size.ToString()<<" "<< printable_area.ToString()<<" "
<< kTextHeight;
EXPECT_EQ(effective_margins.header, setup.effective_margins().header)
<<" "<< page_size.ToString()<<" "<< printable_area.ToString()<<" "
<< kTextHeight;
EXPECT_EQ(effective_margins.footer, setup.effective_margins().footer)
<<" "<< page_size.ToString()<<" "<< printable_area.ToString()<<" "
<< kTextHeight;
EXPECT_EQ(effective_margins.left, setup.effective_margins().left)
<<" "<< page_size.ToString()<<" "<< printable_area.ToString()<<" "
<< kTextHeight;
EXPECT_EQ(effective_margins.top, setup.effective_margins().top)
<<" "<< page_size.ToString()<<" "<< printable_area.ToString()<<" "
<< kTextHeight;
EXPECT_EQ(effective_margins.right, setup.effective_margins().right)
<<" "<< page_size.ToString()<<" "<< printable_area.ToString()<<" "
<< kTextHeight;
EXPECT_EQ(effective_margins.bottom, setup.effective_margins().bottom)
<<" "<< page_size.ToString()<<" "<< printable_area.ToString()<<" "
<< kTextHeight;
}
TEST(PageSetupTest,OutOfRangeMargins){
PageMargins margins;
margins.header=0;
margins.footer=0;
margins.left=-10;
margins.top=-11;
margins.right=-12;
margins.bottom=-13;
gfx::Size page_size(100,100);
gfx::Rect printable_area(1,2,96,94);
// Make the calculations.
PageSetup setup;
setup.SetRequestedMargins(margins);
setup.Init(page_size, printable_area,0);
EXPECT_EQ(setup.effective_margins().left,1);
EXPECT_EQ(setup.effective_margins().top,2);
EXPECT_EQ(setup.effective_margins().right,3);
EXPECT_EQ(setup.effective_margins().bottom,4);
setup.ForceRequestedMargins(margins);
EXPECT_EQ(setup.effective_margins().left,0);
EXPECT_EQ(setup.effective_margins().top,0);
EXPECT_EQ(setup.effective_margins().right,0);
EXPECT_EQ(setup.effective_margins().bottom,0);
}
TEST(PageSetupTest,FlipOrientation){
// Margins.
PageMargins margins;
margins.header=2;
margins.footer=3;
margins.left=4;
margins.top=14;
margins.right=6;
margins.bottom=7;
int kTextHeight=5;
// Page description.
gfx::Size page_size(100,70);
gfx::Rect printable_area(8,9,92,50);
// Make the calculations.
PageSetup setup;
setup.SetRequestedMargins(margins);
setup.Init(page_size, printable_area, kTextHeight);
gfx::Rect overlay_area(8,9,86,50);
gfx::Rect content_area(8,14,86,40);
EXPECT_EQ(page_size, setup.physical_size());
EXPECT_EQ(overlay_area, setup.overlay_area());
EXPECT_EQ(content_area, setup.content_area());
EXPECT_EQ(setup.effective_margins().left,8);
EXPECT_EQ(setup.effective_margins().top,14);
EXPECT_EQ(setup.effective_margins().right,6);
EXPECT_EQ(setup.effective_margins().bottom,16);
// Flip the orientation
setup.FlipOrientation();
// Expected values.
gfx::Size flipped_page_size(70,100);
gfx::Rect flipped_printable_area(9,0,50,92);
gfx::Rect flipped_overlay_area(9,2,50,90);
gfx::Rect flipped_content_area(9,14,50,73);
// Test values.
EXPECT_EQ(flipped_page_size, setup.physical_size());
EXPECT_EQ(flipped_overlay_area, setup.overlay_area());
EXPECT_EQ(flipped_content_area, setup.content_area());
EXPECT_EQ(flipped_printable_area, setup.printable_area());
// Margin values are updated as per the flipped values.
EXPECT_EQ(setup.effective_margins().left,9);
EXPECT_EQ(setup.effective_margins().top,14);
EXPECT_EQ(setup.effective_margins().right,11);
EXPECT_EQ(setup.effective_margins().bottom,13);
// Force requested margins and flip the orientation.
setup.Init(page_size, printable_area, kTextHeight);
setup.ForceRequestedMargins(margins);
EXPECT_EQ(setup.effective_margins().left,4);
EXPECT_EQ(setup.effective_margins().top,14);
EXPECT_EQ(setup.effective_margins().right,6);
EXPECT_EQ(setup.effective_margins().bottom,7);
// Flip the orientation
setup.FlipOrientation();
// Expected values.
gfx::Rect new_printable_area(9,0,50,92);
gfx::Rect new_overlay_area(4,2,60,95);
gfx::Rect new_content_area(4,14,60,79);
// Test values.
EXPECT_EQ(flipped_page_size, setup.physical_size());
EXPECT_EQ(new_overlay_area, setup.overlay_area());
EXPECT_EQ(new_content_area, setup.content_area());
EXPECT_EQ(new_printable_area, setup.printable_area());
// Margins values are changed respectively.
EXPECT_EQ(setup.effective_margins().left,4);
EXPECT_EQ(setup.effective_margins().top,14);
EXPECT_EQ(setup.effective_margins().right,6);
EXPECT_EQ(setup.effective_margins().bottom,7);
}
TEST(PageSetupTest,GetSymmetricalPrintableArea){
gfx::Rect printable_area=PageSetup::GetSymmetricalPrintableArea(
gfx::Size(612,792), gfx::Rect(0,0,560,750));
EXPECT_EQ(gfx::Rect(52,42,508,708), printable_area);
printable_area=PageSetup::GetSymmetricalPrintableArea(
gfx::Size(612,792), gfx::Rect(50,60,550,700));
EXPECT_EQ(gfx::Rect(50,60,512,672), printable_area);
printable_area=PageSetup::GetSymmetricalPrintableArea(
gfx::Size(612,792), gfx::Rect(-1,60,520,700));
EXPECT_EQ(gfx::Rect(), printable_area);
printable_area=PageSetup::GetSymmetricalPrintableArea(
gfx::Size(612,792), gfx::Rect(50,-1,520,700));
EXPECT_EQ(gfx::Rect(), printable_area);
printable_area=PageSetup::GetSymmetricalPrintableArea(
gfx::Size(612,792), gfx::Rect(100,60,520,700));
EXPECT_EQ(gfx::Rect(), printable_area);
printable_area=PageSetup::GetSymmetricalPrintableArea(
gfx::Size(612,792), gfx::Rect(50,100,520,700));
EXPECT_EQ(gfx::Rect(), printable_area);
printable_area=PageSetup::GetSymmetricalPrintableArea(
gfx::Size(612,792), gfx::Rect(400,60,212,700));
EXPECT_EQ(gfx::Rect(), printable_area);
printable_area=PageSetup::GetSymmetricalPrintableArea(
gfx::Size(612,792), gfx::Rect(40,600,212,192));
EXPECT_EQ(gfx::Rect(), printable_area);
}
}// namespace printing

[8]ページ先頭

©2009-2025 Movatter.jp