From fd8be4d801203a861de04d123b86261f91df4000 Mon Sep 17 00:00:00 2001 From: Sam Zurcher Date: Fri, 16 Mar 2012 17:11:02 +0100 Subject: [PATCH] Swiss holiday definitions. --- data/ch.yaml | 187 ++++++++++++++++++++++++++++++++++ data/index.yaml | 3 +- lib/holidays/ch.rb | 92 +++++++++++++++++ lib/holidays/europe.rb | 126 ++++++++++++++++------- test/defs/test_defs_ch.rb | 38 +++++++ test/defs/test_defs_europe.rb | 30 +++++- 6 files changed, 437 insertions(+), 39 deletions(-) create mode 100644 data/ch.yaml create mode 100644 lib/holidays/ch.rb create mode 100644 test/defs/test_defs_ch.rb diff --git a/data/ch.yaml b/data/ch.yaml new file mode 100644 index 00000000..93b70d20 --- /dev/null +++ b/data/ch.yaml @@ -0,0 +1,187 @@ +# Swiss holiday definitions for the Ruby Holiday gem. +# +# Updated: 2012-03-16. +# Sources: +# http://www.bj.admin.ch/content/dam/data/staat_buerger/zivilprozessrecht/kant-feiertage.pdf +# +# Word of warning: +# ================ +# As the holidays are defined on a state level and sometimes even on a district / village level, +# this holiday definition is an approximation of the reality. It should be accurate for most of the cases but +# no guarantee is given that it is correct for all the special cases :-). +# Considers both official holidays and holidays that are handled as if they were official holidays. +# +# Holiday names are in German in case they are celebrated in the German speaking area and in French / Italian otherwise. +# +# Known Issues: +# * ch_ur: 26th of December is not celebrated in case the 25th is a Monday or a Friday. +# * ch_fr: Fronleichnam, Maria Himmelfahrt, Allerheiligen, Maria Empfaengnis is celebrated in all villages except +# some villages of the district of See. +# * ch_so: - There are a lot of village holidays not included here. +# - 1st of May is holiday only starting at noon; not included here. +# - 19th of March is celebrated only in a couple of villages +# * ch_ar: 26th of December is not celebrated in case the 25th is a Monday or a Friday. +# * ch_ai: - 22nd of September is celebrated only in part of the state. +# - 26th of December is not celebrated in case the 25th is a Monday or a Friday. +# * ch_ne: 26th of December and 2nd of January are only celebrated in case 25th of December and 1st of January are Sundays +# +# +# +# all regions [ch_zh, ch_be, ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_bs, ch_bl, +# ch_sh, ch_ar, ch_ai, ch_sg, ch_gr, ch_ag, ch_tg, ch_ti, ch_vd, ch_vs, ch_ne, ch_ge, ch_ju] +# +--- +months: + 0: + - name: Karfreitag + regions: [ch_zh, ch_be, ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_bs, ch_bl, ch_sh, ch_ar, ch_ai, ch_sg, ch_gr, ch_ag, ch_tg, ch_ti, ch_vd, ch_ne, ch_ge, ch_ju] + function: easter(year)-2 + - name: Ostermontag + regions: [ch_zh, ch_be, ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_bs, ch_bl, ch_sh, ch_ar, ch_ai, ch_sg, ch_gr, ch_ag, ch_tg, ch_ti, ch_vd, ch_vs, ch_ge, ch_ju] + function: easter(year)+1 + # State holiday but observed in all the states + - name: Auffahrt + regions: [ch] + function: easter(year)+39 + - name: Pfingstmontag + regions: [ch_zh, ch_be, ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_bs, ch_bl, ch_sh, ch_ar, ch_ai, ch_sg, ch_gr, ch_ag, ch_tg, ch_ti, ch_vd, ch_vs, ch_ge, ch_ju] + function: easter(year)+50 + - name: Fronleichnam + regions: [ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_zg, ch_fr, ch_so, ch_ai, ch_ag, ch_ti, ch_vs, ch_ne, ch_ju] + function: easter(year)+60 + - name: Lundi du Jeûne fédéral + regions: [ch_vd] + function: ch_vd_lundi_du_jeune_federal(year) + - name: Jeûne genevoi + regions: [ch_ge] + function: ch_ge_jeune_genevoi(year) + 1: + - name: Neujahrstag + regions: [ch_zh, ch_be, ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_bs, ch_bl, ch_sh, ch_ar, ch_ai, ch_sg, ch_gr, ch_ag, ch_tg, ch_vd, ch_vs, ch_ne, ch_ge, ch_ju] + mday: 1 + - name: Berchtoldstag + regions: [ch_zh, ch_be, ch_lu, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_sh, ch_sg, ch_ag, ch_tg, ch_vd, ch_vs, ch_ne, ch_ju] + mday: 2 + - name: Dreikönigstag + regions: [ch_ur, ch_sz, ch_ti] + mday: 6 + 3: + - name: Instauration de la République + regions: [ch_ne] + mday: 1 + - name: Josephstag + regions: [ch_ur, ch_sz, ch_nw, ch_ti, ch_vs] + mday: 19 + 4: + - name: Näfelser Fahrt + regions: [ch_gl] + function: ch_gl_naefelser_fahrt(year) + 5: + - name: Tag der Arbeit + regions: [ch_zh, ch_bs, ch_bl, ch_sh, ch_ag, ch_tg, ch_ti, ch_ne, ch_ju] + mday: 1 + 6: + - name: Commémoration du plébiscite jurassien + regions: [ch_ju] + mday: 23 + - name: San Pietro e Paolo + regions: [ch_ti] + mday: 29 + 8: + # Federal holiday + - name: Bundesfeiertag + regions: [ch] + mday: 1 + - name: Mariä Himmelfahrt + regions: [ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_zg, ch_fr, ch_so, ch_ai, ch_ag, ch_ti, ch_vs, ch_ju] + mday: 15 + 9: + - name: Mauritiustag + regions: [ch_ai] + mday: 22 + - name: Bruderklausenfest + regions: [ch_ow] + mday: 25 + 11: + - name: Allerheiligen + regions: [ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_ai, ch_sg, ch_ag, ch_ti, ch_vs, ch_ju] + mday: 1 + 12: + - name: Maria Empfängnis + regions: [ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_zg, ch_fr, ch_ai, ch_ag, ch_ti, ch_vs] + mday: 8 + # State holiday but observed in all the states + - name: Weihnachten + regions: [ch] + mday: 25 + - name: Stefanstag + regions: [ch_zh, ch_be, ch_lu, ch_ur, ch_sz, ch_ow, ch_nw, ch_gl, ch_zg, ch_fr, ch_so, ch_bs, ch_bl, ch_sh, ch_ar, ch_ai, ch_sg, ch_gr, ch_ag, ch_tg, ch_ti, ch_vs, ch_ne] + mday: 26 + - name: Restauration de la République + regions: [ch_ge] + mday: 31 +methods: + ch_vd_lundi_du_jeune_federal: | + # Monday after the third Sunday of September + def self.ch_vd_lundi_du_jeune_federal(year) + date = Date.civil(year,9,1) + # Find the first Sunday of September + until date.wday.eql? 0 do + date += 1 + end + # There are 15 days between the first Sunday + # and the Monday after the third Sunday + date + 15 + end + ch_ge_jeune_genevoi: | + # Thursday after the first Sunday of September + def self.ch_ge_jeune_genevoi(year) + date = Date.civil(year,9,1) + # Find the first Sunday of September + until date.wday.eql? 0 do + date += 1 + end + # Thursday is four days after Sunday + date + 4 + end + ch_gl_naefelser_fahrt: | + # First Thursday of April. If the first Thursday of April is in the week before easter, then a week later. + def self.ch_gl_naefelser_fahrt(year) + date = Date.civil(year,4,1) + # Find the first Thursday of April + until date.wday.eql? 4 do + date += 1 + end + if date.eql?(easter(year)-3) + date += 7 + end + date + end +tests: | + { Date.civil(2012,8,1) => 'Bundesfeiertag', + Date.civil(2012,12,25) => 'Weihnachten', + Date.civil(2012,05,17) => 'Auffahrt' + }.each do |date, name| + assert_equal name, (Holidays.on(date, :ch)[0] || {})[:name] + end + + { Date.civil(2012,8,1) => 'Bundesfeiertag', + Date.civil(2012,12,25) => 'Weihnachten', + Date.civil(2012,05,17) => 'Auffahrt', + Date.civil(2012,5,1) => 'Tag der Arbeit', + Date.civil(2012,12,26) => 'Stefanstag' + }.each do |date, name| + assert_equal name, (Holidays.on(date, :ch_zh)[0] || {})[:name] + end + + [Date.civil(2012,9,17), Date.civil(2013,9,16), Date.civil(2014,9,22)].each do |date| + assert_equal 'Lundi du Jeûne fédéral', (Holidays.on(date, :ch_vd)[0] || {})[:name] + end + + [Date.civil(2012,9,6), Date.civil(2013,9,5), Date.civil(2014,9,11)].each do |date| + assert_equal 'Jeûne genevoi', (Holidays.on(date, :ch_ge)[0] || {})[:name] + end + + [Date.civil(2012,4,12), Date.civil(2013,4,4), Date.civil(2014,4,3)].each do |date| + assert_equal 'Näfelser Fahrt', (Holidays.on(date, :ch_gl)[0] || {})[:name] + end \ No newline at end of file diff --git a/data/index.yaml b/data/index.yaml index 085fe6b9..97b05671 100644 --- a/data/index.yaml +++ b/data/index.yaml @@ -5,6 +5,7 @@ defs: AU: ['au.yaml'] BR: ['br.yaml'] CA: ['ca.yaml', 'north_america_informal.yaml'] + CH: ['ch.yaml'] CZ: ['cz.yaml'] DK: ['dk.yaml'] DE: ['de.yaml'] @@ -31,5 +32,5 @@ defs: ZA: ['za.yaml'] North_America: ['ca.yaml', 'mx.yaml', 'us.yaml', 'north_america_informal.yaml'] Scandinavia: ['dk.yaml', 'is.yaml', 'no.yaml', 'se.yaml', 'fi.yaml'] - Europe: ['at.yaml', 'cz.yaml', 'dk.yaml', 'de.yaml', 'el.yaml', 'es.yaml', 'fr.yaml', 'gb.yaml', 'ie.yaml', 'is.yaml', 'it.yaml', 'li.yaml', 'nl.yaml', 'no.yaml', 'pl.yaml', 'pt.yaml'] + Europe: ['at.yaml', 'ch.yaml', 'cz.yaml', 'dk.yaml', 'de.yaml', 'el.yaml', 'es.yaml', 'fr.yaml', 'gb.yaml', 'ie.yaml', 'is.yaml', 'it.yaml', 'li.yaml', 'nl.yaml', 'no.yaml', 'pl.yaml', 'pt.yaml'] JP: ['jp.yaml'] diff --git a/lib/holidays/ch.rb b/lib/holidays/ch.rb new file mode 100644 index 00000000..5d4c47db --- /dev/null +++ b/lib/holidays/ch.rb @@ -0,0 +1,92 @@ +# encoding: utf-8 +module Holidays + # This file is generated by the Ruby Holidays gem. + # + # Definitions loaded: data/ch.yaml + # + # To use the definitions in this file, load it right after you load the + # Holiday gem: + # + # require 'holidays' + # require 'holidays/ch' + # + # All the definitions are available at https://github.com/alexdunae/holidays + module CH # :nodoc: + def self.defined_regions + [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju, :ch_vs, :ch] + end + + def self.holidays_by_month + { + 0 => [{:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Karfreitag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju]}, + {:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Ostermontag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_vs, :ch_ge, :ch_ju]}, + {:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Auffahrt", :regions => [:ch]}, + {:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pfingstmontag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_vs, :ch_ge, :ch_ju]}, + {:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_so, :ch_ai, :ch_ag, :ch_ti, :ch_vs, :ch_ne, :ch_ju]}, + {:function => lambda { |year| Holidays.ch_vd_lundi_du_jeune_federal(year) }, :function_id => "ch_vd_lundi_du_jeune_federal(year)", :name => "Lundi du Jeûne fédéral", :regions => [:ch_vd]}, + {:function => lambda { |year| Holidays.ch_ge_jeune_genevoi(year) }, :function_id => "ch_ge_jeune_genevoi(year)", :name => "Jeûne genevoi", :regions => [:ch_ge]}], + 1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_vd, :ch_vs, :ch_ne, :ch_ge, :ch_ju]}, + {:mday => 2, :name => "Berchtoldstag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_sh, :ch_sg, :ch_ag, :ch_tg, :ch_vd, :ch_vs, :ch_ne, :ch_ju]}, + {:mday => 6, :name => "Dreikönigstag", :regions => [:ch_ur, :ch_sz, :ch_ti]}], + 3 => [{:mday => 1, :name => "Instauration de la République", :regions => [:ch_ne]}, + {:mday => 19, :name => "Josephstag", :regions => [:ch_ur, :ch_sz, :ch_nw, :ch_ti, :ch_vs]}], + 4 => [{:function => lambda { |year| Holidays.ch_gl_naefelser_fahrt(year) }, :function_id => "ch_gl_naefelser_fahrt(year)", :name => "Näfelser Fahrt", :regions => [:ch_gl]}], + 5 => [{:mday => 1, :name => "Tag der Arbeit", :regions => [:ch_zh, :ch_bs, :ch_bl, :ch_sh, :ch_ag, :ch_tg, :ch_ti, :ch_ne, :ch_ju]}], + 6 => [{:mday => 23, :name => "Commémoration du plébiscite jurassien", :regions => [:ch_ju]}, + {:mday => 29, :name => "San Pietro e Paolo", :regions => [:ch_ti]}], + 8 => [{:mday => 1, :name => "Bundesfeiertag", :regions => [:ch]}, + {:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_so, :ch_ai, :ch_ag, :ch_ti, :ch_vs, :ch_ju]}], + 9 => [{:mday => 22, :name => "Mauritiustag", :regions => [:ch_ai]}, + {:mday => 25, :name => "Bruderklausenfest", :regions => [:ch_ow]}], + 11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_ai, :ch_sg, :ch_ag, :ch_ti, :ch_vs, :ch_ju]}], + 12 => [{:mday => 8, :name => "Maria Empfängnis", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_ai, :ch_ag, :ch_ti, :ch_vs]}, + {:mday => 25, :name => "Weihnachten", :regions => [:ch]}, + {:mday => 26, :name => "Stefanstag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vs, :ch_ne]}, + {:mday => 31, :name => "Restauration de la République", :regions => [:ch_ge]}] + } + end + end + +# Monday after the third Sunday of September +def self.ch_vd_lundi_du_jeune_federal(year) + date = Date.civil(year,9,1) + # Find the first Sunday of September + until date.wday.eql? 0 do + date += 1 + end + # There are 15 days between the first Sunday + # and the Monday after the third Sunday + date + 15 +end + + +# Thursday after the first Sunday of September +def self.ch_ge_jeune_genevoi(year) + date = Date.civil(year,9,1) + # Find the first Sunday of September + until date.wday.eql? 0 do + date += 1 + end + # Thursday is four days after Sunday + date + 4 +end + + +# First Thursday of April. If the first Thursday of April is in the week before easter, then a week later. +def self.ch_gl_naefelser_fahrt(year) + date = Date.civil(year,4,1) + # Find the first Thursday of April + until date.wday.eql? 4 do + date += 1 + end + if date.eql?(easter(year)-3) + date += 7 + end + date +end + + + +end + +Holidays.merge_defs(Holidays::CH.defined_regions, Holidays::CH.holidays_by_month) diff --git a/lib/holidays/europe.rb b/lib/holidays/europe.rb index 5aae62ed..b6b3df15 100644 --- a/lib/holidays/europe.rb +++ b/lib/holidays/europe.rb @@ -2,7 +2,7 @@ module Holidays # This file is generated by the Ruby Holidays gem. # - # Definitions loaded: data/at.yaml, data/cz.yaml, data/dk.yaml, data/de.yaml, data/el.yaml, data/es.yaml, data/fr.yaml, data/gb.yaml, data/ie.yaml, data/is.yaml, data/it.yaml, data/li.yaml, data/nl.yaml, data/no.yaml, data/pl.yaml, data/pt.yaml + # Definitions loaded: data/at.yaml, data/ch.yaml, data/cz.yaml, data/dk.yaml, data/de.yaml, data/el.yaml, data/es.yaml, data/fr.yaml, data/gb.yaml, data/ie.yaml, data/is.yaml, data/it.yaml, data/li.yaml, data/nl.yaml, data/no.yaml, data/pl.yaml, data/pt.yaml # # To use the definitions in this file, load it right after you load the # Holiday gem: @@ -13,15 +13,19 @@ module Holidays # All the definitions are available at https://github.com/alexdunae/holidays module Europe # :nodoc: def self.defined_regions - [:at, :de, :li, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :cz, :dk, :no, :de_st, :de_bb, :de_mv, :de_sn, :de_th, :el, :es_pv, :es_ct, :es_na, :es_v, :es_vc, :es, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :fr, :gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :ie, :gb_sct, :gb_con, :je, :gb_jsy, :gg, :gb_gsy, :im, :gb_iom, :is, :it, :nl, :pl, :pt] + [:at, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_vs, :ch_ge, :ch_ju, :de, :li, :ch_ne, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :ch, :cz, :dk, :no, :de_st, :de_bb, :de_mv, :de_sn, :de_th, :el, :es_pv, :es_ct, :es_na, :es_v, :es_vc, :es, :es_an, :es_ib, :es_cm, :es_mu, :es_m, :es_ar, :es_cl, :es_cn, :es_lo, :es_ga, :es_ce, :es_o, :es_ex, :fr, :gb, :gb_eng, :gb_wls, :gb_eaw, :gb_nir, :ie, :gb_sct, :gb_con, :je, :gb_jsy, :gg, :gb_gsy, :im, :gb_iom, :is, :it, :nl, :pl, :pt] end def self.holidays_by_month { - 0 => [{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Ostermontag", :regions => [:at, :de, :li]}, + 0 => [{:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Ostermontag", :regions => [:at, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_vs, :ch_ge, :ch_ju, :de, :li]}, {:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Christi Himmelfahrt", :regions => [:at, :de]}, - {:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pfingstmontag", :regions => [:at, :de, :li]}, - {:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:at, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :li]}, + {:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "Pfingstmontag", :regions => [:at, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_vs, :ch_ge, :ch_ju, :de, :li]}, + {:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Fronleichnam", :regions => [:at, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_so, :ch_ai, :ch_ag, :ch_ti, :ch_vs, :ch_ne, :ch_ju, :de_bw, :de_by, :de_he, :de_nw, :de_rp, :de_sl, :li]}, + {:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Karfreitag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vd, :ch_ne, :ch_ge, :ch_ju, :de, :li]}, + {:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Auffahrt", :regions => [:ch, :li]}, + {:function => lambda { |year| Holidays.ch_vd_lundi_du_jeune_federal(year) }, :function_id => "ch_vd_lundi_du_jeune_federal(year)", :name => "Lundi du Jeûne fédéral", :regions => [:ch_vd]}, + {:function => lambda { |year| Holidays.ch_ge_jeune_genevoi(year) }, :function_id => "ch_ge_jeune_genevoi(year)", :name => "Jeûne genevoi", :regions => [:ch_ge]}, {:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Velikonoční pondělí", :regions => [:cz]}, {:function => lambda { |year| Holidays.easter(year)-49 }, :function_id => "easter(year)-49", :type => :informal, :name => "Fastelavn", :regions => [:dk, :no]}, {:function => lambda { |year| Holidays.easter(year)-7 }, :function_id => "easter(year)-7", :name => "Palmesøndag", :regions => [:dk, :no]}, @@ -33,7 +37,6 @@ def self.holidays_by_month {:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Kristi Himmelfartsdag", :regions => [:dk, :no]}, {:function => lambda { |year| Holidays.easter(year)+49 }, :function_id => "easter(year)+49", :name => "Pinsedag", :regions => [:dk]}, {:function => lambda { |year| Holidays.easter(year)+50 }, :function_id => "easter(year)+50", :name => "2. Pinsedag", :regions => [:dk]}, - {:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Karfreitag", :regions => [:de, :li]}, {:function => lambda { |year| Holidays.orthodox_easter(year)-2 }, :function_id => "orthodox_easter(year)-2", :name => "Μεγάλη Παρασκευή", :regions => [:el]}, {:function => lambda { |year| Holidays.orthodox_easter(year)-1 }, :function_id => "orthodox_easter(year)-1", :name => "Μεγάλο Σάββατο", :regions => [:el]}, {:function => lambda { |year| Holidays.orthodox_easter(year) }, :function_id => "orthodox_easter(year)", :name => "Κυριακή του Πάσχα", :regions => [:el]}, @@ -66,7 +69,6 @@ def self.holidays_by_month {:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Lunedì dell'Angelo", :regions => [:it]}, {:function => lambda { |year| Holidays.easter(year)-47 }, :function_id => "easter(year)-47", :name => "Fasnachtsdienstag", :regions => [:li]}, {:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :type => :informal, :name => "Ostern", :regions => [:li]}, - {:function => lambda { |year| Holidays.easter(year)+39 }, :function_id => "easter(year)+39", :name => "Auffahrt", :regions => [:li]}, {:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Goede Vrijdag", :regions => [:nl]}, {:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Pasen", :regions => [:nl]}, {:function => lambda { |year| Holidays.easter(year)+1 }, :function_id => "easter(year)+1", :name => "Pasen", :regions => [:nl]}, @@ -92,8 +94,10 @@ def self.holidays_by_month {:function => lambda { |year| Holidays.easter(year)-2 }, :function_id => "easter(year)-2", :name => "Sexta-feira Santa", :regions => [:pt]}, {:function => lambda { |year| Holidays.easter(year) }, :function_id => "easter(year)", :name => "Páscoa", :regions => [:pt]}, {:function => lambda { |year| Holidays.easter(year)+60 }, :function_id => "easter(year)+60", :name => "Corpo de Deus", :regions => [:pt]}], - 1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:at, :de, :li]}, + 1 => [{:mday => 1, :name => "Neujahrstag", :regions => [:at, :ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_vd, :ch_vs, :ch_ne, :ch_ge, :ch_ju, :de, :li]}, {:mday => 6, :name => "Heilige Drei K√∂nige", :regions => [:at]}, + {:mday => 2, :name => "Berchtoldstag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_sh, :ch_sg, :ch_ag, :ch_tg, :ch_vd, :ch_vs, :ch_ne, :ch_ju]}, + {:mday => 6, :name => "Dreikönigstag", :regions => [:ch_ur, :ch_sz, :ch_ti]}, {:mday => 1, :name => "Den obnovy samostatného českého státu", :regions => [:cz]}, {:mday => 1, :name => "Nytårsdag", :regions => [:dk]}, {:mday => 6, :name => "Heilige Drei Könige", :regions => [:de_bw, :de_by, :de_st, :li, :li]}, @@ -118,11 +122,11 @@ def self.holidays_by_month {:mday => 22, :type => :informal, :name => "Dzień Dziadka", :regions => [:pl]}, {:mday => 1, :name => "Ano Novo", :regions => [:pt]}], 5 => [{:mday => 1, :name => "Staatsfeiertag", :regions => [:at]}, + {:mday => 1, :name => "Tag der Arbeit", :regions => [:ch_zh, :ch_bs, :ch_bl, :ch_sh, :ch_ag, :ch_tg, :ch_ti, :ch_ne, :ch_ju, :de, :li]}, {:mday => 1, :name => "Svátek práce", :regions => [:cz]}, {:mday => 8, :name => "Den vítězství", :regions => [:cz]}, {:mday => 1, :name => "Arbejdernes kampdag", :regions => [:dk]}, {:mday => 5, :type => :informal, :name => "Danmarks befrielse", :regions => [:dk]}, - {:mday => 1, :name => "Tag der Arbeit", :regions => [:de, :li]}, {:mday => 1, :name => "Πρωτομαγιά", :regions => [:el]}, {:mday => 1, :name => "Día del Trabajador", :regions => [:es]}, {:mday => 2, :name => "Fiesta de la Comunidad", :regions => [:es_m]}, @@ -145,7 +149,8 @@ def self.holidays_by_month {:mday => 3, :name => "Święto Narodowe Trzeciego Maja", :regions => [:pl]}, {:mday => 1, :name => "Dia do Trabalhador", :regions => [:pt]}], 8 => [{:mday => 15, :name => "Mari√§ Himmelfahrt", :regions => [:at]}, - {:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:de_by, :de_sl]}, + {:mday => 1, :name => "Bundesfeiertag", :regions => [:ch]}, + {:mday => 15, :name => "Mariä Himmelfahrt", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_so, :ch_ai, :ch_ag, :ch_ti, :ch_vs, :ch_ju, :de_by, :de_sl]}, {:mday => 15, :name => "Κοίμηση της Θεοτόκου", :regions => [:el]}, {:mday => 15, :name => "Asunción", :regions => [:es]}, {:mday => 15, :name => "Assomption", :regions => [:fr]}, @@ -167,7 +172,7 @@ def self.holidays_by_month {:wday => 1, :week => -1, :name => "Bank Holiday", :regions => [:ie]}, {:mday => 14, :type => :informal, :name => "Dzień Nauczyciela (Dzień Edukacji Narodowej)", :regions => [:pl]}, {:mday => 5, :name => "Implantação da República", :regions => [:pt]}], - 11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:at, :de_bw, :de_by, :de_nw, :de_rp, :de_sl, :li]}, + 11 => [{:mday => 1, :name => "Allerheiligen", :regions => [:at, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_ai, :ch_sg, :ch_ag, :ch_ti, :ch_vs, :ch_ju, :de_bw, :de_by, :de_nw, :de_rp, :de_sl, :li]}, {:mday => 17, :name => "Den boje za svobodu a demokracii", :regions => [:cz]}, {:mday => 10, :type => :informal, :name => "Mortensaften", :regions => [:dk]}, {:function => lambda { |year| Holidays.de_buss_und_bettag(year) }, :function_id => "de_buss_und_bettag(year)", :name => "Buß- und Bettag", :regions => [:de_sn]}, @@ -185,6 +190,10 @@ def self.holidays_by_month 12 => [{:mday => 8, :name => "Mari√§ Empf√§ngnis", :regions => [:at]}, {:mday => 25, :name => "1. Weihnachtstag", :regions => [:at, :de]}, {:mday => 26, :name => "2. Weihnachtstag", :regions => [:at, :de]}, + {:mday => 8, :name => "Maria Empfängnis", :regions => [:ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_zg, :ch_fr, :ch_ai, :ch_ag, :ch_ti, :ch_vs, :li]}, + {:mday => 25, :name => "Weihnachten", :regions => [:ch, :li]}, + {:mday => 26, :name => "Stefanstag", :regions => [:ch_zh, :ch_be, :ch_lu, :ch_ur, :ch_sz, :ch_ow, :ch_nw, :ch_gl, :ch_zg, :ch_fr, :ch_so, :ch_bs, :ch_bl, :ch_sh, :ch_ar, :ch_ai, :ch_sg, :ch_gr, :ch_ag, :ch_tg, :ch_ti, :ch_vs, :ch_ne, :li]}, + {:mday => 31, :name => "Restauration de la République", :regions => [:ch_ge]}, {:mday => 24, :name => "Štědrý den", :regions => [:cz]}, {:mday => 25, :name => "1. svátek vánoční", :regions => [:cz]}, {:mday => 26, :name => "2. svátek vánoční", :regions => [:cz]}, @@ -210,10 +219,7 @@ def self.holidays_by_month {:mday => 8, :name => "Immacolata Concezione", :regions => [:it]}, {:mday => 25, :name => "Natale", :regions => [:it]}, {:mday => 26, :name => "Santo Stefano", :regions => [:it]}, - {:mday => 8, :name => "Maria Empfängnis", :regions => [:li]}, {:mday => 24, :name => "Heilig Abend", :regions => [:li]}, - {:mday => 25, :name => "Weihnachten", :regions => [:li]}, - {:mday => 26, :name => "Stefanstag", :regions => [:li]}, {:mday => 31, :name => "Silvester", :regions => [:li]}, {:mday => 5, :type => :informal, :name => "Sinterklaas", :regions => [:nl]}, {:mday => 25, :name => "Kerstmis", :regions => [:nl]}, @@ -229,20 +235,18 @@ def self.holidays_by_month {:mday => 1, :name => "Restauração da Independência", :regions => [:pt]}, {:mday => 8, :name => "Imaculada Conceição", :regions => [:pt]}, {:mday => 25, :name => "Natal", :regions => [:pt]}], - 7 => [{:mday => 5, :name => "Den slovanských věrozvěstů Cyrila a Metoděje", :regions => [:cz]}, - {:mday => 6, :name => "Den upálení mistra Jana Husa", :regions => [:cz]}, - {:mday => 23, :name => "Santiago Apostol", :regions => [:es_ga]}, - {:mday => 14, :name => "Fête nationale", :regions => [:fr]}, - {:mday => 5, :name => "Tynwald Day", :regions => [:im, :gb_iom]}, - {:mday => 12, :name => "Battle of the Boyne", :regions => [:gb_nir]}], - 9 => [{:mday => 28, :name => "Den české státnosti", :regions => [:cz]}, - {:mday => 2, :name => "Día de Ceuta", :regions => [:es_ce]}, - {:mday => 8, :name => "Día de Asturias", :regions => [:es_o]}, - {:mday => 8, :name => "Día de Extremadura", :regions => [:es_ex]}, - {:mday => 11, :name => "Fiesta Nacional de Cataluña", :regions => [:es_ct]}, - {:mday => 8, :name => "Maria Geburt", :regions => [:li]}, - {:mday => 30, :type => :informal, :name => "Dzień Chłopaka", :regions => [:pl]}], - 4 => [{:mday => 1, :type => :informal, :name => "1. april", :regions => [:dk]}, + 3 => [{:mday => 1, :name => "Instauration de la République", :regions => [:ch_ne]}, + {:mday => 19, :name => "Josephstag", :regions => [:ch_ur, :ch_sz, :ch_nw, :ch_ti, :ch_vs]}, + {:mday => 25, :name => "Επέτειος της Επανάστασης του 1821", :regions => [:el]}, + {:mday => 1, :name => "Día de las Islas Baleares", :regions => [:es_ib]}, + {:mday => 19, :name => "San José", :regions => [:es_v, :es_vc, :es_cm, :es_mu, :es_m]}, + {:mday => 5, :name => "St. Piran's Day", :regions => [:gb_con]}, + {:mday => 17, :name => "St. Patrick's Day", :regions => [:gb_nir, :ie]}, + {:mday => 19, :name => "St. Josef", :regions => [:li]}, + {:mday => 8, :type => :informal, :name => "Dzień Kobiet", :regions => [:pl]}, + {:mday => 10, :type => :informal, :name => "Dzień Mężczyzn", :regions => [:pl]}], + 4 => [{:function => lambda { |year| Holidays.ch_gl_naefelser_fahrt(year) }, :function_id => "ch_gl_naefelser_fahrt(year)", :name => "Näfelser Fahrt", :regions => [:ch_gl]}, + {:mday => 1, :type => :informal, :name => "1. april", :regions => [:dk]}, {:mday => 9, :type => :informal, :name => "Danmarks besættelse", :regions => [:dk]}, {:mday => 16, :type => :informal, :name => "Dronningens fødselsdag", :regions => [:dk]}, {:mday => 23, :name => "San Jorge", :regions => [:es_ar, :es_cl]}, @@ -253,7 +257,9 @@ def self.holidays_by_month {:mday => 1, :type => :informal, :name => "Prima Aprilis", :regions => [:pl]}, {:mday => 22, :type => :informal, :name => "Międzynarodowy Dzień Ziemi", :regions => [:pl]}, {:mday => 25, :name => "Dia da Liberdade", :regions => [:pt]}], - 6 => [{:mday => 5, :name => "Grundlovsdag", :regions => [:dk]}, + 6 => [{:mday => 23, :name => "Commémoration du plébiscite jurassien", :regions => [:ch_ju]}, + {:mday => 29, :name => "San Pietro e Paolo", :regions => [:ch_ti]}, + {:mday => 5, :name => "Grundlovsdag", :regions => [:dk]}, {:mday => 15, :type => :informal, :name => "Valdemarsdag og Genforeningsdag", :regions => [:dk]}, {:mday => 23, :type => :informal, :name => "Sankt Hans aften", :regions => [:dk]}, {:mday => 9, :name => "Día de la Región de Murcia", :regions => [:es_mu]}, @@ -264,14 +270,21 @@ def self.holidays_by_month {:mday => 2, :name => "Festa della Repubblica", :regions => [:it]}, {:mday => 23, :type => :informal, :name => "Dzień Ojca", :regions => [:pl]}, {:mday => 10, :name => "Dia de Portugal", :regions => [:pt]}], - 3 => [{:mday => 25, :name => "Επέτειος της Επανάστασης του 1821", :regions => [:el]}, - {:mday => 1, :name => "Día de las Islas Baleares", :regions => [:es_ib]}, - {:mday => 19, :name => "San José", :regions => [:es_v, :es_vc, :es_cm, :es_mu, :es_m]}, - {:mday => 5, :name => "St. Piran's Day", :regions => [:gb_con]}, - {:mday => 17, :name => "St. Patrick's Day", :regions => [:gb_nir, :ie]}, - {:mday => 19, :name => "St. Josef", :regions => [:li]}, - {:mday => 8, :type => :informal, :name => "Dzień Kobiet", :regions => [:pl]}, - {:mday => 10, :type => :informal, :name => "Dzień Mężczyzn", :regions => [:pl]}], + 9 => [{:mday => 22, :name => "Mauritiustag", :regions => [:ch_ai]}, + {:mday => 25, :name => "Bruderklausenfest", :regions => [:ch_ow]}, + {:mday => 28, :name => "Den české státnosti", :regions => [:cz]}, + {:mday => 2, :name => "Día de Ceuta", :regions => [:es_ce]}, + {:mday => 8, :name => "Día de Asturias", :regions => [:es_o]}, + {:mday => 8, :name => "Día de Extremadura", :regions => [:es_ex]}, + {:mday => 11, :name => "Fiesta Nacional de Cataluña", :regions => [:es_ct]}, + {:mday => 8, :name => "Maria Geburt", :regions => [:li]}, + {:mday => 30, :type => :informal, :name => "Dzień Chłopaka", :regions => [:pl]}], + 7 => [{:mday => 5, :name => "Den slovanských věrozvěstů Cyrila a Metoděje", :regions => [:cz]}, + {:mday => 6, :name => "Den upálení mistra Jana Husa", :regions => [:cz]}, + {:mday => 23, :name => "Santiago Apostol", :regions => [:es_ga]}, + {:mday => 14, :name => "Fête nationale", :regions => [:fr]}, + {:mday => 5, :name => "Tynwald Day", :regions => [:im, :gb_iom]}, + {:mday => 12, :name => "Battle of the Boyne", :regions => [:gb_nir]}], 2 => [{:mday => 28, :name => "Día de Andalucía", :regions => [:es_an]}, {:mday => 18, :type => :informal, :name => "Konudagur", :regions => [:is]}, {:mday => 2, :name => "Maria Lichtmess", :regions => [:li]}, @@ -281,6 +294,45 @@ def self.holidays_by_month end end +# Monday after the third Sunday of September +def self.ch_vd_lundi_du_jeune_federal(year) + date = Date.civil(year,9,1) + # Find the first Sunday of September + until date.wday.eql? 0 do + date += 1 + end + # There are 15 days between the first Sunday + # and the Monday after the third Sunday + date + 15 +end + + +# Thursday after the first Sunday of September +def self.ch_ge_jeune_genevoi(year) + date = Date.civil(year,9,1) + # Find the first Sunday of September + until date.wday.eql? 0 do + date += 1 + end + # Thursday is four days after Sunday + date + 4 +end + + +# First Thursday of April. If the first Thursday of April is in the week before easter, then a week later. +def self.ch_gl_naefelser_fahrt(year) + date = Date.civil(year,4,1) + # Find the first Thursday of April + until date.wday.eql? 4 do + date += 1 + end + if date.eql?(easter(year)-3) + date += 7 + end + date +end + + # Germany: Wednesday before November 23 def self.de_buss_und_bettag(year) date = Date.civil(year,11,23) diff --git a/test/defs/test_defs_ch.rb b/test/defs/test_defs_ch.rb new file mode 100644 index 00000000..b28180f7 --- /dev/null +++ b/test/defs/test_defs_ch.rb @@ -0,0 +1,38 @@ +# encoding: utf-8 +require File.expand_path(File.dirname(__FILE__)) + '/../test_helper' + +# This file is generated by the Ruby Holiday gem. +# +# Definitions loaded: data/ch.yaml +class ChDefinitionTests < Test::Unit::TestCase # :nodoc: + + def test_ch +{ Date.civil(2012,8,1) => 'Bundesfeiertag', + Date.civil(2012,12,25) => 'Weihnachten', + Date.civil(2012,05,17) => 'Auffahrt' +}.each do |date, name| + assert_equal name, (Holidays.on(date, :ch)[0] || {})[:name] +end + +{ Date.civil(2012,8,1) => 'Bundesfeiertag', + Date.civil(2012,12,25) => 'Weihnachten', + Date.civil(2012,05,17) => 'Auffahrt', + Date.civil(2012,5,1) => 'Tag der Arbeit', + Date.civil(2012,12,26) => 'Stefanstag' +}.each do |date, name| + assert_equal name, (Holidays.on(date, :ch_zh)[0] || {})[:name] +end + +[Date.civil(2012,9,17), Date.civil(2013,9,16), Date.civil(2014,9,22)].each do |date| + assert_equal 'Lundi du Jeûne fédéral', (Holidays.on(date, :ch_vd)[0] || {})[:name] +end + +[Date.civil(2012,9,6), Date.civil(2013,9,5), Date.civil(2014,9,11)].each do |date| + assert_equal 'Jeûne genevoi', (Holidays.on(date, :ch_ge)[0] || {})[:name] +end + +[Date.civil(2012,4,12), Date.civil(2013,4,4), Date.civil(2014,4,3)].each do |date| + assert_equal 'Näfelser Fahrt', (Holidays.on(date, :ch_gl)[0] || {})[:name] +end + end +end diff --git a/test/defs/test_defs_europe.rb b/test/defs/test_defs_europe.rb index 46b2f703..3ff8e09a 100644 --- a/test/defs/test_defs_europe.rb +++ b/test/defs/test_defs_europe.rb @@ -3,7 +3,7 @@ # This file is generated by the Ruby Holiday gem. # -# Definitions loaded: data/at.yaml, data/cz.yaml, data/dk.yaml, data/de.yaml, data/el.yaml, data/es.yaml, data/fr.yaml, data/gb.yaml, data/ie.yaml, data/is.yaml, data/it.yaml, data/li.yaml, data/nl.yaml, data/no.yaml, data/pl.yaml, data/pt.yaml +# Definitions loaded: data/at.yaml, data/ch.yaml, data/cz.yaml, data/dk.yaml, data/de.yaml, data/el.yaml, data/es.yaml, data/fr.yaml, data/gb.yaml, data/ie.yaml, data/is.yaml, data/it.yaml, data/li.yaml, data/nl.yaml, data/no.yaml, data/pl.yaml, data/pt.yaml class EuropeDefinitionTests < Test::Unit::TestCase # :nodoc: def test_europe @@ -21,6 +21,34 @@ def test_europe assert !Date.civil(2010,5,8).holiday?(:at), '2010-05-08 is not a holiday in Austria' +{ Date.civil(2012,8,1) => 'Bundesfeiertag', + Date.civil(2012,12,25) => 'Weihnachten', + Date.civil(2012,05,17) => 'Auffahrt' +}.each do |date, name| + assert_equal name, (Holidays.on(date, :ch)[0] || {})[:name] +end + +{ Date.civil(2012,8,1) => 'Bundesfeiertag', + Date.civil(2012,12,25) => 'Weihnachten', + Date.civil(2012,05,17) => 'Auffahrt', + Date.civil(2012,5,1) => 'Tag der Arbeit', + Date.civil(2012,12,26) => 'Stefanstag' +}.each do |date, name| + assert_equal name, (Holidays.on(date, :ch_zh)[0] || {})[:name] +end + +[Date.civil(2012,9,17), Date.civil(2013,9,16), Date.civil(2014,9,22)].each do |date| + assert_equal 'Lundi du Jeûne fédéral', (Holidays.on(date, :ch_vd)[0] || {})[:name] +end + +[Date.civil(2012,9,6), Date.civil(2013,9,5), Date.civil(2014,9,11)].each do |date| + assert_equal 'Jeûne genevoi', (Holidays.on(date, :ch_ge)[0] || {})[:name] +end + +[Date.civil(2012,4,12), Date.civil(2013,4,4), Date.civil(2014,4,3)].each do |date| + assert_equal 'Näfelser Fahrt', (Holidays.on(date, :ch_gl)[0] || {})[:name] +end + {Date.civil(2010,1,1) => 'Den obnovy samostatného českého státu', Date.civil(2010,4,5) => 'Velikonoční pondělí', Date.civil(2010,5,1) => 'Svátek práce',