// // GTMNSBezierPath+CGPathTest.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 #import "GTMNSBezierPath+CGPath.h" #import "GTMSenTestCase.h" @interface GTMNSBezierPath_CGPathTest : GTMTestCase @end @implementation GTMNSBezierPath_CGPathTest - (void)testCGPath { NSBitmapImageRep *offscreenRep = [[[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:100 pixelsHigh:100 bitsPerSample:8 samplesPerPixel:4 hasAlpha:YES isPlanar:NO colorSpaceName:NSDeviceRGBColorSpace bitmapFormat:NSAlphaFirstBitmapFormat bytesPerRow:0 bitsPerPixel:0] autorelease]; // set offscreen context NSGraphicsContext *nsContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:offscreenRep]; [NSGraphicsContext setCurrentContext:nsContext]; NSBezierPath *thePath = [NSBezierPath bezierPath]; NSPoint theStart = NSMakePoint(20.0, 20.0); // Test moveto/lineto [thePath moveToPoint: theStart]; for (NSUInteger i = 0; i < 10; ++i) { NSPoint theNewPoint = NSMakePoint(i * 5, i * 10); [thePath lineToPoint: theNewPoint]; theNewPoint = NSMakePoint(i * 2, i * 6); [thePath moveToPoint: theNewPoint]; } // Test moveto/curveto for (NSUInteger i = 0; i < 10; ++i) { NSPoint startPoint = NSMakePoint(5.0, 50.0); NSPoint endPoint = NSMakePoint(55.0, 50.0); NSPoint controlPoint1 = NSMakePoint(17.5, 50.0 + 5.0 * i); NSPoint controlPoint2 = NSMakePoint(42.5, 50.0 - 5.0 * i); [thePath moveToPoint:startPoint]; [thePath curveToPoint:endPoint controlPoint1:controlPoint1 controlPoint2:controlPoint2]; } // test close [thePath closePath]; CGPathRef cgPath = [thePath gtm_CGPath]; XCTAssertNotNULL(cgPath, @"Nil CGPath"); CGContextRef cgContext = [nsContext graphicsPort]; XCTAssertNotNULL(cgContext, @"Nil cgContext"); CGContextAddPath(cgContext, cgPath); CGContextStrokePath(cgContext); } @end