| Index: class-dump/src/UnitTests/AllTests.m
|
| ===================================================================
|
| --- class-dump/src/UnitTests/AllTests.m (revision 0)
|
| +++ class-dump/src/UnitTests/AllTests.m (revision 0)
|
| @@ -0,0 +1,107 @@
|
| +#import "AllTests.h"
|
| +
|
| +#import "CDPathUnitTest.h"
|
| +#import "CDTypeLexerUnitTest.h"
|
| +#import "CDTypeParserUnitTest.h"
|
| +#import "CDTypeFormatterUnitTest.h"
|
| +#import "CDStructHandlingUnitTest.h"
|
| +
|
| +@interface NSObject (SenTestRuntimeUtilities)
|
| +
|
| +- (NSArray *) senAllSubclasses;
|
| +- (NSArray *) senInstanceInvocations;
|
| +- (NSArray *) senAllInstanceInvocations;
|
| +
|
| +@end
|
| +
|
| +
|
| +@implementation AllTests
|
| +
|
| +// This is here to help me understand what the original method does. Formatting/naming is key to understanding.
|
| ++ (void)_foo_updateCache;
|
| +{
|
| + NSEnumerator *testCaseEnumerator;
|
| + id testCaseClass = nil;
|
| +
|
| + testCaseEnumerator = [[SenTestCase senAllSubclasses] objectEnumerator];
|
| + testCaseClass = [testCaseEnumerator nextObject];
|
| + while (testCaseClass != nil) {
|
| + NSString *path;
|
| + SenTestSuite *suite;
|
| +
|
| + NSLog(@"%s, testCaseClass: %@[%@]", _cmd, testCaseClass, NSStringFromClass(testCaseClass));
|
| + NSLog(@"%s, self: %p, testCaseClass: %p", _cmd, self, testCaseClass);
|
| + if (testCaseClass != self) {
|
| + NSLog(@"default test suite: %@", [testCaseClass defaultTestSuite]);
|
| + }
|
| +#if 0
|
| + path = [[testCase bundle] bundlePath];
|
| + suite = [suiteForBundleCache objectForKey:path];
|
| +
|
| + if (suite == nil) {
|
| + suite = [self emptyTestSuiteNamedFromPath:path];
|
| + [suiteForBundleCache setObject:suite forKey:path];
|
| + }
|
| +
|
| + [suite addTest:[testCase defaultTestSuite]];
|
| +#endif
|
| + testCaseClass = [testCaseEnumerator nextObject];
|
| + }
|
| +}
|
| +
|
| +
|
| +
|
| ++ (id)defaultTestSuite;
|
| +{
|
| + SenTestSuite *allTests, *orderedTests, *unorderedTests;
|
| + NSMutableArray *order;
|
| + unsigned int count, index;
|
| +
|
| + order = [NSMutableArray array];
|
| + [order addObject:[CDPathUnitTest class]];
|
| + [order addObject:[CDTypeLexerUnitTest class]];
|
| + [order addObject:[CDTypeParserUnitTest class]];
|
| + //[order addObject:[CDTypeFormatterUnitTest class]];
|
| + [order addObject:[CDStructHandlingUnitTest class]];
|
| + [order addObject:[CDTypeFormatterUnitTest class]];
|
| +
|
| + NSLog(@"order: %@", order);
|
| +
|
| + allTests = [SenTestSuite testSuiteWithName:@"All Tests"];
|
| + orderedTests = [SenTestSuite testSuiteWithName:@"Order"];
|
| + unorderedTests = [SenTestSuite testSuiteWithName:@"Chaos"];
|
| + [allTests addTest:orderedTests];
|
| + [allTests addTest:unorderedTests];
|
| +
|
| + // First, set up the tests we want run in a particular order
|
| + count = [order count];
|
| + for (index = 0; index < count; index++)
|
| + [orderedTests addTest:[SenTestSuite testSuiteForTestCaseClass:[order objectAtIndex:index]]];
|
| +
|
| + // Then search for any tests that we didn't get from the manual setup above
|
| + {
|
| + NSMutableSet *used = [NSMutableSet set];
|
| + NSArray *allTestCaseSubclasses;
|
| +
|
| + [used addObjectsFromArray:order];
|
| + [used addObject:self];
|
| + [used addObject:[SenInterfaceTestCase class]]; // Dunno why it's picking this up, skip it.
|
| +
|
| + allTestCaseSubclasses = [SenTestCase senAllSubclasses];
|
| + count = [allTestCaseSubclasses count];
|
| + for (index = 0; index < count; index++) {
|
| + id aClass;
|
| +
|
| + aClass = [allTestCaseSubclasses objectAtIndex:index];
|
| + if ([used containsObject:aClass] == NO) {
|
| + //[unorderedTests addTest:[SenTestSuite testSuiteForTestCaseClass:aClass]];
|
| + [unorderedTests addTest:[aClass defaultTestSuite]];
|
| + [used addObject:aClass];
|
| + }
|
| + }
|
| + }
|
| +
|
| + return allTests;
|
| +}
|
| +
|
| +@end
|
|
|
| Property changes on: class-dump/src/UnitTests/AllTests.m
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|