1 // Copyright (c) 2010 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 #import <Cocoa/Cocoa.h> 6 7 #include "app/mac/nsimage_cache.h" 8 #include "base/file_path.h" 9 #include "base/mac/mac_util.h" 10 #include "base/path_service.h" 11 #include "chrome/common/chrome_constants.h" 12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/platform_test.h" 14 15 // This tests nsimage_cache, which lives in base/. The unit test is in 16 // chrome/ because it depends on having a built-up Chrome present. 17 18 namespace { 19 20 class NSImageCacheTest : public PlatformTest { 21 public: 22 NSImageCacheTest() { 23 // Look in the framework bundle for resources. 24 FilePath path; 25 PathService::Get(base::DIR_EXE, &path); 26 path = path.Append(chrome::kFrameworkName); 27 base::mac::SetOverrideAppBundlePath(path); 28 } 29 virtual ~NSImageCacheTest() { 30 base::mac::SetOverrideAppBundle(nil); 31 } 32 }; 33 34 TEST_F(NSImageCacheTest, LookupFound) { 35 EXPECT_TRUE(app::mac::GetCachedImageWithName(@"back_Template.pdf") != nil) 36 << "Failed to find the toolbar image?"; 37 } 38 39 TEST_F(NSImageCacheTest, LookupCached) { 40 EXPECT_EQ(app::mac::GetCachedImageWithName(@"back_Template.pdf"), 41 app::mac::GetCachedImageWithName(@"back_Template.pdf")) 42 << "Didn't get the same NSImage back?"; 43 } 44 45 TEST_F(NSImageCacheTest, LookupMiss) { 46 EXPECT_TRUE(app::mac::GetCachedImageWithName(@"should_not.exist") == nil) 47 << "There shouldn't be an image with this name?"; 48 } 49 50 TEST_F(NSImageCacheTest, LookupFoundAndClear) { 51 NSImage *first = app::mac::GetCachedImageWithName(@"back_Template.pdf"); 52 // Hang on to the first image so that the second one doesn't get allocated 53 // in the same location by (bad) luck. 54 [[first retain] autorelease]; 55 EXPECT_TRUE(first != nil) 56 << "Failed to find the toolbar image?"; 57 app::mac::ClearCachedImages(); 58 NSImage *second = app::mac::GetCachedImageWithName(@"back_Template.pdf"); 59 EXPECT_TRUE(second != nil) 60 << "Failed to find the toolbar image...again?"; 61 EXPECT_NE(second, first) 62 << "how'd we get the same image after a cache clear?"; 63 } 64 65 TEST_F(NSImageCacheTest, AutoTemplating) { 66 NSImage *templateImage = 67 app::mac::GetCachedImageWithName(@"back_Template.pdf"); 68 EXPECT_TRUE([templateImage isTemplate] == YES) 69 << "Image ending in 'Template' should be marked as being a template"; 70 NSImage *nonTemplateImage = 71 app::mac::GetCachedImageWithName(@"aliasCursor.png"); 72 EXPECT_FALSE([nonTemplateImage isTemplate] == YES) 73 << "Image not ending in 'Template' should not be marked as being a " 74 "template"; 75 } 76 77 } // namespace 78