holidays 5.6.0 → 5.7.0

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.
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',