From cdf070c8d76ffc4eaa24e8671756cbbe9ceb2890 Mon Sep 17 00:00:00 2001 From: thomasvl Date: Mon, 14 Apr 2008 17:21:02 +0000 Subject: See the ReleaseNotes for the full details, highlights: - bug fixes - code coverage support - more complete unittests - full support for unittesting UIs - support for the iphone sdk (include ui unittesting) --- Foundation/GTMGeometryUtilsTest.m | 181 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 Foundation/GTMGeometryUtilsTest.m (limited to 'Foundation/GTMGeometryUtilsTest.m') diff --git a/Foundation/GTMGeometryUtilsTest.m b/Foundation/GTMGeometryUtilsTest.m new file mode 100644 index 0000000..2fb0c68 --- /dev/null +++ b/Foundation/GTMGeometryUtilsTest.m @@ -0,0 +1,181 @@ +// +// GTMGeometryUtilsTest.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 "GTMSenTestCase.h" +#import "GTMGeometryUtils.h" + +@interface GTMGeometryUtilsTest : SenTestCase +@end + +@implementation GTMGeometryUtilsTest + +- (void)testGTMCGPointToNSPoint { + CGPoint cgPoint = CGPointMake(15.1,6.2); + NSPoint nsPoint = GTMCGPointToNSPoint(cgPoint); + STAssertTrue(CGPointEqualToPoint(*(CGPoint*)&nsPoint, cgPoint), nil); +} + +- (void)testGTMNSPointToCGPoint { + NSPoint nsPoint = NSMakePoint(10.2,1.5); + CGPoint cgPoint = GTMNSPointToCGPoint(nsPoint); + STAssertTrue(CGPointEqualToPoint(cgPoint, *(CGPoint*)&nsPoint), nil); +} + +- (void)testGTMCGRectToNSRect { + CGRect cgRect = CGRectMake(1.5,2.4,10.6,11.7); + NSRect nsRect = GTMCGRectToNSRect(cgRect); + STAssertTrue(CGRectEqualToRect(cgRect, *(CGRect*)&nsRect), nil); +} + + +- (void)testGTMNSRectToCGRect { + NSRect nsRect = NSMakeRect(4.6,3.2,22.1,45.0); + CGRect cgRect = GTMNSRectToCGRect(nsRect); + STAssertTrue(CGRectEqualToRect(cgRect, *(CGRect*)&nsRect), nil); +} + +- (void)testGTMCGSizeToNSSize { + CGSize cgSize = {5,6}; + NSSize nsSize = GTMCGSizeToNSSize(cgSize); + STAssertTrue(CGSizeEqualToSize(cgSize, *(CGSize*)&nsSize), nil); +} + +- (void)testGTMNSSizeToCGSize { + NSSize nsSize = {22,15}; + CGSize cgSize = GTMNSSizeToCGSize(nsSize); + STAssertTrue(CGSizeEqualToSize(cgSize, *(CGSize*)&nsSize), nil); +} + +- (void)testGTMDistanceBetweenPoints { + NSPoint pt1 = NSMakePoint(0, 0); + NSPoint pt2 = NSMakePoint(3, 4); + STAssertEquals(GTMDistanceBetweenPoints(pt1, pt2), 5.0f, nil); + STAssertEquals(GTMDistanceBetweenPoints(pt2, pt1), 5.0f, nil); + pt1 = NSMakePoint(1, 1); + pt2 = NSMakePoint(1, 1); + STAssertEquals(GTMDistanceBetweenPoints(pt1, pt2), 0.0f, nil); +} + +- (void)testGTMAlignRectangles { + typedef struct { + NSPoint expectedOrigin; + GTMRectAlignment alignment; + } TestData; + + TestData data[] = { + { {1,2}, GTMRectAlignTop }, + { {0,2}, GTMRectAlignTopLeft }, + { {2,2}, GTMRectAlignTopRight }, + { {0,1}, GTMRectAlignLeft }, + { {1,0}, GTMRectAlignBottom }, + { {0,0}, GTMRectAlignBottomLeft }, + { {2,0}, GTMRectAlignBottomRight }, + { {2,1}, GTMRectAlignRight }, + { {1,1}, GTMRectAlignCenter }, + }; + + NSRect rect1 = NSMakeRect(0, 0, 4, 4); + NSRect rect2 = NSMakeRect(0, 0, 2, 2); + + for (int i = 0; i < sizeof(data) / sizeof(TestData); i++) { + NSRect expectedRect; + expectedRect.origin = data[i].expectedOrigin; + expectedRect.size = NSMakeSize(2, 2); + NSRect outRect = GTMAlignRectangles(rect2, rect1, data[i].alignment); + STAssertEquals(outRect, expectedRect, nil); + } +} + +- (void)testGTMPointsOnRect { + NSRect rect = NSMakeRect(0, 0, 2, 2); + CGRect cgRect = GTMNSRectToCGRect(rect); + + NSPoint point = GTMNSMidLeft(rect); + CGPoint cgPoint = GTMCGMidLeft(cgRect); + STAssertEquals(point.x, cgPoint.x, nil); + STAssertEquals(point.y, cgPoint.y, nil); + STAssertEqualsWithAccuracy(point.y, 1.0f, 0.01f, nil); + STAssertEqualsWithAccuracy(point.x, 0.0f, 0.01f, nil); + + point = GTMNSMidRight(rect); + cgPoint = GTMCGMidRight(cgRect); + STAssertEquals(point.x, cgPoint.x, nil); + STAssertEquals(point.y, cgPoint.y, nil); + STAssertEqualsWithAccuracy(point.y, 1.0f, 0.01f, nil); + STAssertEqualsWithAccuracy(point.x, 2.0f, 0.01f, nil); + + point = GTMNSMidTop(rect); + cgPoint = GTMCGMidTop(cgRect); + STAssertEquals(point.x, cgPoint.x, nil); + STAssertEquals(point.y, cgPoint.y, nil); + STAssertEqualsWithAccuracy(point.y, 2.0f, 0.01f, nil); + STAssertEqualsWithAccuracy(point.x, 1.0f, 0.01f, nil); + + point = GTMNSMidBottom(rect); + cgPoint = GTMCGMidBottom(cgRect); + STAssertEquals(point.x, cgPoint.x, nil); + STAssertEquals(point.y, cgPoint.y, nil); + STAssertEqualsWithAccuracy(point.y, 0.0f, 0.01f, nil); + STAssertEqualsWithAccuracy(point.x, 1.0f, 0.01f, nil); +} + +- (void)testGTMRectScaling { + NSRect rect = NSMakeRect(1.0f, 2.0f, 5.0f, 10.0f); + NSRect rect2 = NSMakeRect(1.0f, 2.0f, 1.0f, 12.0f); + STAssertEquals(GTMNSRectScale(rect, 0.2f, 1.2f), + rect2, nil); + STAssertEquals(GTMCGRectScale(GTMNSRectToCGRect(rect), 0.2f, 1.2f), + GTMNSRectToCGRect(rect2), nil); +} + +- (void)testGTMScaleRectangleToSize { + NSRect rect = NSMakeRect(0.0f, 0.0f, 10.0f, 10.0f); + typedef struct { + NSSize size_; + NSSize newSize_; + } Test; + Test tests[] = { + { { 5.0, 10.0 }, { 5.0, 5.0 } }, + { { 10.0, 5.0 }, { 5.0, 5.0 } }, + { { 10.0, 10.0 }, { 10.0, 10.0 } }, + { { 11.0, 11.0, }, { 10.0, 10.0 } }, + { { 5.0, 2.0 }, { 2.0, 2.0 } }, + { { 2.0, 5.0 }, { 2.0, 2.0 } }, + { { 2.0, 2.0 }, { 2.0, 2.0 } }, + { { 0.0, 10.0 }, { 0.0, 0.0 } } + }; + + for (size_t i = 0; i < sizeof(tests) / sizeof(Test); ++i) { + NSRect result = GTMScaleRectangleToSize(rect, tests[i].size_, + GTMScaleProportionally); + STAssertEquals(result, GTMNSRectOfSize(tests[i].newSize_), @"failed on test %z", i); + } + + NSRect result = GTMScaleRectangleToSize(NSZeroRect, tests[0].size_, + GTMScaleProportionally); + STAssertEquals(result, NSZeroRect, nil); + + result = GTMScaleRectangleToSize(rect, tests[0].size_, + GTMScaleToFit); + STAssertEquals(result, GTMNSRectOfSize(tests[0].size_), nil); + + result = GTMScaleRectangleToSize(rect, tests[0].size_, + GTMScaleNone); + STAssertEquals(result, rect, nil); +} +@end -- cgit v1.2.3