blob: 1726c4a1bdc5717847032af64de2e1d85ded66f5 [file] [log] [blame]
// Copyright (c) 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 "skia/ext/skia_utils_mac.mm"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
class SkiaUtilsMacTest : public testing::Test {
public:
// If not red, is blue.
// If not tfbit (twenty-four-bit), is 444.
void ShapeHelper(int width, int height, bool isred, bool tfbit);
};
void SkiaUtilsMacTest::ShapeHelper(int width, int height,
bool isred, bool tfbit) {
SkBitmap thing;
if (tfbit)
thing.setConfig(SkBitmap::kARGB_8888_Config, width, height);
else
thing.setConfig(SkBitmap::kARGB_4444_Config, width, height);
thing.allocPixels();
if (isred)
thing.eraseRGB(0xff, 0, 0);
else
thing.eraseRGB(0, 0, 0xff);
// Confirm size
NSImage* image = gfx::SkBitmapToNSImage(thing);
EXPECT_DOUBLE_EQ([image size].width, (double)width);
EXPECT_DOUBLE_EQ([image size].height, (double)height);
// Get the color of a pixel and make sure it looks fine
[image lockFocus];
int x = width > 17 ? 17 : 0;
int y = height > 17 ? 17 : 0;
NSColor* color = NSReadPixel(NSMakePoint(x, y));
CGFloat red = 0, green = 0, blue = 0, alpha = 0;
[image unlockFocus];
// SkBitmapToNSImage returns a bitmap in the calibrated color space (sRGB),
// while NSReadPixel returns a color in the device color space. Convert back
// to the calibrated color space before testing.
color = [color colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
[color getRed:&red green:&green blue:&blue alpha:&alpha];
// Be tolerant of floating point rounding and lossy color space conversions.
if (isred) {
EXPECT_GT(red, 0.95);
EXPECT_LT(blue, 0.05);
} else {
EXPECT_LT(red, 0.05);
EXPECT_GT(blue, 0.95);
}
EXPECT_LT(green, 0.05);
EXPECT_GT(alpha, 0.95);
}
TEST_F(SkiaUtilsMacTest, BitmapToNSImage_RedSquare64x64) {
ShapeHelper(64, 64, true, true);
}
TEST_F(SkiaUtilsMacTest, BitmapToNSImage_BlueRectangle199x19) {
ShapeHelper(199, 19, false, true);
}
TEST_F(SkiaUtilsMacTest, BitmapToNSImage_BlueRectangle444) {
ShapeHelper(200, 200, false, false);
}
} // namespace