aboutsummaryrefslogtreecommitdiff
path: root/UnitTesting/GTMSenTestCaseTest.m
diff options
context:
space:
mode:
authorGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2010-11-19 21:30:22 +0000
committerGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2010-11-19 21:30:22 +0000
commitb4ed53890ab5454ae0d6926d5acb7d1d898917e2 (patch)
tree45a71cd9323f10dc9354d56f01f561274de6d471 /UnitTesting/GTMSenTestCaseTest.m
parent59218cf3ff9c6d290de327220758eb84f9889bd0 (diff)
[Author: thomasvl]
Move the test for abstract unittest support out into a file that can be shared with iOS. Add the unittest to the iOS project. Fix up the iOS unittesting support to handle abstract tests. R=dmaclach DELTA=156 (105 added, 20 deleted, 31 changed)
Diffstat (limited to 'UnitTesting/GTMSenTestCaseTest.m')
-rw-r--r--UnitTesting/GTMSenTestCaseTest.m72
1 files changed, 72 insertions, 0 deletions
diff --git a/UnitTesting/GTMSenTestCaseTest.m b/UnitTesting/GTMSenTestCaseTest.m
new file mode 100644
index 0000000..9d9a594
--- /dev/null
+++ b/UnitTesting/GTMSenTestCaseTest.m
@@ -0,0 +1,72 @@
+//
+// 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 "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 {
+ STAssertFalse([self isMemberOfClass:[GTMTestingAbstractTest class]],
+ @"test should not run on the abstract class");
+ ++gAbstractCalls_;
+}
+
+@end
+
+@implementation GTMTestingTestOne
+
+- (void)testZZCheck {
+ ++gZzCheckCalls_;
+ if ([self isMemberOfClass:[GTMTestingTestOne class]]) {
+ STAssertEquals(gAbstractCalls_, 1,
+ @"wrong number of abstract calls at this point");
+ } else {
+ STAssertTrue([self isMemberOfClass:[GTMTestingTestTwo class]], nil);
+ STAssertEquals(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.
+ STAssertEquals(gZzCheckCalls_, 2, @"the parent class method wasn't called");
+}
+
+@end