Files
2011-04-23 15:50:32 +02:00

169 lines
4.8 KiB
Plaintext

@import <AppKit/CGColorSpace.j>
@implementation CGColorSpaceTest : OJTestCase
- (void)testColorSpaceCreateWithName
{
var testdata = {
"CGColorSpaceGenericGray" : {
model: kCGColorSpaceModelMonochrome,
count: 1,
base: NULL
},
"CGColorSpaceGenericRGB" : {
model: kCGColorSpaceModelRGB,
count: 3,
base: NULL
},
"CGColorSpaceGenericCMYK" : {
model: kCGColorSpaceModelCMYK,
count: 4,
base: NULL
},
"CGColorSpaceGenericRGBLinear" : {
model: kCGColorSpaceModelRGB,
count: 3,
base: NULL
},
"CGColorSpaceGenericRGBHDR" : {
model: kCGColorSpaceModelRGB,
count: 3,
base: NULL
},
"CGColorSpaceAdobeRGB1998" : {
model: kCGColorSpaceModelRGB,
count: 3,
base: NULL
},
"CGColorSpaceSRGB" : {
model: kCGColorSpaceModelRGB,
count: 3,
base: NULL
},
}
for ( var key in testdata ) {
var clrsp = CGColorSpaceCreateWithName(key),
expdata = testdata[key];
[self assert:expdata.model equals:clrsp.model message:"model for "+key];
[self assert:expdata.count equals:clrsp.count message:"count for "+key];
[self assert:expdata.base equals:clrsp.base message:"base for "+key];
}
[self assert:NULL
equals:CGColorSpaceCreateWithName("doesnotexist")
message:"should be missing"];
}
- (void)testColorSpaceStandardizeComponents
{
var testcases = {
"notsupported1" : {
testdata : {
model: kCGColorSpaceModelIndexed,
count: 5
},
expected: [5,4,3,2,1,NaN] // alpha value normalisation adds value at index 5
},
"notsupported2" : {
testdata : {
model: kCGColorSpaceModelLab,
count: 5
},
expected: [5,4,3,2,1,NaN]
},
"notsupported3" : {
testdata : {
model: kCGColorSpaceModelPattern,
count: 4
},
expected: [5,4,3,2,1]
},
"base override with count value" : {
testdata : {
model: kCGColorSpaceModelPattern,
base: { model: kCGColorSpaceModelMonochrome },
count: 4
},
expected: [1,1,1,1,1],
},
"base override no count value" : {
testdata : {
model: kCGColorSpaceModelPattern,
base: { model: kCGColorSpaceModelMonochrome, count: 4 },
count: 0
},
expected: [1,4,3,2,1], // alpha value is assumed to be at index 0
},
"monochrome color space model" : {
testdata : {
model: kCGColorSpaceModelMonochrome,
count: 2
},
expected: [1,1,1,2,1],
},
"rgb color space model" : {
testdata : {
model: kCGColorSpaceModelRGB,
count: 2
},
expected: [1,1,1,2,1],
},
"cmyk color space model" : {
testdata : {
model: kCGColorSpaceModelCMYK,
count: 2
},
expected: [1,1,1,2,1],
},
"devicen color space model" : {
testdata : {
model: kCGColorSpaceModelDeviceN,
count: 2
},
expected: [1,1,1,2,1],
},
}
for ( var key in testcases ) {
var components = [5,4,3,2,1];
CGColorSpaceStandardizeComponents( testcases[key].testdata, components);
[self assert:testcases[key].expected equals:components message:"Failed for "+key];
}
}
- (void)testRgbStandardize
{
var clrspc = CGColorSpaceCreateDeviceRGB(),
testcases = {
"negative values" : {
components: [-5,-4,-3,-2,-1,-1,-1,-1],
expected: [0,0,0,0,-1,-1,-1,-1],
},
// TODO: this happens because first the alpha value is normalised,
// TODO: so the components array does not have length 0, rather 4.
"missing values become undefined" : {
components: [],
expected: [undefined,undefined,undefined,1],
},
"values standarized if between 0 and 1" : {
components: [0.3, 0.4, 0.5, 0.6],
expected: [ROUND(0.3*255)/255, ROUND(0.4*255)/255,
ROUND(0.5*255)/255, ROUND(0.6*255)/255],
},
"values 0 or 1 if zero or one" : {
components: [0, 1, 0, 1],
expected: [0,1,0,1],
}
};
for ( var key in testcases ) {
CGColorSpaceStandardizeComponents( clrspc, testcases[key].components);
[self assert:testcases[key].expected
equals:testcases[key].components
message:"Failed for "+key];
}
}
@end