1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
//
// GTMLinearRGBShadingTest.m
//
// Copyright 2006-2008 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
//
#import <SenTestingKit/SenTestingKit.h>
#import "GTMSenTestCase.h"
#import "GTMLinearRGBShading.h"
@interface GTMLinearRGBShadingTest : GTMTestCase
@end
@implementation GTMLinearRGBShadingTest
- (void)testShadingFrom {
// Create a shading from red to blue, and check if 50% is purple
NSColor *red = [NSColor redColor];
NSColor *blue = [NSColor blueColor];
NSColor *purple = [NSColor purpleColor];
GTMLinearRGBShading *theShading =
[GTMLinearRGBShading shadingFromColor:red
toColor:blue
fromSpaceNamed:NSCalibratedRGBColorSpace];
STAssertNotNil(theShading,nil);
STAssertEquals([theShading stopCount], (NSUInteger)2, nil);
CGFloat *theColor = (CGFloat*)[theShading valueAtPosition: 0.5];
STAssertEqualsWithAccuracy(theColor[0], [purple redComponent], 0.001, nil);
STAssertEqualsWithAccuracy(theColor[1], [purple greenComponent], 0.001, nil);
STAssertEqualsWithAccuracy(theColor[2], [purple blueComponent], 0.001, nil);
STAssertEqualsWithAccuracy(theColor[3], [purple alphaComponent], 0.001, nil);
}
- (void)testShadingWith {
// Create a shading with kColorCount colors and make sure all the values are there.
const NSUInteger kColorCount = 100;
NSColor *theColors[kColorCount];
CGFloat thePositions[kColorCount];
const CGFloat kColorIncrement = 1.0 / kColorCount;
for (NSUInteger i = 0; i < kColorCount; i++) {
CGFloat newValue = kColorIncrement * i;
thePositions[i] = newValue;
theColors[i] = [NSColor colorWithCalibratedRed:newValue
green:newValue
blue:newValue
alpha:newValue];
}
GTMLinearRGBShading *theShading =
[GTMLinearRGBShading shadingWithColors:theColors
fromSpaceNamed:NSCalibratedRGBColorSpace
atPositions:thePositions
count:kColorCount];
for (NSUInteger i = 0; i < kColorCount; i++) {
CGFloat newValue = kColorIncrement * i;
CGFloat *theColor = (CGFloat*)[theShading valueAtPosition:newValue];
STAssertEqualsWithAccuracy(theColor[0], newValue, 0.001, nil);
STAssertEqualsWithAccuracy(theColor[1], newValue, 0.001, nil);
STAssertEqualsWithAccuracy(theColor[2], newValue, 0.001, nil);
STAssertEqualsWithAccuracy(theColor[3], newValue, 0.001, nil);
}
}
- (void)testShadeFunction {
GTMLinearRGBShading *theShading =
[GTMLinearRGBShading shadingWithColors:nil
fromSpaceNamed:NSCalibratedRGBColorSpace
atPositions:nil
count:0];
CGFunctionRef theFunction = [theShading shadeFunction];
STAssertNotNULL(theFunction, nil);
STAssertEquals(CFGetTypeID(theFunction), CGFunctionGetTypeID(), nil);
}
- (void)testColorSpace {
GTMLinearRGBShading *theShading =
[GTMLinearRGBShading shadingWithColors:nil
fromSpaceNamed:NSCalibratedRGBColorSpace
atPositions:nil
count:0];
CGColorSpaceRef theColorSpace = [theShading colorSpace];
STAssertNotNULL(theColorSpace, nil);
STAssertEquals(CFGetTypeID(theColorSpace), CGColorSpaceGetTypeID(), nil);
}
@end
|