diff options
author | thomasvl <thomasvl@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2008-01-28 20:19:42 +0000 |
---|---|---|
committer | thomasvl <thomasvl@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2008-01-28 20:19:42 +0000 |
commit | 2a5219567634ab7ab74314ff3615132becadff4a (patch) | |
tree | 8e6f447544e5eaf460da741bf57771f929b4a70c /AppKit/GTMLinearRGBShadingTest.m |
initial drop of a few sources to start things out
Diffstat (limited to 'AppKit/GTMLinearRGBShadingTest.m')
-rw-r--r-- | AppKit/GTMLinearRGBShadingTest.m | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/AppKit/GTMLinearRGBShadingTest.m b/AppKit/GTMLinearRGBShadingTest.m new file mode 100644 index 0000000..6407e71 --- /dev/null +++ b/AppKit/GTMLinearRGBShadingTest.m @@ -0,0 +1,94 @@ +// +// 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 "GTMLinearRGBShading.h" +#import "GTMNSColor+Theme.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 gtm_deviceRedColor]; + NSColor *blue = [NSColor gtm_deviceBlueColor]; + NSColor *purple = [NSColor gtm_devicePurpleColor]; + GTMLinearRGBShading *theShading = + [GTMLinearRGBShading shadingFromColor:red + toColor:blue + fromSpaceNamed:NSDeviceRGBColorSpace]; + STAssertNotNil(theShading,nil); + STAssertTrue([theShading stopCount] == 2, nil); + float *theColor = (float*)[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 unsigned int kColorCount = 100; + NSColor *theColors[kColorCount]; + float thePositions[kColorCount]; + const float kColorIncrement = 1.0f / kColorCount; + for (unsigned int i = 0; i < kColorCount; i++) { + thePositions[i] = kColorIncrement * i; + theColors[i] = [NSColor colorWithDeviceRed:kColorIncrement * i + green:kColorIncrement * i + blue:kColorIncrement * i + alpha:kColorIncrement * i]; + } + GTMLinearRGBShading *theShading = + [GTMLinearRGBShading shadingWithColors:theColors + fromSpaceNamed:NSDeviceRGBColorSpace + atPositions:thePositions + count:kColorCount]; + for (unsigned int i = 0; i < kColorCount; i++) { + float *theColor = (float*)[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:NSDeviceRGBColorSpace + atPositions:nil + count:0]; + CGFunctionRef theFunction = [theShading shadeFunction]; + STAssertTrue(nil != theFunction, nil); + STAssertTrue(CFGetTypeID(theFunction) == CGFunctionGetTypeID(), nil); +} + +- (void)testColorSpace { + GTMLinearRGBShading *theShading = + [GTMLinearRGBShading shadingWithColors:nil + fromSpaceNamed:NSDeviceRGBColorSpace + atPositions:nil + count:0]; + CGColorSpaceRef theColorSpace = [theShading colorSpace]; + STAssertTrue(nil != theColorSpace, nil); + STAssertTrue(CFGetTypeID(theColorSpace) == CGColorSpaceGetTypeID(), nil); +} +@end |