Files
cappuccino/Tests/AppKit/CGColorTest.j
T

217 lines
8.3 KiB
Plaintext

@import <AppKit/CGColor.j>
@implementation CGColorTest : OJTestCase
- (void)testColorCreateReturnNullIfNull
{
[self assert:NULL equals:CGColorCreate(NULL, [1, 2, 3]) message:"colorspace null failed"];
[self assert:NULL
equals:CGColorCreate(CGColorSpaceCreateDeviceRGB(), NULL)
message:"components null failed"];
}
- (void)testColorCreateEnsureComponentsAreCopied
{
var colorspace = CGColorSpaceCreateDeviceRGB(),
components = [2,3,4,5],
clr = CGColorCreate(colorspace, components);
components[0] = components[1] = components[2] = components[3] = 0;
[self assert:[1,1,1,1] equals:clr.components];
[self assert:[0,0,0,0] equals:components];
}
- (void)testColorCreateCachesColorsAlphaChangeIsPropagated
{
var clr = CGColorCreate(CGColorSpaceCreateDeviceRGB(), [0.4, 0.3, 0.2, 0.2]),
newclr = CGColorCreate(CGColorSpaceCreateDeviceRGB(), [0.4, 0.3, 0.2, 0.2]);
newclr.components[newclr.components.length - 1] = 0.6;
[self assert:0.6 equals:clr.components[clr.components.length - 1]];
}
- (void)testColorCreate
{
var colorspace = CGColorSpaceCreateDeviceRGB(),
components = [2,3,4,5]/*,
clruid = CFHashCode(colorspace) + components.join("")*/;
// Can't access the colormap cache, but it would be nice to
// [self assert:NULL equals:_CGColorMap[clruid]];
var clr = CGColorCreate(colorspace, components);
[self assert:colorspace equals:clr.colorspace message:"colorspace failed"];
[self assert:[1,1,1,1] equals:clr.components message:"components failed"];
[self assert:NULL equals:clr.pattern message:"pattern failed"];
// Can't access the colormap cache, but it would be nice to
// [self assert:clr equals:_CGColorMap[clruid]];
}
- (void)testColorCopy
{
// it returns it's argument, a little artifical but will fail if something
// changes with the function.
[self assert:"banana" equals:CGColorCreateCopy("banana")];
var colorspace = CGColorSpaceCreateDeviceRGB(),
components = [2, 3, 4, 5],
clr = CGColorCreate( colorspace, components );
[self assert:clr equals:CGColorCreateCopy(clr)];
}
- (void)testColorCreateGenericGray
{
var clr = CGColorCreateGenericGray(0.3, 0.5);
[self assert:CGColorSpaceCreateDeviceRGB()
equals:clr.colorspace message:"colorspace failed"];
[self assert:[ROUND(0.3 * 255) / 255, ROUND(0.3 * 255) / 255, ROUND(0.3 * 255) / 255, 0.5]
equals:clr.components message:"components failed"];
[self assert:NULL equals:clr.pattern message:"pattern failed"];
}
- (void)testColorCreateGenericRGB
{
var clr = CGColorCreateGenericRGB(0.4,0.3,0.2,0.1);
[self assert:CGColorSpaceCreateDeviceRGB()
equals:clr.colorspace message:"colorspace failed"];
[self assert:[ROUND(0.4 * 255) / 255, ROUND(0.3 * 255) / 255,ROUND(0.2 * 255) / 255, 0.1]
equals:clr.components message:"components failed"];
[self assert:NULL equals:clr.pattern message:"pattern failed"];
}
- (void)testColorCreateGenericCMYK
{
var clr = CGColorCreateGenericCMYK(0.2, 0.3, 0.4, 0.5, 0.6)
[self assert:CGColorSpaceCreateDeviceCMYK()
equals:clr.colorspace message:"colorspace failed"];
[self assert:[ROUND(0.2 * 255) / 255,ROUND(0.3 * 255) / 255,ROUND(0.4 * 255) / 255, ROUND(0.5 * 255) / 255, 0.6]
equals:clr.components message:"components failed"];
[self assert:NULL equals:clr.pattern message:"pattern failed"];
}
- (void)testColorCreateWithPattern
{
var clrspc = CGColorSpaceCreateDeviceRGB(),
pattern = "a new pattern",
components = [0.2, 0.4, 0.6, 0.8],
clr = CGColorCreateWithPattern(clrspc, pattern, components);
[self assert:clrspc equals:clr.colorspace];
[self assert:pattern equals:clr.pattern];
[self assert:components equals:clr.components];
// ensure that there was a copy made of the components
components[0] = components[1] = components[2] = components[3] = 0.0;
[self assert:[0.2, 0.4, 0.6, 0.8] equals:clr.components];
// ensure that null is returned
[self assert:NULL equals:CGColorCreateWithPattern(NULL, "a new pattern", [])];
[self assert:NULL equals:CGColorCreateWithPattern(CGColorSpaceCreateDeviceRGB(),
NULL, [])];
[self assert:NULL equals:CGColorCreateWithPattern(CGColorSpaceCreateDeviceRGB(),
"a new pattern", NULL)];
[self assert:NULL equals:CGColorCreateWithPattern(NULL, NULL, NULL)];
}
- (void)testColorGetAlpha
{
var clr = CGColorCreateGenericCMYK(0.2, 0.3, 0.4, 0.5, 0.6);
[self assert:0.6 equals:CGColorGetAlpha(clr)];
}
- (void)testColorGetColorSpace
{
var clr = CGColorCreateGenericCMYK(0.2, 0.3, 0.4, 0.5, 0.6);
[self assert:CGColorSpaceCreateDeviceCMYK()
equals:CGColorGetColorSpace(clr)];
}
- (void)testColorGetComponents
{
var clr = CGColorCreateGenericCMYK(0.2, 0.3, 0.4, 0.5, 0.6);
[self assert:[ROUND(0.2 * 255) / 255, ROUND(0.3 * 255) / 255, ROUND(0.4 * 255) / 255,
ROUND(0.5 * 255) / 255, ROUND(0.6 * 255) / 255]
equals:CGColorGetComponents(clr)];
}
- (void)testColorGetNumberOfComponents
{
var clr = CGColorCreateGenericCMYK(0.2, 0.3, 0.4, 0.5, 0.6);
[self assert:5 equals:CGColorGetNumberOfComponents(clr)];
}
- (void)testColorGetPattern
{
var clr = CGColorCreateWithPattern(CGColorSpaceCreateDeviceRGB(), "a new pattern",
[1,1,1,1]);
[self assert:"a new pattern" equals:CGColorGetPattern(clr)];
}
- (void)testColorCreateCopyWithAlphaWithPattern
{
var clr = CGColorCreateWithPattern(CGColorSpaceCreateDeviceRGB(), "a new pattern",
[1,1,1,1]);
[self assert:1 equals:CGColorGetAlpha(clr) message:"initial alpha"];
var newclr = CGColorCreateCopyWithAlpha(clr, 0.6);
[self assert:0.6 equals:CGColorGetAlpha(newclr) message:"new color alpha value"];
[self assert:1 equals:CGColorGetAlpha(clr) message:"alpha after copy"];
[self assert:clr.colorspace equals:newclr.colorspace message:"newclr colorspace failed"];
[self assert:clr.pattern equals:newclr.pattern message:"newclr pattern failed"];
}
- (void)testColorCreateCopyWithAlphaWithComponents
{
var clr = CGColorCreateGenericRGB(0.4, 0.3, 0.2, 0.3);
[self assert:0.3 equals:CGColorGetAlpha(clr) message:"initial alpha"];
var newclr = CGColorCreateCopyWithAlpha(clr, 0.6);
[self assert:0.6 equals:CGColorGetAlpha(newclr) message:"new color alpha value"];
[self assert:0.3 equals:CGColorGetAlpha(clr) message:"alpha after copy"];
[self assert:CGColorSpaceCreateDeviceRGB()
equals:newclr.colorspace message:"newclr colorspace failed"];
[self assert:[ROUND(0.4 * 255) / 255, ROUND(0.3 * 255) / 255, ROUND(0.2 * 255) / 255, 0.6]
equals:newclr.components message:"newclr components failed"];
[self assert:NULL equals:newclr.pattern message:"newclr pattern failed"];
[self assert:CGColorSpaceCreateDeviceRGB()
equals:clr.colorspace message:"orig clr colorspace failed"];
[self assert:[ROUND(0.4 * 255) / 255, ROUND(0.3 * 255) / 255, ROUND(0.2 * 255) / 255, 0.3]
equals:clr.components message:"orig clr components failed"];
[self assert:NULL equals:clr.pattern message:"orig clr pattern failed"];
}
- (void)testColorCreateCopyWithAlphaWithComponentsNullColor
{
[self assert:NULL
equals:CGColorCreateCopyWithAlpha(NULL,0.5)
message:"null color failed"];
var clr = CGColorCreateGenericRGB(0.4,0.3,0.2,0.1),
newclr = CGColorCreateCopyWithAlpha(clr, 0.1);
[self assert:clr equals:newclr];
}
- (void)testColorEqualToColor
{
[self assert:true equals:CGColorEqualToColor(NULL,NULL)];
var clr1 = CGColorCreateGenericRGB(0.4, 0.3, 0.2, 0.3);
[self assert:false equals:CGColorEqualToColor(NULL,clr1)];
[self assert:true equals:CGColorEqualToColor(clr1,clr1)];
[self assert:false equals:CGColorEqualToColor(clr1,NULL)];
var clr2 = CGColorCreateGenericRGB(0.4, 0.3, 0.2, 0.3);
[self assert:true equals:CGColorEqualToColor(clr1,clr2)];
[self assert:true equals:CGColorEqualToColor(clr2,clr1)];
clr2 = CGColorCreateGenericCMYK(0.2, 0.3, 0.4, 0.5, 0.6);
[self assert:false equals:CGColorEqualToColor(clr1,clr2)];
[self assert:false equals:CGColorEqualToColor(clr2,clr1)];
}
@end