Skip to content
Browse files

Basically working.

Can turn tests on/off and view their transcripts.
  • Loading branch information...
1 parent e5b1e32 commit b623966e9d9523b321db8193db79339398d1278c @snej snej committed Oct 4, 2011
View
3 App/AppDelegate.h
@@ -13,7 +13,8 @@
@interface AppDelegate : UIResponder <UIApplicationDelegate, CouchbaseDelegate>
-@property (strong, nonatomic) UIWindow *window;
+@property (strong, nonatomic) IBOutlet UIWindow *window;
+@property (strong, nonatomic) IBOutlet UINavigationController *navController;
/** The database this app is using; observable.
(The unit tests access this property; see CouchTestCase.m.) */
View
9 App/AppDelegate.m
@@ -22,7 +22,7 @@ @interface AppDelegate ()
@implementation AppDelegate
-@synthesize window = _window;
+@synthesize window = _window, navController = _navController;
@synthesize database = _database;
- (void)dealloc
@@ -36,11 +36,8 @@ - (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"------ application:didFinishLaunchingWithOptions:");
- // TODO: You'll probably want to put up some initial UI here.
- // It has to be something that doesn't access the database yet, though.
- self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
- self.window.backgroundColor = [UIColor whiteColor];
- [self.window makeKeyAndVisible];
+ [_window addSubview:_navController.view];
+ [_window makeKeyAndVisible];
// Create & configure a CouchbaseMobile instance:
CouchbaseMobile* cb = [[CouchbaseMobile alloc] init];
View
214 App/Application.xib
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
+ <data>
+ <int key="IBDocument.SystemTarget">1280</int>
+ <string key="IBDocument.SystemVersion">11C57</string>
+ <string key="IBDocument.InterfaceBuilderVersion">1934</string>
+ <string key="IBDocument.AppKitVersion">1138.21</string>
+ <string key="IBDocument.HIToolboxVersion">567.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="NS.object.0">931</string>
+ </object>
+ <array key="IBDocument.IntegratedClassDependencies">
+ <string>IBProxyObject</string>
+ <string>IBUINavigationController</string>
+ <string>IBUIViewController</string>
+ <string>IBUICustomObject</string>
+ <string>IBUIWindow</string>
+ <string>IBUINavigationBar</string>
+ <string>IBUINavigationItem</string>
+ </array>
+ <array key="IBDocument.PluginDependencies">
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </array>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <object class="IBProxyObject" id="841351856">
+ <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBProxyObject" id="450319686">
+ <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUICustomObject" id="987256611">
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUIWindow" id="380026005">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">1316</int>
+ <object class="NSPSMatrix" key="NSFrameMatrix"/>
+ <string key="NSFrameSize">{320, 480}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSNextKeyView"/>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIResizesToFullScreen">YES</bool>
+ </object>
+ <object class="IBUINavigationController" id="871102733">
+ <object class="IBUISimulatedNavigationBarMetrics" key="IBUISimulatedTopBarMetrics">
+ <int key="IBUIBarStyle">2</int>
+ <bool key="IBUIPrompted">NO</bool>
+ </object>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
+ <int key="IBUIStatusBarStyle">1</int>
+ </object>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="IBUIInterfaceOrientation">1</int>
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <bool key="IBUIDefinesPresentationContext">YES</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ <object class="IBUINavigationBar" key="IBUINavigationBar" id="757990008">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{0, -44}, {0, 44}}</string>
+ <string key="NSReuseIdentifierKey">_NS:451</string>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <bool key="IBUIMultipleTouchEnabled">YES</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <int key="IBUIBarStyle">2</int>
+ </object>
+ <array class="NSMutableArray" key="IBUIViewControllers">
+ <object class="IBUIViewController" id="537979404">
+ <string key="IBUITitle">Worker Bee Tests</string>
+ <object class="IBUINavigationItem" key="IBUINavigationItem" id="653625909">
+ <string key="IBUITitle">Couchbase Mobile Tests</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <reference key="IBUIParentViewController" ref="871102733"/>
+ <string key="IBUINibName">TestListController</string>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="IBUIInterfaceOrientation">1</int>
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ </object>
+ </array>
+ </object>
+ </array>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <array class="NSMutableArray" key="connectionRecords">
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="841351856"/>
+ <reference key="destination" ref="987256611"/>
+ </object>
+ <int key="connectionID">5</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="987256611"/>
+ <reference key="destination" ref="380026005"/>
+ </object>
+ <int key="connectionID">11</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">navController</string>
+ <reference key="source" ref="987256611"/>
+ <reference key="destination" ref="871102733"/>
+ </object>
+ <int key="connectionID">12</int>
+ </object>
+ </array>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <array key="orderedObjects">
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <array key="object" id="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="380026005"/>
+ <array class="NSMutableArray" key="children"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="841351856"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4</int>
+ <reference key="object" ref="987256611"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">App Delegate</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="450319686"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">7</int>
+ <reference key="object" ref="871102733"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="757990008"/>
+ <reference ref="537979404"/>
+ </array>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">8</int>
+ <reference key="object" ref="757990008"/>
+ <reference key="parent" ref="871102733"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">9</int>
+ <reference key="object" ref="537979404"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="653625909"/>
+ </array>
+ <reference key="parent" ref="871102733"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">10</int>
+ <reference key="object" ref="653625909"/>
+ <reference key="parent" ref="537979404"/>
+ </object>
+ </array>
+ </object>
+ <dictionary class="NSMutableDictionary" key="flattenedProperties">
+ <string key="-1.CustomClassName">UIApplication</string>
+ <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="-2.CustomClassName">UIResponder</string>
+ <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="10.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <dictionary class="NSMutableDictionary" key="2.IBAttributePlaceholdersKey"/>
+ <string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="4.CustomClassName">AppDelegate</string>
+ <string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="7.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="8.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="9.CustomClassName">TestListController</string>
+ <string key="9.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+ <nil key="activeLocalization"/>
+ <dictionary class="NSMutableDictionary" key="localizations"/>
+ <nil key="sourceID"/>
+ <int key="maxID">12</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes"/>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <string key="IBCocoaTouchPluginVersion">931</string>
+ </data>
+</archive>
View
39 App/BeeTest.h
@@ -0,0 +1,39 @@
+//
+// BeeTest.h
+// Worker Bee
+//
+// Created by Jens Alfke on 10/4/11.
+// Copyright (c) 2011 Couchbase, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+@class BeeTest;
+
+
+@protocol BeeTestDelegate <NSObject>
+- (void) beeTest: (BeeTest*)test isRunning: (BOOL)running;
+- (void) beeTest: (BeeTest*)test loggedMessage: (NSString*)message;
+@end
+
+
+@interface BeeTest : NSObject
+
+/** Returns an array of Class objects for each available BeeTest subclass. */
++ (NSArray*) allTestClasses;
+
+/** The name to display for a test class. Defaults to the class's name. */
++ (NSString*) displayName;
+
+
+@property (assign) id<BeeTestDelegate> delegate;
+
+@property BOOL running;
+@property (readonly) NSError* error;
+@property (readonly) NSArray* messages;
+
+- (void) logMessage: (NSString*)message;
+- (void) logFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
+- (BOOL) addTimestamp: (NSString*)message;
+- (void) clearMessages;
+
+@end
View
143 App/BeeTest.m
@@ -0,0 +1,143 @@
+//
+// BeeTest.m
+// Worker Bee
+//
+// Created by Jens Alfke on 10/4/11.
+// Copyright (c) 2011 Couchbase, Inc. All rights reserved.
+//
+
+#import "BeeTest.h"
+#import <objc/runtime.h>
+
+
+#define kMaxMessageCount 100
+
+
+@interface BeeTest ()
+{
+ BOOL _running;
+ NSMutableArray* _messages;
+}
+@property (retain) NSString* lastTimestamp;
+@end
+
+
+@implementation BeeTest
+
++ (NSArray*) allTestClasses {
+ static NSArray* sAllTestClasses;
+ if (!sAllTestClasses) {
+ NSMutableArray* testClasses = [NSMutableArray array];
+
+ int numClasses = objc_getClassList(NULL, 0);
+ Class* classes = malloc(sizeof(Class) * numClasses);
+ numClasses = objc_getClassList(classes, numClasses);
+ for (int i = 0; i< numClasses; i++) {
+ Class c = classes[i];
+ if (class_getClassMethod(c, @selector(isSubclassOfClass:))
+ && [c isSubclassOfClass: self]
+ && c != self) {
+ NSLog(@"BeeTets: Found test class %@", classes[i]);
+ [testClasses addObject: classes[i]];
+ }
+ }
+ free(classes);
+
+ sAllTestClasses = [testClasses copy];
+ }
+ return sAllTestClasses;
+}
+
++ (NSString*) displayName {
+ return NSStringFromClass(self);
+}
+
+
+@synthesize delegate=_delegate, error = _error, messages = _messages, lastTimestamp = _lastTimestamp;
+
+- (id)init {
+ self = [super init];
+ if (self) {
+ _messages = [[NSMutableArray alloc] init];
+ }
+ return self;
+}
+
+- (void)dealloc {
+ [_messages release];
+ [_lastTimestamp release];
+ [_error release];
+ [super dealloc];
+}
+
+- (BOOL) running {
+ return _running;
+}
+
+- (void) setRunning:(BOOL)run {
+ if (run != _running) {
+ _running = run;
+ if (run)
+ [self clearMessages];
+ [self addTimestamp: (run ? @"STARTED" : @"STOPPED")];
+ [_delegate beeTest: self isRunning: _running];
+ }
+}
+
+- (NSString*) shortTimestamp {
+ static NSDateFormatter* sFormat;
+ if (!sFormat) {
+ sFormat = [[NSDateFormatter alloc] init];
+ sFormat.dateStyle = NSDateFormatterShortStyle;
+ sFormat.timeStyle = NSDateFormatterShortStyle;
+ }
+ return [sFormat stringFromDate: [NSDate date]];
+}
+
+- (NSString*) fullTimestamp {
+ static NSDateFormatter* sFormat;
+ if (!sFormat) {
+ sFormat = [[NSDateFormatter alloc] init];
+ sFormat.dateStyle = NSDateFormatterShortStyle;
+ sFormat.timeStyle = NSDateFormatterMediumStyle;
+ }
+ return [sFormat stringFromDate: [NSDate date]];
+}
+
+- (BOOL) addTimestamp: (NSString*)message {
+ // Check whether short timestamp has changed (it only shows the minute):
+ NSString* shortTimestamp = self.shortTimestamp;
+ if (!message && [shortTimestamp isEqualToString: _lastTimestamp])
+ return NO;
+ self.lastTimestamp = shortTimestamp;
+
+ // But display the full timestamp, which shows seconds:
+ message = [NSString stringWithFormat: @"---- %@ %@",
+ self.fullTimestamp, (message ? message : @"")];
+ [_messages addObject: message];
+ return YES;
+}
+
+- (void) logMessage:(NSString *)message {
+ [self addTimestamp: nil];
+ [_messages addObject: message];
+ if (_messages.count > kMaxMessageCount)
+ [_messages removeObjectAtIndex: 0];
+ [_delegate beeTest: self loggedMessage: message];
+}
+
+- (void) logFormat: (NSString*)format, ... {
+ va_list args;
+ va_start(args, format);
+ NSString* message = [[NSString alloc] initWithFormat: format arguments: args];
+ va_end(args);
+ [self logMessage: message];
+ [message release];
+}
+
+- (void) clearMessages {
+ [_messages removeAllObjects];
+ self.lastTimestamp = nil;
+}
+
+@end
View
21 App/BeeTestController.h
@@ -0,0 +1,21 @@
+//
+// BeeTestController.h
+// Worker Bee
+//
+// Created by Jens Alfke on 10/4/11.
+// Copyright (c) 2011 Couchbase, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+@class BeeTest;
+
+@interface BeeTestController : UIViewController
+
+- (id) initWithTest: (BeeTest*)test;
+
+@property (readonly) BeeTest* test;
+@property (readonly) IBOutlet UISwitch* onOffSwitch;
+@property (readonly) IBOutlet UIActivityIndicatorView* activityIndicator;
+@property (readonly) IBOutlet UITextView* transcript;
+
+@end
View
103 App/BeeTestController.m
@@ -0,0 +1,103 @@
+//
+// BeeTestController.m
+// Worker Bee
+//
+// Created by Jens Alfke on 10/4/11.
+// Copyright (c) 2011 Couchbase, Inc. All rights reserved.
+//
+
+#import "BeeTestController.h"
+#import "BeeTest.h"
+
+
+@interface BeeTestController () <BeeTestDelegate>
+- (void) displayMessages;
+- (void) scrollToEnd;
+@end
+
+
+@implementation BeeTestController
+
+@synthesize test = _test, onOffSwitch = _onOffSwitch, activityIndicator = _activityIndicator, transcript = _transcript;
+
+- (id) initWithTest: (BeeTest*)test {
+ self = [super initWithNibName: @"BeeTestController" bundle: nil];
+ if (self) {
+ _test = [test retain];
+ _test.delegate = self;
+ }
+ return self;
+}
+
+- (void)dealloc {
+ _test.delegate = nil;
+ [_test release];
+ [super dealloc];
+}
+
+
+#pragma mark - View lifecycle
+
+- (void)viewWillAppear:(BOOL)animated
+{
+ [super viewWillAppear:animated];
+
+ self.navigationItem.title = [[_test class] displayName];
+
+ static UIColor* sBackground;
+ if (!sBackground) {
+ UIImage* tile = [UIImage imageNamed: @"little_pluses.png"];
+ sBackground = [[UIColor colorWithPatternImage: tile] retain];
+ }
+ self.view.backgroundColor = sBackground;
+
+ [self beeTest: _test isRunning: _test.running];
+ [self scrollToEnd];
+}
+
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
+{
+ // Return YES for supported orientations
+ return (interfaceOrientation == UIInterfaceOrientationPortrait);
+}
+
+
+#pragma mark - Transcript
+
+- (void) displayMessages {
+ _transcript.text = [_test.messages componentsJoinedByString: @"\n"];
+}
+
+- (void) scrollToEnd {
+ [_transcript scrollRangeToVisible: NSMakeRange(_transcript.text.length-1, 1)];
+ NSLog(@"scrollToEnd: length=%u", _transcript.text.length);
+}
+
+- (void) beeTest: (BeeTest*)test loggedMessage: (NSString*)message {
+ BOOL scrollToEnd = !_transcript.tracking
+ && CGRectGetMaxY(_transcript.bounds) >= _transcript.contentSize.height - 20;
+
+ [self displayMessages];
+
+ if (scrollToEnd)
+ [self scrollToEnd];
+ else
+ [_transcript flashScrollIndicators];
+}
+
+#pragma mark - Starting / stopping
+
+- (void) beeTest: (BeeTest*)test isRunning: (BOOL)running {
+ [_onOffSwitch setOn: running];
+ if (_test.running)
+ [_activityIndicator startAnimating];
+ else
+ [_activityIndicator stopAnimating];
+ [self displayMessages];
+}
+
+- (IBAction) startStopTest:(id)sender {
+ _test.running = [sender isOn];
+}
+
+@end
View
260 App/BeeTestController.xib
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
+ <data>
+ <int key="IBDocument.SystemTarget">1280</int>
+ <string key="IBDocument.SystemVersion">11C57</string>
+ <string key="IBDocument.InterfaceBuilderVersion">1934</string>
+ <string key="IBDocument.AppKitVersion">1138.21</string>
+ <string key="IBDocument.HIToolboxVersion">567.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="NS.object.0">931</string>
+ </object>
+ <array key="IBDocument.IntegratedClassDependencies">
+ <string>IBUITextView</string>
+ <string>IBUISwitch</string>
+ <string>IBUIActivityIndicatorView</string>
+ <string>IBUIView</string>
+ <string>IBProxyObject</string>
+ </array>
+ <array key="IBDocument.PluginDependencies">
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </array>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <object class="IBProxyObject" id="372490531">
+ <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBProxyObject" id="975951072">
+ <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUIView" id="562138043">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">292</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="IBUIActivityIndicatorView" id="617837538">
+ <reference key="NSNextResponder" ref="562138043"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{263, 48}, {37, 37}}</string>
+ <reference key="NSSuperview" ref="562138043"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="953143795"/>
+ <string key="NSReuseIdentifierKey">_NS:1030</string>
+ <bool key="IBUIOpaque">NO</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIAnimating">YES</bool>
+ <int key="IBUIStyle">0</int>
+ </object>
+ <object class="IBUISwitch" id="396093735">
+ <reference key="NSNextResponder" ref="562138043"/>
+ <int key="NSvFlags">293</int>
+ <string key="NSFrame">{{106, 53}, {94, 27}}</string>
+ <reference key="NSSuperview" ref="562138043"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="617837538"/>
+ <string key="NSReuseIdentifierKey">_NS:606</string>
+ <bool key="IBUIOpaque">NO</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <int key="IBUIContentHorizontalAlignment">0</int>
+ <int key="IBUIContentVerticalAlignment">0</int>
+ </object>
+ <object class="IBUITextView" id="953143795">
+ <reference key="NSNextResponder" ref="562138043"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrame">{{20, 93}, {280, 367}}</string>
+ <reference key="NSSuperview" ref="562138043"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView"/>
+ <string key="NSReuseIdentifierKey">_NS:639</string>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MSAxIDEAA</bytes>
+ </object>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <bool key="IBUIMultipleTouchEnabled">YES</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIDirectionalLockEnabled">YES</bool>
+ <bool key="IBUIEditable">NO</bool>
+ <string key="IBUIText"/>
+ <object class="IBUITextInputTraits" key="IBUITextInputTraits">
+ <int key="IBUIAutocapitalizationType">2</int>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUIFontDescription" key="IBUIFontDescription">
+ <string key="name">Courier-Bold</string>
+ <string key="family">Courier</string>
+ <int key="traits">2</int>
+ <double key="pointSize">12</double>
+ </object>
+ <object class="NSFont" key="IBUIFont">
+ <string key="NSName">Courier-Bold</string>
+ <double key="NSSize">12</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ </object>
+ </array>
+ <string key="NSFrameSize">{320, 480}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="396093735"/>
+ <string key="NSReuseIdentifierKey">_NS:196</string>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ </object>
+ <object class="IBUISimulatedNavigationBarMetrics" key="IBUISimulatedTopBarMetrics">
+ <int key="IBUIBarStyle">2</int>
+ <bool key="IBUIPrompted">NO</bool>
+ </object>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ </array>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <array class="NSMutableArray" key="connectionRecords">
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">view</string>
+ <reference key="source" ref="372490531"/>
+ <reference key="destination" ref="562138043"/>
+ </object>
+ <int key="connectionID">9</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">activityIndicator</string>
+ <reference key="source" ref="372490531"/>
+ <reference key="destination" ref="617837538"/>
+ </object>
+ <int key="connectionID">14</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">transcript</string>
+ <reference key="source" ref="372490531"/>
+ <reference key="destination" ref="953143795"/>
+ </object>
+ <int key="connectionID">20</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">onOffSwitch</string>
+ <reference key="source" ref="372490531"/>
+ <reference key="destination" ref="396093735"/>
+ </object>
+ <int key="connectionID">21</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchEventConnection" key="connection">
+ <string key="label">startStopTest:</string>
+ <reference key="source" ref="396093735"/>
+ <reference key="destination" ref="372490531"/>
+ <int key="IBEventType">13</int>
+ </object>
+ <int key="connectionID">18</int>
+ </object>
+ </array>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <array key="orderedObjects">
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <array key="object" id="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="372490531"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="975951072"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">8</int>
+ <reference key="object" ref="562138043"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="617837538"/>
+ <reference ref="953143795"/>
+ <reference ref="396093735"/>
+ </array>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">13</int>
+ <reference key="object" ref="617837538"/>
+ <reference key="parent" ref="562138043"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">17</int>
+ <reference key="object" ref="396093735"/>
+ <reference key="parent" ref="562138043"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">19</int>
+ <reference key="object" ref="953143795"/>
+ <reference key="parent" ref="562138043"/>
+ </object>
+ </array>
+ </object>
+ <dictionary class="NSMutableDictionary" key="flattenedProperties">
+ <string key="-1.CustomClassName">BeeTestController</string>
+ <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="-2.CustomClassName">UIResponder</string>
+ <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="13.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="17.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="19.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="8.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+ <nil key="activeLocalization"/>
+ <dictionary class="NSMutableDictionary" key="localizations"/>
+ <nil key="sourceID"/>
+ <int key="maxID">21</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <array class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <object class="IBPartialClassDescription">
+ <string key="className">BeeTestController</string>
+ <string key="superclassName">UIViewController</string>
+ <dictionary class="NSMutableDictionary" key="outlets">
+ <string key="activityIndicator">UIActivityIndicatorView</string>
+ <string key="onOffSwitch">UISwitch</string>
+ <string key="transcript">UITextView</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <object class="IBToOneOutletInfo" key="activityIndicator">
+ <string key="name">activityIndicator</string>
+ <string key="candidateClassName">UIActivityIndicatorView</string>
+ </object>
+ <object class="IBToOneOutletInfo" key="onOffSwitch">
+ <string key="name">onOffSwitch</string>
+ <string key="candidateClassName">UISwitch</string>
+ </object>
+ <object class="IBToOneOutletInfo" key="transcript">
+ <string key="name">transcript</string>
+ <string key="candidateClassName">UITextView</string>
+ </object>
+ </dictionary>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/BeeTestController.h</string>
+ </object>
+ </object>
+ </array>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <string key="IBCocoaTouchPluginVersion">931</string>
+ </data>
+</archive>
View
2 App/Info.plist
@@ -26,6 +26,8 @@
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
+ <key>NSMainNibFile</key>
+ <string>Application</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
View
15 App/TestListController.h
@@ -0,0 +1,15 @@
+//
+// TestListController.h
+// Worker Bee
+//
+// Created by Jens Alfke on 10/4/11.
+// Copyright (c) 2011 Couchbase, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface TestListController : UITableViewController
+
+@property (readonly) NSArray* testList;
+
+@end
View
165 App/TestListController.m
@@ -0,0 +1,165 @@
+//
+// TestListController.m
+// Worker Bee
+//
+// Created by Jens Alfke on 10/4/11.
+// Copyright (c) 2011 Couchbase, Inc. All rights reserved.
+//
+
+#import "TestListController.h"
+#import "BeeTest.h"
+#import "BeeTestController.h"
+
+
+@implementation TestListController
+{
+ NSMutableDictionary* _activeTestByClass;
+}
+
+static UIColor* kBGColor;
+
++ (void) initialize {
+ if (self == [TestListController class]) {
+ if (!kBGColor)
+ kBGColor = [[UIColor colorWithPatternImage: [UIImage imageNamed:@"double_lined.png"]]
+ retain];
+ }
+}
+
+@synthesize testList = _testList;
+
+- (id)initWithStyle:(UITableViewStyle)style
+{
+ self = [super initWithStyle:style];
+ if (self) {
+ }
+ return self;
+}
+
+- (void)dealloc {
+ [_testList release];
+ [super dealloc];
+}
+
+- (void)didReceiveMemoryWarning
+{
+ // Releases the view if it doesn't have a superview.
+ [super didReceiveMemoryWarning];
+
+ // Release any cached data, images, etc that aren't in use.
+}
+
+#pragma mark - View lifecycle
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+
+ if (!_testList) {
+ _testList = [[BeeTest allTestClasses] copy];
+ _activeTestByClass = [[NSMutableDictionary alloc] init];
+ }
+
+ // Use short name "Tests" in the back button leading to this view
+ UIBarButtonItem* backItem = [[UIBarButtonItem alloc] init];
+ backItem.title = @"Tests";
+ self.navigationItem.backBarButtonItem = backItem;
+ [backItem release];
+
+ [self.tableView setBackgroundView:nil];
+ [self.tableView setBackgroundColor:kBGColor];
+
+ // Uncomment the following line to preserve selection between presentations.
+ // self.clearsSelectionOnViewWillAppear = NO;
+
+ // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
+ // self.navigationItem.rightBarButtonItem = self.editButtonItem;
+}
+
+- (void)viewDidUnload
+{
+ [super viewDidUnload];
+ // Release any retained subviews of the main view.
+ // e.g. self.myOutlet = nil;
+}
+
+- (void)viewWillAppear:(BOOL)animated
+{
+ [super viewWillAppear:animated];
+}
+
+- (void)viewDidAppear:(BOOL)animated
+{
+ [super viewDidAppear:animated];
+}
+
+- (void)viewWillDisappear:(BOOL)animated
+{
+ [super viewWillDisappear:animated];
+}
+
+- (void)viewDidDisappear:(BOOL)animated
+{
+ [super viewDidDisappear:animated];
+}
+
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
+{
+ // Return YES for supported orientations
+ return (interfaceOrientation == UIInterfaceOrientationPortrait);
+}
+
+#pragma mark - Table view data source
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+ return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+ NSAssert(_testList, @"didn't load test list");
+ return _testList.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ static NSString *CellIdentifier = @"Cell";
+
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (cell == nil) {
+ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
+ }
+
+ Class testClass = [_testList objectAtIndex: indexPath.row];
+ cell.textLabel.text = [testClass displayName];
+
+ return cell;
+}
+
+
+#pragma mark - Table view delegate
+
+- (BeeTest*) testForClass: (Class)testClass {
+ NSString* key = NSStringFromClass(testClass);
+ BeeTest* test = [_activeTestByClass objectForKey: key];
+ if (!test) {
+ test = [[testClass alloc] init];
+ if (test)
+ [_activeTestByClass setObject: test forKey: key];
+ }
+ return test;
+}
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ Class testClass = [_testList objectAtIndex: indexPath.row];
+ BeeTest* test = [self testForClass: testClass];
+ if (!test)
+ return; // TODO: Show an alert
+ BeeTestController *testController = [[BeeTestController alloc] initWithTest: test];
+ [self.navigationController pushViewController:testController animated:YES];
+ [testController release];
+}
+
+@end
View
130 App/TestListController.xib
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
+ <data>
+ <int key="IBDocument.SystemTarget">1280</int>
+ <string key="IBDocument.SystemVersion">11C57</string>
+ <string key="IBDocument.InterfaceBuilderVersion">1934</string>
+ <string key="IBDocument.AppKitVersion">1138.21</string>
+ <string key="IBDocument.HIToolboxVersion">567.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="NS.object.0">931</string>
+ </object>
+ <array key="IBDocument.IntegratedClassDependencies">
+ <string>IBProxyObject</string>
+ <string>IBUITableView</string>
+ </array>
+ <array key="IBDocument.PluginDependencies">
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </array>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <object class="IBProxyObject" id="372490531">
+ <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBProxyObject" id="975951072">
+ <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUITableView" id="873029372">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrame">{{0, 20}, {320, 460}}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSNextKeyView"/>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIBouncesZoom">NO</bool>
+ <int key="IBUISeparatorStyle">2</int>
+ <int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
+ <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
+ <float key="IBUIRowHeight">44</float>
+ <float key="IBUISectionHeaderHeight">22</float>
+ <float key="IBUISectionFooterHeight">22</float>
+ </object>
+ </array>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <array class="NSMutableArray" key="connectionRecords">
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">view</string>
+ <reference key="source" ref="372490531"/>
+ <reference key="destination" ref="873029372"/>
+ </object>
+ <int key="connectionID">5</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">dataSource</string>
+ <reference key="source" ref="873029372"/>
+ <reference key="destination" ref="372490531"/>
+ </object>
+ <int key="connectionID">6</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="873029372"/>
+ <reference key="destination" ref="372490531"/>
+ </object>
+ <int key="connectionID">7</int>
+ </object>
+ </array>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <array key="orderedObjects">
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <array key="object" id="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="372490531"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="975951072"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4</int>
+ <reference key="object" ref="873029372"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ </array>
+ </object>
+ <dictionary class="NSMutableDictionary" key="flattenedProperties">
+ <string key="-1.CustomClassName">TestListController</string>
+ <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="-2.CustomClassName">UIResponder</string>
+ <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+ <nil key="activeLocalization"/>
+ <dictionary class="NSMutableDictionary" key="localizations"/>
+ <nil key="sourceID"/>
+ <int key="maxID">7</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes"/>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <string key="IBCocoaTouchPluginVersion">931</string>
+ </data>
+</archive>
View
BIN App/double_lined.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN App/little_pluses.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
13 Tests/NullTest.h
@@ -0,0 +1,13 @@
+//
+// NullTest.h
+// Worker Bee
+//
+// Created by Jens Alfke on 10/4/11.
+// Copyright (c) 2011 Couchbase, Inc. All rights reserved.
+//
+
+#import "BeeTest.h"
+
+@interface NullTest : BeeTest
+
+@end
View
33 Tests/NullTest.m
@@ -0,0 +1,33 @@
+//
+// NullTest.m
+// Worker Bee
+//
+// Created by Jens Alfke on 10/4/11.
+// Copyright (c) 2011 Couchbase, Inc. All rights reserved.
+//
+
+#import "NullTest.h"
+
+@implementation NullTest
+{
+ int _count;
+}
+
+- (void) logSoon {
+ [self performSelector: @selector(logSomething) withObject: nil afterDelay: 1.0];
+}
+
+- (void) logSomething {
+ [self logFormat: @"Hi there! %i", ++_count, 45];
+ [self logSoon];
+}
+
+- (void) setRunning:(BOOL)running {
+ [super setRunning: running];
+ if (running)
+ [self logSoon];
+ else
+ [NSObject cancelPreviousPerformRequestsWithTarget: self];
+}
+
+@end
View
52 Worker Bee.xcodeproj/project.pbxproj
@@ -19,6 +19,15 @@
27B28FE11431549E00B86F18 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 27B28FE01431549E00B86F18 /* libz.dylib */; };
27B28FE3143154B700B86F18 /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 27B28FE2143154B700B86F18 /* libstdc++.dylib */; };
27B28FEB1431552800B86F18 /* CouchbaseResources in Resources */ = {isa = PBXBuildFile; fileRef = 27B28FEA1431552800B86F18 /* CouchbaseResources */; };
+ 27CB6560143B91DD00EEA1F2 /* Application.xib in Resources */ = {isa = PBXBuildFile; fileRef = 27CB655F143B91DD00EEA1F2 /* Application.xib */; };
+ 27CB6566143B997A00EEA1F2 /* TestListController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27CB6564143B997900EEA1F2 /* TestListController.m */; };
+ 27CB6567143B997A00EEA1F2 /* TestListController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 27CB6565143B997900EEA1F2 /* TestListController.xib */; };
+ 27CB656A143B9B7E00EEA1F2 /* BeeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 27CB6569143B9B7E00EEA1F2 /* BeeTest.m */; };
+ 27CB656D143B9EB900EEA1F2 /* NullTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 27CB656C143B9EB800EEA1F2 /* NullTest.m */; };
+ 27CB6576143BAA2F00EEA1F2 /* BeeTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27CB6574143BAA2E00EEA1F2 /* BeeTestController.m */; };
+ 27CB6577143BAA2F00EEA1F2 /* BeeTestController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 27CB6575143BAA2F00EEA1F2 /* BeeTestController.xib */; };
+ 27DB17F2143BB3A800EBA619 /* little_pluses.png in Resources */ = {isa = PBXBuildFile; fileRef = 27DB17F1143BB3A800EBA619 /* little_pluses.png */; };
+ 27DB17F5143BD36A00EBA619 /* double_lined.png in Resources */ = {isa = PBXBuildFile; fileRef = 27DB17F4143BD36A00EBA619 /* double_lined.png */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@@ -40,6 +49,19 @@
27B28FE2143154B700B86F18 /* libstdc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.dylib"; path = "usr/lib/libstdc++.dylib"; sourceTree = SDKROOT; };
27B28FEA1431552800B86F18 /* CouchbaseResources */ = {isa = PBXFileReference; lastKnownFileType = folder; name = CouchbaseResources; path = Frameworks/Couchbase.framework/CouchbaseResources; sourceTree = SOURCE_ROOT; };
27B290061432368E00B86F18 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.md; sourceTree = "<group>"; };
+ 27CB655F143B91DD00EEA1F2 /* Application.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Application.xib; sourceTree = "<group>"; };
+ 27CB6563143B997900EEA1F2 /* TestListController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestListController.h; sourceTree = "<group>"; };
+ 27CB6564143B997900EEA1F2 /* TestListController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestListController.m; sourceTree = "<group>"; };
+ 27CB6565143B997900EEA1F2 /* TestListController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TestListController.xib; sourceTree = "<group>"; };
+ 27CB6568143B9B7E00EEA1F2 /* BeeTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BeeTest.h; sourceTree = "<group>"; };
+ 27CB6569143B9B7E00EEA1F2 /* BeeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BeeTest.m; sourceTree = "<group>"; };
+ 27CB656B143B9EB800EEA1F2 /* NullTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NullTest.h; sourceTree = "<group>"; };
+ 27CB656C143B9EB800EEA1F2 /* NullTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NullTest.m; sourceTree = "<group>"; };
+ 27CB6573143BAA2E00EEA1F2 /* BeeTestController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BeeTestController.h; sourceTree = "<group>"; };
+ 27CB6574143BAA2E00EEA1F2 /* BeeTestController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BeeTestController.m; sourceTree = "<group>"; };
+ 27CB6575143BAA2F00EEA1F2 /* BeeTestController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BeeTestController.xib; sourceTree = "<group>"; };
+ 27DB17F1143BB3A800EBA619 /* little_pluses.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = little_pluses.png; sourceTree = "<group>"; };
+ 27DB17F4143BD36A00EBA619 /* double_lined.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = double_lined.png; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -66,6 +88,7 @@
children = (
27B290061432368E00B86F18 /* README.md */,
27B28FAB14314FB800B86F18 /* App */,
+ 27CB656E143B9EC500EEA1F2 /* Tests */,
27B28FA414314FB800B86F18 /* Frameworks */,
27B28FA214314FB800B86F18 /* Products */,
);
@@ -100,6 +123,17 @@
children = (
27B28FB414314FB800B86F18 /* AppDelegate.h */,
27B28FB514314FB800B86F18 /* AppDelegate.m */,
+ 27CB655F143B91DD00EEA1F2 /* Application.xib */,
+ 27CB6563143B997900EEA1F2 /* TestListController.h */,
+ 27CB6564143B997900EEA1F2 /* TestListController.m */,
+ 27CB6565143B997900EEA1F2 /* TestListController.xib */,
+ 27CB6573143BAA2E00EEA1F2 /* BeeTestController.h */,
+ 27CB6574143BAA2E00EEA1F2 /* BeeTestController.m */,
+ 27CB6575143BAA2F00EEA1F2 /* BeeTestController.xib */,
+ 27CB6568143B9B7E00EEA1F2 /* BeeTest.h */,
+ 27CB6569143B9B7E00EEA1F2 /* BeeTest.m */,
+ 27DB17F4143BD36A00EBA619 /* double_lined.png */,
+ 27DB17F1143BB3A800EBA619 /* little_pluses.png */,
27B28FAC14314FB800B86F18 /* Supporting Files */,
);
path = App;
@@ -117,6 +151,15 @@
name = "Supporting Files";
sourceTree = "<group>";
};
+ 27CB656E143B9EC500EEA1F2 /* Tests */ = {
+ isa = PBXGroup;
+ children = (
+ 27CB656B143B9EB800EEA1F2 /* NullTest.h */,
+ 27CB656C143B9EB800EEA1F2 /* NullTest.m */,
+ );
+ path = Tests;
+ sourceTree = "<group>";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -170,6 +213,11 @@
files = (
27B28FEB1431552800B86F18 /* CouchbaseResources in Resources */,
27B28FB014314FB800B86F18 /* InfoPlist.strings in Resources */,
+ 27CB6560143B91DD00EEA1F2 /* Application.xib in Resources */,
+ 27CB6567143B997A00EEA1F2 /* TestListController.xib in Resources */,
+ 27CB6577143BAA2F00EEA1F2 /* BeeTestController.xib in Resources */,
+ 27DB17F2143BB3A800EBA619 /* little_pluses.png in Resources */,
+ 27DB17F5143BD36A00EBA619 /* double_lined.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -182,6 +230,10 @@
files = (
27B28FB214314FB800B86F18 /* main.m in Sources */,
27B28FB614314FB800B86F18 /* AppDelegate.m in Sources */,
+ 27CB6566143B997A00EEA1F2 /* TestListController.m in Sources */,
+ 27CB656A143B9B7E00EEA1F2 /* BeeTest.m in Sources */,
+ 27CB656D143B9EB900EEA1F2 /* NullTest.m in Sources */,
+ 27CB6576143BAA2F00EEA1F2 /* BeeTestController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

0 comments on commit b623966

Please sign in to comment.
Something went wrong with that request. Please try again.