aboutsummaryrefslogtreecommitdiff
path: root/AppKit/GTMLinearRGBShadingTest.m
blob: 119fa79e8a93e8e31f1eae52f8b0c38f517672c5 (plain)
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
//
//  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 : SenTestCase
@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];
  STAssertTrue(theColor[0] == [purple redComponent] &&
               theColor[1] == [purple greenComponent] &&
               theColor[2] == [purple blueComponent] &&
               theColor[3] == [purple alphaComponent], 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++) {
    thePositions[i] = kColorIncrement * i;
    theColors[i] = [NSColor colorWithCalibratedRed:kColorIncrement * i 
                                             green:kColorIncrement * i 
                                              blue:kColorIncrement * i 
                                             alpha:kColorIncrement * i];
  }
  GTMLinearRGBShading *theShading =
    [GTMLinearRGBShading shadingWithColors:theColors
                            fromSpaceNamed:NSCalibratedRGBColorSpace
                               atPositions:thePositions
                                     count:kColorCount];
  for (NSUInteger i = 0; i < kColorCount; i++) {
     CGFloat *theColor = (CGFloat*)[theShading valueAtPosition: kColorIncrement * i];
    STAssertTrue(theColor[0] == kColorIncrement * i &&
                 theColor[1] == kColorIncrement * i &&
                 theColor[2] == kColorIncrement * i &&
                 theColor[3] == kColorIncrement * i, 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