]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
unittest_utime: add tests
authorSage Weil <sage@redhat.com>
Thu, 25 Apr 2019 22:22:58 +0000 (17:22 -0500)
committerSage Weil <sage@redhat.com>
Wed, 29 May 2019 19:12:01 +0000 (14:12 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/test/CMakeLists.txt
src/test/test_utime.cc [new file with mode: 0644]

index 3d3aa8842ad665c7f149a4a234e0fc2966d66ace..63c02e556f00409de60134f280b5bb1a25c9ce2e 100644 (file)
@@ -860,6 +860,12 @@ add_executable(unittest_ipaddr
 add_ceph_unittest(unittest_ipaddr)
 target_link_libraries(unittest_ipaddr mon global)
 
+# unittest_utime
+add_executable(unittest_utime
+  test_utime.cc)
+add_ceph_unittest(unittest_utime)
+target_link_libraries(unittest_utime mon global)
+
 # unittest_texttable
 add_executable(unittest_texttable
   test_texttable.cc
diff --git a/src/test/test_utime.cc b/src/test/test_utime.cc
new file mode 100644 (file)
index 0000000..edbd395
--- /dev/null
@@ -0,0 +1,66 @@
+#include "include/utime.h"
+#include "global/global_context.h"
+#include "gtest/gtest.h"
+#include "include/stringify.h"
+#include "common/ceph_context.h"
+
+TEST(utime_t, localtime)
+{
+  utime_t t(1556122013, 839991182);
+  string s = stringify(t);
+  cout << s << std::endl;
+  // time zone may vary where unit test is run, so be cirsumspect...
+  ASSERT_EQ(s.size(), strlen("2019-04-24T11:06:53.839991-0500"));
+  ASSERT_TRUE(s[26] == '-' || s[26] == '+');
+  ASSERT_EQ(s.substr(0, 9), "2019-04-2");
+}
+
+TEST(utime_t, gmtime)
+{
+  utime_t t(1556122013, 39991182);
+  {
+    ostringstream ss;
+    t.gmtime(ss);
+    ASSERT_EQ(ss.str(), "2019-04-24T16:06:53.039991Z");
+  }
+  {
+    ostringstream ss;
+    t.gmtime_nsec(ss);
+    ASSERT_EQ(ss.str(), "2019-04-24T16:06:53.039991182Z");
+  }
+}
+
+TEST(utime_t, asctime)
+{
+  utime_t t(1556122013, 839991182);
+  ostringstream ss;
+  t.asctime(ss);
+  string s = ss.str();
+  ASSERT_EQ(s, "Wed Apr 24 16:06:53 2019");
+}
+
+const char *v[][2] = {
+  { "2019-04-24T16:06:53.039991Z", "2019-04-24T16:06:53.039991Z" },
+  { "2019-04-24 16:06:53.039991Z", "2019-04-24T16:06:53.039991Z" },
+  { "2019-04-24 16:06:53.039991+0000", "2019-04-24T16:06:53.039991Z" },
+  { "2019-04-24 16:06:53.039991-0100", "2019-04-24T17:06:53.039991Z" },
+  { "2019-04-24 16:06:53.039991+0430", "2019-04-24T11:36:53.039991Z" },
+  { "2019-04-24 16:06:53+0000", "2019-04-24T16:06:53.000000Z" },
+  { "2019-04-24T16:06:53-0100", "2019-04-24T17:06:53.000000Z" },
+  { "2019-04-24 16:06:53+0430", "2019-04-24T11:36:53.000000Z" },
+  { "2019-04-24", "2019-04-24T00:00:00.000000Z" },
+  { 0, 0 },
+};
+
+TEST(utime_t, parse_date)
+{
+  for (unsigned i = 0; v[i][0]; ++i) {
+    cout << v[i][0] << " -> " << v[i][1] << std::endl;
+    utime_t t;
+    bool r = t.parse(string(v[i][0]));
+    ASSERT_TRUE(r);
+    ostringstream ss;
+    t.gmtime(ss);
+    ASSERT_EQ(ss.str(), v[i][1]);
+  }
+}