holidays 5.6.0 → 5.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +1 -1
  4. data/holidays.gemspec +2 -1
  5. data/lib/generated_definitions/MANIFEST +8 -0
  6. data/lib/generated_definitions/REGIONS.rb +2 -2
  7. data/lib/generated_definitions/au.rb +2 -2
  8. data/lib/generated_definitions/de.rb +4 -4
  9. data/lib/generated_definitions/ee.rb +36 -0
  10. data/lib/generated_definitions/europe.rb +8 -4
  11. data/lib/generated_definitions/fr.rb +5 -3
  12. data/lib/generated_definitions/ge.rb +41 -0
  13. data/lib/generated_definitions/mt_en.rb +38 -0
  14. data/lib/generated_definitions/mt_mt.rb +38 -0
  15. data/lib/generated_definitions/north_america.rb +106 -9
  16. data/lib/generated_definitions/nz.rb +0 -1
  17. data/lib/generated_definitions/pt.rb +4 -2
  18. data/lib/generated_definitions/rs_cyrl.rb +39 -0
  19. data/lib/generated_definitions/rs_la.rb +39 -0
  20. data/lib/generated_definitions/ru.rb +37 -0
  21. data/lib/generated_definitions/tr.rb +61 -0
  22. data/lib/generated_definitions/us.rb +112 -15
  23. data/lib/holidays/version.rb +1 -1
  24. data/test/coverage_report.rb +4 -2
  25. data/test/defs/test_defs_au.rb +2 -2
  26. data/test/defs/test_defs_de.rb +39 -37
  27. data/test/defs/test_defs_ee.rb +33 -0
  28. data/test/defs/test_defs_europe.rb +84 -68
  29. data/test/defs/test_defs_fr.rb +21 -13
  30. data/test/defs/test_defs_ge.rb +41 -0
  31. data/test/defs/test_defs_mt_en.rb +32 -0
  32. data/test/defs/test_defs_mt_mt.rb +32 -0
  33. data/test/defs/test_defs_north_america.rb +244 -16
  34. data/test/defs/test_defs_pt.rb +24 -18
  35. data/test/defs/test_defs_rs_cyrl.rb +39 -0
  36. data/test/defs/test_defs_rs_la.rb +39 -0
  37. data/test/defs/test_defs_ru.rb +28 -0
  38. data/test/defs/test_defs_tr.rb +44 -0
  39. data/test/defs/test_defs_us.rb +245 -17
  40. data/test/integration/test_available_regions.rb +1 -1
  41. data/test/integration/test_holidays.rb +2 -2
  42. metadata +65 -26
@@ -7,26 +7,32 @@ require File.expand_path(File.dirname(__FILE__)) + '/../test_helper'
7
7
  class PtDefinitionTests < Test::Unit::TestCase # :nodoc:
8
8
 
9
9
  def test_pt
10
- {Date.civil(2008,1,1) => 'Ano Novo',
11
- Date.civil(2005,2,8) => 'Carnaval',
12
- Date.civil(2006,2,28) => 'Carnaval',
13
- Date.civil(2007,2,20) => 'Carnaval',
14
- Date.civil(2008,2,5) => 'Carnaval',
15
- Date.civil(2008,3,21) => 'Sexta-feira Santa',
16
- Date.civil(2008,3,23) => 'Páscoa',
17
- Date.civil(2016,3,27) => 'Páscoa',
18
- Date.civil(2008,4,25) => 'Dia da Liberdade',
19
- Date.civil(2008,5,1) => 'Dia do Trabalhador',
20
- Date.civil(2016,5,26) => 'Corpo de Deus',
21
- Date.civil(2008,6,10) => 'Dia de Portugal',
22
- Date.civil(2008,8,15) => 'Assunção de Nossa Senhora',
23
- Date.civil(2008,10,5) => 'Dia da República',
24
- Date.civil(2008,11,1) => 'Dia de Todos-os-Santos',
25
- Date.civil(2008,12,1) => 'Restauração da Independência',
26
- Date.civil(2008,12,8) => 'Imaculada Conceição',
27
- Date.civil(2008,12,25) => 'Natal'}.each do |date, name|
10
+ { Date.civil(2008, 1, 1) => 'Ano Novo',
11
+ Date.civil(2005, 2, 8) => 'Carnaval',
12
+ Date.civil(2006, 2, 28) => 'Carnaval',
13
+ Date.civil(2007, 2, 20) => 'Carnaval',
14
+ Date.civil(2008, 2, 5) => 'Carnaval',
15
+ Date.civil(2008, 3, 21) => 'Sexta-feira Santa',
16
+ Date.civil(2008, 3, 23) => 'Páscoa',
17
+ Date.civil(2016, 3, 27) => 'Páscoa',
18
+ Date.civil(2008, 4, 25) => 'Dia da Liberdade',
19
+ Date.civil(2008, 5, 1) => 'Dia do Trabalhador',
20
+ Date.civil(2016, 5, 26) => 'Corpo de Deus',
21
+ Date.civil(2008, 6, 10) => 'Dia de Portugal',
22
+ Date.civil(2008, 8, 15) => 'Assunção de Nossa Senhora',
23
+ Date.civil(2008, 10, 5) => 'Dia da República',
24
+ Date.civil(2008, 11, 1) => 'Dia de Todos-os-Santos',
25
+ Date.civil(2008, 12, 1) => 'Restauração da Independência',
26
+ Date.civil(2008, 12, 8) => 'Imaculada Conceição',
27
+ Date.civil(2008, 12, 25) => 'Natal' }.each do |date, name|
28
28
  assert_equal name, (Holidays.on(date, :pt, :informal)[0] || {})[:name]
29
29
  end
30
30
 
31
+ assert_nil Holidays.on(Date.civil(2017, 6, 13), [:pt])[0] || {}[:name]
32
+ assert_equal 'Dia de Santo António', Holidays.on(Date.civil(2017, 6, 13), [:pt_li])[0][:name]
33
+
34
+ assert_nil Holidays.on(Date.civil(2017, 6, 24), [:pt])[0] || {}[:name]
35
+ assert_equal 'Dia de São João', Holidays.on(Date.civil(2017, 6, 24), [:pt_po])[0][:name]
36
+
31
37
  end
32
38
  end
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.dirname(__FILE__)) + '/../test_helper'
3
+
4
+ # This file is generated by the Ruby Holiday gem.
5
+ #
6
+ # Definitions loaded: definitions/rs_cyrl.yaml
7
+ class Rs_cyrlDefinitionTests < Test::Unit::TestCase # :nodoc:
8
+
9
+ def test_rs_cyrl
10
+ { Date.civil(2017, 1, 1) => 'Нова Година',
11
+ Date.civil(2017, 1, 2) => 'Нова Година',
12
+ Date.civil(2017, 1, 7) => 'Божић',
13
+ Date.civil(2017, 1, 27) => 'Свети Сава (Савиндан)',
14
+ Date.civil(2017, 2, 15) => 'Дан државности Србије',
15
+ Date.civil(2017, 2, 16) => 'Дан државности Србије',
16
+ Date.civil(2017, 5, 1) => 'Празник рада',
17
+ Date.civil(2017, 5, 2) => 'Празник рада',
18
+ Date.civil(2017, 5, 9) => 'Дан победе над фашизмом',
19
+ Date.civil(2017, 6, 28) => 'Видовдан',
20
+ Date.civil(2017, 11, 11) => 'Дан примирја'
21
+ }.each do |date, name|
22
+ assert_equal name, (Holidays.on(date, :rs_cyrl)[0] || {})[:name]
23
+ end
24
+
25
+ [Date.civil(2017, 4, 14), Date.civil(2018, 4, 6), Date.civil(2019, 4, 26)].each do |date|
26
+ assert_equal 'Велики петак', Holidays.on(date, :rs_cyrl)[0][:name]
27
+ end
28
+ [Date.civil(2017, 4, 15), Date.civil(2018, 4, 7), Date.civil(2019, 4, 27)].each do |date|
29
+ assert_equal 'Велика Субота', Holidays.on(date, :rs_cyrl)[0][:name]
30
+ end
31
+ [Date.civil(2017, 4, 16), Date.civil(2018, 4, 8), Date.civil(2019, 4, 28)].each do |date|
32
+ assert_equal 'Васкрс', Holidays.on(date, :rs_cyrl)[0][:name]
33
+ end
34
+ [Date.civil(2017, 4, 17), Date.civil(2018, 4, 9), Date.civil(2019, 4, 29)].each do |date|
35
+ assert_equal 'Васкрсни понедељак', Holidays.on(date, :rs_cyrl)[0][:name]
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.dirname(__FILE__)) + '/../test_helper'
3
+
4
+ # This file is generated by the Ruby Holiday gem.
5
+ #
6
+ # Definitions loaded: definitions/rs_la.yaml
7
+ class Rs_laDefinitionTests < Test::Unit::TestCase # :nodoc:
8
+
9
+ def test_rs_la
10
+ { Date.civil(2017, 1, 1) => 'Nova Godina',
11
+ Date.civil(2017, 1, 2) => 'Nova Godina',
12
+ Date.civil(2017, 1, 7) => 'Božić',
13
+ Date.civil(2017, 1, 27) => 'Dan Svetog Save',
14
+ Date.civil(2017, 2, 15) => 'Dan državnosti Srbije',
15
+ Date.civil(2017, 2, 16) => 'Dan državnosti Srbije',
16
+ Date.civil(2017, 5, 1) => 'Praznik rada',
17
+ Date.civil(2017, 5, 2) => 'Praznik rada',
18
+ Date.civil(2017, 5, 9) => 'Dan pobede',
19
+ Date.civil(2017, 6, 28) => 'Vidovdan',
20
+ Date.civil(2017, 11, 11) => 'Dan primirja'
21
+ }.each do |date, name|
22
+ assert_equal name, (Holidays.on(date, :rs_la)[0] || {})[:name]
23
+ end
24
+
25
+ [Date.civil(2017, 4, 14), Date.civil(2018, 4, 6), Date.civil(2019, 4, 26)].each do |date|
26
+ assert_equal 'Veliki Petak', Holidays.on(date, :rs_la)[0][:name]
27
+ end
28
+ [Date.civil(2017, 4, 15), Date.civil(2018, 4, 7), Date.civil(2019, 4, 27)].each do |date|
29
+ assert_equal 'Velika Subota', Holidays.on(date, :rs_la)[0][:name]
30
+ end
31
+ [Date.civil(2017, 4, 16), Date.civil(2018, 4, 8), Date.civil(2019, 4, 28)].each do |date|
32
+ assert_equal 'Uskrs', Holidays.on(date, :rs_la)[0][:name]
33
+ end
34
+ [Date.civil(2017, 4, 17), Date.civil(2018, 4, 9), Date.civil(2019, 4, 29)].each do |date|
35
+ assert_equal 'Vaskrsni ponedeljak', Holidays.on(date, :rs_la)[0][:name]
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.dirname(__FILE__)) + '/../test_helper'
3
+
4
+ # This file is generated by the Ruby Holiday gem.
5
+ #
6
+ # Definitions loaded: definitions/ru.yaml
7
+ class RuDefinitionTests < Test::Unit::TestCase # :nodoc:
8
+
9
+ def test_ru
10
+ { Date.civil(2017, 1, 1) => 'Новый год',
11
+ Date.civil(2017, 1, 2) => 'Новогодний праздник',
12
+ Date.civil(2017, 1, 3) => 'Новогодний праздник',
13
+ Date.civil(2017, 1, 4) => 'Новогодний праздник',
14
+ Date.civil(2017, 1, 5) => 'Новогодний праздник',
15
+ Date.civil(2017, 1, 7) => 'Рождество Христово',
16
+ Date.civil(2017, 2, 23) => 'День защитника Отечества',
17
+ Date.civil(2017, 3, 8) => 'Международный женский день',
18
+ Date.civil(2017, 5, 1) => 'Праздник Весны и Труда',
19
+ Date.civil(2017, 5, 9) => 'День Победы',
20
+ Date.civil(2017, 6, 12) => 'День России',
21
+ Date.civil(2017, 8, 22) => 'День Государственного флага Российской Федерации',
22
+ Date.civil(2017, 11, 4) => 'День народного единства'
23
+ }.each do |date, name|
24
+ assert_equal name, (Holidays.on(date, :ru)[0] || {})[:name]
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.dirname(__FILE__)) + '/../test_helper'
3
+
4
+ # This file is generated by the Ruby Holiday gem.
5
+ #
6
+ # Definitions loaded: definitions/tr.yaml
7
+ class TrDefinitionTests < Test::Unit::TestCase # :nodoc:
8
+
9
+ def test_tr
10
+ { Date.civil(2017, 1, 1) => 'Yılbaşı',
11
+ Date.civil(2017, 4, 23) => 'Ulusal Egemenlik ve Çocuk Bayramı',
12
+ Date.civil(2017, 5, 1) => 'Emek ve Dayanışma Günü',
13
+ Date.civil(2017, 5, 19) => "Atatürk'ü Anma Gençlik ve Spor Bayramı",
14
+ Date.civil(2017, 8, 30) => 'Zafer Bayramı',
15
+ Date.civil(2017, 10, 29) => 'Cumhuriyet Bayramı'
16
+ }.each do |date, name|
17
+ assert_equal name, (Holidays.on(date, :tr)[0] || {})[:name]
18
+ end
19
+
20
+ [Date.civil(2017, 6, 25), Date.civil(2018, 6, 15), Date.civil(2019, 6, 4)].each do |date|
21
+ assert_equal 'Ramazan Bayramı', Holidays.on(date, :tr)[0][:name]
22
+ end
23
+ [Date.civil(2017, 6, 26), Date.civil(2018, 6, 16), Date.civil(2019, 6, 5)].each do |date|
24
+ assert_equal 'Ramazan Bayramı (ikinci tatil)', Holidays.on(date, :tr)[0][:name]
25
+ end
26
+ [Date.civil(2017, 6, 27), Date.civil(2018, 6, 17), Date.civil(2019, 6, 6)].each do |date|
27
+ assert_equal 'Ramazan Bayramı (üçüncü tatil)', Holidays.on(date, :tr)[0][:name]
28
+ end
29
+
30
+ [Date.civil(2017, 9, 1), Date.civil(2018, 8, 21), Date.civil(2019, 8, 11)].each do |date|
31
+ assert_equal 'Kurban Bayramı', Holidays.on(date, :tr)[0][:name]
32
+ end
33
+ [Date.civil(2017, 9, 2), Date.civil(2018, 8, 22), Date.civil(2019, 8, 12)].each do |date|
34
+ assert_equal 'Kurban Bayramı (ikinci tatil)', Holidays.on(date, :tr)[0][:name]
35
+ end
36
+ [Date.civil(2017, 9, 3), Date.civil(2018, 8, 23), Date.civil(2019, 8, 13)].each do |date|
37
+ assert_equal 'Kurban Bayramı (üçüncü tatil)', Holidays.on(date, :tr)[0][:name]
38
+ end
39
+ [Date.civil(2017, 9, 4), Date.civil(2018, 8, 24), Date.civil(2019, 8, 14)].each do |date|
40
+ assert_equal 'Kurban Bayramı (dördüncü tatil)', Holidays.on(date, :tr)[0][:name]
41
+ end
42
+
43
+ end
44
+ end
@@ -7,24 +7,252 @@ require File.expand_path(File.dirname(__FILE__)) + '/../test_helper'
7
7
  class UsDefinitionTests < Test::Unit::TestCase # :nodoc:
8
8
 
9
9
  def test_us
10
- {Date.civil(2008,1,1) => 'New Year\'s Day',
11
- Date.civil(2008,1,21) => 'Martin Luther King, Jr. Day',
12
- Date.civil(2008,2,18) => 'Presidents\' Day',
13
- Date.civil(2008,5,26) => 'Memorial Day',
14
- Date.civil(2008,7,4) => 'Independence Day',
15
- Date.civil(2008,9,1) => 'Labor Day',
16
- Date.civil(2008,10,13) => 'Columbus Day',
17
- Date.civil(2008,11,11) => 'Veterans Day',
18
- Date.civil(2008,11,27) => 'Thanksgiving',
19
- Date.civil(2013,11,28) => 'Thanksgiving',
20
- Date.civil(2008,12,25) => 'Christmas Day'}.each do |date, name|
21
- assert_equal name, (Holidays.on(date, :us)[0] || {})[:name]
22
- end
23
- {Date.civil(2008, 3, 31) => 'Cesar Chavez Day',
24
- Date.civil(2008, 11, 28) => 'Day after Thanksgiving',
25
- Date.civil(2013, 11, 29) => 'Day after Thanksgiving'}.each do |date, name|
26
- assert_equal name, (Holidays.on(date, :us, :us_ca)[0] || {})[:name]
10
+ [Date.civil(2017, 2, 28), Date.civil(2018, 2, 13), Date.civil(2019, 3, 5)].each do |date|
11
+ assert_equal [], Holidays.on(date, [:us])
12
+ assert_equal 'Shrove Tuesday', Holidays.on(date, [:us_fl])[0][:name]
13
+ assert_equal 'Mardi Gras Day', Holidays.on(date, [:us_la])[0][:name]
27
14
  end
15
+ states_good_friday = %i{us_ct us_de us_gu us_hi us_in us_ky us_la us_nj us_nc us_nd us_pr us_tn}
16
+ [Date.civil(2017, 4, 14), Date.civil(2018, 3, 30), Date.civil(2019, 4, 19)].each do |date|
17
+ assert_equal [], Holidays.on(date, [:us])
18
+ assert_equal 'Good Friday', Holidays.on(date, :us, :informal)[0][:name]
19
+ assert_equal 'Good Friday', Holidays.on(date, states_good_friday)[0][:name]
20
+ end
21
+ [Date.civil(2017, 4, 16), Date.civil(2018, 4, 1), Date.civil(2019, 4, 21)].each do |date|
22
+ assert_equal [], Holidays.on(date, [:us])
23
+ assert_equal 'Easter Sunday', Holidays.on(date, :us, :informal)[0][:name]
24
+ end
25
+
26
+ assert_equal "New Year's Day", Holidays.on(Date.civil(2017, 1, 1), [:us])[0][:name]
27
+ assert_equal "New Year's Day", Holidays.on(Date.civil(2017, 1, 2), :observed, [:us])[0][:name]
28
+
29
+ [Date.civil(2017, 1, 16), Date.civil(2018, 1, 15), Date.civil(2019, 1, 21)].each do |date|
30
+ assert_equal 'Martin Luther King, Jr. Day', Holidays.on(date, [:us])[0][:name]
31
+ end
32
+ [Date.civil(2016, 1, 18), Date.civil(2017, 1, 16), Date.civil(2018, 1, 15)].each do |date|
33
+ assert_equal 'Martin Luther King, Jr. Day', Holidays.on(date, [:us])[0][:name]
34
+ assert_equal "Martin Luther King's and Robert E. Lee's Birthdays", Holidays.on(date, [:us_ms])[0][:name]
35
+ end
36
+ [Date.civil(2016, 1, 18), Date.civil(2017, 1, 16), Date.civil(2018, 1, 15)].each do |date|
37
+ assert_equal 'Martin Luther King, Jr. Day', Holidays.on(date, [:us])[0][:name]
38
+ assert_equal 'Idaho Human Rights Day', Holidays.on(date, [:us_id])[0][:name]
39
+ end
40
+ [Date.civil(2016, 1, 18), Date.civil(2017, 1, 16), Date.civil(2018, 1, 15)].each do |date|
41
+ assert_equal 'Martin Luther King, Jr. Day', Holidays.on(date, [:us])[0][:name]
42
+ assert_equal 'Civil Rights Day', Holidays.on(date, [:us_ar])[0][:name]
43
+ end
44
+
45
+ states_inauguration = %i{us_tx us_dc us_la us_md us_va}
46
+ [Date.civil(2017, 1, 20), Date.civil(2021, 1, 20)].each do |date|
47
+ assert_equal [], Holidays.on(date, [:us])
48
+ assert_equal 'Inauguration Day', Holidays.on(date, states_inauguration)[0][:name]
49
+ end
50
+ assert_equal 'Inauguration Day', Holidays.on(Date.civil(2025, 1, 20), states_inauguration)[1][:name]
51
+
52
+ [Date.civil(2017, 1, 13), Date.civil(2018, 1, 12), Date.civil(2019, 1, 18)].each do |date|
53
+ assert_equal [], Holidays.on(date, [:us])
54
+ assert_equal 'Lee-Jackson Day', Holidays.on(date, [:us_va])[0][:name]
55
+ end
56
+
57
+ assert_equal 'Confederate Heroes Day', Holidays.on(Date.civil(2017, 1, 19), [:us_tx])[0][:name]
58
+
59
+ [Date.civil(2008, 2, 18), Date.civil(2017, 2, 20), Date.civil(2018, 2, 19)].each do |date|
60
+ assert_equal "Presidents' Day", Holidays.on(date, [:us])[0][:name]
61
+ end
62
+ [Date.civil(2017, 3, 6), Date.civil(2018, 3, 5), Date.civil(2019, 3, 4)].each do |date|
63
+ assert_equal [], Holidays.on(date, [:us])
64
+ assert_equal 'Casimir Pulaski Day', Holidays.on(date, [:us_il])[0][:name]
65
+ end
66
+ [Date.civil(2017, 3, 7), Date.civil(2018, 3, 6), Date.civil(2019, 3, 5)].each do |date|
67
+ assert_equal [], Holidays.on(date, [:us])
68
+ assert_equal 'Town Meeting Day', Holidays.on(date, [:us_vt])[0][:name]
69
+ end
70
+
71
+ assert_equal 'Texas Independence Day', Holidays.on(Date.civil(2017, 3, 2), [:us_tx])[0][:name]
72
+
73
+ [Date.civil(2017, 3, 27), Date.civil(2018, 3, 26), Date.civil(2022, 3, 25)].each do |date|
74
+ assert_equal [], Holidays.on(date, [:us])
75
+ assert_equal 'Prince Jonah Kuhio Kalanianaole Day', Holidays.on(date, [:us_hi], :observed)[0][:name]
76
+ end
77
+ assert_equal [], Holidays.on(Date.civil(2017, 3, 26), [:us])
78
+ assert_equal 'Prince Jonah Kuhio Kalanianaole Day', Holidays.on(Date.civil(2017, 3, 26), [:us_hi])[0][:name]
79
+
80
+ [Date.civil(2017, 3, 27), Date.civil(2018, 3, 26), Date.civil(2019, 3, 25)].each do |date|
81
+ assert_equal [], Holidays.on(date, [:us])
82
+ assert_equal "Seward's Day", Holidays.on(date, [:us_ak])[0][:name]
83
+ end
84
+
85
+ assert_equal 'César Chávez Day', Holidays.on(Date.civil(2017, 3, 31), [:us_ca])[0][:name]
86
+
87
+ [Date.civil(2023, 4, 17), Date.civil(2022, 4, 15), Date.civil(2028, 4, 17)].each do |date|
88
+ assert_equal 'Emancipation Day', Holidays.on(date, [:us_dc, :us_ca], :observed)[0][:name]
89
+ end
90
+ assert_equal 'Emancipation Day', Holidays.on(Date.civil(2017, 4, 16), [:us_dc, :us_ca])[0][:name]
91
+
92
+ [Date.civil(2017, 4, 17), Date.civil(2018, 4, 16), Date.civil(2019, 4, 15)].each do |date|
93
+ assert_equal [], Holidays.on(date, [:us])
94
+ assert_equal "Patriots' Day", Holidays.on(date, [:us_me, :us_ma])[0][:name]
95
+ end
96
+
97
+ assert_equal 'San Jacinto Day', Holidays.on(Date.civil(2017, 4, 21), [:us_tx])[0][:name]
98
+
99
+ [Date.civil(2017, 4, 24), Date.civil(2018, 4, 30), Date.civil(2019, 4, 29)].each do |date|
100
+ assert_equal [], Holidays.on(date, [:us])
101
+ assert_equal 'Confederate Memorial Day', Holidays.on(date, [:us_al, :us_ms])[0][:name]
102
+ end
103
+ [Date.civil(2015, 4, 27), Date.civil(2020, 4, 27), Date.civil(2026, 4, 27)].each do |date|
104
+ assert_equal [], Holidays.on(Date.civil(2020, 4, 27), [:us])
105
+ assert_equal 'Confederate Memorial Day', Holidays.on(Date.civil(2020, 4, 27), [:us_fl], :observed)[0][:name]
106
+ end
107
+ assert_equal [], Holidays.on(Date.civil(2017, 4, 26), [:us])
108
+ assert_equal 'Confederate Memorial Day', Holidays.on(Date.civil(2017, 4, 26), [:us_fl])[0][:name]
109
+
110
+ [Date.civil(2015, 4, 20), Date.civil(2021, 4, 26)].each do |date|
111
+ assert_equal [], Holidays.on(Date.civil(2015, 4, 20), [:us])
112
+ assert_equal 'State Holiday', Holidays.on(date, [:us_ga])[0][:name]
113
+ end
114
+
115
+ assert_equal 'Arbor Day', Holidays.on(Date.civil(2017, 4, 28), [:us_ne])[0][:name]
116
+ assert_equal 'Truman Day', Holidays.on(Date.civil(2017, 5, 8), [:us_mo])[0][:name]
117
+ assert_equal 'Confederate Memorial Day', Holidays.on(Date.civil(2017, 5, 10), [:us_sc])[0][:name]
118
+
119
+ [Date.civil(2017, 5, 29), Date.civil(2018, 5, 28), Date.civil(2019, 5, 27)].each do |date|
120
+ assert_equal 'Memorial Day', Holidays.on(date, [:us])[0][:name]
121
+ end
122
+
123
+ [Date.civil(2017, 6, 5), Date.civil(2018, 6, 4), Date.civil(2019, 6, 3)].each do |date|
124
+ assert_equal [], Holidays.on(date, [:us])
125
+ assert_equal "Jefferson Davis' Birthday", Holidays.on(date, [:us_al])[0][:name]
126
+ end
127
+ assert_equal 'Birthday of Jefferson Davis', Holidays.on(Date.civil(2017, 6, 3), [:us_fl])[0][:name]
128
+
129
+ [Date.civil(2017, 6, 12), Date.civil(2018, 6, 11), Date.civil(2022, 6, 10)].each do |date|
130
+ assert_equal [], Holidays.on(date, [:us])
131
+ assert_equal 'King Kamehameha I Day', Holidays.on(date, [:us_hi], :observed)[0][:name]
132
+ end
133
+ assert_equal [], Holidays.on(Date.civil(2017, 6, 11), [:us])
134
+ assert_equal 'King Kamehameha I Day', Holidays.on(Date.civil(2017, 6, 11), [:us_hi])[0][:name]
135
+
136
+ assert_equal 'Emancipation Day in Texas', Holidays.on(Date.civil(2017, 6, 19), [:us_tx])[0][:name]
137
+
138
+ [Date.civil(2017, 6, 20), Date.civil(2020, 6, 19), Date.civil(2021, 6, 21)].each do |date|
139
+ assert_equal [], Holidays.on(date, [:us])
140
+ assert_equal 'West Virginia Day', Holidays.on(date, [:us_wv], :observed)[0][:name]
141
+ end
142
+ assert_equal [], Holidays.on(Date.civil(2017, 6, 20), [:us])
143
+ assert_equal 'West Virginia Day', Holidays.on(Date.civil(2017, 6, 20), [:us_wv])[0][:name]
144
+
145
+ assert_equal 'Emancipation Day', Holidays.on(Date.civil(2017, 7, 3), [:us_vi])[0][:name]
146
+
147
+ [Date.civil(2020, 7, 4), Date.civil(2021, 7, 4), Date.civil(2026, 7, 4)].each do |date|
148
+ assert_equal 'Independence Day', Holidays.on(date, [:us])[0][:name]
149
+ assert_equal 'Independence Day', Holidays.on(date, [:us_va])[0][:name]
150
+ end
151
+ [Date.civil(2020, 7, 3), Date.civil(2021, 7, 5), Date.civil(2026, 7, 3)].each do |date|
152
+ assert_equal [], Holidays.on(date, [:us])
153
+ assert_equal 'Independence Day (Holiday)', Holidays.on(date, [:us_va])[0][:name]
154
+ end
155
+
156
+ assert_equal 'Pioneer Day', Holidays.on(Date.civil(2017, 7, 24), [:us_ut])[0][:name]
157
+
158
+ [Date.civil(2017, 8, 14), Date.civil(2020, 8, 10), Date.civil(2021, 8, 9)].each do |date|
159
+ assert_equal [], Holidays.on(date, [:us])
160
+ assert_equal 'Victory Day', Holidays.on(date, [:us_ri])[0][:name]
161
+ end
162
+
163
+ [Date.civil(2017, 8, 16), Date.civil(2020, 8, 17), Date.civil(2025, 8, 15)].each do |date|
164
+ assert_equal [], Holidays.on(date, [:us])
165
+ assert_equal 'Bennington Battle Day', Holidays.on(date, [:us_vt], :observed)[0][:name]
166
+ end
167
+ assert_equal [], Holidays.on(Date.civil(2017, 8, 16), [:us])
168
+ assert_equal 'Bennington Battle Day', Holidays.on(Date.civil(2017, 8, 16), [:us_vt])[0][:name]
169
+
170
+ [Date.civil(2017, 8, 18), Date.civil(2020, 8, 21), Date.civil(2025, 8, 15)].each do |date|
171
+ assert_equal [], Holidays.on(date, [:us])
172
+ assert_equal 'Statehood Day', Holidays.on(date, [:us_hi])[0][:name]
173
+ end
174
+
175
+ assert_equal 'Lyndon Baines Johnson Day', Holidays.on(Date.civil(2017, 8, 27), [:us_tx])[0][:name]
176
+
177
+ [Date.civil(2017, 9, 4), Date.civil(2018, 9, 3), Date.civil(2019, 9, 2)].each do |date|
178
+ assert_equal 'Labor Day', Holidays.on(date, [:us])[0][:name]
179
+ end
180
+ [Date.civil(2017, 9, 21), Date.civil(2018, 9, 10), Date.civil(2019, 9, 30)].each do |date|
181
+ assert_equal [], Holidays.on(date, [:us])
182
+ assert_equal 'Rosh Hashanah', Holidays.on(date, [:us_tx])[0][:name]
183
+ end
184
+ [Date.civil(2017, 9, 30), Date.civil(2018, 9, 19), Date.civil(2019, 10, 9)].each do |date|
185
+ assert_equal [], Holidays.on(date, [:us])
186
+ assert_equal 'Yom Kippur', Holidays.on(date, [:us_tx])[0][:name]
187
+ end
188
+
189
+ states_columbus_day_formal =
190
+ %i{us_al us_az us_co us_ct us_dc us_ga us_id us_il us_in us_ma us_md us_me us_mo us_mt us_ne
191
+ us_nj us_nm us_ny us_oh us_pa us_ri us_ut us_va us_wv}
192
+ states_columbus_day_informal =
193
+ %i{us_ak us_ar us_ca us_de us_fl us_hi us_mi us_mn us_nd us_nv us_or us_sd us_tx us_vt us_wa us_wi us_wy}
194
+
195
+ [Date.civil(2017, 10, 9), Date.civil(2018, 10, 8), Date.civil(2019, 10, 14)].each do |date|
196
+ assert_equal [], Holidays.on(date, [:us])
197
+ assert_equal [], Holidays.on(date, states_columbus_day_informal)
198
+ assert_equal 'Columbus Day', Holidays.on(date, states_columbus_day_formal)[0][:name]
199
+ assert_equal 'Columbus Day', Holidays.on(date, states_columbus_day_informal, :informal)[0][:name]
200
+ end
201
+
202
+ assert_equal 'Alaska Day', Holidays.on(Date.civil(2017, 10, 18), [:us_ak])[0][:name]
203
+
204
+ [Date.civil(2017, 10, 27), Date.civil(2018, 10, 26), Date.civil(2019, 10, 25)].each do |date|
205
+ assert_equal [], Holidays.on(date, [:us])
206
+ assert_equal 'Nevada Day', Holidays.on(date, :us_nv)[0][:name]
207
+ end
208
+
209
+ states_election_day = %i{us_de us_hi us_il us_in us_mt us_nj us_ny us_pa us_ri}
210
+ [Date.civil(2017, 11, 7), Date.civil(2018, 11, 6), Date.civil(2021, 11, 2)].each do |date|
211
+ assert_equal [], Holidays.on(date, [:us])
212
+ assert_equal 'Election Day', Holidays.on(date, states_election_day)[0][:name]
213
+ end
214
+
215
+ [Date.civil(2017, 11, 10), Date.civil(2018, 11, 12), Date.civil(2019, 11, 11)].each do |date|
216
+ assert_equal 'Veterans Day', Holidays.on(date, [:us], :observed)[0][:name]
217
+ end
218
+ assert_equal 'Veterans Day', Holidays.on(Date.civil(2017, 11, 11), [:us])[0][:name]
219
+
220
+ [Date.civil(2017, 11, 23), Date.civil(2018, 11, 22), Date.civil(2019, 11, 28)].each do |date|
221
+ assert_equal 'Thanksgiving', Holidays.on(date, [:us])[0][:name]
222
+ end
223
+
224
+ states_black_friday =
225
+ %i{us_ca us_de us_fl us_ia us_il us_ks us_ky us_me us_mi us_mn us_ms us_ne us_nh us_nc us_pa
226
+ us_sc us_ok us_tn us_tx us_va us_wa us_wv}
227
+
228
+ [Date.civil(2017, 11, 24), Date.civil(2018, 11, 23), Date.civil(2019, 11, 29)].each do |date|
229
+ assert_equal [], Holidays.on(date, [:us])
230
+ assert_equal 'Family Day', Holidays.on(date, [:us_nv])[0][:name]
231
+ assert_equal 'State Holiday', Holidays.on(date, [:us_ga])[0][:name]
232
+ assert_equal "Presidents' Day", Holidays.on(date, [:us_nm])[0][:name]
233
+ assert_equal "Lincoln's Birthday", Holidays.on(date, [:us_in])[0][:name]
234
+ assert_equal 'American Indian Heritage Day', Holidays.on(date, [:us_md])[0][:name]
235
+ assert_equal 'Day after Thanksgiving (Black Friday)', Holidays.on(date, states_black_friday)[0][:name]
236
+ end
237
+
238
+ states_xmas_eve = %i{us_ar us_mi us_nc us_sc us_tx us_wi}
239
+ states_xmas_eve_holiday = %i{us_mi us_sc us_va}
240
+ [Date.civil(2022, 12, 23), Date.civil(2023, 12, 22), Date.civil(2028, 12, 22)].each do |date|
241
+ assert_equal 'Christmas Eve (Holiday)', Holidays.on(date, states_xmas_eve_holiday)[0][:name]
242
+ end
243
+ assert_equal 'Christmas Eve', Holidays.on(Date.civil(2017, 12, 24), states_xmas_eve)[0][:name]
244
+ assert_equal 'Christmas Eve', Holidays.on(Date.civil(2017, 12, 24), states_xmas_eve_holiday)[0][:name]
245
+
246
+ [Date.civil(2021, 12, 27), Date.civil(2022, 12, 26), Date.civil(2027, 12, 27)].each do |date|
247
+ assert_equal [], Holidays.on(date, [:us])
248
+ assert_equal 'Christmas Day', Holidays.on(date, [:us], :observed)[0][:name]
249
+ end
250
+ assert_equal 'Christmas Day', Holidays.on(Date.civil(2017, 12, 25), [:us])[0][:name]
251
+
252
+ states_day_after_christmas = %i{us_ar us_nc us_ok us_sc us_tn us_tx}
253
+ assert_equal 'Day after Christmas', Holidays.on(Date.civil(2017, 12, 26), states_day_after_christmas)[0][:name]
254
+
255
+ assert_equal "New Year's Eve", Holidays.on(Date.civil(2017, 12, 31), [:us_mi, :us_wi])[0][:name]
28
256
 
29
257
 
30
258
  {Date.civil(2013,2,2) => 'Groundhog Day',