Bug 1125138 - Move TestTimeStamp.cpp to gtest and enable it; r=froydnj
authorEhsan Akhgari <ehsan@mozilla.com>
Mon, 26 Jan 2015 17:08:24 -0500
changeset 225932 5b3911fe7821719c314fab626e08fae6bcb43734
parent 225931 d72836297b6b3e4d550e03ed7386b5cfa28138c9
child 225933 9c28c90d340815877e06579f29539f642fcac43f
push id28179
push usercbook@mozilla.com
push dateTue, 27 Jan 2015 14:24:11 +0000
treeherdermozilla-central@232401a6d1cc [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersfroydnj
bugs1125138
milestone38.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1125138 - Move TestTimeStamp.cpp to gtest and enable it; r=froydnj
xpcom/tests/TestTimeStamp.cpp
xpcom/tests/gtest/TestTimeStamp.cpp
xpcom/tests/gtest/moz.build
xpcom/tests/moz.build
rename from xpcom/tests/TestTimeStamp.cpp
rename to xpcom/tests/gtest/TestTimeStamp.cpp
--- a/xpcom/tests/TestTimeStamp.cpp
+++ b/xpcom/tests/gtest/TestTimeStamp.cpp
@@ -1,96 +1,69 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/TimeStamp.h"
 
-#include "TestHarness.h"
-
 #include "prinrval.h"
 #include "prthread.h"
 
+#include "gtest/gtest.h"
+
 using mozilla::TimeStamp;
 using mozilla::TimeDuration;
 
-static void Assert(bool aCond, const char* aMsg)
+TEST(TimeStamp, Main)
 {
-    if (aCond) {
-        passed(aMsg);
-    } else {
-        fail("%s", aMsg);
-    }
-}
-
-int main(int argc, char** argv)
-{
-    ScopedXPCOM xpcom("nsTimeStamp");
-    if (xpcom.failed())
-        return 1;
-
     TimeDuration td;
-    Assert(td.ToSeconds() == 0.0, "TimeDuration default value 0");
-    Assert(TimeDuration::FromSeconds(5).ToSeconds() == 5.0,
-           "TimeDuration FromSeconds/ToSeconds round-trip");
-    Assert(TimeDuration::FromMilliseconds(5000).ToSeconds() == 5.0,
-           "TimeDuration FromMilliseconds/ToSeconds round-trip");
-    Assert(TimeDuration::FromSeconds(1) < TimeDuration::FromSeconds(2),
-           "TimeDuration < operator works");
-    Assert(!(TimeDuration::FromSeconds(1) < TimeDuration::FromSeconds(1)),
-           "TimeDuration < operator works");
-    Assert(TimeDuration::FromSeconds(2) > TimeDuration::FromSeconds(1),
-           "TimeDuration > operator works");
-    Assert(!(TimeDuration::FromSeconds(1) > TimeDuration::FromSeconds(1)),
-           "TimeDuration > operator works");
-    Assert(TimeDuration::FromSeconds(1) <= TimeDuration::FromSeconds(2),
-           "TimeDuration <= operator works");
-    Assert(TimeDuration::FromSeconds(1) <= TimeDuration::FromSeconds(1),
-           "TimeDuration <= operator works");
-    Assert(!(TimeDuration::FromSeconds(2) <= TimeDuration::FromSeconds(1)),
-           "TimeDuration <= operator works");
-    Assert(TimeDuration::FromSeconds(2) >= TimeDuration::FromSeconds(1),
-           "TimeDuration >= operator works");
-    Assert(TimeDuration::FromSeconds(1) >= TimeDuration::FromSeconds(1),
-           "TimeDuration >= operator works");
-    Assert(!(TimeDuration::FromSeconds(1) >= TimeDuration::FromSeconds(2)),
-           "TimeDuration >= operator works");
+    EXPECT_TRUE(td.ToSeconds() == 0.0);
+    EXPECT_TRUE(TimeDuration::FromSeconds(5).ToSeconds() == 5.0);
+    EXPECT_TRUE(TimeDuration::FromMilliseconds(5000).ToSeconds() == 5.0);
+    EXPECT_TRUE(TimeDuration::FromSeconds(1) < TimeDuration::FromSeconds(2));
+    EXPECT_FALSE(TimeDuration::FromSeconds(1) < TimeDuration::FromSeconds(1));
+    EXPECT_TRUE(TimeDuration::FromSeconds(2) > TimeDuration::FromSeconds(1));
+    EXPECT_FALSE(TimeDuration::FromSeconds(1) > TimeDuration::FromSeconds(1));
+    EXPECT_TRUE(TimeDuration::FromSeconds(1) <= TimeDuration::FromSeconds(2));
+    EXPECT_TRUE(TimeDuration::FromSeconds(1) <= TimeDuration::FromSeconds(1));
+    EXPECT_FALSE(TimeDuration::FromSeconds(2) <= TimeDuration::FromSeconds(1));
+    EXPECT_TRUE(TimeDuration::FromSeconds(2) >= TimeDuration::FromSeconds(1));
+    EXPECT_TRUE(TimeDuration::FromSeconds(1) >= TimeDuration::FromSeconds(1));
+    EXPECT_FALSE(TimeDuration::FromSeconds(1) >= TimeDuration::FromSeconds(2));
 
     TimeStamp ts;
-    Assert(ts.IsNull(), "Default TimeStamp value null");
-    
+    EXPECT_TRUE(ts.IsNull());
+
     ts = TimeStamp::Now();
-    Assert(!ts.IsNull(), "TimeStamp time value non-null");
-    Assert((ts - ts).ToSeconds() == 0.0, "TimeStamp zero-length duration");
+    EXPECT_TRUE(!ts.IsNull());
+    EXPECT_TRUE((ts - ts).ToSeconds() == 0.0);
 
     PR_Sleep(PR_SecondsToInterval(2));
 
     TimeStamp ts2(TimeStamp::Now());
-    Assert(ts2 > ts, "TimeStamp > comparison");
-    Assert(!(ts > ts), "TimeStamp > comparison");
-    Assert(ts < ts2, "TimeStamp < comparison");
-    Assert(!(ts < ts), "TimeStamp < comparison");
-    Assert(ts <= ts2, "TimeStamp <= comparison");
-    Assert(ts <= ts, "TimeStamp <= comparison");
-    Assert(!(ts2 <= ts), "TimeStamp <= comparison");
-    Assert(ts2 >= ts, "TimeStamp >= comparison");
-    Assert(ts2 >= ts, "TimeStamp >= comparison");
-    Assert(!(ts >= ts2), "TimeStamp >= comparison");
+    EXPECT_TRUE(ts2 > ts);
+    EXPECT_FALSE(ts > ts);
+    EXPECT_TRUE(ts < ts2);
+    EXPECT_FALSE(ts < ts);
+    EXPECT_TRUE(ts <= ts2);
+    EXPECT_TRUE(ts <= ts);
+    EXPECT_FALSE(ts2 <= ts);
+    EXPECT_TRUE(ts2 >= ts);
+    EXPECT_TRUE(ts2 >= ts);
+    EXPECT_FALSE(ts >= ts2);
 
     // We can't be sure exactly how long PR_Sleep slept for. It should have
     // slept for at least one second. We might have slept a lot longer due
     // to process scheduling, but hopefully not more than 10 seconds.
     td = ts2 - ts;
-    Assert(td.ToSeconds() > 1.0, "TimeStamp difference lower bound");
-    Assert(td.ToSeconds() < 20.0, "TimeStamp difference upper bound");
+    EXPECT_TRUE(td.ToSeconds() > 1.0);
+    EXPECT_TRUE(td.ToSeconds() < 20.0);
     td = ts - ts2;
-    Assert(td.ToSeconds() < -1.0, "TimeStamp negative difference lower bound");
-    Assert(td.ToSeconds() > -20.0, "TimeStamp negative difference upper bound");
+    EXPECT_TRUE(td.ToSeconds() < -1.0);
+    EXPECT_TRUE(td.ToSeconds() > -20.0);
 
     double resolution = TimeDuration::Resolution().ToSecondsSigDigits();
     printf(" (platform timer resolution is ~%g s)\n", resolution);
-    Assert(0.000000001 < resolution, "Time resolution is sane");
+    EXPECT_TRUE(1e-10 < resolution);
     // Don't upper-bound sanity check ... although NSPR reports 1ms
     // resolution, it might be lying, so we shouldn't compare with it
-
-    return gFailCount > 0;
 }
--- a/xpcom/tests/gtest/moz.build
+++ b/xpcom/tests/gtest/moz.build
@@ -10,13 +10,14 @@ UNIFIED_SOURCES += [
     'TestExpirationTracker.cpp',
     'TestPipes.cpp',
     'TestPriorityQueue.cpp',
     'TestSnappyStreams.cpp',
     'TestStorageStream.cpp',
     'TestStrings.cpp',
     'TestSynchronization.cpp',
     'TestThreadPool.cpp',
+    'TestTimeStamp.cpp',
 ]
 
 FINAL_LIBRARY = 'xul-gtest'
 
 FAIL_ON_WARNINGS = True
--- a/xpcom/tests/moz.build
+++ b/xpcom/tests/moz.build
@@ -76,17 +76,16 @@ GeckoCppUnitTests([
 if CONFIG['MOZ_MEMORY']:
     GeckoCppUnitTests([
         'TestJemalloc',
     ])
 
 # XXX Make these tests work in libxul builds.
 #CPP_UNIT_TESTS += [
 #    'TestThreads',
-#    'TestTimeStamp',
 #    'TestXPIDLString',
 #    'TestUTF',
 #    'TestAtoms',
 #]
 
 # FIXME: bug 577500 TestStaticAtoms fails when run in dist/bin
 #CPP_UNIT_TESTS += [
 #    'TestStaticAtoms',