Jelajahi Sumber

Extended Date class

- added getters for elementary date values (year, month, day, hour,
minute, second)
- extended tests for Date class
pcmattulat 4 tahun lalu
induk
melakukan
5bdd6328d9
3 mengubah file dengan 79 tambahan dan 0 penghapusan
  1. 25 0
      source/time/Date.cpp
  2. 6 0
      source/time/Date.hpp
  3. 48 0
      test/cases/time/DateTest.cpp

+ 25 - 0
source/time/Date.cpp

@@ -30,6 +30,30 @@ bool ls_std::Date::before(Date foreignDate) {
   return this->timestamp < foreignDate.getTime();
 }
 
+int ls_std::Date::getDay() {
+  return this->localTime->tm_mday;
+}
+
+int ls_std::Date::getHour() {
+  return this->localTime->tm_hour;
+}
+
+int ls_std::Date::getMinute() {
+  return this->localTime->tm_min;
+}
+
+int ls_std::Date::getMonth() {
+  return this->localTime->tm_mon;
+}
+
+int ls_std::Date::getSecond() {
+  return this->localTime->tm_sec;
+}
+
+int ls_std::Date::getYear() {
+  return this->localTime->tm_year;
+}
+
 time_t ls_std::Date::getTime() {
   return this->timestamp;
 }
@@ -49,4 +73,5 @@ std::string ls_std::Date::toString() {
 void ls_std::Date::init() {
   this->localTime = std::localtime(&this->timestamp);
   this->localTime->tm_mon += 1;
+  this->localTime->tm_year += 1900;
 }

+ 6 - 0
source/time/Date.hpp

@@ -28,7 +28,13 @@ namespace ls_std {
 
       bool after(Date foreignDate);
       bool before(Date foreignDate);
+      int getDay();
+      int getHour();
+      int getMinute();
+      int getMonth();
+      int getSecond();
       time_t getTime();
+      int getYear();
       void setTime(time_t _timestamp);
       std::string toString();
 

+ 48 - 0
test/cases/time/DateTest.cpp

@@ -55,12 +55,60 @@ namespace {
     ASSERT_TRUE(date.before(date2));
   }
 
+  TEST_F(DateTest, getDay)
+  {
+    ls_std::Date date {};
+    date.setTime(1597433693);
+
+    ASSERT_EQ(14, date.getDay());
+  }
+
+  TEST_F(DateTest, getHour)
+  {
+    ls_std::Date date {};
+    date.setTime(1597433693);
+
+    ASSERT_EQ(21, date.getHour());
+  }
+
+  TEST_F(DateTest, getMinute)
+  {
+    ls_std::Date date {};
+    date.setTime(1597433693);
+
+    ASSERT_EQ(34, date.getMinute());
+  }
+
+  TEST_F(DateTest, getMonth)
+  {
+    ls_std::Date date {};
+    date.setTime(1597433693);
+
+    ASSERT_EQ(8, date.getMonth());
+  }
+
+  TEST_F(DateTest, getSecond)
+  {
+    ls_std::Date date {};
+    date.setTime(1597433693);
+
+    ASSERT_EQ(53, date.getSecond());
+  }
+
   TEST_F(DateTest, getTime)
   {
     ls_std::Date date {};
     ASSERT_TRUE(date.getTime() > 0);
   }
 
+  TEST_F(DateTest, getYear)
+  {
+    ls_std::Date date {};
+    date.setTime(1597433693);
+
+    ASSERT_EQ(2020, date.getYear());
+  }
+
   TEST_F(DateTest, setTime)
   {
     ls_std::Date date {};