#!/usr/bin/ruby # Tests for the "Date" built-in type. var palindates = Enumerator({ |f| var d = Date.strptime("2020-02-02", "%Y-%m-%d") loop { f(d) if d.strftime("%Y%m%d").is_palindrome d = d.add_days(1) } }) var dates = palindates.first(3) assert_eq( dates.map { .strftime("%Y-%m-%d") }, ["2020-02-02", "2021-12-02", "2030-03-02"] ) assert_eq(dates.sort, dates) assert_eq(dates.flip.sort, dates) dates.cons(2, {|a,b| assert(a < b) assert(a <= b) assert_ne(a, b) assert(b > a) assert(b >= a) }) dates.flip.cons(2, {|a,b| assert(a > b) assert(a >= b) assert_ne(a, b) assert(b < a) assert(b <= a) }) assert(dates[0] == dates[0]) assert(dates[-1] == dates[-1]) assert(dates[0] != dates[-1]) assert(dates[-1] != dates[0]) assert_ne(!(dates[0] != dates[-1])) assert_ne(!(dates[-1] != dates[0])) assert(!(dates[0] == dates[-1])) assert(!(dates[-1] == dates[0])) assert_eq(dates[0].add_days(2).ymd, "2020-02-04") assert_eq(dates[0].add_months(2).ymd, "2020-04-02") assert_eq(dates[0].add_years(2).ymd, "2022-02-02") assert_eq(dates[0].add_days(2) - dates[0], 2*86400) assert_eq(dates[0].add_days(2) - 2*86400 -> ymd, "2020-02-02") say "** Test passed!"