aboutsummaryrefslogtreecommitdiff
path: root/UnitTesting/GTMTestTimerTest.m
diff options
context:
space:
mode:
authorGravatar thomasvl@gmail.com <thomasvl@gmail.com@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-09-22 23:33:44 +0000
committerGravatar thomasvl@gmail.com <thomasvl@gmail.com@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-09-22 23:33:44 +0000
commit7bb8e9b9b24141f373ed70d7e6674a245c0227cf (patch)
tree8fab3cad46943aee24f213e041b2a7f6b71ea5df /UnitTesting/GTMTestTimerTest.m
parentbfaf8705cccb15c0c2a7704b17ba011ddba8242f (diff)
- Added GTMTestTimer.h for doing high fidelity timings.
- Added leaks checking to iPhone unit test script. It can be controlled by the GTM_DISABLE_LEAKS environment variable - Added ability to control using zombies to iPhone unit test script. It can be controlled by the GTM_DISABLE_ZOMBIES environment variable - Added ability to control termination to iPhone unit test script. It can be controlled by the GTM_DISABLE_TERMINATION environment variable - Fixed several leaks found with leak checking enabled. - Added configs for different iPhone OS versions.
Diffstat (limited to 'UnitTesting/GTMTestTimerTest.m')
-rw-r--r--UnitTesting/GTMTestTimerTest.m56
1 files changed, 56 insertions, 0 deletions
diff --git a/UnitTesting/GTMTestTimerTest.m b/UnitTesting/GTMTestTimerTest.m
new file mode 100644
index 0000000..86f9d22
--- /dev/null
+++ b/UnitTesting/GTMTestTimerTest.m
@@ -0,0 +1,56 @@
+//
+// GTMTestTimerTest.m
+//
+// Copyright 2008 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"
+#import "GTMTestTimer.h"
+
+@interface GTMTestTimerTest : GTMTestCase
+@end
+
+@implementation GTMTestTimerTest
+- (void)testTimer {
+ GTMTestTimer *timer = GTMTestTimerCreate();
+ STAssertNotNULL(timer, nil);
+ GTMTestTimerRetain(timer);
+ GTMTestTimerRelease(timer);
+ STAssertEqualsWithAccuracy(GTMTestTimerGetSeconds(timer), 0.0, 0.0, nil);
+ GTMTestTimerStart(timer);
+ STAssertTrue(GTMTestTimerIsRunning(timer), nil);
+ NSRunLoop *loop = [NSRunLoop currentRunLoop];
+ [loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
+ GTMTestTimerStop(timer);
+
+ // We use greater than (and an almost absurd less than) because
+ // these tests are very dependant on machine load, and we don't want
+ // automated tests reporting false negatives.
+ STAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.1, nil);
+ STAssertGreaterThan(GTMTestTimerGetMilliseconds(timer), 100.0,nil);
+ STAssertGreaterThan(GTMTestTimerGetMicroseconds(timer), 100000.0, nil);
+
+ // Check to make sure we're not WAY off the mark (by a factor of 10)
+ STAssertLessThan(GTMTestTimerGetMicroseconds(timer), 1000000.0, nil);
+
+ [loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
+ GTMTestTimerStart(timer);
+ [loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
+ STAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.2, nil);
+ GTMTestTimerStop(timer);
+ STAssertEquals(GTMTestTimerGetIterations(timer), (NSUInteger)2, nil);
+ GTMTestTimerRelease(timer);
+}
+@end