Browse Source

unit tests for herd_datetime

Yuriy Zhloba 8 years ago
parent
commit
208038a9c4
2 changed files with 73 additions and 4 deletions
  1. 1 4
      src/herd_datetime.erl
  2. 72 0
      test/herd_datetime_tests.erl

+ 1 - 4
src/herd_datetime.erl

@@ -17,7 +17,7 @@
 %% PostgreSQL datetime format: 2014-12-20 17:38:56.475565
 -type(db_datetime() :: {calendar:date(), {0..23, 0..59, float()}}).
 
--type(time_interval() :: {integer(), month | week | day | hour | minute | second}).
+-type(time_interval() :: {integer(), week | day | hour | minute | second}).
 
 -define(DAY, 24 * 3600).
 
@@ -66,9 +66,6 @@ datetime_to_ISO({{Year, Month, Day}, {Hour, Minute, Second}}) ->
 
 
 -spec add_interval(calendar:datetime(), time_interval()) -> calendar:datetime().
-add_interval(Datetime, {M, month}) ->
-    add_interval(Datetime, {M * 30 * ?DAY, second});
-
 add_interval(Datetime, {W, week}) ->
     add_interval(Datetime, {W * 7 * ?DAY, second});
 

+ 72 - 0
test/herd_datetime_tests.erl

@@ -0,0 +1,72 @@
+-module(herd_datetime_tests).
+-include_lib("eunit/include/eunit.hrl").
+
+-spec datetime_from_db_test() -> ok.
+datetime_from_db_test() ->
+    ?assertEqual({{2016, 11, 18}, {13, 55, 12}},
+        herd_datetime:datetime_from_db({{2016, 11, 18}, {13, 55, 12.632}})),
+    ok.
+
+
+-spec timestamp_to_datetime_test() -> ok.
+timestamp_to_datetime_test() ->
+    ?assertEqual({{2016,11,18},{10,57,44}},
+        herd_datetime:timestamp_to_datetime(1479466664)),
+    ok.
+
+-spec timestamp_to_db_datetime_test() -> ok.
+timestamp_to_db_datetime_test() ->
+    {{2016,11,18},{10,57,S}} = herd_datetime:timestamp_to_db_datetime(1479466664.123456),
+    ?assert(abs(S - 44.123456) < 0.0000001),
+    ok.
+
+
+-spec datetime_to_ISO_test() -> ok.
+datetime_to_ISO_test() ->
+    ?assertEqual("2016-11-18T13:55:12",
+        herd_datetime:datetime_to_ISO({{2016, 11, 18}, {13, 55, 12}})),
+    ok.
+
+
+-spec add_interval_test() -> ok.
+add_interval_test() ->
+    DT = {{2016, 11, 18}, {13, 55, 12}},
+    ?assertEqual({{2016, 11, 18}, {13, 55, 14}},
+        herd_datetime:add_interval(DT, {2, second})),
+    ?assertEqual({{2016, 11, 18}, {14, 2, 12}},
+        herd_datetime:add_interval(DT, {7, minute})),
+    ?assertEqual({{2016, 11, 18}, {15, 55, 12}},
+        herd_datetime:add_interval(DT, {2, hour})),
+    ?assertEqual({{2016, 11, 19}, {3, 55, 12}},
+        herd_datetime:add_interval(DT, {14, hour})),
+    ?assertEqual({{2016, 11, 20}, {13, 55, 12}},
+        herd_datetime:add_interval(DT, {2, day})),
+    ?assertEqual({{2016, 12, 8}, {13, 55, 12}},
+        herd_datetime:add_interval(DT, {20, day})),
+    ?assertEqual({{2016, 11, 25}, {13, 55, 12}},
+        herd_datetime:add_interval(DT, {1, week})),
+    ?assertEqual({{2016, 12, 2}, {13, 55, 12}},
+        herd_datetime:add_interval(DT, {2, week})),
+    ok.
+
+
+-spec subtract_interval_test() -> ok.
+subtract_interval_test() ->
+    DT = {{2016, 11, 18}, {13, 55, 12}},
+    ?assertEqual({{2016, 11, 18}, {13, 55, 10}},
+        herd_datetime:subtract_interval(DT, {2, second})),
+    ?assertEqual({{2016, 11, 18}, {13, 48, 12}},
+        herd_datetime:subtract_interval(DT, {7, minute})),
+    ?assertEqual({{2016, 11, 18}, {11, 55, 12}},
+        herd_datetime:subtract_interval(DT, {2, hour})),
+    ?assertEqual({{2016, 11, 17}, {23, 55, 12}},
+        herd_datetime:subtract_interval(DT, {14, hour})),
+    ?assertEqual({{2016, 11, 16}, {13, 55, 12}},
+        herd_datetime:subtract_interval(DT, {2, day})),
+    ?assertEqual({{2016, 10, 29}, {13, 55, 12}},
+        herd_datetime:subtract_interval(DT, {20, day})),
+    ?assertEqual({{2016, 11, 11}, {13, 55, 12}},
+        herd_datetime:subtract_interval(DT, {1, week})),
+    ?assertEqual({{2016, 11, 4}, {13, 55, 12}},
+        herd_datetime:subtract_interval(DT, {2, week})),
+    ok.