| // Copyright (c) 2006-2008 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 "app/win_util.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| TEST(WinUtilTest, EnsureRectIsVisibleInRect) { |
| gfx::Rect parent_rect(0, 0, 500, 400); |
| |
| { |
| // Child rect x < 0 |
| gfx::Rect child_rect(-50, 20, 100, 100); |
| win_util::EnsureRectIsVisibleInRect(parent_rect, &child_rect, 10); |
| EXPECT_EQ(gfx::Rect(10, 20, 100, 100), child_rect); |
| } |
| |
| { |
| // Child rect y < 0 |
| gfx::Rect child_rect(20, -50, 100, 100); |
| win_util::EnsureRectIsVisibleInRect(parent_rect, &child_rect, 10); |
| EXPECT_EQ(gfx::Rect(20, 10, 100, 100), child_rect); |
| } |
| |
| { |
| // Child rect right > parent_rect.right |
| gfx::Rect child_rect(450, 20, 100, 100); |
| win_util::EnsureRectIsVisibleInRect(parent_rect, &child_rect, 10); |
| EXPECT_EQ(gfx::Rect(390, 20, 100, 100), child_rect); |
| } |
| |
| { |
| // Child rect bottom > parent_rect.bottom |
| gfx::Rect child_rect(20, 350, 100, 100); |
| win_util::EnsureRectIsVisibleInRect(parent_rect, &child_rect, 10); |
| EXPECT_EQ(gfx::Rect(20, 290, 100, 100), child_rect); |
| } |
| |
| { |
| // Child rect width > parent_rect.width |
| gfx::Rect child_rect(20, 20, 700, 100); |
| win_util::EnsureRectIsVisibleInRect(parent_rect, &child_rect, 10); |
| EXPECT_EQ(gfx::Rect(20, 20, 480, 100), child_rect); |
| } |
| |
| { |
| // Child rect height > parent_rect.height |
| gfx::Rect child_rect(20, 20, 100, 700); |
| win_util::EnsureRectIsVisibleInRect(parent_rect, &child_rect, 10); |
| EXPECT_EQ(gfx::Rect(20, 20, 100, 380), child_rect); |
| } |
| } |
| |
| static const struct filename_case { |
| const wchar_t* filename; |
| const wchar_t* filter_selected; |
| const wchar_t* suggested_ext; |
| const wchar_t* result; |
| } filename_cases[] = { |
| // Test a specific filter (*.jpg). |
| {L"f", L"*.jpg", L"jpg", L"f.jpg"}, |
| {L"f.", L"*.jpg", L"jpg", L"f..jpg"}, |
| {L"f..", L"*.jpg", L"jpg", L"f...jpg"}, |
| {L"f.jpeg", L"*.jpg", L"jpg", L"f.jpeg"}, |
| // Further guarantees. |
| {L"f.jpg.jpg", L"*.jpg", L"jpg", L"f.jpg.jpg"}, |
| {L"f.exe.jpg", L"*.jpg", L"jpg", L"f.exe.jpg"}, |
| {L"f.jpg.exe", L"*.jpg", L"jpg", L"f.jpg.exe.jpg"}, |
| {L"f.exe..", L"*.jpg", L"jpg", L"f.exe...jpg"}, |
| {L"f.jpg..", L"*.jpg", L"jpg", L"f.jpg...jpg"}, |
| // Test the All Files filter (*.jpg). |
| {L"f", L"*.*", L"jpg", L"f"}, |
| {L"f.", L"*.*", L"jpg", L"f"}, |
| {L"f..", L"*.*", L"jpg", L"f"}, |
| {L"f.jpg", L"*.*", L"jpg", L"f.jpg"}, |
| {L"f.jpeg", L"*.*", L"jpg", L"f.jpeg"}, // Same MIME type (diff. ext). |
| // Test the empty filter, which should behave identically to the |
| // All Files filter. |
| {L"f", L"", L"jpg", L"f"}, |
| {L"f.", L"", L"jpg", L"f"}, |
| {L"f..", L"", L"jpg", L"f"}, |
| {L"f.jpg", L"", L"jpg", L"f.jpg"}, |
| {L"f.jpeg", L"", L"jpg", L"f.jpeg"}, |
| }; |
| |
| TEST(WinUtilTest, AppendingExtensions) { |
| for (unsigned int i = 0; i < arraysize(filename_cases); ++i) { |
| const filename_case& value = filename_cases[i]; |
| std::wstring result = |
| win_util::AppendExtensionIfNeeded(value.filename, value.filter_selected, |
| value.suggested_ext); |
| EXPECT_EQ(value.result, result); |
| } |
| } |