// // GTMSystemVersionTest.m // // Copyright 2007-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 "GTMSystemVersion.h" #pragma clang diagnostic push // Ignore all of the deprecation warnings for GTMSystemVersion #pragma clang diagnostic ignored "-Wdeprecated-declarations" @interface GTMSystemVersionTest : GTMTestCase @end @implementation GTMSystemVersionTest - (void)testBasics { SInt32 major; SInt32 minor; SInt32 bugFix; [GTMSystemVersion getMajor:NULL minor:NULL bugFix:NULL]; [GTMSystemVersion getMajor:&major minor:NULL bugFix:NULL]; [GTMSystemVersion getMajor:NULL minor:&minor bugFix:NULL]; [GTMSystemVersion getMajor:NULL minor:NULL bugFix:&bugFix]; [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix]; #if GTM_IPHONE_SDK XCTAssertTrue(major >= 2 && minor >= 0 && bugFix >= 0); #else XCTAssertTrue(major >= 10 && minor >= 3 && bugFix >= 0); BOOL isPanther = (major == 10) && (minor == 3); BOOL isTiger = (major == 10) && (minor == 4); BOOL isLeopard = (major == 10) && (minor == 5); BOOL isSnowLeopard = (major == 10) && (minor == 6); BOOL isLater = (major > 10) || ((major == 10) && (minor > 6)); XCTAssertEqual([GTMSystemVersion isPanther], isPanther); XCTAssertEqual([GTMSystemVersion isPantherOrGreater], (BOOL)(isPanther || isTiger || isLeopard || isSnowLeopard || isLater)); XCTAssertEqual([GTMSystemVersion isTiger], isTiger); XCTAssertEqual([GTMSystemVersion isTigerOrGreater], (BOOL)(isTiger || isLeopard || isSnowLeopard || isLater)); XCTAssertEqual([GTMSystemVersion isLeopard], isLeopard); XCTAssertEqual([GTMSystemVersion isLeopardOrGreater], (BOOL)(isLeopard || isSnowLeopard || isLater)); XCTAssertEqual([GTMSystemVersion isSnowLeopard], isSnowLeopard); XCTAssertEqual([GTMSystemVersion isSnowLeopardOrGreater], (BOOL)(isSnowLeopard || isLater)); #endif } - (void)testRuntimeArchitecture { // Not sure how to test this short of recoding it and verifying. // This at least executes the code for me. XCTAssertNotNil([GTMSystemVersion runtimeArchitecture]); } - (void)testBuild { // Not sure how to test this short of coding up a large fragile table. // This at least executes the code for me. NSString *systemVersion = [GTMSystemVersion build]; XCTAssertNotEqual([systemVersion length], (NSUInteger)0); NSString *smallVersion = @"1A00"; NSString *largeVersion = @"100Z100"; XCTAssertTrue([GTMSystemVersion isBuildGreaterThan:smallVersion]); XCTAssertFalse([GTMSystemVersion isBuildGreaterThan:systemVersion]); XCTAssertFalse([GTMSystemVersion isBuildGreaterThan:largeVersion]); XCTAssertTrue([GTMSystemVersion isBuildGreaterThanOrEqualTo:smallVersion]); XCTAssertTrue([GTMSystemVersion isBuildGreaterThanOrEqualTo:systemVersion]); XCTAssertFalse([GTMSystemVersion isBuildGreaterThanOrEqualTo:largeVersion]); XCTAssertFalse([GTMSystemVersion isBuildEqualTo:smallVersion]); XCTAssertTrue([GTMSystemVersion isBuildEqualTo:systemVersion]); XCTAssertFalse([GTMSystemVersion isBuildEqualTo:largeVersion]); XCTAssertFalse([GTMSystemVersion isBuildLessThanOrEqualTo:smallVersion]); XCTAssertTrue([GTMSystemVersion isBuildLessThanOrEqualTo:systemVersion]); XCTAssertTrue([GTMSystemVersion isBuildLessThanOrEqualTo:largeVersion]); XCTAssertFalse([GTMSystemVersion isBuildLessThan:smallVersion]); XCTAssertFalse([GTMSystemVersion isBuildLessThan:systemVersion]); XCTAssertTrue([GTMSystemVersion isBuildLessThan:largeVersion]); } #if GTM_MACOS_SDK - (void)testMacOSVersion { SInt32 major = -1; SInt32 minor = -1; SInt32 bugfix = -1; [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugfix]; NSDictionary *versionPlistContents = [NSDictionary dictionaryWithContentsOfFile: @"/System/Library/CoreServices/SystemVersion.plist"]; XCTAssertNotNil(versionPlistContents); NSString *version = [versionPlistContents objectForKey:@"ProductVersion"]; XCTAssertNotNil(version); NSArray *pieces = [version componentsSeparatedByString:@"."]; XCTAssertTrue([pieces count] > 2); XCTAssertEqual(major, (SInt32)[[pieces objectAtIndex:0] integerValue]); XCTAssertEqual(minor, [[pieces objectAtIndex:1] integerValue]); if ([pieces count] > 2) { XCTAssertEqual(bugfix, [[pieces objectAtIndex:2] integerValue]); } else { XCTAssertEqual(bugfix, 0, @"possible beta OS"); } } #endif @end #pragma clang diagnostic pop