summaryrefslogtreecommitdiff
path: root/tests/test_fpcalendar.ml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_fpcalendar.ml')
-rw-r--r--tests/test_fpcalendar.ml292
1 files changed, 145 insertions, 147 deletions
diff --git a/tests/test_fpcalendar.ml b/tests/test_fpcalendar.ml
index e1299e1..b21e0d0 100644
--- a/tests/test_fpcalendar.ml
+++ b/tests/test_fpcalendar.ml
@@ -20,153 +20,151 @@
(* LICENSE. *)
(**************************************************************************)
-(*i $Id: test_fpcalendar.ml 259 2014-10-29 10:00:46Z signoles $ i*)
-
-Printf.printf "Tests of FPcalendar:\n";;
+(*i $Id$ i*)
open CalendarLib;;
open Fcalendar.Precise;;
-include Gen_test;;
-reset ();;
-
-let eps = 0.000001;;
-
-Time_Zone.change Time_Zone.UTC;;
-
-(* Fcalendar *)
-
-test_exn (lazy (make (-4712) 1 1 12 0 (-1.))) "-4713-12-31-23-59-59";;
-test (make (-4712) 1 1 12 0 0. = make (-4712) 1 0 36 0 0.) "calendar coercion";;
-test (from_jd 0. = make (-4712) 1 1 12 0 0.) "from_jd 0 = 4713 BC-1-1";;
-test (from_mjd 0. = make 1858 11 17 0 0 0.) "from_mjd 0 = 1858-11-17";;
-
-Time_Zone.change (Time_Zone.UTC_Plus 5);;
-
-test (abs_float (to_jd (from_jd 12345.6789) -. 12345.6789) < eps)
- "to_jd (from_jd x) = x";;
-test (abs_float (to_mjd (from_mjd 12345.6789) -. 12345.6789) < eps)
- "to_mjd (from_mjd x) = x";;
-test (Period.to_date (Period.hour 60) = Date.Period.day 2)
- "period(60h) = period(2d)";;
-test (Period.compare (Period.day 2) (Period.hour 60) < 0) "Period.compare <";;
-test (Period.compare (Period.day 3) (Period.hour 60) > 0) "Period.compare >";;
-test (Period.compare
- (Period.add (Period.day 2) (Period.hour 12))
- (Period.hour 60) = 0) "Period.compare =";;
-test
- (add (make 1 2 3 4 5 6.) (Period.make 9 8 7 6 5 4.5) =
- make 10 10 10 10 10 10.5)
- "add 1-2-3-4-5-6 9-8-7-6-5-4.5";;
-test
- (add (make 3 1 1 0 0 0.7) (Period.make 0 0 0 (-25) 0 (-1.3)) =
- make 2 12 30 22 59 59.4)
- "add 3-1-1-0-0-0.7 0-0-0-(-25)-0-(-1.3)";;
-
-test
- (equal (rem (make 9 8 7 6 5 4.9) (Period.make 1 2 3 4 5 6.4))
- (make 8 6 4 1 59 58.5))
- "rem 9-8-7-6-5-4 1-2-3-4-5-6";;
-
-test (Period.equal
- (sub (make 0 0 7 6 5 4.) (make 0 0 3 54 5 6.))
- (Period.make 0 0 1 23 59 58.))
- "sub 0-0-7-6-5-4 0-0-3-54-5-6";;
-
-test (Period.equal
- (Period.opp (Period.make 0 0 2 3 0 0.))
- (Period.make 0 0 (-2) (-3) 0 0.))
- "period opp";;
-
-(* Date *)
-
-let d = make 2003 12 31 12 24 48.;;
-test (next d `Month = make 2004 1 31 12 24 48.) "2003-12-31 + 1 mois";;
-test (add d (Period.month 2) = make 2004 3 2 12 24 48.) "2003-12-31 + 2 mois";;
-let d3 = make 2011 3 24 0 0 0.;;
-test (prev d3 `Year = make 2010 3 24 0 0 0.) "2011-3-24 - 1 year";;
-let d2 = make (-3000) 1 1 6 12 24.5;;
-test (equal (rem d (sub d d2)) d2) "rem x (sub x y) = y";;
-test (is_leap_day (make 2000 2 24 0 0 0.)) "2000-2-24 leap day";;
-test (not (is_leap_day (make 2000 2 25 0 0 0.))) "2000-2-25 not leap day";;
-test (is_gregorian (make 1600 1 1 0 0 0.4)) "1600-1-1 gregorian";;
-test (not (is_gregorian (make 1400 1 1 0 0 0.1))) "1400-1-1 not gregorian";;
-test (is_julian (make 1582 1 1 0 0 0.1)) "1582-1-1 julian";;
-test (not (is_julian (make 1583 1 1 0 0 0.9832))) "1583-1-1 not julian";;
-
-(* Time *)
-
-test (let n = Unix.gmtime (Unix.time ()) in
- hour (from_unixtm n) = n.Unix.tm_hour) "from_unixtm invariant UTC";;
-test (let n = Unix.time () in
- hour (from_unixfloat n) = (Unix.gmtime n).Unix.tm_hour)
- "from_unixfloat invariant UTC";;
-
-Time_Zone.change (Time_Zone.UTC_Plus 10);;
-
-test (let n = Unix.gmtime (Unix.time ()) in
- hour (from_unixtm n) = n.Unix.tm_hour) "from_unixtm invariant +10";;
-test (let n = Unix.time () in
- hour (from_unixfloat n) = (Unix.gmtime n).Unix.tm_hour)
- "from_unixfloat invariant +10";;
-
-test (equal (add (make 0 0 0 10 0 0.1) (Period.hour 30)) (make 0 0 1 16 0 0.1))
- "add 0-0-0-20-0-0 30h";;
-test (equal
- (next (make 1999 12 31 23 59 59.43) `Second)
- (make 2000 1 1 0 0 0.43))
- "next 1999-31-12-23-59-59 `Second";;
-let n = now ();;
-test (equal (prev (next n `Minute) `Minute) n) "prev next = id";;
-test (equal
- (convert
- (make 0 0 0 23 0 0.1234)
- (Time_Zone.UTC_Plus 2)
- (Time_Zone.UTC_Plus 4))
- (make 0 0 1 1 0 0.1234)) "convert";;
-
-test (hour (make 0 0 0 20 0 0.) = 20) "hour";;
-test (minute (make 0 0 0 20 10 0.2) = 10) "minute";;
-test (Utils.Float.equal (second (make 0 0 0 20 10 5.123)) 5.123) "second";;
-
-test (is_pm (make 0 0 0 10 0 0.1)) "is_pm 10-0-0";;
-test (is_pm (make 0 0 0 34 0 0.)) "is_pm 34-0-0";;
-test (not (is_pm (make 0 0 0 (- 10) 0 0.))) "not (is_pm (- 10) 0 0)";;
-test (is_am (make 0 0 0 20 0 0.)) "is_am 20-0-0";;
-test (is_am (make 0 0 0 (- 34) 0 0.)) "is_am (- 34) 0 0";;
-test (not (is_am (make 0 0 0 34 0 0.))) "not (is_pm 34 0 0)";;
-
-Time_Zone.change Time_Zone.UTC;;
-
-test (let n = Unix.gmtime (Unix.time ()) in
- hour (from_unixtm n) = n.Unix.tm_hour) "from_unixtm invariant UTC2";;
-test (let n = Unix.time () in
- hour (from_unixfloat n) = (Unix.gmtime n).Unix.tm_hour)
- "from_unixfloat invariant UTC2";;
-
-test (to_unixfloat (make 1970 1 1 0 0 0.) = 0.) "to_unixfloat 1 Jan 1970";;
-test (from_unixfloat 0. = make 1970 1 1 0 0 0.) "from_unixfloat 1 Jan 1970";;
-test (floor (to_unixfloat (make 2004 11 13 19 17 10.)) = 1100373429.)
- "to_unixfloat";;
-test (equal (from_unixfloat 1100373429.) (make 2004 11 13 19 17 09.))
- "from_unixfloat";;
-
-test (equal
- (from_unixtm (to_unixtm (make 2003 7 16 23 22 21.)))
- (make 2003 7 16 23 22 21.))
- "from_unixtm to_unixtm = id";;
-
-test (Period.safe_to_time (Period.second 30.12) = Time.Period.second 30.12)
- "Period.safe_to_time second";;
-test (Period.safe_to_time (Period.day 6) = Time.Period.second 518400.)
- "Period.safe_to_time day";;
-test_exn (lazy (Period.to_time (Period.year 1))) "Period.to_time year";;
-test (Period.ymds (Period.make 1 2 3 1 2 3.1) = (1, 2, 3, 3723.1))
- "Period.ymds";;
-test
- (Period.ymds (Period.make (-1) (-2) (-3) (-1) (-2) (-3.)) = (-1,-2,-4,82677.))
- "Period.ymds neg";;
-
-let ok = nb_ok ();;
-let bug = nb_bug ();;
-Printf.printf "tests ok : %d; tests ko : %d\n" ok bug;;
-flush stdout;;
+
+
+let test () =
+ let test x s = Alcotest.(check bool) s true x in
+
+ let eps = 0.000001 in
+
+ Time_Zone.change Time_Zone.UTC;
+
+ (* Fcalendar *)
+
+ Gen_test.test_exn (lazy (make (-4712) 1 1 12 0 (-1.))) "-4713-12-31-23-59-59";
+ test (make (-4712) 1 1 12 0 0. = make (-4712) 1 0 36 0 0.) "calendar coercion";
+ test (from_jd 0. = make (-4712) 1 1 12 0 0.) "from_jd 0 = 4713 BC-1-1";
+ test (from_mjd 0. = make 1858 11 17 0 0 0.) "from_mjd 0 = 1858-11-17";
+
+ Time_Zone.change (Time_Zone.UTC_Plus 5);
+
+ test (abs_float (to_jd (from_jd 12345.6789) -. 12345.6789) < eps)
+ "to_jd (from_jd x) = x";
+ test (abs_float (to_mjd (from_mjd 12345.6789) -. 12345.6789) < eps)
+ "to_mjd (from_mjd x) = x";
+ test (Period.to_date (Period.hour 60) = Date.Period.day 2)
+ "period(60h) = period(2d)";
+ test (Period.compare (Period.day 2) (Period.hour 60) < 0) "Period.compare <";
+ test (Period.compare (Period.day 3) (Period.hour 60) > 0) "Period.compare >";
+ test (Period.compare
+ (Period.add (Period.day 2) (Period.hour 12))
+ (Period.hour 60) = 0) "Period.compare =";
+ test
+ (add (make 1 2 3 4 5 6.) (Period.make 9 8 7 6 5 4.5) =
+ make 10 10 10 10 10 10.5)
+ "add 1-2-3-4-5-6 9-8-7-6-5-4.5";
+ test
+ (add (make 3 1 1 0 0 0.7) (Period.make 0 0 0 (-25) 0 (-1.3)) =
+ make 2 12 30 22 59 59.4)
+ "add 3-1-1-0-0-0.7 0-0-0-(-25)-0-(-1.3)";
+
+ test
+ (equal (rem (make 9 8 7 6 5 4.9) (Period.make 1 2 3 4 5 6.4))
+ (make 8 6 4 1 59 58.5))
+ "rem 9-8-7-6-5-4 1-2-3-4-5-6";
+
+ test (Period.equal
+ (sub (make 0 0 7 6 5 4.) (make 0 0 3 54 5 6.))
+ (Period.make 0 0 1 23 59 58.))
+ "sub 0-0-7-6-5-4 0-0-3-54-5-6";
+
+ test (Period.equal
+ (Period.opp (Period.make 0 0 2 3 0 0.))
+ (Period.make 0 0 (-2) (-3) 0 0.))
+ "period opp";
+
+ (* Date *)
+
+ let d = make 2003 12 31 12 24 48. in
+ test (next d `Month = make 2004 1 31 12 24 48.) "2003-12-31 + 1 mois";
+ test (add d (Period.month 2) = make 2004 3 2 12 24 48.) "2003-12-31 + 2 mois";
+ let d3 = make 2011 3 24 0 0 0. in
+ test (prev d3 `Year = make 2010 3 24 0 0 0.) "2011-3-24 - 1 year";
+ let d2 = make (-3000) 1 1 6 12 24.5 in
+ test (equal (rem d (sub d d2)) d2) "rem x (sub x y) = y";
+ test (is_leap_day (make 2000 2 24 0 0 0.)) "2000-2-24 leap day";
+ test (not (is_leap_day (make 2000 2 25 0 0 0.))) "2000-2-25 not leap day";
+ test (is_gregorian (make 1600 1 1 0 0 0.4)) "1600-1-1 gregorian";
+ test (not (is_gregorian (make 1400 1 1 0 0 0.1))) "1400-1-1 not gregorian";
+ test (is_julian (make 1582 1 1 0 0 0.1)) "1582-1-1 julian";
+ test (not (is_julian (make 1583 1 1 0 0 0.9832))) "1583-1-1 not julian";
+
+ (* Time *)
+
+ test (let n = Unix.gmtime (Unix.time ()) in
+ hour (from_unixtm n) = n.Unix.tm_hour) "from_unixtm invariant UTC";
+ test (let n = Unix.time () in
+ hour (from_unixfloat n) = (Unix.gmtime n).Unix.tm_hour)
+ "from_unixfloat invariant UTC";
+
+ Time_Zone.change (Time_Zone.UTC_Plus 10);
+
+ test (let n = Unix.gmtime (Unix.time ()) in
+ hour (from_unixtm n) = n.Unix.tm_hour) "from_unixtm invariant +10";
+ test (let n = Unix.time () in
+ hour (from_unixfloat n) = (Unix.gmtime n).Unix.tm_hour)
+ "from_unixfloat invariant +10";
+
+ test (equal (add (make 0 0 0 10 0 0.1) (Period.hour 30)) (make 0 0 1 16 0 0.1))
+ "add 0-0-0-20-0-0 30h";
+ test (equal
+ (next (make 1999 12 31 23 59 59.43) `Second)
+ (make 2000 1 1 0 0 0.43))
+ "next 1999-31-12-23-59-59 `Second";
+ let n = now () in
+ test (equal (prev (next n `Minute) `Minute) n) "prev next = id";
+ test (equal
+ (convert
+ (make 0 0 0 23 0 0.1234)
+ (Time_Zone.UTC_Plus 2)
+ (Time_Zone.UTC_Plus 4))
+ (make 0 0 1 1 0 0.1234)) "convert";
+
+ test (hour (make 0 0 0 20 0 0.) = 20) "hour";
+ test (minute (make 0 0 0 20 10 0.2) = 10) "minute";
+ test (Utils.Float.equal (second (make 0 0 0 20 10 5.123)) 5.123) "second";
+
+ test (is_pm (make 0 0 0 10 0 0.1)) "is_pm 10-0-0";
+ test (is_pm (make 0 0 0 34 0 0.)) "is_pm 34-0-0";
+ test (not (is_pm (make 0 0 0 (- 10) 0 0.))) "not (is_pm (- 10) 0 0)";
+ test (is_am (make 0 0 0 20 0 0.)) "is_am 20-0-0";
+ test (is_am (make 0 0 0 (- 34) 0 0.)) "is_am (- 34) 0 0";
+ test (not (is_am (make 0 0 0 34 0 0.))) "not (is_pm 34 0 0)";
+
+ Time_Zone.change Time_Zone.UTC;
+
+ test (let n = Unix.gmtime (Unix.time ()) in
+ hour (from_unixtm n) = n.Unix.tm_hour) "from_unixtm invariant UTC2";
+ test (let n = Unix.time () in
+ hour (from_unixfloat n) = (Unix.gmtime n).Unix.tm_hour)
+ "from_unixfloat invariant UTC2";
+
+ test (to_unixfloat (make 1970 1 1 0 0 0.) = 0.) "to_unixfloat 1 Jan 1970";
+ test (from_unixfloat 0. = make 1970 1 1 0 0 0.) "from_unixfloat 1 Jan 1970";
+ test (floor (to_unixfloat (make 2004 11 13 19 17 10.)) = 1100373429.)
+ "to_unixfloat";
+ test (equal (from_unixfloat 1100373429.) (make 2004 11 13 19 17 09.))
+ "from_unixfloat";
+
+ test (equal
+ (from_unixtm (to_unixtm (make 2003 7 16 23 22 21.)))
+ (make 2003 7 16 23 22 21.))
+ "from_unixtm to_unixtm = id";
+
+ test (Period.safe_to_time (Period.second 30.12) = Time.Period.second 30.12)
+ "Period.safe_to_time second";
+ test (Period.safe_to_time (Period.day 6) = Time.Period.second 518400.)
+ "Period.safe_to_time day";
+ Gen_test.test_exn (lazy (Period.to_time (Period.year 1))) "Period.to_time year";
+ test (Period.ymds (Period.make 1 2 3 1 2 3.1) = (1, 2, 3, 3723.1))
+ "Period.ymds";
+ test
+ (Period.ymds (Period.make (-1) (-2) (-3) (-1) (-2) (-3.)) = (-1,-2,-4,82677.))
+ "Period.ymds neg";
+ ()
+
+let suite = ["fpcalendar", `Quick, test]