| // Copyright (c) 2006-2009 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 "base/message_loop.h" |
| #include "base/string_util.h" |
| #include "printing/page_overlays.h" |
| #include "printing/print_settings.h" |
| #include "printing/printed_document.h" |
| #include "printing/printed_page.h" |
| #include "printing/printed_pages_source.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace { |
| |
| class PageOverlaysTest : public testing::Test { |
| private: |
| MessageLoop message_loop_; |
| }; |
| |
| struct Keys { |
| const wchar_t* key; |
| const wchar_t* expected; |
| }; |
| |
| const Keys kOverlayKeys[] = { |
| printing::PageOverlays::kTitle, L"Foobar Document", |
| printing::PageOverlays::kTime, L"", |
| printing::PageOverlays::kDate, L"", |
| printing::PageOverlays::kPage, L"1", |
| printing::PageOverlays::kPageCount, L"2", |
| printing::PageOverlays::kPageOnTotal, L"1/2", |
| printing::PageOverlays::kUrl, L"http://www.perdu.com/", |
| }; |
| |
| class PagesSource : public printing::PrintedPagesSource { |
| public: |
| virtual std::wstring RenderSourceName() { |
| return L"Foobar Document"; |
| } |
| |
| virtual GURL RenderSourceUrl() { |
| return GURL(L"http://www.perdu.com"); |
| } |
| }; |
| |
| } // namespace |
| |
| |
| TEST_F(PageOverlaysTest, StringConversion) { |
| printing::PageOverlays overlays; |
| overlays.GetOverlay(printing::PageOverlays::LEFT, |
| printing::PageOverlays::BOTTOM); |
| printing::PrintSettings settings; |
| PagesSource source; |
| int cookie = 1; |
| scoped_refptr<printing::PrintedDocument> doc( |
| new printing::PrintedDocument(settings, &source, cookie)); |
| doc->set_page_count(2); |
| gfx::Size page_size(100, 100); |
| scoped_refptr<printing::PrintedPage> page( |
| new printing::PrintedPage(1, NULL, page_size)); |
| |
| std::wstring input; |
| std::wstring out; |
| for (int i = 0; i < arraysize(kOverlayKeys); ++i) { |
| input = StringPrintf(L"foo%lsbar", kOverlayKeys[i].key); |
| out = printing::PageOverlays::ReplaceVariables(input, *doc.get(), |
| *page.get()); |
| EXPECT_FALSE(out.empty()); |
| if (wcslen(kOverlayKeys[i].expected) == 0) |
| continue; |
| EXPECT_EQ(StringPrintf(L"foo%lsbar", kOverlayKeys[i].expected), out) << |
| kOverlayKeys[i].key; |
| } |
| |
| // Check if SetOverlay really sets the page overlay. |
| overlays.SetOverlay(printing::PageOverlays::LEFT, |
| printing::PageOverlays::TOP, |
| UTF16ToWide(L"Page {page}")); |
| input = overlays.GetOverlay(printing::PageOverlays::LEFT, |
| printing::PageOverlays::TOP); |
| EXPECT_EQ(input, L"Page {page}"); |
| |
| // Replace the variables to see if the page number is correct. |
| out = printing::PageOverlays::ReplaceVariables(input, *doc.get(), |
| *page.get()); |
| EXPECT_EQ(out, L"Page 1"); |
| } |