| // |
| // GTMSenTestCaseTest.m |
| // |
| // Copyright 2010 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 "GTMDefines.h" |
| |
| // This test currently executes under XCTest and under the GTM SenTest replacement. |
| #if !GTM_USING_XCTEST |
| #define XCTAssertFalse STAssertFalse |
| #define XCTAssertEqual STAssertEquals |
| #define XCTAssertTrue STAssertTrue |
| #endif // !GTM_USING_XCTEST |
| |
| #import "GTMSenTestCase.h" |
| |
| // These make use of the fact that methods are run in alphebetical order |
| // to have one test check that a previous one was run. If that order ever |
| // changes, there is a good chance things will break. |
| |
| static int gAbstractCalls_ = 0; |
| static int gZzCheckCalls_ = 0; |
| |
| @interface GTMTestingAbstractTest : GTMTestCase |
| @end |
| |
| @interface GTMTestingTestOne : GTMTestingAbstractTest { |
| BOOL zzCheckCalled_; |
| } |
| @end |
| |
| @interface GTMTestingTestTwo : GTMTestingTestOne |
| @end |
| |
| @implementation GTMTestingAbstractTest |
| |
| - (void)testAbstractUnitTest { |
| XCTAssertFalse([self isMemberOfClass:[GTMTestingAbstractTest class]], |
| @"test should not run on the abstract class"); |
| ++gAbstractCalls_; |
| } |
| |
| @end |
| |
| @implementation GTMTestingTestOne |
| |
| - (void)testZZCheck { |
| ++gZzCheckCalls_; |
| if ([self isMemberOfClass:[GTMTestingTestOne class]]) { |
| XCTAssertEqual(gAbstractCalls_, 1, |
| @"wrong number of abstract calls at this point"); |
| } else { |
| XCTAssertTrue([self isMemberOfClass:[GTMTestingTestTwo class]], |
| @"Not member of class"); |
| XCTAssertEqual(gAbstractCalls_, 2, |
| @"wrong number of abstract calls at this point"); |
| } |
| } |
| |
| @end |
| |
| @implementation GTMTestingTestTwo |
| |
| - (void)testZZZCheck { |
| // Test defined at this leaf, it should always run, check on the other methods. |
| XCTAssertEqual(gZzCheckCalls_, 2, @"the parent class method wasn't called"); |
| } |
| |
| @end |