hebcal 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,153 @@
1
+ require 'hebcal/passover'
2
+
3
+ describe "passover test" do
4
+ include HebCal::Passover
5
+ # Test each year in 19-year-cycle to verify that leap years are handled correctly
6
+ it "should get correct date in year 1 of cycle" do
7
+ WhenIsPesach(1998).should == Time.new(1998, 4, 11)
8
+ end
9
+ it "should get correct date in year 2 of cycle" do
10
+ WhenIsPesach(1999).should == Time.new(1999, 4, 1)
11
+ end
12
+ it "should get correct date in year 3 of cycle" do
13
+ WhenIsPesach(2000).should == Time.new(2000, 4, 20)
14
+ end
15
+ it "should get correct date in year 4 of cycle" do
16
+ WhenIsPesach(2001).should == Time.new(2001, 4, 8)
17
+ end
18
+ it "should get correct date in year 5 of cycle" do
19
+ WhenIsPesach(2002).should == Time.new(2002, 3, 28)
20
+ end
21
+ it "should get correct date in year 6 of cycle" do
22
+ WhenIsPesach(2003).should == Time.new(2003, 4, 17)
23
+ end
24
+ it "should get correct date in year 7 of cycle" do
25
+ WhenIsPesach(2004).should == Time.new(2004, 4, 6)
26
+ end
27
+ it "should get correct date in year 8 of cycle" do
28
+ WhenIsPesach(2005).should == Time.new(2005, 4, 24)
29
+ end
30
+ it "should get correct date in year 9 of cycle" do
31
+ WhenIsPesach(2006).should == Time.new(2006, 4, 13)
32
+ end
33
+ it "should get correct date in year 10 of cycle" do
34
+ WhenIsPesach(2007).should == Time.new(2007, 4, 3)
35
+ end
36
+ it "should get correct date in year 11 of cycle" do
37
+ WhenIsPesach(2008).should == Time.new(2008, 4, 20)
38
+ end
39
+ it "should get correct date in year 12 of cycle" do
40
+ WhenIsPesach(2009).should == Time.new(2009, 4, 9)
41
+ end
42
+ it "should get correct date in year 13 of cycle" do
43
+ WhenIsPesach(2010).should == Time.new(2010, 3, 30)
44
+ end
45
+ it "should get correct date in year 14 of cycle" do
46
+ WhenIsPesach(2011).should == Time.new(2011, 4, 19)
47
+ end
48
+ it "should get correct date in year 15 of cycle" do
49
+ WhenIsPesach(2012).should == Time.new(2012, 4, 7)
50
+ end
51
+ it "should get correct date in year 16 of cycle" do
52
+ WhenIsPesach(2013).should == Time.new(2013, 3, 26)
53
+ end
54
+ it "should get correct date in year 17 of cycle" do
55
+ WhenIsPesach(2014).should == Time.new(2014, 4, 15)
56
+ end
57
+ it "should get correct date in year 18 of cycle" do
58
+ WhenIsPesach(2015).should == Time.new(2015, 4, 4)
59
+ end
60
+ it "should get correct date in year 19 of cycle" do
61
+ WhenIsPesach(2016).should == Time.new(2016, 4, 23)
62
+ end
63
+
64
+ # Test each year type to verify that date is calculated based on molad
65
+ it "should get correct date in year type 1" do
66
+ WhenIsPesach(2019).should == Time.new(2019, 4, 20)
67
+ end
68
+ it "should get correct date in year type 2" do
69
+ WhenIsPesach(2013).should == Time.new(2013, 3, 26)
70
+ end
71
+ it "should get correct date in year type 3" do
72
+ WhenIsPesach(2001).should == Time.new(2001, 4, 8)
73
+ end
74
+ it "should get correct date in year type 4" do
75
+ WhenIsPesach(2024).should == Time.new(2024, 4, 23)
76
+ end
77
+ it "should get correct date in year type 5" do
78
+ WhenIsPesach(2012).should == Time.new(2012, 4, 7)
79
+ end
80
+ it "should get correct date in year type 6" do
81
+ WhenIsPesach(2003).should == Time.new(2003, 4, 17)
82
+ end
83
+ it "should get correct date in year type 7" do
84
+ WhenIsPesach(2000).should == Time.new(2000, 4, 20)
85
+ end
86
+ it "should get correct date in year type 8" do
87
+ WhenIsPesach(2015).should == Time.new(2015, 4, 4)
88
+ end
89
+ it "should get correct date in year type 9" do
90
+ WhenIsPesach(2029).should == Time.new(2029, 3, 31)
91
+ end
92
+ it "should get correct date in year type 10" do
93
+ WhenIsPesach(2021).should == Time.new(2021, 3, 28)
94
+ end
95
+ it "should get correct date in year type 11" do
96
+ WhenIsPesach(2010).should == Time.new(2010, 3, 30)
97
+ end
98
+ it "should get correct date in year type 12" do
99
+ WhenIsPesach(2004).should == Time.new(2004, 4, 6)
100
+ end
101
+ it "should get correct date in year type 13" do
102
+ WhenIsPesach(2002).should == Time.new(2002, 3, 28)
103
+ end
104
+ it "should get correct date in year type 14" do
105
+ WhenIsPesach(2023).should == Time.new(2023, 4, 6)
106
+ end
107
+
108
+ # Test that Gregorian divergence from Julian calendar is handled correctly
109
+ it "should have a gregorian divergence of 12 in 1899" do
110
+ WhenIsPesach(1899).should == Time.new(1899, 3, 26)
111
+ end
112
+ it "should have a gregorian divergence of 13 in 1900" do
113
+ WhenIsPesach(1900).should == Time.new(1900, 4, 14)
114
+ end
115
+ it "should have a gregorian divergence of 13 in 2099" do
116
+ WhenIsPesach(2099).should == Time.new(2099, 4, 5)
117
+ end
118
+ it "should have a gregorian divergence of 14 in 2100" do
119
+ WhenIsPesach(2100).should == Time.new(2100, 4, 24)
120
+ end
121
+
122
+ # Test boundary cases of DMZ
123
+ it "should miss DMZ by 45 halakim in 516" do
124
+ WhenIsPesach(516).wday.should == 6
125
+ end
126
+ it "should make DMZ with 79 halakim to space in 4048" do
127
+ WhenIsPesach(4048).wday.should == 0
128
+ end
129
+
130
+ # Test boundary cases of DMZ + ADU
131
+ it "should miss DMZ+ADU by 13 halakim in 146" do
132
+ WhenIsPesach(146).wday.should == 2
133
+ end
134
+ it "should make DMZ+ADU with 88 halakim to space in 3682" do
135
+ WhenIsPesach(3682).wday.should == 2
136
+ end
137
+
138
+ # Test boundary cases of gatarad
139
+ it "should miss Gatarad by 68 halakim in 519" do
140
+ WhenIsPesach(519).wday.should == 0
141
+ end
142
+ it "should make Gatarad with 95 halakim to space in 3862" do
143
+ WhenIsPesach(3862).wday.should == 2
144
+ end
145
+
146
+ # Test boundary cases of betutakpat
147
+ it "should miss Betutakpt by 143 halakim in 2174" do
148
+ WhenIsPesach(2174).wday.should == 6
149
+ end
150
+ it "should make Betutakpt with 89 halakim to space in 3683" do
151
+ WhenIsPesach(3683).wday.should == 0
152
+ end
153
+ end
@@ -0,0 +1,874 @@
1
+ document._$ = {}
2
+ $ = document._$
3
+ function RunTest() {
4
+ var output = "";
5
+ var tests = 0;
6
+ var passing = 0;
7
+ var failing = 0;
8
+
9
+ function passed(name) {
10
+ passing +=1;
11
+ tests += 1;
12
+ output += "<div style=\"color:green;\">Test " + name + ": Passed</div>";
13
+ }
14
+
15
+ assert_eq = assert_equal = function(name, actual, expected) {
16
+ if (actual == expected) {
17
+ passed(name);
18
+ } else {
19
+ tests += 1;
20
+ failing += 1;
21
+ output += "<div style=\"color:red;\">Test " + name + ": Failed (should have equaled: " + expected + ", actual: " + actual + ")</div>";
22
+ }
23
+ }
24
+
25
+ assert_ne = assert_not_equal = function(name, actual, expected) {
26
+ if (actual != expected) {
27
+ passed(name);
28
+ } else {
29
+ tests += 1;
30
+ failing += 1;
31
+ output += "<div style=\"color:red;\">Test " + name + ": Failed (should not have equaled: " + expected + ")</div>";
32
+ }
33
+ }
34
+
35
+ function assert_true(name, actual) {
36
+ assert_equal(name, actual, true);
37
+ }
38
+
39
+ function assert_false(name, actual) {
40
+ assert_equal(name, actual, false);
41
+ }
42
+
43
+ function assert_day_of_week(name, date, day)
44
+ {
45
+ date = /([0-9]{3,4})-([0-9]{2})-([0-9]{2})/.exec(date);
46
+ date = new Date(date[1], date[2] - 1, date[3]);
47
+ assert_eq(name, date.getDay(), day);
48
+ }
49
+ try
50
+ {
51
+ // Test full 19-year cycle to verify that leap months are accounted correctly
52
+ assert_eq("CorrectDateInYear1OfCycle", $.whenIsPesach(1998), "1998-04-11");
53
+ assert_eq("CorrectDateInYear2OfCycle", $.whenIsPesach(1999), "1999-04-01");
54
+ assert_eq("CorrectDateInYear3OfCycle", $.whenIsPesach(2000), "2000-04-20");
55
+ assert_eq("CorrectDateInYear4OfCycle", $.whenIsPesach(2001), "2001-04-08");
56
+ assert_eq("CorrectDateInYear5OfCycle", $.whenIsPesach(2002), "2002-03-28");
57
+ assert_eq("CorrectDateInYear6OfCycle", $.whenIsPesach(2003), "2003-04-17");
58
+ assert_eq("CorrectDateInYear7OfCycle", $.whenIsPesach(2004), "2004-04-06");
59
+ assert_eq("CorrectDateInYear8OfCycle", $.whenIsPesach(2005), "2005-04-24");
60
+ assert_eq("CorrectDateInYear9OfCycle", $.whenIsPesach(2006), "2006-04-13");
61
+ assert_eq("CorrectDateInYear10OfCycle", $.whenIsPesach(2007), "2007-04-03");
62
+ assert_eq("CorrectDateInYear11OfCycle", $.whenIsPesach(2008), "2008-04-20");
63
+ assert_eq("CorrectDateInYear12OfCycle", $.whenIsPesach(2009), "2009-04-09");
64
+ assert_eq("CorrectDateInYear13OfCycle", $.whenIsPesach(2010), "2010-03-30");
65
+ assert_eq("CorrectDateInYear14OfCycle", $.whenIsPesach(2011), "2011-04-19");
66
+ assert_eq("CorrectDateInYear15OfCycle", $.whenIsPesach(2012), "2012-04-07");
67
+ assert_eq("CorrectDateInYear16OfCycle", $.whenIsPesach(2013), "2013-03-26");
68
+ assert_eq("CorrectDateInYear17OfCycle", $.whenIsPesach(2014), "2014-04-15");
69
+ assert_eq("CorrectDateInYear18OfCycle", $.whenIsPesach(2015), "2015-04-04");
70
+ assert_eq("CorrectDateInYear19OfCycle", $.whenIsPesach(2016), "2016-04-23");
71
+
72
+ // Test each year type to verify that date is calculated based on molad
73
+ assert_eq("CorrectDateInYearType1", $.whenIsPesach(2019), "2019-04-20");
74
+ assert_eq("CorrectDateInYearType2", $.whenIsPesach(2013), "2013-03-26");
75
+ assert_eq("CorrectDateInYearType3", $.whenIsPesach(2001), "2001-04-08");
76
+ assert_eq("CorrectDateInYearType4", $.whenIsPesach(2024), "2024-04-23");
77
+ assert_eq("CorrectDateInYearType5", $.whenIsPesach(2012), "2012-04-07");
78
+ assert_eq("CorrectDateInYearType6", $.whenIsPesach(2003), "2003-04-17");
79
+ assert_eq("CorrectDateInYearType7", $.whenIsPesach(2000), "2000-04-20");
80
+ assert_eq("CorrectDateInYearType8", $.whenIsPesach(2015), "2015-04-04");
81
+ assert_eq("CorrectDateInYearType9", $.whenIsPesach(2029), "2029-03-31");
82
+ assert_eq("CorrectDateInYearType10", $.whenIsPesach(2021), "2021-03-28");
83
+ assert_eq("CorrectDateInYearType11", $.whenIsPesach(2010), "2010-03-30");
84
+ assert_eq("CorrectDateInYearType12", $.whenIsPesach(2004), "2004-04-06");
85
+ assert_eq("CorrectDateInYearType13", $.whenIsPesach(2002), "2002-03-28");
86
+ assert_eq("CorrectDateInYearType14", $.whenIsPesach(2023), "2023-04-06");
87
+
88
+ assert_eq("GregorianDivergenceOf12In1899", $.whenIsPesach(1899), "1899-03-26");
89
+ assert_eq("GregorianDivergenceOf13In1900", $.whenIsPesach(1900), "1900-04-14");
90
+ assert_eq("GregorianDivergenceOf13In2099", $.whenIsPesach(2099), "2099-04-05");
91
+ assert_eq("GregorianDivergenceOf14In2100", $.whenIsPesach(2100), "2100-04-24");
92
+
93
+ // Test boundary cases of DMZ
94
+ assert_day_of_week("516 misses DMZ by 45 halakim", $.whenIsPesach(516), 6);
95
+ assert_day_of_week("4048 makes DMZ with 79 halakim to spare", $.whenIsPesach(4048), 0);
96
+
97
+ // Test boundary cases of DMZ + ADU
98
+ assert_day_of_week("146 misses DMZ+ADU by 13 halakim", $.whenIsPesach(146), 2);
99
+ assert_day_of_week("3682 makes DMZ+ADU with 88 halakim to spare", $.whenIsPesach(3682), 2);
100
+
101
+ // Test boundary cases of gatarad
102
+ assert_day_of_week("519 misses Gatarad by 68 halakim", $.whenIsPesach(519), 0);
103
+ assert_day_of_week("3862 makes Gatarad with 95 halakim to spare", $.whenIsPesach(3862), 2);
104
+
105
+ // Test boundary cases of betutakpat
106
+ assert_day_of_week("2174 misses Betutakpat by 143 halakim", $.whenIsPesach(2174), 6);
107
+ assert_day_of_week("3683 makes Betutakpat with 89 halakim to spare", $.whenIsPesach(3683), 0);
108
+
109
+ //isPesach() tests
110
+ assert_false("ErevPesachIsNotPesach", $.isPesach("2012-04-06"));
111
+ assert_true("Day1OfPesachIsPesach", $.isPesach("2012-04-07"));
112
+ assert_true("Day2OfPesachIsPesach", $.isPesach("2012-04-08"));
113
+ assert_true("Day3OfPesachIsPesach", $.isPesach("2012-04-09"));
114
+ assert_true("Day4OfPesachIsPesach", $.isPesach("2012-04-10"));
115
+ assert_true("Day5OfPesachIsPesach", $.isPesach("2012-04-11"));
116
+ assert_true("Day6OfPesachIsPesach", $.isPesach("2012-04-12"));
117
+ assert_true("Day7OfPesachIsPesach", $.isPesach("2012-04-13"));
118
+ assert_true("Day8OfPesachIsPesach", $.isPesach("2012-04-14"));
119
+ assert_false("DayAfterPesachIsNotPesach", $.isPesach("2012-04-15"));
120
+
121
+ // isShavuot() tests
122
+ assert_false("ErevShavuotIsNotShavuot", $.isShavuot("2012-05-26"));
123
+ assert_true("Day1OfShavuotIsShavuot", $.isShavuot("2012-05-27"));
124
+ assert_true("Day2OfShavuotIsShavuot", $.isShavuot("2012-05-28"));
125
+ assert_false("DayAfterShavuotIsNotShavuot", $.isShavuot("2012-05-29"));
126
+
127
+ // isRoshHashanah tests
128
+ assert_false("ErevRoshHaShanahIsNotRoshHaShanah", $.isRoshHaShanah("2012-09-16"));
129
+ assert_true("Day1OfRoshHaShanahIsRoshHaShanah", $.isRoshHashanah("2012-09-17"));
130
+ assert_true("Day2OfRoshHaShanahIsRoshHaShanah", $.isRoshHaShanah("2012-09-18"));
131
+ assert_false("DayAfterRoshHaShanahIsNotRoshHaShanah", $.isRoshHashanah("2012-09-19"));
132
+
133
+ // isYomKippur() tests
134
+ assert_false("ErevYomKippurIsNotYomKippur", $.isYomKippur("2012-09-25"));
135
+ assert_true("YomKippurIsYomKippur", $.isYomKippur("2012-09-26"));
136
+ assert_false("DayAfterYomKippurIsNotYomKippur", $.isYomKippur("2012-09-27"));
137
+
138
+ // isSukkot() tests
139
+ assert_false("ErevSukkotIsNotSukkot", $.isSukkot("2012-09-30"));
140
+ assert_true("Day1OfSukkotIsSukkot", $.isSukkot("2012-10-01"));
141
+ assert_true("Day2OfSukkotIsSukkot", $.isSukkot("2012-10-02"));
142
+ assert_true("Day3OfSukkotIsSukkot", $.isSukkot("2012-10-03"));
143
+ assert_true("Day4OfSukkotIsSukkot", $.isSukkot("2012-10-04"));
144
+ assert_true("Day5OfSukkotIsSukkot", $.isSukkot("2012-10-05"));
145
+ assert_true("Day6OfSukkotIsSukkot", $.isSukkot("2012-10-06"));
146
+ assert_true("Day7OfSukkotIsSukkot", $.isSukkot("2012-10-07"));
147
+ assert_true("Day8OfSukkotIsSukkot", $.isSukkot("2012-10-08"));
148
+ assert_true("Day9OfSukkotIsSukkot", $.isSukkot("2012-10-09"));
149
+ assert_false("DayAfterSukkotIsNotSukkot", $.isSukkot("2012-10-10"));
150
+
151
+ // isMoed() tests
152
+ assert_false("ErevPesachIsNotMoed", $.isMoed("2012-04-06"));
153
+ assert_false("Day1OfPesachIsNotMoed", $.isMoed("2012-04-07"));
154
+ assert_false("Day2OfPesachIsNotMoed", $.isMoed("2012-04-08"));
155
+ assert_true("Day3OfPesachIsMoed", $.isMoed("2012-04-09"));
156
+ assert_true("Day3OfPesachIsMoed", $.isMoed("2012-04-10"));
157
+ assert_true("Day3OfPesachIsMoed", $.isMoed("2012-04-11"));
158
+ assert_true("Day3OfPesachIsMoed", $.isMoed("2012-04-12"));
159
+ assert_false("Day7OfPesachIsNotMoed", $.isMoed("2012-04-13"));
160
+ assert_false("Day8OfPesachIsNotMoed", $.isMoed("2012-04-14"));
161
+ assert_false("DayAfterPesachIsNotMoed", $.isMoed("2012-04-15"));
162
+
163
+ assert_false("ErevShavuotIsNotMoed", $.isMoed("2012-05-26"));
164
+ assert_false("Day1OfShavuotIsNotMoed", $.isMoed("2012-05-27"));
165
+ assert_false("Day2OfShavuotIsNotMoed", $.isMoed("2012-05-28"));
166
+ assert_false("DayAfterShavuotIsNotMoed", $.isMoed("2012-05-29"));
167
+
168
+ assert_false("ErevRoshHaShanahIsNotMoed", $.isMoed("2012-09-16"));
169
+ assert_false("Day1OfRoshHaShanahIsNotMoed", $.isMoed("2012-09-17"));
170
+ assert_false("Day2OfRoshHaShanahIsNotMoed", $.isMoed("2012-09-18"));
171
+ assert_false("DayAfterRoshHaShanahIsNotMoed", $.isMoed("2012-09-19"));
172
+
173
+ assert_false("ErevYomKippurIsNotMoed", $.isMoed("2012-09-25"));
174
+ assert_false("YomKippurIsNotMoed", $.isMoed("2012-09-26"));
175
+ assert_false("DayAfterYomKippurIsNotMoed", $.isMoed("2012-09-27"));
176
+
177
+ assert_false("ErevSukkotIsNotMoed", $.isMoed("2012-09-30"));
178
+ assert_false("Day1OfSukkotIsNotMoed", $.isMoed("2012-10-01"));
179
+ assert_false("Day2OfSukkotIsNotMoed", $.isMoed("2012-10-02"));
180
+ assert_true("Day3OfSukkotIsMoed", $.isMoed("2012-10-03"));
181
+ assert_true("Day4OfSukkotIsMoed", $.isMoed("2012-10-04"));
182
+ assert_true("Day5OfSukkotIsMoed", $.isMoed("2012-10-05"));
183
+ assert_true("Day6OfSukkotIsMoed", $.isMoed("2012-10-06"));
184
+ assert_true("Day7OfSukkotIsMoed", $.isMoed("2012-10-07"));
185
+ assert_false("Day8OfSukkotIsMoed", $.isMoed("2012-10-08"));
186
+ assert_false("Day9OfSukkotIsMoed", $.isMoed("2012-10-09"));
187
+ assert_false("DayAfterSukkotIsNotMoed", $.isMoed("2012-10-10"));
188
+
189
+ // isRegel() tests
190
+ assert_false("ErevPesachIsNotRegel", $.isRegel("2012-04-06"));
191
+ assert_true("Day1OfPesachIsRegel", $.isRegel("2012-04-07"));
192
+ assert_true("Day2OfPesachIsRegel", $.isRegel("2012-04-08"));
193
+ assert_true("Day3OfPesachIsRegel", $.isRegel("2012-04-09"));
194
+ assert_true("Day4OfPesachIsRegel", $.isRegel("2012-04-10"));
195
+ assert_true("Day5OfPesachIsRegel", $.isRegel("2012-04-11"));
196
+ assert_true("Day6OfPesachIsRegel", $.isRegel("2012-04-12"));
197
+ assert_true("Day7OfPesachIsRegel", $.isRegel("2012-04-13"));
198
+ assert_true("Day8OfPesachIsRegel", $.isRegel("2012-04-14"));
199
+ assert_false("DayAfterPesachIsNotRegel", $.isRegel("2012-04-15"));
200
+
201
+ assert_false("ErevShavuotIsNotRegel", $.isRegel("2012-05-26"));
202
+ assert_true("Day1OfShavuotIsRegel", $.isRegel("2012-05-27"));
203
+ assert_true("Day2OfShavuotIsRegel", $.isRegel("2012-05-28"));
204
+ assert_false("DayAfterShavuotIsNotRegel", $.isRegel("2012-05-29"));
205
+
206
+ assert_false("ErevRoshHaShanahIsNotRegel", $.isRegel("2012-09-16"));
207
+ assert_false("Day1OfRoshHaShanahIsNotRegel", $.isRegel("2012-09-17"));
208
+ assert_false("Day2OfRoshHaShanahIsNotRegel", $.isRegel("2012-09-18"));
209
+ assert_false("DayAfterRoshHaShanahIsNotRegel", $.isRegel("2012-09-19"));
210
+
211
+ assert_false("ErevYomKippurIsNotRegel", $.isRegel("2012-09-25"));
212
+ assert_false("YomKippurIsNotRegel", $.isRegel("2012-09-26"));
213
+ assert_false("DayAfterYomKippurIsNotRegel", $.isRegel("2012-09-27"));
214
+
215
+ assert_false("ErevSukkotIsNotRegel", $.isRegel("2012-09-30"));
216
+ assert_true("Day1OfSukkotIsRegel", $.isRegel("2012-10-01"));
217
+ assert_true("Day2OfSukkotIsRegel", $.isRegel("2012-10-02"));
218
+ assert_true("Day3OfSukkotIsRegel", $.isRegel("2012-10-03"));
219
+ assert_true("Day4OfSukkotIsRegel", $.isRegel("2012-10-04"));
220
+ assert_true("Day5OfSukkotIsRegel", $.isRegel("2012-10-05"));
221
+ assert_true("Day6OfSukkotIsRegel", $.isRegel("2012-10-06"));
222
+ assert_true("Day7OfSukkotIsRegel", $.isRegel("2012-10-07"));
223
+ assert_true("Day8OfSukkotIsRegel", $.isRegel("2012-10-08"));
224
+ assert_true("Day9OfSukkotIsRegel", $.isRegel("2012-10-09"));
225
+ assert_false("DayAfterSukkotIsNotSukkot", $.isRegel("2012-10-10"));
226
+
227
+ // isYomTov() tests
228
+ assert_false("ErevPesachIsNotYomTov", $.isYomTov("2012-04-06"));
229
+ assert_true("Day1OfPesachIsYomTov", $.isYomTov("2012-04-07"));
230
+ assert_true("Day2OfPesachIsYomTov", $.isYomTov("2012-04-08"));
231
+ assert_false("Day3OfPesachIsNotYomTov", $.isYomTov("2012-04-09"));
232
+ assert_false("Day3OfPesachIsNotYomTov", $.isYomTov("2012-04-10"));
233
+ assert_false("Day3OfPesachIsNotYomTov", $.isYomTov("2012-04-11"));
234
+ assert_false("Day3OfPesachIsNotYomTov", $.isYomTov("2012-04-12"));
235
+ assert_true("Day7OfPesachIsYomTov", $.isYomTov("2012-04-13"));
236
+ assert_true("Day8OfPesachIsYomTov", $.isYomTov("2012-04-14"));
237
+ assert_false("DayAfterPesachIsNotYomTov", $.isYomTov("2012-04-15"));
238
+
239
+ assert_false("ErevShavuotIsNotYomTov", $.isYomTov("2012-05-26"));
240
+ assert_true("Day1OfShavuotIsYomTov", $.isYomTov("2012-05-27"));
241
+ assert_true("Day2OfShavuotIsYomTov", $.isYomTov("2012-05-28"));
242
+ assert_false("DayAfterShavuotIsNotYomTov", $.isYomTov("2012-05-29"));
243
+
244
+ assert_false("ErevRoshHaShanahIsNotYomTov", $.isYomTov("2012-09-16"));
245
+ assert_true("Day1OfRoshHaShanahIsYomTov", $.isYomTov("2012-09-17"));
246
+ assert_true("Day2OfRoshHaShanahIsYomTov", $.isYomTov("2012-09-18"));
247
+ assert_false("DayAfterRoshHaShanahIsNotYomTov", $.isYomTov("2012-09-19"));
248
+
249
+ assert_false("ErevYomKippurIsNotYomTov", $.isYomTov("2012-09-25"));
250
+ assert_false("YomKippurIsNotYomTov", $.isYomTov("2012-09-26"));
251
+ assert_false("DayAfterYomKippurIsNotYomTov", $.isYomTov("2012-09-27"));
252
+
253
+ assert_false("ErevSukkotIsNotYomTov", $.isYomTov("2012-09-30"));
254
+ assert_true("Day1OfSukkotIsYomTov", $.isYomTov("2012-10-01"));
255
+ assert_true("Day2OfSukkotIsYomTov", $.isYomTov("2012-10-02"));
256
+ assert_false("Day3OfSukkotIsNotYomTov", $.isYomTov("2012-10-03"));
257
+ assert_false("Day4OfSukkotIsNotYomTov", $.isYomTov("2012-10-04"));
258
+ assert_false("Day5OfSukkotIsNotYomTov", $.isYomTov("2012-10-05"));
259
+ assert_false("Day6OfSukkotIsNotYomTov", $.isYomTov("2012-10-06"));
260
+ assert_false("Day7OfSukkotIsNotYomTov", $.isYomTov("2012-10-07"));
261
+ assert_true("Day8OfSukkotIsYomTov", $.isYomTov("2012-10-08"));
262
+ assert_true("Day9OfSukkotIsYomTov", $.isYomTov("2012-10-09"));
263
+ assert_false("DayAfterSukkotIsNotYomTov", $.isYomTov("2012-10-10"));
264
+
265
+ assert_true("Parses3DigitYears", $.isPesach("100-04-11"));
266
+ assert_true("ParsesLarge4DigitYears", $.isPesach("9605-05-30"));
267
+
268
+ // isPurim() tests
269
+ assert_false("ErevPurimIsNotPurim", $.isPurim("2015-03-04"));
270
+ assert_true("PurimIsPurim", $.isPurim("2015-03-05"));
271
+ assert_false("DayAfterPurimIsNotPurim", $.isPurim("2015-03-06"));
272
+
273
+ // isHanuka() tests
274
+ assert_false("ErevHanukaIsNotHanukaInA353DayYear", $.isHanuka("2043-12-26"));
275
+ assert_true("Day1OfHanukaIsHanukaInA353DayYear", $.isHanukka("2043-12-27"));
276
+ assert_true("Day2OfHanukaIsHanukaInA353DayYear", $.isHanukah("2043-12-28"));
277
+ assert_true("Day3OfHanukaIsHanukaInA353DayYear", $.isHanukkah("2043-12-29"));
278
+ assert_true("Day4OfHanukaIsHanukaInA353DayYear", $.isChanuka("2043-12-30"));
279
+ assert_true("Day5OfHanukaIsHanukaInA353DayYear", $.isChanukka("2043-12-31"));
280
+ assert_true("Day6OfHanukaIsHanukaInA353DayYear", $.isChanukah("2044-01-01"));
281
+ assert_true("Day7OfHanukaIsHanukaInA353DayYear", $.isChanukkah("2044-01-02"));
282
+ assert_true("Day8OfHanukaIsHanukaInA353DayYear", $.isHanuka("2044-01-03"));
283
+ assert_false("DayAfterHanukaIsNotHanukaInA353DayYear", $.isHanuka("2044-01-04"));
284
+
285
+ assert_false("ErevHanukaIsNotHanukaInA354DayYear", $.isHanuka("2014-12-16"));
286
+ assert_true("Day1OfHanukaIsHanukaInA354DayYear", $.isHanukka("2014-12-17"));
287
+ assert_true("Day2OfHanukaIsHanukaInA354DayYear", $.isHanukah("2014-12-18"));
288
+ assert_true("Day3OfHanukaIsHanukaInA354DayYear", $.isHanukkah("2014-12-19"));
289
+ assert_true("Day4OfHanukaIsHanukaInA354DayYear", $.isChanuka("2014-12-20"));
290
+ assert_true("Day5OfHanukaIsHanukaInA354DayYear", $.isChanukka("2014-12-21"));
291
+ assert_true("Day6OfHanukaIsHanukaInA354DayYear", $.isChanukah("2014-12-22"));
292
+ assert_true("Day7OfHanukaIsHanukaInA354DayYear", $.isChanukkah("2014-12-23"));
293
+ assert_true("Day8OfHanukaIsHanukaInA354DayYear", $.isHanuka("2014-12-24"));
294
+ assert_false("DayAfterHanukaIsNotHanukaInA354DayYear", $.isHanuka("2014-12-25"));
295
+
296
+ assert_false("ErevHanukaIsNotHanukaInA355DayYear", $.isHanuka("2019-12-22"));
297
+ assert_true("Day1OfHanukaIsHanukaInA355DayYear", $.isHanukka("2019-12-23"));
298
+ assert_true("Day2OfHanukaIsHanukaInA355DayYear", $.isHanukah("2019-12-24"));
299
+ assert_true("Day3OfHanukaIsHanukaInA355DayYear", $.isHanukkah("2019-12-25"));
300
+ assert_true("Day4OfHanukaIsHanukaInA355DayYear", $.isChanuka("2019-12-26"));
301
+ assert_true("Day5OfHanukaIsHanukaInA355DayYear", $.isChanukka("2019-12-27"));
302
+ assert_true("Day6OfHanukaIsHanukaInA355DayYear", $.isChanukah("2019-12-28"));
303
+ assert_true("Day7OfHanukaIsHanukaInA355DayYear", $.isChanukkah("2019-12-29"));
304
+ assert_true("Day8OfHanukaIsHanukaInA355DayYear", $.isHanuka("2019-12-30"));
305
+ assert_false("DayAfterHanukaIsNotHanukaInA355DayYear", $.isHanuka("2019-12-31"));
306
+
307
+ assert_false("ErevHanukaIsNotHanukaInA383DayYear", $.isHanuka("2023-12-07"));
308
+ assert_true("Day1OfHanukaIsHanukaInA383DayYear", $.isHanukka("2023-12-08"));
309
+ assert_true("Day2OfHanukaIsHanukaInA383DayYear", $.isHanukah("2023-12-09"));
310
+ assert_true("Day3OfHanukaIsHanukaInA383DayYear", $.isHanukkah("2023-12-10"));
311
+ assert_true("Day4OfHanukaIsHanukaInA383DayYear", $.isChanuka("2023-12-11"));
312
+ assert_true("Day5OfHanukaIsHanukaInA383DayYear", $.isChanukka("2023-12-12"));
313
+ assert_true("Day6OfHanukaIsHanukaInA383DayYear", $.isChanukah("2023-12-13"));
314
+ assert_true("Day7OfHanukaIsHanukaInA383DayYear", $.isChanukkah("2023-12-14"));
315
+ assert_true("Day8OfHanukaIsHanukaInA383DayYear", $.isHanuka("2023-12-15"));
316
+ assert_false("DayAfterHanukaIsNotHanukaInA383DayYear", $.isHanuka("2023-12-16"));
317
+
318
+ assert_false("ErevHanukaIsNotHanukaInA384DayYear", $.isHanuka("2021-11-28"));
319
+ assert_true("Day1OfHanukaIsHanukaInA384DayYear", $.isHanukka("2021-11-29"));
320
+ assert_true("Day2OfHanukaIsHanukaInA384DayYear", $.isHanukah("2021-11-30"));
321
+ assert_true("Day3OfHanukaIsHanukaInA384DayYear", $.isHanukkah("2021-12-01"));
322
+ assert_true("Day4OfHanukaIsHanukaInA384DayYear", $.isChanuka("2021-12-02"));
323
+ assert_true("Day5OfHanukaIsHanukaInA384DayYear", $.isChanukka("2021-12-03"));
324
+ assert_true("Day6OfHanukaIsHanukaInA384DayYear", $.isChanukah("2021-12-04"));
325
+ assert_true("Day7OfHanukaIsHanukaInA384DayYear", $.isChanukkah("2021-12-05"));
326
+ assert_true("Day8OfHanukaIsHanukaInA384DayYear", $.isHanuka("2021-12-06"));
327
+ assert_false("DayAfterHanukaIsNotHanukaInA384DayYear", $.isHanuka("2021-12-07"));
328
+
329
+ assert_false("ErevHanukaIsNotHanukaInA385DayYear", $.isHanuka("2015-12-06"));
330
+ assert_true("Day1OfHanukaIsHanukaInA385DayYear", $.isHanukka("2015-12-07"));
331
+ assert_true("Day2OfHanukaIsHanukaInA385DayYear", $.isHanukah("2015-12-08"));
332
+ assert_true("Day3OfHanukaIsHanukaInA385DayYear", $.isHanukkah("2015-12-09"));
333
+ assert_true("Day4OfHanukaIsHanukaInA385DayYear", $.isChanuka("2015-12-10"));
334
+ assert_true("Day5OfHanukaIsHanukaInA385DayYear", $.isChanukka("2015-12-11"));
335
+ assert_true("Day6OfHanukaIsHanukaInA385DayYear", $.isChanukah("2015-12-12"));
336
+ assert_true("Day7OfHanukaIsHanukaInA385DayYear", $.isChanukkah("2015-12-13"));
337
+ assert_true("Day8OfHanukaIsHanukaInA385DayYear", $.isHanuka("2015-12-14"));
338
+ assert_false("DayAfterHanukaIsNotHanukaInA385DayYear", $.isHanuka("2015-12-15"));
339
+
340
+ // isRoshHodesh() tests
341
+ // 353 day year
342
+ assert_false("ErevRoshHodeshIyarIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-05-09"));
343
+ assert_true("Day1OfRoshHodeshIyarIsRoshHodeshInA353DayYear", $.isRoshChodesh("2043-05-10"));
344
+ assert_true("Day2OfRoshHodeshIyarIsRoshHodeshInA353DayYear", $.isRoshHodesh("2043-05-11"));
345
+ assert_false("DayAfterRoshHodeshIyarIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-05-12"));
346
+
347
+ assert_false("ErevRoshHodeshSivanIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-06-08"));
348
+ assert_true("RoshHodeshSivanIsRoshHodeshInA353DayYear", $.isRoshChodesh("2043-06-09"));
349
+ assert_false("DayAfterRoshHodeshSivanIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-06-10"));
350
+
351
+ assert_false("ErevRoshHodeshTammuzIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-07-07"));
352
+ assert_true("Day1OfRoshHodeshTammuzIsRoshHodeshInA353DayYear", $.isRoshChodesh("2043-07-08"));
353
+ assert_true("Day2OfRoshHodeshTammuzIsRoshHodeshInA353DayYear", $.isRoshHodesh("2043-07-09"));
354
+ assert_false("DayAfterRoshHodeshTammuzIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-07-10"));
355
+
356
+ assert_false("ErevRoshHodeshAbIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-08-06"));
357
+ assert_true("RoshHodeshAbIsRoshHodeshInA353DayYear", $.isRoshChodesh("2043-08-07"));
358
+ assert_false("DayAfterRoshHodeshAbIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-08-08"));
359
+
360
+ assert_false("ErevRoshHodeshElulIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-09-04"));
361
+ assert_true("Day1OfRoshHodeshElulIsRoshHodeshInA353DayYear", $.isRoshChodesh("2043-09-05"));
362
+ assert_true("Day2OfRoshHodeshElulIsRoshHodeshInA353DayYear", $.isRoshHodesh("2043-09-06"));
363
+ assert_false("DayAfterRoshHodeshElulIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-09-07"));
364
+
365
+ assert_false("ErevRoshHashanahIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-10-04"));
366
+ assert_false("Day1OfRoshHashanahIsNotRoshHodeshInA353DayYear", $.isRoshChodesh("2043-10-05"));
367
+ assert_false("Day2OfRoshHashanahIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-10-06"));
368
+
369
+ assert_false("ErevRoshHodeshHeshvanIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-11-02"));
370
+ assert_true("Day1OfRoshHodeshHeshvanIsRoshHodeshInA353DayYear", $.isRoshChodesh("2043-11-03"));
371
+ assert_true("Day2OfRoshHodeshHeshvanIsRoshHodeshInA353DayYear", $.isRoshHodesh("2043-11-04"));
372
+ assert_false("DayAfterRoshHodeshHeshvanIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-11-05"));
373
+
374
+ assert_false("ErevRoshHodeshKislevIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-12-02"));
375
+ assert_true("RoshHodeshKislevIsRoshHodeshInA353DayYear", $.isRoshChodesh("2043-12-03"));
376
+ assert_false("DayAfterRoshHodeshKislevIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-12-04"));
377
+
378
+ assert_false("ErevRoshHodeshTevetIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2043-12-31"));
379
+ assert_true("RoshHodeshTevetIsRoshHodeshInA353DayYear", $.isRoshChodesh("2044-01-01"));
380
+ assert_false("DayAfterRoshHodeshTevetIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2044-01-02"));
381
+
382
+ assert_false("ErevRoshHodeshShevatIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2044-01-29"));
383
+ assert_true("RoshHodeshShevatIsRoshHodeshInA353DayYear", $.isRoshChodesh("2044-01-30"));
384
+ assert_false("DayAfterRoshHodeshShevatIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2044-01-31"));
385
+
386
+ assert_false("ErevRoshHodeshAdarIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2044-02-27"));
387
+ assert_true("Day1OfRoshHodeshAdarIsRoshHodeshInA353DayYear", $.isRoshChodesh("2044-02-28"));
388
+ assert_true("Day2OfRoshHodeshAdarIsRoshHodeshInA353DayYear", $.isRoshHodesh("2044-02-29"));
389
+ assert_false("DayAfterRoshHodeshAdarIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2044-03-01"));
390
+
391
+ assert_false("ErevRoshHodeshNisanIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2044-03-28"));
392
+ assert_true("RoshHodeshNisanIsRoshHodeshInA353DayYear", $.isRoshChodesh("2044-03-29"));
393
+ assert_false("DayAfterRoshHodeshNisanIsNotRoshHodeshInA353DayYear", $.isRoshHodesh("2044-03-30"));
394
+
395
+ // 354 day year
396
+ assert_false("ErevRoshHodeshIyarIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-04-30"));
397
+ assert_true("Day1OfRoshHodeshIyarIsRoshHodeshInA354DayYear", $.isRoshChodesh("2041-05-01"));
398
+ assert_true("Day2OfRoshHodeshIyarIsRoshHodeshInA354DayYear", $.isRoshHodesh("2041-05-02"));
399
+ assert_false("DayAfterRoshHodeshIyarIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-05-03"));
400
+
401
+ assert_false("ErevRoshHodeshSivanIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-05-30"));
402
+ assert_true("RoshHodeshSivanIsRoshHodeshInA354DayYear", $.isRoshChodesh("2041-05-31"));
403
+ assert_false("DayAfterRoshHodeshSivanIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-06-01"));
404
+
405
+ assert_false("ErevRoshHodeshTammuzIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-06-28"));
406
+ assert_true("Day1OfRoshHodeshTammuzIsRoshHodeshInA354DayYear", $.isRoshChodesh("2041-06-29"));
407
+ assert_true("Day2OfRoshHodeshTammuzIsRoshHodeshInA354DayYear", $.isRoshHodesh("2041-06-30"));
408
+ assert_false("DayAfterRoshHodeshTammuzIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-07-01"));
409
+
410
+ assert_false("ErevRoshHodeshAbIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-07-28"));
411
+ assert_true("RoshHodeshAbIsRoshHodeshInA354DayYear", $.isRoshChodesh("2041-07-29"));
412
+ assert_false("DayAfterRoshHodeshAbIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-07-30"));
413
+
414
+ assert_false("ErevRoshHodeshElulIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-08-26"));
415
+ assert_true("Day1OfRoshHodeshElulIsRoshHodeshInA354DayYear", $.isRoshChodesh("2041-08-27"));
416
+ assert_true("Day2OfRoshHodeshElulIsRoshHodeshInA354DayYear", $.isRoshHodesh("2041-08-28"));
417
+ assert_false("DayAfterRoshHodeshElulIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-08-29"));
418
+
419
+ assert_false("ErevRoshHashanahIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-09-25"));
420
+ assert_false("Day1OfRoshHashanahIsNotRoshHodeshInA354DayYear", $.isRoshChodesh("2041-09-26"));
421
+ assert_false("Day2OfRoshHashanahIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-09-27"));
422
+
423
+ assert_false("ErevRoshHodeshHeshvanIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-10-24"));
424
+ assert_true("Day1OfRoshHodeshHeshvanIsRoshHodeshInA354DayYear", $.isRoshChodesh("2041-10-25"));
425
+ assert_true("Day2OfRoshHodeshHeshvanIsRoshHodeshInA354DayYear", $.isRoshHodesh("2041-10-26"));
426
+ assert_false("DayAfterRoshHodeshHeshvanIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-10-27"));
427
+
428
+ assert_false("ErevRoshHodeshKislevIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-11-23"));
429
+ assert_true("RoshHodeshKislevIsRoshHodeshInA354DayYear", $.isRoshChodesh("2041-11-24"));
430
+ assert_false("DayAfterRoshHodeshKislevIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-11-25"));
431
+
432
+ assert_false("ErevRoshHodeshTevetIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-12-22"));
433
+ assert_true("Day1OfRoshHodeshTevetIsRoshHodeshInA354DayYear", $.isRoshChodesh("2041-12-23"));
434
+ assert_true("Day2OfRoshHodeshTevetIsRoshHodeshInA354DayYear", $.isRoshChodesh("2041-12-24"));
435
+ assert_false("DayAfterRoshHodeshTevetIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2041-12-25"));
436
+
437
+ assert_false("ErevRoshHodeshShevatIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2042-01-21"));
438
+ assert_true("RoshHodeshShevatIsRoshHodeshInA354DayYear", $.isRoshChodesh("2042-01-22"));
439
+ assert_false("DayAfterRoshHodeshShevatIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2042-01-23"));
440
+
441
+ assert_false("ErevRoshHodeshAdarIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2042-02-19"));
442
+ assert_true("Day1OfRoshHodeshAdarIsRoshHodeshInA354DayYear", $.isRoshChodesh("2042-02-20"));
443
+ assert_true("Day2OfRoshHodeshAdarIsRoshHodeshInA354DayYear", $.isRoshHodesh("2042-02-21"));
444
+ assert_false("DayAfterRoshHodeshAdarIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2042-02-22"));
445
+
446
+ assert_false("ErevRoshHodeshNisanIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2042-03-21"));
447
+ assert_true("RoshHodeshNisanIsRoshHodeshInA354DayYear", $.isRoshChodesh("2042-03-22"));
448
+ assert_false("DayAfterRoshHodeshNisanIsNotRoshHodeshInA354DayYear", $.isRoshHodesh("2042-03-23"));
449
+
450
+ // 355 day year
451
+ assert_false("ErevRoshHodeshIyarIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-04-26"));
452
+ assert_true("Day1OfRoshHodeshIyarIsRoshHodeshInA355DayYear", $.isRoshChodesh("2044-04-27"));
453
+ assert_true("Day2OfRoshHodeshIyarIsRoshHodeshInA355DayYear", $.isRoshHodesh("2044-04-28"));
454
+ assert_false("DayAfterRoshHodeshIyarIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-04-29"));
455
+
456
+ assert_false("ErevRoshHodeshSivanIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-05-26"));
457
+ assert_true("RoshHodeshSivanIsRoshHodeshInA355DayYear", $.isRoshChodesh("2044-05-27"));
458
+ assert_false("DayAfterRoshHodeshSivanIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-05-28"));
459
+
460
+ assert_false("ErevRoshHodeshTammuzIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-06-24"));
461
+ assert_true("Day1OfRoshHodeshTammuzIsRoshHodeshInA355DayYear", $.isRoshChodesh("2044-06-25"));
462
+ assert_true("Day2OfRoshHodeshTammuzIsRoshHodeshInA355DayYear", $.isRoshHodesh("2044-06-26"));
463
+ assert_false("DayAfterRoshHodeshTammuzIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-06-27"));
464
+
465
+ assert_false("ErevRoshHodeshAbIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-07-24"));
466
+ assert_true("RoshHodeshAbIsRoshHodeshInA355DayYear", $.isRoshChodesh("2044-07-25"));
467
+ assert_false("DayAfterRoshHodeshAbIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-07-26"));
468
+
469
+ assert_false("ErevRoshHodeshElulIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-08-22"));
470
+ assert_true("Day1OfRoshHodeshElulIsRoshHodeshInA355DayYear", $.isRoshChodesh("2044-08-23"));
471
+ assert_true("Day2OfRoshHodeshElulIsRoshHodeshInA355DayYear", $.isRoshHodesh("2044-08-24"));
472
+ assert_false("DayAfterRoshHodeshElulIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-08-25"));
473
+
474
+ assert_false("ErevRoshHashanahIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-09-21"));
475
+ assert_false("Day1OfRoshHashanahIsNotRoshHodeshInA355DayYear", $.isRoshChodesh("2044-09-22"));
476
+ assert_false("Day2OfRoshHashanahIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-09-23"));
477
+
478
+ assert_false("ErevRoshHodeshHeshvanIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-10-20"));
479
+ assert_true("Day1OfRoshHodeshHeshvanIsRoshHodeshInA355DayYear", $.isRoshChodesh("2044-10-21"));
480
+ assert_true("Day2OfRoshHodeshHeshvanIsRoshHodeshInA355DayYear", $.isRoshHodesh("2044-10-22"));
481
+ assert_false("DayAfterRoshHodeshHeshvanIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-10-23"));
482
+
483
+ assert_false("ErevRoshHodeshKislevIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-11-19"));
484
+ assert_true("Day1OfRoshHodeshKislevIsRoshHodeshInA355DayYear", $.isRoshChodesh("2044-11-20"));
485
+ assert_true("Day2OfRoshHodeshKislevIsRoshHodeshInA355DayYear", $.isRoshChodesh("2044-11-21"));
486
+ assert_false("DayAfterRoshHodeshKislevIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-11-22"));
487
+
488
+ assert_false("ErevRoshHodeshTevetIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-12-19"));
489
+ assert_true("Day1OfRoshHodeshTevetIsRoshHodeshInA355DayYear", $.isRoshChodesh("2044-12-20"));
490
+ assert_true("Day2OfRoshHodeshTevetIsRoshHodeshInA355DayYear", $.isRoshChodesh("2044-12-21"));
491
+ assert_false("DayAfterRoshHodeshTevetIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2044-12-22"));
492
+
493
+ assert_false("ErevRoshHodeshShevatIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2045-01-18"));
494
+ assert_true("RoshHodeshShevatIsRoshHodeshInA355DayYear", $.isRoshChodesh("2045-01-19"));
495
+ assert_false("DayAfterRoshHodeshShevatIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2045-01-20"));
496
+
497
+ assert_false("ErevRoshHodeshAdarIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2045-02-16"));
498
+ assert_true("Day1OfRoshHodeshAdarIsRoshHodeshInA355DayYear", $.isRoshChodesh("2045-02-17"));
499
+ assert_true("Day2OfRoshHodeshAdarIsRoshHodeshInA355DayYear", $.isRoshHodesh("2045-02-18"));
500
+ assert_false("DayAfterRoshHodeshAdarIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2045-02-19"));
501
+
502
+ assert_false("ErevRoshHodeshNisanIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2045-03-18"));
503
+ assert_true("RoshHodeshNisanIsRoshHodeshInA355DayYear", $.isRoshChodesh("2045-03-19"));
504
+ assert_false("DayAfterRoshHodeshNisanIsNotRoshHodeshInA355DayYear", $.isRoshHodesh("2045-03-20"));
505
+
506
+ // 383 day year
507
+ assert_false("ErevRoshHodeshIyarIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-04-12"));
508
+ assert_true("Day1OfRoshHodeshIyarIsRoshHodeshInA383DayYear", $.isRoshChodesh("2040-04-13"));
509
+ assert_true("Day2OfRoshHodeshIyarIsRoshHodeshInA383DayYear", $.isRoshHodesh("2040-04-14"));
510
+ assert_false("DayAfterRoshHodeshIyarIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-04-15"));
511
+
512
+ assert_false("ErevRoshHodeshSivanIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-05-12"));
513
+ assert_true("RoshHodeshSivanIsRoshHodeshInA383DayYear", $.isRoshChodesh("2040-05-13"));
514
+ assert_false("DayAfterRoshHodeshSivanIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-05-14"));
515
+
516
+ assert_false("ErevRoshHodeshTammuzIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-06-10"));
517
+ assert_true("Day1OfRoshHodeshTammuzIsRoshHodeshInA383DayYear", $.isRoshChodesh("2040-06-11"));
518
+ assert_true("Day2OfRoshHodeshTammuzIsRoshHodeshInA383DayYear", $.isRoshHodesh("2040-06-12"));
519
+ assert_false("DayAfterRoshHodeshTammuzIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-06-13"));
520
+
521
+ assert_false("ErevRoshHodeshAbIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-07-10"));
522
+ assert_true("RoshHodeshAbIsRoshHodeshInA383DayYear", $.isRoshChodesh("2040-07-11"));
523
+ assert_false("DayAfterRoshHodeshAbIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-07-12"));
524
+
525
+ assert_false("ErevRoshHodeshElulIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-08-08"));
526
+ assert_true("Day1OfRoshHodeshElulIsRoshHodeshInA383DayYear", $.isRoshChodesh("2040-08-09"));
527
+ assert_true("Day2OfRoshHodeshElulIsRoshHodeshInA383DayYear", $.isRoshHodesh("2040-08-10"));
528
+ assert_false("DayAfterRoshHodeshElulIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-08-11"));
529
+
530
+ assert_false("ErevRoshHashanahIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-09-07"));
531
+ assert_false("Day1OfRoshHashanahIsNotRoshHodeshInA383DayYear", $.isRoshChodesh("2040-09-08"));
532
+ assert_false("Day2OfRoshHashanahIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-09-09"));
533
+
534
+ assert_false("ErevRoshHodeshHeshvanIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-10-06"));
535
+ assert_true("Day1OfRoshHodeshHeshvanIsRoshHodeshInA383DayYear", $.isRoshChodesh("2040-10-07"));
536
+ assert_true("Day2OfRoshHodeshHeshvanIsRoshHodeshInA383DayYear", $.isRoshHodesh("2040-10-08"));
537
+ assert_false("DayAfterRoshHodeshHeshvanIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-10-09"));
538
+
539
+ assert_false("ErevRoshHodeshKislevIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-11-05"));
540
+ assert_true("RoshHodeshKislevIsRoshHodeshInA383DayYear", $.isRoshChodesh("2040-11-06"));
541
+ assert_false("DayAfterRoshHodeshKislevIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-11-07"));
542
+
543
+ assert_false("ErevRoshHodeshTevetIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-12-04"));
544
+ assert_true("RoshHodeshTevetIsRoshHodeshInA383DayYear", $.isRoshChodesh("2040-12-05"));
545
+ assert_false("DayAfterRoshHodeshTevetIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2040-12-06"));
546
+
547
+ assert_false("ErevRoshHodeshShevatIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2041-01-02"));
548
+ assert_true("RoshHodeshShevatIsRoshHodeshInA383DayYear", $.isRoshChodesh("2041-01-03"));
549
+ assert_false("DayAfterRoshHodeshShevatIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2041-01-04"));
550
+
551
+ assert_false("ErevRoshHodeshAdar1IsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2041-01-31"));
552
+ assert_true("Day1OfRoshHodeshAdar1IsRoshHodeshInA383DayYear", $.isRoshChodesh("2041-02-01"));
553
+ assert_true("Day2OfRoshHodeshAdar1IsRoshHodeshInA383DayYear", $.isRoshHodesh("2041-02-02"));
554
+ assert_false("DayAfterRoshHodeshAdar1IsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2041-02-03"));
555
+
556
+ assert_false("ErevRoshHodeshAdar2IsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2041-03-02"));
557
+ assert_true("Day1OfRoshHodeshAdar2IsRoshHodeshInA383DayYear", $.isRoshChodesh("2041-03-03"));
558
+ assert_true("Day2OfRoshHodeshAdar2IsRoshHodeshInA383DayYear", $.isRoshHodesh("2041-03-04"));
559
+ assert_false("DayAfterRoshHodeshAdar2IsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2041-03-05"));
560
+
561
+ assert_false("ErevRoshHodeshNisanIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2041-04-01"));
562
+ assert_true("RoshHodeshNisanIsRoshHodeshInA383DayYear", $.isRoshChodesh("2041-04-02"));
563
+ assert_false("DayAfterRoshHodeshNisanIsNotRoshHodeshInA383DayYear", $.isRoshHodesh("2041-04-03"));
564
+
565
+ // 384 day year
566
+ assert_false("ErevRoshHodeshIyarIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-04-11"));
567
+ assert_true("Day1OfRoshHodeshIyarIsRoshHodeshInA384DayYear", $.isRoshChodesh("2021-04-12"));
568
+ assert_true("Day2OfRoshHodeshIyarIsRoshHodeshInA384DayYear", $.isRoshHodesh("2021-04-13"));
569
+ assert_false("DayAfterRoshHodeshIyarIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-04-14"));
570
+
571
+ assert_false("ErevRoshHodeshSivanIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-05-11"));
572
+ assert_true("RoshHodeshSivanIsRoshHodeshInA384DayYear", $.isRoshChodesh("2021-05-12"));
573
+ assert_false("DayAfterRoshHodeshSivanIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-05-13"));
574
+
575
+ assert_false("ErevRoshHodeshTammuzIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-06-09"));
576
+ assert_true("Day1OfRoshHodeshTammuzIsRoshHodeshInA384DayYear", $.isRoshChodesh("2021-06-10"));
577
+ assert_true("Day2OfRoshHodeshTammuzIsRoshHodeshInA384DayYear", $.isRoshHodesh("2021-06-11"));
578
+ assert_false("DayAfterRoshHodeshTammuzIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-06-12"));
579
+
580
+ assert_false("ErevRoshHodeshAbIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-07-09"));
581
+ assert_true("RoshHodeshAbIsRoshHodeshInA384DayYear", $.isRoshChodesh("2021-07-10"));
582
+ assert_false("DayAfterRoshHodeshAbIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-07-11"));
583
+
584
+ assert_false("ErevRoshHodeshElulIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-08-07"));
585
+ assert_true("Day1OfRoshHodeshElulIsRoshHodeshInA384DayYear", $.isRoshChodesh("2021-08-08"));
586
+ assert_true("Day2OfRoshHodeshElulIsRoshHodeshInA384DayYear", $.isRoshHodesh("2021-08-09"));
587
+ assert_false("DayAfterRoshHodeshElulIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-08-10"));
588
+
589
+ assert_false("ErevRoshHashanahIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-09-06"));
590
+ assert_false("Day1OfRoshHashanahIsNotRoshHodeshInA384DayYear", $.isRoshChodesh("2021-09-07"));
591
+ assert_false("Day2OfRoshHashanahIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-09-08"));
592
+
593
+ assert_false("ErevRoshHodeshHeshvanIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-10-05"));
594
+ assert_true("Day1OfRoshHodeshHeshvanIsRoshHodeshInA384DayYear", $.isRoshChodesh("2021-10-06"));
595
+ assert_true("Day2OfRoshHodeshHeshvanIsRoshHodeshInA384DayYear", $.isRoshHodesh("2021-10-07"));
596
+ assert_false("DayAfterRoshHodeshHeshvanIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-10-08"));
597
+
598
+ assert_false("ErevRoshHodeshKislevIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-11-04"));
599
+ assert_true("RoshHodeshKislevIsRoshHodeshInA384DayYear", $.isRoshChodesh("2021-11-05"));
600
+ assert_false("DayAfterRoshHodeshKislevIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-11-06"));
601
+
602
+ assert_false("ErevRoshHodeshTevetIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-12-03"));
603
+ assert_true("Day1OfRoshHodeshTevetIsRoshHodeshInA384DayYear", $.isRoshChodesh("2021-12-04"));
604
+ assert_true("Day2OfRoshHodeshTevetIsRoshHodeshInA384DayYear", $.isRoshChodesh("2021-12-05"));
605
+ assert_false("DayAfterRoshHodeshTevetIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2021-12-06"));
606
+
607
+ assert_false("ErevRoshHodeshShevatIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2022-01-02"));
608
+ assert_true("RoshHodeshShevatIsRoshHodeshInA384DayYear", $.isRoshChodesh("2022-01-03"));
609
+ assert_false("DayAfterRoshHodeshShevatIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2022-01-04"));
610
+
611
+ assert_false("ErevRoshHodeshAdar1IsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2022-01-31"));
612
+ assert_true("Day1OfRoshHodeshAdar1IsRoshHodeshInA384DayYear", $.isRoshChodesh("2022-02-01"));
613
+ assert_true("Day2OfRoshHodeshAdar1IsRoshHodeshInA384DayYear", $.isRoshHodesh("2022-02-02"));
614
+ assert_false("DayAfterRoshHodeshAdar1IsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2022-02-03"));
615
+
616
+ assert_false("ErevRoshHodeshAdar2IsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2022-03-02"));
617
+ assert_true("Day1OfRoshHodeshAdar2IsRoshHodeshInA384DayYear", $.isRoshChodesh("2022-03-03"));
618
+ assert_true("Day2OfRoshHodeshAdar2IsRoshHodeshInA384DayYear", $.isRoshHodesh("2022-03-04"));
619
+ assert_false("DayAfterRoshHodeshAdar2IsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2022-03-05"));
620
+
621
+ assert_false("ErevRoshHodeshNisanIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2022-04-01"));
622
+ assert_true("RoshHodeshNisanIsRoshHodeshInA384DayYear", $.isRoshChodesh("2022-04-02"));
623
+ assert_false("DayAfterRoshHodeshNisanIsNotRoshHodeshInA384DayYear", $.isRoshHodesh("2022-04-03"));
624
+
625
+ // 385 day year
626
+ assert_false("ErevRoshHodeshIyarIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-04-16"));
627
+ assert_true("Day1OfRoshHodeshIyarIsRoshHodeshInA385DayYear", $.isRoshChodesh("2026-04-17"));
628
+ assert_true("Day2OfRoshHodeshIyarIsRoshHodeshInA385DayYear", $.isRoshHodesh("2026-04-18"));
629
+ assert_false("DayAfterRoshHodeshIyarIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-04-19"));
630
+
631
+ assert_false("ErevRoshHodeshSivanIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-05-16"));
632
+ assert_true("RoshHodeshSivanIsRoshHodeshInA385DayYear", $.isRoshChodesh("2026-05-17"));
633
+ assert_false("DayAfterRoshHodeshSivanIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-05-18"));
634
+
635
+ assert_false("ErevRoshHodeshTammuzIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-06-14"));
636
+ assert_true("Day1OfRoshHodeshTammuzIsRoshHodeshInA385DayYear", $.isRoshChodesh("2026-06-15"));
637
+ assert_true("Day2OfRoshHodeshTammuzIsRoshHodeshInA385DayYear", $.isRoshHodesh("2026-06-16"));
638
+ assert_false("DayAfterRoshHodeshTammuzIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-06-17"));
639
+
640
+ assert_false("ErevRoshHodeshAbIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-07-14"));
641
+ assert_true("RoshHodeshAbIsRoshHodeshInA385DayYear", $.isRoshChodesh("2026-07-15"));
642
+ assert_false("DayAfterRoshHodeshAbIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-07-16"));
643
+
644
+ assert_false("ErevRoshHodeshElulIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-08-12"));
645
+ assert_true("Day1OfRoshHodeshElulIsRoshHodeshInA385DayYear", $.isRoshChodesh("2026-08-13"));
646
+ assert_true("Day2OfRoshHodeshElulIsRoshHodeshInA385DayYear", $.isRoshHodesh("2026-08-14"));
647
+ assert_false("DayAfterRoshHodeshElulIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-08-15"));
648
+
649
+ assert_false("ErevRoshHashanahIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-09-11"));
650
+ assert_false("Day1OfRoshHashanahIsNotRoshHodeshInA385DayYear", $.isRoshChodesh("2026-09-12"));
651
+ assert_false("Day2OfRoshHashanahIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-09-13"));
652
+
653
+ assert_false("ErevRoshHodeshHeshvanIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-10-10"));
654
+ assert_true("Day1OfRoshHodeshHeshvanIsRoshHodeshInA385DayYear", $.isRoshChodesh("2026-10-11"));
655
+ assert_true("Day2OfRoshHodeshHeshvanIsRoshHodeshInA385DayYear", $.isRoshHodesh("2026-10-12"));
656
+ assert_false("DayAfterRoshHodeshHeshvanIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-10-13"));
657
+
658
+ assert_false("ErevRoshHodeshKislevIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-11-09"));
659
+ assert_true("Day1OfRoshHodeshKislevIsRoshHodeshInA385DayYear", $.isRoshChodesh("2026-11-10"));
660
+ assert_true("Day2OfRoshHodeshKislevIsRoshHodeshInA385DayYear", $.isRoshChodesh("2026-11-11"));
661
+ assert_false("DayAfterRoshHodeshKislevIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-11-12"));
662
+
663
+ assert_false("ErevRoshHodeshTevetIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-12-09"));
664
+ assert_true("Day1OfRoshHodeshTevetIsRoshHodeshInA385DayYear", $.isRoshChodesh("2026-12-10"));
665
+ assert_true("Day2OfRoshHodeshTevetIsRoshHodeshInA385DayYear", $.isRoshChodesh("2026-12-11"));
666
+ assert_false("DayAfterRoshHodeshTevetIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2026-12-12"));
667
+
668
+ assert_false("ErevRoshHodeshShevatIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2027-01-08"));
669
+ assert_true("RoshHodeshShevatIsRoshHodeshInA385DayYear", $.isRoshChodesh("2027-01-09"));
670
+ assert_false("DayAfterRoshHodeshShevatIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2027-01-10"));
671
+
672
+ assert_false("ErevRoshHodeshAdar1IsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2027-02-06"));
673
+ assert_true("Day1OfRoshHodeshAdar1IsRoshHodeshInA385DayYear", $.isRoshChodesh("2027-02-07"));
674
+ assert_true("Day2OfRoshHodeshAdar1IsRoshHodeshInA385DayYear", $.isRoshHodesh("2027-02-08"));
675
+ assert_false("DayAfterRoshHodeshAdar1IsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2027-02-09"));
676
+
677
+ assert_false("ErevRoshHodeshAdar2IsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2027-03-08"));
678
+ assert_true("Day1OfRoshHodeshAdar2IsRoshHodeshInA385DayYear", $.isRoshChodesh("2027-03-09"));
679
+ assert_true("Day2OfRoshHodeshAdar2IsRoshHodeshInA385DayYear", $.isRoshHodesh("2027-03-10"));
680
+ assert_false("DayAfterRoshHodeshAdar2IsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2027-03-11"));
681
+
682
+ assert_false("ErevRoshHodeshNisanIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2027-04-07"));
683
+ assert_true("RoshHodeshNisanIsRoshHodeshInA385DayYear", $.isRoshChodesh("2027-04-08"));
684
+ assert_false("DayAfterRoshHodeshNisanIsNotRoshHodeshInA385DayYear", $.isRoshHodesh("2027-04-09"));
685
+
686
+ // Fast days
687
+ // 17 Tammuz
688
+ assert_false("Erev17TammuzIsNot17TammuzWhen17TammuzIsOnATuesday", $.is17Tammuz("2024-07-22"));
689
+ assert_true("17TammuzIs17TammuzWhen17TammuzIsOnATuesday", $.is17Tamuz("2024-07-23"));
690
+ assert_false("DayAfter17TammuzIsNot17TammuzWhen17TammuzIsOnATuesday", $.is17Tammuz("2024-07-24"));
691
+
692
+ assert_false("Erev17TammuzIsNot17TammuzWhen17TammuzIsOnAThursday", $.is17Tamuz("2023-07-05"));
693
+ assert_true("17TammuzIs17TammuzWhen17TammuzIsOnAThursday", $.is17Tammuz("2023-07-06"));
694
+ assert_false("DayAfter17TammuzIsNot17TammuzWhen17TammuzIsOnAThursday", $.is17Tamuz("2023-07-07"));
695
+
696
+ assert_false("Erev17TammuzIsNot17TammuzWhen17TammuzIsOnASunday", $.is17Tammuz("2021-06-26"));
697
+ assert_true("17TammuzIs17TammuzWhen17TammuzIsOnAToSunday", $.is17Tamuz("2021-06-27"));
698
+ assert_false("DayAfter17TammuzIsNot17TammuzWhen17TammuzIsOnAToSunday", $.is17Tammuz("2021-06-28"));
699
+
700
+ assert_false("FridayBefore17TammuzIsNot17TammuzWhen17TammuzIsPostponedToSunday", $.is17Tamuz("2022-07-15"));
701
+ assert_false("Erev17TammuzIsNot17TammuzWhen17TammuzIsPostponedToSunday", $.is17Tamuz("2022-07-16"));
702
+ assert_true("17TammuzIs17TammuzWhen17TammuzIsPostponedToSunday", $.is17Tammuz("2022-07-17"));
703
+ assert_false("DayAfter17TammuzIsNot17TammuzWhen17TammuzIsPostponedToSunday", $.is17Tamuz("2022-07-18"));
704
+
705
+ // 9 Av
706
+ assert_false("Erev9AbIsNot9AbWhen9AbIsOnATuesday", $.is9Ab("2024-08-12"));
707
+ assert_true("9AbIs9AbWhen9AbIsOnATuesday", $.is9Av("2024-08-13"));
708
+ assert_false("DayAfter9AbIsNot9AbWhen9AbIsOnATuesday", $.is9Ab("2024-08-14"));
709
+
710
+ assert_false("Erev9AbIsNot9AbWhen9AbIsOnAThursday", $.is9Av("2023-07-26"));
711
+ assert_true("9AbIs9AbWhen9AbIsOnAThursday", $.is9Ab("2023-07-27"));
712
+ assert_false("DayAfter9AbIsNot9AbWhen9AbIsOnAThursday", $.is9Av("2023-07-28"));
713
+
714
+ assert_false("Erev9AbIsNot9AbWhen9AbIsOnASunday", $.is9Ab("2021-07-17"));
715
+ assert_true("9AbIs9AbWhen9AbIsOnAToSunday", $.is9Av("2021-07-18"));
716
+ assert_false("DayAfter9AbIsNot9AbWhen9AbIsOnAToSunday", $.is9Ab("2021-07-19"));
717
+
718
+ assert_false("FridayBefore9AbIsNot9AbWhen9AbIsPostponedToSunday", $.is9Av("2022-08-05"));
719
+ assert_false("Erev9AbIsNot9AbWhen9AbIsPostponedToSunday", $.is9Av("2022-08-06"));
720
+ assert_true("9AbIs9AbWhen9AbIsPostponedToSunday", $.is9Ab("2022-08-07"));
721
+ assert_false("DayAfter9AbIsNot9AbWhen9AbIsPostponedToSunday", $.is9Av("2022-08-08"));
722
+
723
+ // Tzom Gedalia
724
+ assert_false("ErevTzomGedaliaIsNotTzomGedaliaWhenTzomGedaliaIsOnAMonday", $.isTzomGedalia("2023-09-17"));
725
+ assert_true("TzomGedaliaIsTzomGedaliaWhenTzomGedaliaIsOnAMonday", $.isFastOfGedalia("2023-09-18"));
726
+ assert_false("DayAfterTzomGedaliaIsNotTzomGedaliaWhenTzomGedaliaIsOnAMonday", $.isTzomGedaliah("2023-09-19"));
727
+
728
+ assert_false("ErevTzomGedaliaIsNotTzomGedaliaWhenTzomGedaliaIsOnAWednesday", $.isFastOfGedaliah("2022-09-27"));
729
+ assert_true("TzomGedaliaIsTzomGedaliaWhenTzomGedaliaIsOnAWednesday", $.isTzomGedalia("2022-09-28"));
730
+ assert_false("DayAfterTzomGedaliaIsNotTzomGedaliaWhenTzomGedaliaIsOnAWednesday", $.isFastOfGedalia("2022-09-29"));
731
+
732
+ assert_false("ErevTzomGedaliaIsNotTzomGedaliaWhenTzomGedaliaIsOnAThursday", $.isTzomGedaliah("2021-09-08"));
733
+ assert_true("TzomGedaliaIsTzomGedaliaWhenTzomGedaliaIsOnAToThursday", $.isFastOfGedaliah("2021-09-09"));
734
+ assert_false("DayAfterTzomGedaliaIsNotTzomGedaliaWhenTzomGedaliaIsOnAToThursday", $.isTzomGedalia("2021-09-10"));
735
+
736
+ assert_false("FridayBeforeTzomGedaliaIsNotTzomGedaliaWhenTzomGedaliaIsPostponedToSunday", $.isFastOfGedalia("2017-09-22"));
737
+ assert_false("ErevTzomGedaliaIsNotTzomGedaliaWhenTzomGedaliaIsPostponedToSunday", $.isFastOfGedalia("2017-09-23"));
738
+ assert_true("TzomGedaliaIsTzomGedaliaWhenTzomGedaliaIsPostponedToSunday", $.isTzomGedaliah("2017-09-24"));
739
+ assert_false("DayAfterTzomGedaliaIsNotTzomGedaliaWhenTzomGedaliaIsPostponedToSunday", $.isFastOfGedaliah("2017-09-25"));
740
+
741
+ // Taanit Ester
742
+ assert_false("ErevTaanitEsterIsNotTaanitEsterWhenTaanitEsterIsOnAMonday", $.isTaanitEster("2020-03-08"));
743
+ assert_true("TaanitEsterIsTaanitEsterWhenTaanitEsterIsOnAMonday", $.isTaanitEsther("2020-03-09"));
744
+ assert_false("DayAfterTaanitEsterIsNotTaanitEsterWhenTaanitEsterIsOnAMonday", $.isTaanitEster("2020-03-10"));
745
+
746
+ assert_false("ErevTaanitEsterIsNotTaanitEsterWhenTaanitEsterIsOnAWednesday", $.isTaanitEsther("2022-03-15"));
747
+ assert_true("TaanitEsterIsTaanitEsterWhenTaanitEsterIsOnAWednesday", $.isTaanitEster("2022-03-16"));
748
+ assert_false("DayAfterTaanitEsterIsNotTaanitEsterWhenTaanitEsterIsOnAWednesday", $.isTaanitEsther("2022-03-17"));
749
+
750
+ assert_false("ErevTaanitEsterIsNotTaanitEsterWhenPurimIsOnFriday", $.isTaanitEster("2021-02-24"));
751
+ assert_true("TaanitEsterIsTaanitEsterWhenPurimIsOnFriday", $.isTaanitEsther("2021-02-25"));
752
+ assert_false("DayAfterTaanitEsterIsNotTaanitEsterWhenPurimIsOnFriday", $.isTaanitEster("2021-02-26"));
753
+
754
+ assert_false("ErevTaanitEsterIsNotTaanitEsterWhenPurimIsOnSunday", $.isTaanitEsther("2024-03-20"));
755
+ assert_true("TaanitEsterIsTaanitEsterWhenPurimIsOnSunday", $.isTaanitEster("2024-03-21"));
756
+ assert_false("DayAfterTaanitEsterIsNotTaanitEsterWhenPurimIsOnSunday", $.isTaanitEsther("2024-03-22"));
757
+ assert_false("ShabbatBeforePurimIsNotTaanitEsterWhenPurimIsOnSunday", $.isTaanitEsther("2024-03-23"));
758
+ assert_false("PurimIsNotTaanitEsterWhenPurimIsOnSunday", $.isTaanitEsther("2024-03-24"));
759
+
760
+ // 10 Tevet
761
+ assert_false("Erev10TevetIsNot10TevetInA353DayYear", $.is10Tevet("2044-01-09"));
762
+ assert_true("10TevetIs10TevetInA353DayYear", $.is10Tevet("2044-01-10"));
763
+ assert_false("DayAfter10TevetIsNot10TevetInA353DayYear", $.is10Tevet("2044-01-11"));
764
+
765
+ assert_false("Erev10TevetIsNot10TevetInA354DayYear", $.is10Tevet("2014-12-31"));
766
+ assert_true("10TevetIs10TevetInA354DayYear", $.is10Tevet("2015-01-01"));
767
+ assert_false("DayAfter10TevetIsNot10TevetInA354DayYear", $.is10Tevet("2015-01-02"));
768
+
769
+ assert_false("Erev10TevetIsNot10TevetInA355DayYear", $.is10Tevet("2020-01-06"));
770
+ assert_true("10TevetIs10TevetInA355DayYear", $.is10Tevet("2020-01-07"));
771
+ assert_false("DayAfter10TevetIsNot10TevetInA355DayYear", $.is10Tevet("2020-01-08"));
772
+
773
+ assert_false("Erev10TevetIsNot10TevetInA383DayYear", $.is10Tevet("2023-12-21"));
774
+ assert_true("10TevetIs10TevetInA383DayYear", $.is10Tevet("2023-12-22"));
775
+ assert_false("DayAfter10TevetIsNot10TevetInA383DayYear", $.is10Tevet("2023-12-23"));
776
+
777
+ assert_false("Erev10TevetIsNot10TevetInA384DayYear", $.is10Tevet("2021-12-13"));
778
+ assert_true("10TevetIs10TevetInA384DayYear", $.is10Tevet("2021-12-14"));
779
+ assert_false("DayAfter10TevetIsNot10TevetInA384DayYear", $.is10Tevet("2021-12-15"));
780
+
781
+ assert_false("Erev10TevetIsNot10TevetInA385DayYear", $.is10Tevet("2015-12-21"));
782
+ assert_true("10TevetIs10TevetInA385DayYear", $.is10Tevet("2015-12-22"));
783
+ assert_false("DayAfter10TevetIsNot10TevetInA385DayYear", $.is10Tevet("2015-12-23"));
784
+
785
+ // IsTaanit()
786
+ assert_false("Erev17TammuzIsNotATaanitWhen17TammuzIsOnATuesday", $.isTaanit("2024-07-22"));
787
+ assert_true("17TammuzIsATaanitWhen17TammuzIsOnATuesday", $.isTaanit("2024-07-23"));
788
+ assert_false("DayAfter17TammuzIsNotATaanitWhen17TammuzIsOnATuesday", $.isTaanit("2024-07-24"));
789
+ assert_false("Erev17TammuzIsNotATaanitWhen17TammuzIsOnAThursday", $.isTaanit("2023-07-05"));
790
+ assert_true("17TammuzIsATaanitWhen17TammuzIsOnAThursday", $.isTaanit("2023-07-06"));
791
+ assert_false("DayAfter17TammuzIsNotATaanitWhen17TammuzIsOnAThursday", $.isTaanit("2023-07-07"));
792
+ assert_false("Erev17TammuzIsNotATaanitWhen17TammuzIsOnASunday", $.isTaanit("2021-06-26"));
793
+ assert_true("17TammuzIsNotATaanitWhen17TammuzIsOnAToSunday", $.isTaanit("2021-06-27"));
794
+ assert_false("DayAfter17TammuzIsNotATaanitWhen17TammuzIsOnAToSunday", $.isTaanit("2021-06-28"));
795
+ assert_false("FridayBefore17TammuzIsNotATaanitWhen17TammuzIsPostponedToSunday", $.isTaanit("2022-07-15"));
796
+ assert_false("Erev17TammuzIsNotATaanitWhen17TammuzIsPostponedToSunday", $.isTaanit("2022-07-16"));
797
+ assert_true("17TammuzIsATaanitWhen17TammuzIsPostponedToSunday", $.isTaanit("2022-07-17"));
798
+ assert_false("DayAfter17TammuzIsNotATaanitWhen17TammuzIsPostponedToSunday", $.isTaanit("2022-07-18"));
799
+
800
+ assert_false("Erev9AbIsNotATaanitWhen9AbIsOnATuesday", $.isTaanit("2024-08-12"));
801
+ assert_true("9AbIsATaanitWhen9AbIsOnATuesday", $.isTaanit("2024-08-13"));
802
+ assert_false("DayAfter9AbIsNotATaanitWhen9AbIsOnATuesday", $.isTaanit("2024-08-14"));
803
+ assert_false("Erev9AbIsNotATaanitWhen9AbIsOnAThursday", $.isTaanit("2023-07-26"));
804
+ assert_true("9AbIsATaanitWhen9AbIsOnAThursday", $.isTaanit("2023-07-27"));
805
+ assert_false("DayAfter9AbIsNotATaanitWhen9AbIsOnAThursday", $.isTaanit("2023-07-28"));
806
+ assert_false("Erev9AbIsNotATaanitWhen9AbIsOnASunday", $.isTaanit("2021-07-17"));
807
+ assert_true("9AbIsATaanitWhen9AbIsOnAToSunday", $.isTaanit("2021-07-18"));
808
+ assert_false("DayAfter9AbIsNotATaanitWhen9AbIsOnAToSunday", $.isTaanit("2021-07-19"));
809
+ assert_false("FridayBefore9AbIsNotATaanitWhen9AbIsPostponedToSunday", $.isTaanit("2022-08-05"));
810
+ assert_false("Erev9AbIsNotATaanitWhen9AbIsPostponedToSunday", $.isTaanit("2022-08-06"));
811
+ assert_true("9AbIsATaanitWhen9AbIsPostponedToSunday", $.isTaanit("2022-08-07"));
812
+ assert_false("DayAfter9AbIsNotATaanitWhen9AbIsPostponedToSunday", $.isTaanit("2022-08-08"));
813
+
814
+ assert_false("ErevTzomGedaliaIsNotATaanitWhenTzomGedaliaIsOnAMonday", $.isTaanit("2023-09-17"));
815
+ assert_true("TzomGedaliaIsATaanitWhenTzomGedaliaIsOnAMonday", $.isTaanit("2023-09-18"));
816
+ assert_false("DayAfterTzomGedaliaIsNotATaanitWhenTzomGedaliaIsOnAMonday", $.isTaanit("2023-09-19"));
817
+ assert_false("ErevTzomGedaliaIsNotATaanitWhenTzomGedaliaIsOnAWednesday", $.isTaanit("2022-09-27"));
818
+ assert_true("TzomGedaliaIsATaanitWhenTzomGedaliaIsOnAWednesday", $.isTaanit("2022-09-28"));
819
+ assert_false("DayAfterTzomGedaliaIsNotATaanitWhenTzomGedaliaIsOnAWednesday", $.isTaanit("2022-09-29"));
820
+ assert_false("ErevTzomGedaliaIsNotATaanitWhenTzomGedaliaIsOnAThursday", $.isTaanit("2021-09-08"));
821
+ assert_true("TzomGedaliaIsATaanitWhenTzomGedaliaIsOnAToThursday", $.isTaanit("2021-09-09"));
822
+ assert_false("DayAfterTzomGedaliaIsNotATaanitWhenTzomGedaliaIsOnAToThursday", $.isTaanit("2021-09-10"));
823
+ assert_false("FridayBeforeTzomGedaliaIsNotATaanitWhenTzomGedaliaIsPostponedToSunday", $.isTaanit("2017-09-22"));
824
+ assert_false("ErevTzomGedaliaIsNotATaanitWhenTzomGedaliaIsPostponedToSunday", $.isTaanit("2017-09-23"));
825
+ assert_true("TzomGedaliaIsATaanitWhenTzomGedaliaIsPostponedToSunday", $.isTaanit("2017-09-24"));
826
+ assert_false("DayAfterTzomGedaliaIsNotATaanitWhenTzomGedaliaIsPostponedToSunday", $.isTaanit("2017-09-25"));
827
+
828
+ assert_false("ErevTaanitEsterIsNotATaanitWhenTaanitEsterIsOnAMonday", $.isTaanit("2020-03-08"));
829
+ assert_true("TaanitEsterIsATaanitWhenTaanitEsterIsOnAMonday", $.isTaanit("2020-03-09"));
830
+ assert_false("DayAfterTzomGedaliaIsNotATaanitWhenTaanitEsterIsOnAMonday", $.isTaanit("2020-03-10"));
831
+ assert_false("ErevTaanitEsterIsNotATaanitWhenTaanitEsterIsOnAWednesday", $.isTaanit("2022-03-15"));
832
+ assert_true("TaanitEsterIsATaanitWhenTaanitEsterIsOnAWednesday", $.isTaanit("2022-03-16"));
833
+ assert_false("DayAfterTaanitEsterIsNotATaanitWhenTaanitEsterIsOnAWednesday", $.isTaanit("2022-03-17"));
834
+ assert_false("ErevTaanitEsterIsNotATaanitWhenPurimIsOnFriday", $.isTaanit("2021-02-24"));
835
+ assert_true("TaanitEsterIsATaanitWhenPurimIsOnFriday", $.isTaanit("2021-02-25"));
836
+ assert_false("DayAfterTaanitEsterIsNotATaanitWhenPurimIsOnFriday", $.isTaanit("2021-02-26"));
837
+ assert_false("ErevTaanitEsterIsNotATaanitWhenPurimIsOnSunday", $.isTaanit("2024-03-20"));
838
+ assert_true("TaanitEsterIsATaanitWhenPurimIsOnSunday", $.isTaanit("2024-03-21"));
839
+ assert_false("DayAfterTaanitEsterIsNotATaanitWhenPurimIsOnSunday", $.isTaanit("2024-03-22"));
840
+ assert_false("ShabbatBeforePurimIsNotATaanitWhenPurimIsOnSunday", $.isTaanit("2024-03-23"));
841
+ assert_false("PurimIsNotATaanitWhenPurimIsOnSunday", $.isTaanit("2024-03-24"));
842
+
843
+ assert_false("Erev10TevetIsNotATaanitInA353DayYear", $.isTaanit("2044-01-09"));
844
+ assert_true("10TevetIsATaanitInA353DayYear", $.isTaanit("2044-01-10"));
845
+ assert_false("DayAfter10TevetIsNotATaanitInA353DayYear", $.isTaanit("2044-01-11"));
846
+ assert_false("Erev10TevetIsNotATaanitInA354DayYear", $.isTaanit("2014-12-31"));
847
+ assert_true("10TevetIsATaanitInA354DayYear", $.isTaanit("2015-01-01"));
848
+ assert_false("DayAfter10TevetIsNotATaanitInA354DayYear", $.isTaanit("2015-01-02"));
849
+ assert_false("Erev10TevetIsNotATaanitInA355DayYear", $.isTaanit("2020-01-06"));
850
+ assert_true("10TevetIsATaanitInA355DayYear", $.isTaanit("2020-01-07"));
851
+ assert_false("DayAfter10TevetIsNotATaanitInA355DayYear", $.isTaanit("2020-01-08"));
852
+ assert_false("Erev10TevetIsNotATaanitInA383DayYear", $.isTaanit("2023-12-21"));
853
+ assert_true("10TevetIsATaanitInA383DayYear", $.isTaanit("2023-12-22"));
854
+ assert_false("DayAfter10TevetIsNotATaanitInA383DayYear", $.isTaanit("2023-12-23"));
855
+ assert_false("Erev10TevetIsNotATaanitInA384DayYear", $.isTaanit("2021-12-13"));
856
+ assert_true("10TevetIsATaanitInA384DayYear", $.isTaanit("2021-12-14"));
857
+ assert_false("DayAfter10TevetIsNotATaanitInA384DayYear", $.isTaanit("2021-12-15"));
858
+ assert_false("Erev10TevetIsNotATaanitInA385DayYear", $.isTaanit("2015-12-21"));
859
+ assert_true("10TevetIsATaanitInA385DayYear", $.isTaanit("2015-12-22"));
860
+ assert_false("DayAfter10TevetIsNotATaanitInA385DayYear", $.isTaanit("2015-12-23"));
861
+
862
+ } catch (e) {
863
+ output += "<div style=\"color:red;\">An exception was thrown in a test. Testing ended there.<br />" + e + "</div>";
864
+ } finally {
865
+ output += "<div style=\"color:black;\">" + tests + " tests executed</div>";
866
+ output += "<div style=\"color:green;\">" + passing + " passed</div>";
867
+ output += "<div style=\"color:red;\">" + failing + " failed</div>";
868
+ document.getElementById('test_results').innerHTML = output;
869
+ }
870
+
871
+ }
872
+
873
+
874
+