iut 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/.gitignore +9 -0
  2. data/Gemfile +4 -0
  3. data/Rakefile +1 -0
  4. data/bin/iut +2 -0
  5. data/iut.gemspec +24 -0
  6. data/lib/iut.rb +17 -0
  7. data/lib/iut/generator.rb +28 -0
  8. data/lib/iut/version.rb +4 -0
  9. data/template/project/iUnitTest/iUnitTest.xcodeproj/project.pbxproj +480 -0
  10. data/template/project/iUnitTest/iUnitTest/Classes/.do_not_remove_this_directory +0 -0
  11. data/template/project/iUnitTest/iUnitTest/Tests/.do_not_remove_this_directory +0 -0
  12. data/template/project/iUnitTest/iUnitTest/en.lproj/InfoPlist.strings +2 -0
  13. data/template/project/iUnitTest/iUnitTest/iUnitTest-Info.plist +44 -0
  14. data/template/project/iUnitTest/iUnitTest/iUnitTest-Prefix.pch +14 -0
  15. data/template/project/iUnitTest/iUnitTest/iunittest/Default.png +0 -0
  16. data/template/project/iUnitTest/iUnitTest/iunittest/IUTAppDelegate.h +20 -0
  17. data/template/project/iUnitTest/iUnitTest/iunittest/IUTAppDelegate.m +38 -0
  18. data/template/project/iUnitTest/iUnitTest/iunittest/IUTDetailView.xib +184 -0
  19. data/template/project/iUnitTest/iUnitTest/iunittest/IUTMainWindow.xib +732 -0
  20. data/template/project/iUnitTest/iUnitTest/iunittest/IUTTestView.xib +432 -0
  21. data/template/project/iUnitTest/iUnitTest/iunittest/Settings.bundle/Japanese.lproj/Root.strings +0 -0
  22. data/template/project/iUnitTest/iUnitTest/iunittest/Settings.bundle/Root.plist +39 -0
  23. data/template/project/iUnitTest/iUnitTest/iunittest/Settings.bundle/en.lproj/Root.strings +0 -0
  24. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/AppAgent.h +33 -0
  25. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/AppAgent.m +135 -0
  26. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/AppAgentHelper.h +63 -0
  27. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UINavigationBarBasedTest.h +25 -0
  28. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UINavigationBarBasedTest.m +49 -0
  29. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UITabBarAndNavigationBarBasedTest.h +23 -0
  30. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UITabBarAndNavigationBarBasedTest.m +42 -0
  31. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UITabBarBasedTest.h +25 -0
  32. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UITabBarBasedTest.m +50 -0
  33. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UITableViewBasedTest.h +23 -0
  34. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UITableViewBasedTest.m +57 -0
  35. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UITableViewControllerTest.h +22 -0
  36. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UITableViewControllerTest.m +44 -0
  37. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UIViewBasedTest.h +21 -0
  38. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UIViewBasedTest.m +52 -0
  39. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UIViewControllerTest.h +63 -0
  40. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/ControllerTest/UIViewControllerTest.m +162 -0
  41. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/GTMSenTestCase.h +17 -0
  42. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/GTMSenTestCase.m +15 -0
  43. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTAssertion.h +135 -0
  44. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTAssertion.m +216 -0
  45. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTAssertionInfo.h +60 -0
  46. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTAssertionInfo.m +104 -0
  47. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTDetailViewController.h +24 -0
  48. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTDetailViewController.m +81 -0
  49. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTLog.h +14 -0
  50. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTPreference.h +34 -0
  51. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTPreference.m +125 -0
  52. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTResultTableViewCell.h +27 -0
  53. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTResultTableViewCell.m +83 -0
  54. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTResultTableViewController.h +26 -0
  55. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTResultTableViewController.m +193 -0
  56. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTTest.h +74 -0
  57. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTTest.m +127 -0
  58. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTTestRunner.h +66 -0
  59. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTTestRunner.m +449 -0
  60. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTTestRunnerViewController.h +59 -0
  61. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/IUTTestRunnerViewController.m +163 -0
  62. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/NSExceptionExtension.h +21 -0
  63. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/NSExceptionExtension.m +52 -0
  64. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/SenTestAssertion.h +82 -0
  65. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/SourceCodeOpener.h +65 -0
  66. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/SourceCodeOpener.m +176 -0
  67. data/template/project/iUnitTest/iUnitTest/iunittest/UnitTest/UITableViewControllerTestHelper.h +35 -0
  68. data/template/project/iUnitTest/iUnitTest/iunittest/isd_logo_60x40.png +0 -0
  69. data/template/project/iUnitTest/iUnitTest/iunittest/isd_logo_60x40_w.png +0 -0
  70. data/template/project/iUnitTest/iUnitTest/iunittest/iunittest_icon.png +0 -0
  71. data/template/project/iUnitTest/iUnitTest/main.m +18 -0
  72. data/template/project/iUnitTest/script/sync_source.rb +27 -0
  73. metadata +119 -0
@@ -0,0 +1,104 @@
1
+ //
2
+ // AssertionInfo.m
3
+ // iUnitTest
4
+ //
5
+ // Created by Katsuyoshi Ito on 09/01/16.
6
+ // Copyright 2009 ITO SOFT DESIGN Inc. All rights reserved.
7
+ //
8
+
9
+ #import "IUTAssertionInfo.h"
10
+
11
+
12
+ @implementation IUTAssertionInfo
13
+
14
+ @synthesize className, methodName, message, filePath, line;
15
+ @synthesize expected, actual, delta;
16
+ @synthesize negativeCase;
17
+
18
+
19
+ + (id)assertionInfoWithClass:(Class)klass selector:(SEL)selector message:(NSString *)message filePath:(NSString *)path line:(NSInteger)line
20
+ {
21
+ return [[[self alloc] initWithWithClass:klass selector:selector message:message filePath:path line:line] autorelease];
22
+ }
23
+
24
+
25
+ - (id)initWithWithClass:(Class)klass selector:(SEL)aSelector message:(NSString *)aMessage filePath:(NSString *)path line:(NSInteger)aLine
26
+ {
27
+ self = [super init];
28
+ if (self) {
29
+ className = [NSStringFromClass(klass) retain];
30
+ methodName = [NSStringFromSelector(aSelector) retain];
31
+ message = [aMessage retain];
32
+ filePath = [path retain];
33
+ line = aLine;
34
+ }
35
+ return self;
36
+ }
37
+
38
+
39
+ - (NSString *)fileName
40
+ {
41
+ if (filePath) {
42
+ return [filePath lastPathComponent];
43
+ }
44
+ return nil;
45
+ }
46
+
47
+ - (NSString *)message
48
+ {
49
+ if (message) {
50
+ return message;
51
+ } else {
52
+ if (self.delta) {
53
+ if (self.negativeCase) {
54
+ return [NSString stringWithFormat:@"expected:not %@ but was:%@ delta:%@", self.expected, self.actual, self.delta];
55
+ } else {
56
+ return [NSString stringWithFormat:@"expected:%@ but was:%@ delta:%@", self.expected, self.actual, self.delta];
57
+ }
58
+ } else {
59
+ if (self.negativeCase) {
60
+ return [NSString stringWithFormat:@"expected:not %@ but was:%@", self.expected, self.actual];
61
+ } else {
62
+ return [NSString stringWithFormat:@"expected:%@ but was:%@", self.expected, self.actual];
63
+ }
64
+ }
65
+ }
66
+ }
67
+
68
+ - (NSString *)reason
69
+ {
70
+ if (self.line > 0) {
71
+ return [NSString stringWithFormat:@"%@:%d\n-[%@ %@]\n%@", self.fileName, self.line, self.className, self.methodName, self.message];
72
+ } else {
73
+ return [NSString stringWithFormat:@"maybe %@\n-[%@ %@]\n%@", self.fileName, self.className, self.methodName, self.message];
74
+ }
75
+ }
76
+
77
+ - (void)dealloc
78
+ {
79
+ [className release];
80
+ [methodName release];
81
+ [message release];
82
+ [filePath release];
83
+ [expected release];
84
+ [actual release];
85
+ [delta release];
86
+ [super dealloc];
87
+ }
88
+
89
+
90
+ @end
91
+
92
+
93
+ #if TARGET_IPHONE_SIMULATOR
94
+
95
+ @implementation SourceCodeOpener(IUTAssertionInfo)
96
+
97
+ - (void)open:(IUTAssertionInfo *)info
98
+ {
99
+ [self open:info.filePath line:info.line];
100
+ }
101
+
102
+ @end
103
+
104
+ #endif
@@ -0,0 +1,24 @@
1
+ //
2
+ // IUTDetailViewController.h
3
+ // iUnitTest
4
+ //
5
+ // Created by Katsuyoshi Ito on 09/01/22.
6
+ // Copyright 2009 ITO SOFT DESIGN Inc. All rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+
11
+
12
+ @interface IUTDetailViewController : UIViewController {
13
+
14
+ IBOutlet UITextView *textView;
15
+
16
+ NSException *exception;
17
+
18
+ }
19
+
20
+ @property (retain) IBOutlet UITextView *textView;
21
+
22
+ @property (retain) NSException *exception;
23
+
24
+ @end
@@ -0,0 +1,81 @@
1
+ //
2
+ // IUTDetailViewController.m
3
+ // iUnitTest
4
+ //
5
+ // Created by Katsuyoshi Ito on 09/01/22.
6
+ // Copyright 2009 ITO SOFT DESIGN Inc. All rights reserved.
7
+ //
8
+
9
+ #import "IUTDetailViewController.h"
10
+ #import "IUTAssertion.h"
11
+ #import "IUTTestRunner.h"
12
+ #import "NSExceptionExtension.h"
13
+
14
+
15
+ @implementation IUTDetailViewController
16
+
17
+ @synthesize textView, exception;
18
+
19
+ /*
20
+ // The designated initializer. Override to perform setup that is required before the view is loaded.
21
+ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
22
+ if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
23
+ // Custom initialization
24
+ }
25
+ return self;
26
+ }
27
+ */
28
+
29
+ /*
30
+ // Implement loadView to create a view hierarchy programmatically, without using a nib.
31
+ - (void)loadView {
32
+ }
33
+ */
34
+
35
+ /*
36
+ // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
37
+ - (void)viewDidLoad {
38
+ [super viewDidLoad];
39
+ }
40
+ */
41
+
42
+ /*
43
+ // Override to allow orientations other than the default portrait orientation.
44
+ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
45
+ // Return YES for supported orientations
46
+ return (interfaceOrientation == UIInterfaceOrientationPortrait);
47
+ }
48
+ */
49
+
50
+ - (void)didReceiveMemoryWarning {
51
+ [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
52
+ // Release anything that's not essential, such as cached data
53
+ }
54
+
55
+
56
+ - (void)dealloc {
57
+ [exception release];
58
+ [textView release];
59
+ [super dealloc];
60
+ }
61
+
62
+
63
+ - (void)setException:(NSException *)anException
64
+ {
65
+ if (exception != anException) {
66
+ [exception release];
67
+ exception = [anException retain];
68
+
69
+ IUTAssertionInfo *info = exception.assertionInfo;
70
+ if (info) {
71
+ self.view.backgroundColor = ([exception.name isEqualToString:IUTAssertionExceptionName]) ? [IUTTestRunner failureColor] : [IUTTestRunner errorColor];
72
+ self.textView.text = info.reason;
73
+ } else {
74
+ self.view.backgroundColor = [IUTTestRunner errorColor];
75
+ self.textView.text = exception.reason;
76
+ }
77
+ }
78
+ }
79
+
80
+
81
+ @end
@@ -0,0 +1,14 @@
1
+ /*
2
+ * IUTLog.h
3
+ * iUnitTest
4
+ *
5
+ * Created by Katsuyoshi Ito on 09/02/05.
6
+ * Copyright 2009 ITO SOFT DESIGN Inc. All rights reserved.
7
+ *
8
+ */
9
+
10
+ #if TARGET_IPHONE_SIMULATOR
11
+ #define IUTLog(format, ...) NSLog(format, ##__VA_ARGS__)
12
+ #else
13
+ #define IUTLog(format, ...)
14
+ #endif
@@ -0,0 +1,34 @@
1
+ //
2
+ // IUTPreference.h
3
+ // iUnitTestTest
4
+ //
5
+ // Created by Katsuyoshi Ito on 09/02/26.
6
+ // Copyright 2009 ITO SOFT DESIGN Inc. All rights reserved.
7
+ //
8
+
9
+ #import <Foundation/Foundation.h>
10
+
11
+
12
+ @interface IUTPreference : NSObject {
13
+ NSUserDefaults *userDefaults;
14
+ NSMutableDictionary *passedTests;
15
+ }
16
+
17
+ + (id)sharedPreference;
18
+
19
+ @property (retain, readonly) NSUserDefaults *userDefaults;
20
+
21
+ @property (readonly) BOOL isAutoRun;
22
+ @property (readonly) BOOL isRunFailuresOnly;
23
+
24
+ @property (retain, readonly) NSMutableDictionary *passedTests;
25
+
26
+ @property (readonly) BOOL canClear;
27
+
28
+ - (void)clearPassedTests;
29
+ - (void)addPassedTest:(NSString *)className methodName:(NSString *)methodName;
30
+ - (BOOL)needsTest:(NSString *)className methodName:(NSString *)methodName;
31
+
32
+ - (void)synchronize;
33
+
34
+ @end
@@ -0,0 +1,125 @@
1
+ //
2
+ // IUTPreference.m
3
+ // iUnitTestTest
4
+ //
5
+ // Created by Katsuyoshi Ito on 09/02/26.
6
+ // Copyright 2009 ITO SOFT DESIGN Inc. All rights reserved.
7
+ //
8
+
9
+ #import "IUTPreference.h"
10
+ #import "IUTTest.h"
11
+
12
+ #define AUTO_RUN_KEY @"AUTO_RUN"
13
+ #define RUN_FAILURES_ONLY_KEY @"RUN_FAILURES_ONLY"
14
+ #define PASSED_TESTS_KEY @"PASSED_TESTS"
15
+
16
+
17
+ @implementation IUTPreference
18
+
19
+
20
+ + (id)sharedPreference
21
+ {
22
+ static id preference = nil;
23
+ if (preference == nil) {
24
+ preference = [self new];
25
+ }
26
+ return preference;
27
+ }
28
+
29
+ - (id)init
30
+ {
31
+ self = [super init];
32
+ if (self) {
33
+ NSDictionary *defaults = [NSDictionary dictionaryWithObjectsAndKeys:
34
+ [NSNumber numberWithBool:YES], AUTO_RUN_KEY,
35
+ [NSNumber numberWithBool:YES], RUN_FAILURES_ONLY_KEY,
36
+ nil];
37
+ [[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
38
+ }
39
+ return self;
40
+ }
41
+
42
+ - (void)dealloc
43
+ {
44
+ [self synchronize];
45
+ [passedTests release];
46
+ [userDefaults release];
47
+ [super dealloc];
48
+ }
49
+
50
+ - (NSUserDefaults *)userDefaults
51
+ {
52
+ if (userDefaults == nil) {
53
+ userDefaults = [NSUserDefaults standardUserDefaults];
54
+ }
55
+ return userDefaults;
56
+ }
57
+
58
+
59
+ - (BOOL)isAutoRun
60
+ {
61
+ return [self.userDefaults boolForKey:AUTO_RUN_KEY];
62
+ }
63
+
64
+ - (BOOL)isRunFailuresOnly
65
+ {
66
+ return [self.userDefaults boolForKey:RUN_FAILURES_ONLY_KEY];
67
+ }
68
+
69
+
70
+
71
+ - (NSMutableDictionary *)passedTests
72
+ {
73
+ if (passedTests == nil) {
74
+ passedTests = [[self.userDefaults dictionaryForKey:PASSED_TESTS_KEY] mutableCopy];
75
+ if (passedTests == nil) {
76
+ passedTests = [NSMutableDictionary new];
77
+ }
78
+ }
79
+ return passedTests;
80
+ }
81
+
82
+ - (BOOL)canClear
83
+ {
84
+ return [passedTests count] && self.isRunFailuresOnly;
85
+ }
86
+
87
+ - (void)clearPassedTests
88
+ {
89
+ [self.passedTests removeAllObjects];
90
+ }
91
+
92
+ - (void)addPassedTest:(NSString *)className methodName:(NSString *)methodName
93
+ {
94
+ NSMutableArray *methods = [self.passedTests objectForKey:className];
95
+ if (methods == nil) {
96
+ methods = [NSMutableArray array];
97
+ [self.passedTests setObject:methods forKey:className];
98
+ }
99
+ if (![methods containsObject:methodName]) {
100
+ [methods addObject:methodName];
101
+ }
102
+ }
103
+
104
+ - (BOOL)needsTest:(NSString *)className methodName:(NSString *)methodName
105
+ {
106
+ if (self.isRunFailuresOnly) {
107
+ if ([NSClassFromString(className) forceTestsAnyway]) {
108
+ return YES;
109
+ }
110
+ NSMutableArray *methods = [self.passedTests objectForKey:className];
111
+ return (methods && [methods containsObject:methodName]) ? NO : YES;
112
+ } else {
113
+ return YES;
114
+ }
115
+ }
116
+
117
+
118
+
119
+ - (void)synchronize
120
+ {
121
+ [self.userDefaults setObject:self.passedTests forKey:PASSED_TESTS_KEY];
122
+ }
123
+
124
+
125
+ @end
@@ -0,0 +1,27 @@
1
+ //
2
+ // IUTResultTableViewCell.h
3
+ // iUnitTest
4
+ //
5
+ // Created by Katsuyoshi Ito on 09/01/17.
6
+ // Copyright 2009 ITO SOFT DESIGN Inc. All rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import "IUTAssertionInfo.h"
11
+
12
+
13
+ @interface IUTResultTableViewCell : UITableViewCell {
14
+
15
+ UILabel *resultLabel;
16
+ UIView *bgView;
17
+
18
+ NSException *exception;
19
+ }
20
+
21
+
22
+ @property (retain, readonly) UILabel *resultLabel;
23
+ @property (retain, readonly) UIView *bgView;
24
+
25
+ @property (retain) NSException *exception;
26
+
27
+ @end
@@ -0,0 +1,83 @@
1
+ //
2
+ // IUTResultTableViewCell.m
3
+ // iUnitTest
4
+ //
5
+ // Created by Katsuyoshi Ito on 09/01/17.
6
+ // Copyright 2009 ITO SOFT DESIGN Inc. All rights reserved.
7
+ //
8
+
9
+ #import "IUTResultTableViewCell.h"
10
+ #import "IUTAssertion.h"
11
+ #import "IUTTestRunner.h"
12
+ #import "NSExceptionExtension.h"
13
+
14
+
15
+ @implementation IUTResultTableViewCell
16
+
17
+
18
+ @synthesize resultLabel, bgView;
19
+ @synthesize exception;
20
+
21
+ - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
22
+ {
23
+ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
24
+ if (self) {
25
+ resultLabel = [[UILabel alloc] initWithFrame:CGRectZero];
26
+ resultLabel.font = [UIFont fontWithName:resultLabel.font.fontName size:14];
27
+ resultLabel.numberOfLines = 0;
28
+ [self addSubview:resultLabel];
29
+
30
+ bgView = [UIView new];
31
+ [self addSubview:bgView];
32
+ [self sendSubviewToBack:bgView];
33
+
34
+ }
35
+ return self;
36
+ }
37
+
38
+ - (void)setException:(NSException *)anException
39
+ {
40
+ if (exception != anException) {
41
+ [exception release];
42
+ exception = [anException retain];
43
+
44
+ IUTAssertionInfo *info = exception.assertionInfo;
45
+ if (info) {
46
+ self.resultLabel.backgroundColor = [exception color];
47
+ self.resultLabel.text = info.reason;
48
+ } else {
49
+ self.resultLabel.backgroundColor = [IUTTestRunner errorColor];
50
+ self.resultLabel.text = exception.reason;
51
+ }
52
+ self.bgView.backgroundColor = self.resultLabel.backgroundColor;
53
+ }
54
+ }
55
+
56
+ - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
57
+
58
+ [super setSelected:selected animated:animated];
59
+ self.resultLabel.textColor = (selected) ? [UIColor whiteColor] : [UIColor blackColor];
60
+ }
61
+
62
+ - (void)layoutSubviews {
63
+ [super layoutSubviews];
64
+
65
+ CGRect rect = self.bounds;
66
+ rect.size.height -= 1;
67
+ bgView.frame = rect;
68
+
69
+ CGRect baseRect = CGRectInset(self.contentView.bounds, 10, 10);
70
+ rect = baseRect;
71
+
72
+ resultLabel.frame = rect;
73
+ }
74
+
75
+ - (void)dealloc {
76
+ [exception release];
77
+ [resultLabel release];
78
+ [bgView release];
79
+ [super dealloc];
80
+ }
81
+
82
+
83
+ @end