sapor 0.3.3
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.
- checksums.yaml +7 -0
- data/Area Class Diagram.dia +0 -0
- data/Area Class Diagram.png +0 -0
- data/Class Diagram.dia +0 -0
- data/Class Diagram.png +0 -0
- data/Example-Catalonia.md +361 -0
- data/Example-Flanders.md +486 -0
- data/Example-Greece.md +25 -0
- data/Example-Oslo.md +678 -0
- data/Example-UnitedKingdom-Referendum.md +132 -0
- data/Examples.md +15 -0
- data/LICENSE +674 -0
- data/README.md +103 -0
- data/Rakefile +18 -0
- data/Technical Documentation.md +14 -0
- data/bin/create_installation_package.sh +49 -0
- data/bin/install.sh +45 -0
- data/bin/sapor.rb +24 -0
- data/bin/sapor.sh +106 -0
- data/data/hu/hungary-2014.txt +1680 -0
- data/data/hu/hungary_2014_screen_scraper.rb +48 -0
- data/data/hu/hungary_2014_to_psv.rb +80 -0
- data/data/hu/index-2014.txt +106 -0
- data/data/pl/2015-gl-lis-okr.csv +42 -0
- data/data/pl/poland_2015_to_psv.rb +79 -0
- data/data/pl/poland_2015_to_psv_with_ko_and_rsw.rb +94 -0
- data/data/pl/poland_2015_to_psv_with_ko_konf_kp_l_and_zp.rb +100 -0
- data/data/pl/poland_2015_to_psv_with_ko_sld_and_wi.rb +92 -0
- data/data/pl/poland_2015_to_psv_with_sld.rb +84 -0
- data/data/pl/poland_2015_to_psv_with_sld_and_wi.rb +85 -0
- data/data/uk/inject_ukip_2015_as_brexit_2019_in_2017.rb +54 -0
- data/data/uk/united_kingdom_2015.txt +651 -0
- data/data/uk/united_kingdom_2015_to_psv.rb +104 -0
- data/data/uk/united_kingdom_2017.txt +651 -0
- data/data/uk/united_kingdom_2017_to_psv.rb +104 -0
- data/data/uk/united_kingdom_2017_to_psv_with_brexit_and_chuk.rb +113 -0
- data/data/uk/united_kingdom_2017_to_psv_with_tig.rb +111 -0
- data/lib/sapor.rb +150 -0
- data/lib/sapor/binomials_cache.rb +45 -0
- data/lib/sapor/combinations_distribution.rb +222 -0
- data/lib/sapor/denominators.rb +67 -0
- data/lib/sapor/dichotomies.rb +138 -0
- data/lib/sapor/dichotomy.rb +164 -0
- data/lib/sapor/first_past_the_post.rb +82 -0
- data/lib/sapor/largest_remainder.rb +118 -0
- data/lib/sapor/log4r_logger.rb +49 -0
- data/lib/sapor/log_facade.rb +40 -0
- data/lib/sapor/multi_district_leveled_proportional.rb +64 -0
- data/lib/sapor/multi_district_proportional.rb +123 -0
- data/lib/sapor/multi_district_variable_threshold_proportional.rb +128 -0
- data/lib/sapor/number_formatter.rb +45 -0
- data/lib/sapor/options.rb +73 -0
- data/lib/sapor/poll.rb +286 -0
- data/lib/sapor/polychotomy.rb +200 -0
- data/lib/sapor/pseudorandom_multirange_enumerator.rb +87 -0
- data/lib/sapor/referendum_polychotomy.rb +165 -0
- data/lib/sapor/regional_data/area.rb +82 -0
- data/lib/sapor/regional_data/austria.rb +84 -0
- data/lib/sapor/regional_data/belgium-brussels-2014.psv +46 -0
- data/lib/sapor/regional_data/belgium-brussels-20190526.psv +33 -0
- data/lib/sapor/regional_data/belgium-flanders-2014.psv +80 -0
- data/lib/sapor/regional_data/belgium-flanders-20190526.psv +74 -0
- data/lib/sapor/regional_data/belgium-wallonia-2014.psv +114 -0
- data/lib/sapor/regional_data/belgium-wallonia-20190526.psv +93 -0
- data/lib/sapor/regional_data/belgium.rb +97 -0
- data/lib/sapor/regional_data/belgium_brussels.rb +62 -0
- data/lib/sapor/regional_data/belgium_flanders.rb +64 -0
- data/lib/sapor/regional_data/belgium_wallonia.rb +63 -0
- data/lib/sapor/regional_data/catalonia-2012-2015.psv +100 -0
- data/lib/sapor/regional_data/catalonia-2012.psv +87 -0
- data/lib/sapor/regional_data/catalonia-2015-jxcat.psv +68 -0
- data/lib/sapor/regional_data/catalonia-2015-no-jxsi.psv +68 -0
- data/lib/sapor/regional_data/catalonia-2015.psv +63 -0
- data/lib/sapor/regional_data/catalonia-jxcat.rb +109 -0
- data/lib/sapor/regional_data/catalonia-no-jxsi.rb +96 -0
- data/lib/sapor/regional_data/catalonia.rb +96 -0
- data/lib/sapor/regional_data/denmark-20150618-with-e-and-p.psv +164 -0
- data/lib/sapor/regional_data/denmark-20150618-with-e.psv +153 -0
- data/lib/sapor/regional_data/denmark-20150618-with-p.psv +153 -0
- data/lib/sapor/regional_data/denmark-20150618.psv +142 -0
- data/lib/sapor/regional_data/denmark.rb +128 -0
- data/lib/sapor/regional_data/denmark_with_e.rb +128 -0
- data/lib/sapor/regional_data/denmark_with_e_and_p.rb +128 -0
- data/lib/sapor/regional_data/denmark_with_p.rb +128 -0
- data/lib/sapor/regional_data/estonia.rb +88 -0
- data/lib/sapor/regional_data/european-union-great-britain-20140522-brexit-chuk.psv +172 -0
- data/lib/sapor/regional_data/european-union-great-britain-20140522.psv +146 -0
- data/lib/sapor/regional_data/european-union-great-britain-20190523.psv +141 -0
- data/lib/sapor/regional_data/european-union-ireland-2014-ia-ri-sd.psv +64 -0
- data/lib/sapor/regional_data/european-union-ireland-2014-ia-sd.psv +60 -0
- data/lib/sapor/regional_data/european-union-ireland-2014-ia.psv +56 -0
- data/lib/sapor/regional_data/european-union-ireland-2014-sd.psv +56 -0
- data/lib/sapor/regional_data/european-union-ireland-2014.psv +50 -0
- data/lib/sapor/regional_data/european-union-ireland-20190524-ia.psv +58 -0
- data/lib/sapor/regional_data/european-union-ireland-20190524.psv +52 -0
- data/lib/sapor/regional_data/european_union_27_austria.rb +76 -0
- data/lib/sapor/regional_data/european_union_27_croatia.rb +81 -0
- data/lib/sapor/regional_data/european_union_27_denmark.rb +77 -0
- data/lib/sapor/regional_data/european_union_27_estonia.rb +74 -0
- data/lib/sapor/regional_data/european_union_27_finland.rb +74 -0
- data/lib/sapor/regional_data/european_union_27_ireland.rb +96 -0
- data/lib/sapor/regional_data/european_union_27_ireland_with_ia.rb +97 -0
- data/lib/sapor/regional_data/european_union_27_italy.rb +84 -0
- data/lib/sapor/regional_data/european_union_27_netherlands.rb +81 -0
- data/lib/sapor/regional_data/european_union_27_poland.rb +84 -0
- data/lib/sapor/regional_data/european_union_27_romania.rb +78 -0
- data/lib/sapor/regional_data/european_union_27_slovakia.rb +80 -0
- data/lib/sapor/regional_data/european_union_27_spain.rb +82 -0
- data/lib/sapor/regional_data/european_union_27_sweden.rb +76 -0
- data/lib/sapor/regional_data/european_union_austria.rb +76 -0
- data/lib/sapor/regional_data/european_union_bulgaria.rb +81 -0
- data/lib/sapor/regional_data/european_union_croatia.rb +81 -0
- data/lib/sapor/regional_data/european_union_cyprus.rb +72 -0
- data/lib/sapor/regional_data/european_union_czech_republic.rb +82 -0
- data/lib/sapor/regional_data/european_union_denmark.rb +77 -0
- data/lib/sapor/regional_data/european_union_estonia.rb +74 -0
- data/lib/sapor/regional_data/european_union_finland.rb +74 -0
- data/lib/sapor/regional_data/european_union_flanders.rb +74 -0
- data/lib/sapor/regional_data/european_union_france.rb +84 -0
- data/lib/sapor/regional_data/european_union_france_2019.rb +84 -0
- data/lib/sapor/regional_data/european_union_french_community_of_belgium.rb +73 -0
- data/lib/sapor/regional_data/european_union_germany.rb +86 -0
- data/lib/sapor/regional_data/european_union_great_britain.rb +98 -0
- data/lib/sapor/regional_data/european_union_greece.rb +77 -0
- data/lib/sapor/regional_data/european_union_hungary.rb +76 -0
- data/lib/sapor/regional_data/european_union_ireland.rb +96 -0
- data/lib/sapor/regional_data/european_union_ireland_with_ia.rb +97 -0
- data/lib/sapor/regional_data/european_union_italy.rb +84 -0
- data/lib/sapor/regional_data/european_union_latvia.rb +81 -0
- data/lib/sapor/regional_data/european_union_lithuania.rb +80 -0
- data/lib/sapor/regional_data/european_union_luxembourg.rb +75 -0
- data/lib/sapor/regional_data/european_union_malta.rb +71 -0
- data/lib/sapor/regional_data/european_union_netherlands.rb +81 -0
- data/lib/sapor/regional_data/european_union_northern_ireland.rb +75 -0
- data/lib/sapor/regional_data/european_union_poland.rb +84 -0
- data/lib/sapor/regional_data/european_union_portugal.rb +75 -0
- data/lib/sapor/regional_data/european_union_romania.rb +78 -0
- data/lib/sapor/regional_data/european_union_slovakia.rb +81 -0
- data/lib/sapor/regional_data/european_union_slovenia.rb +85 -0
- data/lib/sapor/regional_data/european_union_spain.rb +82 -0
- data/lib/sapor/regional_data/european_union_sweden.rb +76 -0
- data/lib/sapor/regional_data/finland-20150419-with-sin.psv +224 -0
- data/lib/sapor/regional_data/finland-20150419.psv +212 -0
- data/lib/sapor/regional_data/finland.rb +107 -0
- data/lib/sapor/regional_data/finland_with_sin.rb +107 -0
- data/lib/sapor/regional_data/flanders-2014.psv +96 -0
- data/lib/sapor/regional_data/flanders-20190526.psv +87 -0
- data/lib/sapor/regional_data/flanders.rb +115 -0
- data/lib/sapor/regional_data/france.rb +38 -0
- data/lib/sapor/regional_data/greece.rb +92 -0
- data/lib/sapor/regional_data/hungary-2014.psv +2104 -0
- data/lib/sapor/regional_data/hungary.rb +116 -0
- data/lib/sapor/regional_data/iceland-20161029-midflokkurinn.psv +94 -0
- data/lib/sapor/regional_data/iceland-20161029.psv +88 -0
- data/lib/sapor/regional_data/iceland-20171028.psv +85 -0
- data/lib/sapor/regional_data/iceland.rb +133 -0
- data/lib/sapor/regional_data/latvia-20141004-kpv-p-par.psv +109 -0
- data/lib/sapor/regional_data/latvia-20141004-kpv-par.psv +103 -0
- data/lib/sapor/regional_data/latvia-20141004-kpv.psv +97 -0
- data/lib/sapor/regional_data/latvia-20141004.psv +89 -0
- data/lib/sapor/regional_data/latvia.rb +112 -0
- data/lib/sapor/regional_data/latvia_kpv.rb +112 -0
- data/lib/sapor/regional_data/latvia_kpv_p_par.rb +112 -0
- data/lib/sapor/regional_data/latvia_kpv_par.rb +112 -0
- data/lib/sapor/regional_data/luxembourg-20131020.psv +76 -0
- data/lib/sapor/regional_data/luxembourg.rb +82 -0
- data/lib/sapor/regional_data/netherlands.rb +108 -0
- data/lib/sapor/regional_data/norway.rb +425 -0
- data/lib/sapor/regional_data/norwegian_municipality.rb +68 -0
- data/lib/sapor/regional_data/poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv +321 -0
- data/lib/sapor/regional_data/poland-20151025-with-ko-konf-kp-l-and-zp-without-k-k15-n-pis-po-psl-r-and-zl.psv +280 -0
- data/lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv +403 -0
- data/lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv +444 -0
- data/lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv +403 -0
- data/lib/sapor/regional_data/poland-20151025.psv +403 -0
- data/lib/sapor/regional_data/poland.rb +125 -0
- data/lib/sapor/regional_data/poland_with_ko_and_l_without_n_po_r_and_zl.rb +122 -0
- data/lib/sapor/regional_data/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl.rb +123 -0
- data/lib/sapor/regional_data/poland_with_ko_sld_and_wi_without_n_po_and_zl.rb +125 -0
- data/lib/sapor/regional_data/poland_with_sld_and_wi_without_zl.rb +126 -0
- data/lib/sapor/regional_data/poland_with_sld_without_zl.rb +126 -0
- data/lib/sapor/regional_data/portugal-20151004-with-a-and-ch-without-paf.psv +438 -0
- data/lib/sapor/regional_data/portugal-20151004-with-a-and-il-without-paf.psv +438 -0
- data/lib/sapor/regional_data/portugal-20151004-with-a-ch-and-il-without-paf.psv +461 -0
- data/lib/sapor/regional_data/portugal-20151004-with-a-without-paf.psv +415 -0
- data/lib/sapor/regional_data/portugal-20151004-with-ch-and-il-without-paf.psv +438 -0
- data/lib/sapor/regional_data/portugal-20151004-without-paf.psv +392 -0
- data/lib/sapor/regional_data/portugal-20151004.psv +370 -0
- data/lib/sapor/regional_data/portugal.rb +101 -0
- data/lib/sapor/regional_data/portugal_with_a_and_ch_without_paf.rb +92 -0
- data/lib/sapor/regional_data/portugal_with_a_and_il_without_paf.rb +92 -0
- data/lib/sapor/regional_data/portugal_with_a_ch_and_il_without_paf.rb +92 -0
- data/lib/sapor/regional_data/portugal_with_a_without_paf.rb +92 -0
- data/lib/sapor/regional_data/portugal_with_ch_and_il_without_paf.rb +92 -0
- data/lib/sapor/regional_data/portugal_without_paf.rb +92 -0
- data/lib/sapor/regional_data/slovakia.rb +81 -0
- data/lib/sapor/regional_data/slovenia.rb +114 -0
- data/lib/sapor/regional_data/spain-20160626.psv +619 -0
- data/lib/sapor/regional_data/spain.rb +136 -0
- data/lib/sapor/regional_data/sweden.rb +92 -0
- data/lib/sapor/regional_data/sweden_20140914.rb +89 -0
- data/lib/sapor/regional_data/united_kingdom-2015.psv +4358 -0
- data/lib/sapor/regional_data/united_kingdom-20170608-brexit-chuk.psv +5154 -0
- data/lib/sapor/regional_data/united_kingdom-20170608-brexit.psv +4521 -0
- data/lib/sapor/regional_data/united_kingdom-20170608-tig.psv +4529 -0
- data/lib/sapor/regional_data/united_kingdom-20170608.psv +3894 -0
- data/lib/sapor/regional_data/united_kingdom.rb +94 -0
- data/lib/sapor/regional_data/united_kingdom_with_brexit.rb +110 -0
- data/lib/sapor/regional_data/united_kingdom_with_brexit_and_chuk.rb +111 -0
- data/lib/sapor/regional_data/united_kingdom_with_tig.rb +111 -0
- data/lib/sapor/regional_data/utopia.rb +66 -0
- data/lib/sapor/regional_data/wallonia-2014.psv +101 -0
- data/lib/sapor/regional_data/wallonia-20190526.psv +88 -0
- data/lib/sapor/regional_data/wallonia.rb +112 -0
- data/lib/sapor/representatives_polychotomy.rb +338 -0
- data/lib/sapor/single_district_proportional.rb +75 -0
- data/sapor.gemspec +35 -0
- data/spec/integration/area_spec.rb +28 -0
- data/spec/integration/poll_spec.rb +112 -0
- data/spec/integration/sample.poll +8 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/unit/area_spec.rb +115 -0
- data/spec/unit/austria_spec.rb +76 -0
- data/spec/unit/belgium_brussels_spec.rb +58 -0
- data/spec/unit/belgium_flanders_spec.rb +62 -0
- data/spec/unit/belgium_spec.rb +26 -0
- data/spec/unit/belgium_wallonia_spec.rb +65 -0
- data/spec/unit/binomials_cache_spec.rb +34 -0
- data/spec/unit/catalonia_spec.rb +74 -0
- data/spec/unit/combinations_distribution_spec.rb +241 -0
- data/spec/unit/denmark_spec.rb +56 -0
- data/spec/unit/denmark_with_e_and_p_spec.rb +58 -0
- data/spec/unit/denmark_with_e_spec.rb +57 -0
- data/spec/unit/denmark_with_p_spec.rb +57 -0
- data/spec/unit/denominators_spec.rb +40 -0
- data/spec/unit/dichotomies_spec.rb +154 -0
- data/spec/unit/dichotomy_spec.rb +320 -0
- data/spec/unit/estonia_spec.rb +65 -0
- data/spec/unit/european_union_27_austria_spec.rb +61 -0
- data/spec/unit/european_union_27_croatia_spec.rb +60 -0
- data/spec/unit/european_union_27_denmark_spec.rb +62 -0
- data/spec/unit/european_union_27_estonia_spec.rb +94 -0
- data/spec/unit/european_union_27_finland_spec.rb +75 -0
- data/spec/unit/european_union_27_ireland_spec.rb +72 -0
- data/spec/unit/european_union_27_ireland_with_ia_spec.rb +74 -0
- data/spec/unit/european_union_27_italy_spec.rb +69 -0
- data/spec/unit/european_union_27_netherlands_spec.rb +81 -0
- data/spec/unit/european_union_27_poland_spec.rb +69 -0
- data/spec/unit/european_union_27_romania_spec.rb +67 -0
- data/spec/unit/european_union_27_slovakia_spec.rb +111 -0
- data/spec/unit/european_union_27_spain_spec.rb +130 -0
- data/spec/unit/european_union_27_sweden_spec.rb +89 -0
- data/spec/unit/european_union_austria_spec.rb +61 -0
- data/spec/unit/european_union_bulgaria_spec.rb +97 -0
- data/spec/unit/european_union_croatia_spec.rb +59 -0
- data/spec/unit/european_union_cyprus_spec.rb +65 -0
- data/spec/unit/european_union_czech_republic_spec.rb +125 -0
- data/spec/unit/european_union_denmark_spec.rb +61 -0
- data/spec/unit/european_union_estonia_spec.rb +93 -0
- data/spec/unit/european_union_finland_spec.rb +75 -0
- data/spec/unit/european_union_flanders_spec.rb +56 -0
- data/spec/unit/european_union_france_2019_spec.rb +73 -0
- data/spec/unit/european_union_france_spec.rb +73 -0
- data/spec/unit/european_union_french_community_of_belgium_spec.rb +61 -0
- data/spec/unit/european_union_germany_spec.rb +90 -0
- data/spec/unit/european_union_great_britain_spec.rb +87 -0
- data/spec/unit/european_union_greece_spec.rb +148 -0
- data/spec/unit/european_union_hungary_spec.rb +57 -0
- data/spec/unit/european_union_ireland_spec.rb +72 -0
- data/spec/unit/european_union_ireland_with_ia_spec.rb +74 -0
- data/spec/unit/european_union_italy_spec.rb +69 -0
- data/spec/unit/european_union_latvia_spec.rb +76 -0
- data/spec/unit/european_union_lithuania_spec.rb +68 -0
- data/spec/unit/european_union_luxembourg_spec.rb +63 -0
- data/spec/unit/european_union_malta_spec.rb +60 -0
- data/spec/unit/european_union_netherlands_spec.rb +81 -0
- data/spec/unit/european_union_northern_ireland_spec.rb +66 -0
- data/spec/unit/european_union_poland_spec.rb +69 -0
- data/spec/unit/european_union_portugal_spec.rb +77 -0
- data/spec/unit/european_union_romania_spec.rb +67 -0
- data/spec/unit/european_union_slovakia_spec.rb +111 -0
- data/spec/unit/european_union_slovenia_spec.rb +77 -0
- data/spec/unit/european_union_spain_spec.rb +129 -0
- data/spec/unit/european_union_sweden_spec.rb +89 -0
- data/spec/unit/finland_spec.rb +65 -0
- data/spec/unit/finland_with_sin_spec.rb +67 -0
- data/spec/unit/first_past_the_post_spec.rb +54 -0
- data/spec/unit/flanders_spec.rb +70 -0
- data/spec/unit/france_spec.rb +32 -0
- data/spec/unit/greece_spec.rb +118 -0
- data/spec/unit/hungary_spec.rb +132 -0
- data/spec/unit/iceland_spec.rb +57 -0
- data/spec/unit/largest_remainder_spec.rb +79 -0
- data/spec/unit/latvia_kpv_p_par_spec.rb +38 -0
- data/spec/unit/latvia_kpv_par_spec.rb +38 -0
- data/spec/unit/latvia_kpv_spec.rb +38 -0
- data/spec/unit/latvia_spec.rb +60 -0
- data/spec/unit/luxembourg_spec.rb +54 -0
- data/spec/unit/multi_district_leveled_proportional_spec.rb +49 -0
- data/spec/unit/multi_district_proportional_spec.rb +81 -0
- data/spec/unit/netherlands_spec.rb +107 -0
- data/spec/unit/norway_spec.rb +64 -0
- data/spec/unit/norwegian_municipality_spec.rb +89 -0
- data/spec/unit/number_formatter_spec.rb +173 -0
- data/spec/unit/poland_spec.rb +62 -0
- data/spec/unit/poland_with_ko_and_l_without_n_po_r_and_zl_spec.rb +60 -0
- data/spec/unit/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl_spec.rb +59 -0
- data/spec/unit/poland_with_ko_sld_and_wi_without_n_po_and_zl_spec.rb +62 -0
- data/spec/unit/poland_with_sld_and_wi_without_zl_spec.rb +63 -0
- data/spec/unit/poland_with_sld_without_zl_spec.rb +62 -0
- data/spec/unit/poll_spec.rb +110 -0
- data/spec/unit/portugal_spec.rb +66 -0
- data/spec/unit/portugal_with_a_and_ch_without_paf_spec.rb +68 -0
- data/spec/unit/portugal_with_a_and_il_without_paf_spec.rb +68 -0
- data/spec/unit/portugal_with_a_ch_and_il_without_paf_spec.rb +69 -0
- data/spec/unit/portugal_with_a_without_paf_spec.rb +67 -0
- data/spec/unit/portugal_with_ch_and_il_without_paf_spec.rb +68 -0
- data/spec/unit/portugal_without_paf_spec.rb +66 -0
- data/spec/unit/pseudorandom_multirange_enumerator_spec.rb +82 -0
- data/spec/unit/referendum_polychotomy_spec.rb +289 -0
- data/spec/unit/representatives_polychotomy_spec.rb +332 -0
- data/spec/unit/slovakia_spec.rb +99 -0
- data/spec/unit/slovenia_spec.rb +80 -0
- data/spec/unit/spain_spec.rb +101 -0
- data/spec/unit/sweden_20140914_spec.rb +112 -0
- data/spec/unit/sweden_spec.rb +113 -0
- data/spec/unit/united_kingdom_spec.rb +65 -0
- data/spec/unit/united_kingdom_with_brexit_and_chuk_spec.rb +67 -0
- data/spec/unit/united_kingdom_with_brexit_spec.rb +66 -0
- data/spec/unit/united_kingdom_with_tig_spec.rb +66 -0
- data/spec/unit/wallonia_spec.rb +70 -0
- metadata +490 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Statistical Analysis of Polling Results (SAPoR)
|
|
4
|
+
# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
|
|
5
|
+
#
|
|
6
|
+
# This file is part of SAPoR.
|
|
7
|
+
#
|
|
8
|
+
# SAPoR is free software: you can redistribute it and/or modify it under the
|
|
9
|
+
# terms of the GNU General Public License as published by the Free Software
|
|
10
|
+
# Foundation, either version 3 of the License, or (at your option) any later
|
|
11
|
+
# version.
|
|
12
|
+
#
|
|
13
|
+
# SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
14
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
15
|
+
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
16
|
+
#
|
|
17
|
+
# You can find a copy of the GNU General Public License in /doc/gpl.txt
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
require 'spec_helper'
|
|
21
|
+
|
|
22
|
+
describe Sapor::Norway, '#area_code' do
|
|
23
|
+
it 'returns NO as the area code' do
|
|
24
|
+
expect(Sapor::Norway.instance.area_code).to eq('NO')
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe Sapor::Norway, '#no_of_seats' do
|
|
29
|
+
it 'returns 169 as the number of seats' do
|
|
30
|
+
expect(Sapor::Norway.instance.no_of_seats).to eq(169)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe Sapor::Norway, '#population_size' do
|
|
35
|
+
it 'returns a population size of 2,836,029' do
|
|
36
|
+
expect(Sapor::Norway.instance.population_size).to eq(2_836_029)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe Sapor::Norway, '#seats' do
|
|
41
|
+
it 'calculates the number of seats for the election of 2015 correctly' do
|
|
42
|
+
norway = Sapor::Norway.instance
|
|
43
|
+
results = norway.overall_election_results_of_2015
|
|
44
|
+
seats = norway.seats(results)
|
|
45
|
+
expect(seats['Arbeiderpartiet']).to eq(55)
|
|
46
|
+
expect(seats['Høyre']).to eq(48)
|
|
47
|
+
expect(seats['Fremskrittspartiet']).to eq(29)
|
|
48
|
+
expect(seats['Kristelig Folkeparti']).to eq(10)
|
|
49
|
+
expect(seats['Senterpartiet']).to eq(10)
|
|
50
|
+
expect(seats['Venstre']).to eq(9)
|
|
51
|
+
expect(seats['Sosialistisk Venstreparti']).to eq(7)
|
|
52
|
+
expect(seats['Miljøpartiet de Grønne']).to eq(1)
|
|
53
|
+
expect(seats['Rødt']).to eq(0)
|
|
54
|
+
expect(seats['De Kristne']).to eq(0)
|
|
55
|
+
expect(seats['Pensjonistpartiet']).to eq(0)
|
|
56
|
+
expect(seats['Piratpartiet']).to eq(0)
|
|
57
|
+
expect(seats['Kystpartiet']).to eq(0)
|
|
58
|
+
expect(seats['Demokratene i Norge']).to eq(0)
|
|
59
|
+
expect(seats['Kristent Samlingsparti']).to eq(0)
|
|
60
|
+
expect(seats['Det Liberale Folkepartiet']).to eq(0)
|
|
61
|
+
expect(seats['Norges Kommunistiske Parti']).to eq(0)
|
|
62
|
+
expect(seats['Samfunnspartiet']).to eq(0)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Statistical Analysis of Polling Results (SAPoR)
|
|
4
|
+
# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
|
|
5
|
+
#
|
|
6
|
+
# This file is part of SAPoR.
|
|
7
|
+
#
|
|
8
|
+
# SAPoR is free software: you can redistribute it and/or modify it under the
|
|
9
|
+
# terms of the GNU General Public License as published by the Free Software
|
|
10
|
+
# Foundation, either version 3 of the License, or (at your option) any later
|
|
11
|
+
# version.
|
|
12
|
+
#
|
|
13
|
+
# SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
14
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
15
|
+
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
16
|
+
#
|
|
17
|
+
# You can find a copy of the GNU General Public License in /doc/gpl.txt
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
require 'spec_helper'
|
|
21
|
+
|
|
22
|
+
describe Sapor::NorwegianMunicipality, '#area_code' do
|
|
23
|
+
it 'returns NO-0301 as the area code' do
|
|
24
|
+
expect(Sapor::NorwegianMunicipality::OSLO.area_code).to eq('NO-0301')
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe Sapor::NorwegianMunicipality, '#coalitions' do
|
|
29
|
+
it 'returns H+KrF+V, H+Frp, Frp+H+KrF+V, Ap+Sp+SV and Ap+Sp+SV+MDG+R as' \
|
|
30
|
+
' the coalitions to track' do
|
|
31
|
+
expect(Sapor::NorwegianMunicipality::OSLO.coalitions).to \
|
|
32
|
+
include(['Høyre', 'Kristelig Folkeparti', 'Venstre'])
|
|
33
|
+
expect(Sapor::NorwegianMunicipality::OSLO.coalitions).to \
|
|
34
|
+
include(%w(Fremskrittspartiet Høyre))
|
|
35
|
+
expect(Sapor::NorwegianMunicipality::OSLO.coalitions).to \
|
|
36
|
+
include(['Fremskrittspartiet', 'Høyre', 'Kristelig Folkeparti',
|
|
37
|
+
'Venstre'])
|
|
38
|
+
expect(Sapor::NorwegianMunicipality::OSLO.coalitions).to \
|
|
39
|
+
include(['Arbeiderpartiet', 'Senterpartiet', 'Sosialistisk Venstreparti'])
|
|
40
|
+
expect(Sapor::NorwegianMunicipality::OSLO.coalitions).to \
|
|
41
|
+
include(['Arbeiderpartiet', 'Miljøpartiet de Grønne', 'Rødt',
|
|
42
|
+
'Senterpartiet', 'Sosialistisk Venstreparti'])
|
|
43
|
+
expect(Sapor::NorwegianMunicipality::OSLO.coalitions).to \
|
|
44
|
+
include(['Kristelig Folkeparti', 'Senterpartiet', 'Venstre'])
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe Sapor::NorwegianMunicipality, '#no_of_seats' do
|
|
49
|
+
it 'returns 59 as the number of seats' do
|
|
50
|
+
expect(Sapor::NorwegianMunicipality::OSLO.no_of_seats).to eq(59)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe Sapor::NorwegianMunicipality, '#population_size' do
|
|
55
|
+
it 'returns a population size of 511,400' do
|
|
56
|
+
expect(Sapor::NorwegianMunicipality::OSLO.population_size).to eq(511_400)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe Sapor::NorwegianMunicipality, '#seats' do
|
|
61
|
+
it 'calculates the number of seats for the election of 2011 correctly' do
|
|
62
|
+
oslo = Sapor::NorwegianMunicipality::OSLO
|
|
63
|
+
results = { 'Høyre' => 103_426, 'Arbeiderpartiet' => 95_262,
|
|
64
|
+
'Venstre' => 22_879, 'Fremskrittspartiet' => 20_672,
|
|
65
|
+
'Sosialistisk Venstreparti' => 17_772, 'Rødt' => 10_236,
|
|
66
|
+
'Kristelig Folkeparti' => 7_094,
|
|
67
|
+
'Miljøpartiet de Grønne' => 6_706, 'Senterpartiet' => 1_482,
|
|
68
|
+
'Pensjonistpartiet' => 989, 'Kristent Samlingsparti' => 220,
|
|
69
|
+
'Det Liberale Folkepartiet' => 217,
|
|
70
|
+
'Norges Kommunistiske Parti' => 192, 'Demokratene' => 187,
|
|
71
|
+
'Kystpartiet' => 119 }
|
|
72
|
+
seats = oslo.seats(results)
|
|
73
|
+
expect(seats['Høyre']).to eq(22)
|
|
74
|
+
expect(seats['Arbeiderpartiet']).to eq(20)
|
|
75
|
+
expect(seats['Venstre']).to eq(5)
|
|
76
|
+
expect(seats['Fremskrittspartiet']).to eq(4)
|
|
77
|
+
expect(seats['Sosialistisk Venstreparti']).to eq(4)
|
|
78
|
+
expect(seats['Rødt']).to eq(2)
|
|
79
|
+
expect(seats['Kristelig Folkeparti']).to eq(1)
|
|
80
|
+
expect(seats['Miljøpartiet de Grønne']).to eq(1)
|
|
81
|
+
expect(seats['Senterpartiet']).to eq(0)
|
|
82
|
+
expect(seats['Pensjonistpartiet']).to eq(0)
|
|
83
|
+
expect(seats['Kristent Samlingsparti']).to eq(0)
|
|
84
|
+
expect(seats['Det Liberale Folkepartiet']).to eq(0)
|
|
85
|
+
expect(seats['Norges Kommunistiske Parti']).to eq(0)
|
|
86
|
+
expect(seats['Demokratene']).to eq(0)
|
|
87
|
+
expect(seats['Kystpartiet']).to eq(0)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Statistical Analysis of Polling Results (SAPoR)
|
|
4
|
+
# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
|
|
5
|
+
#
|
|
6
|
+
# This file is part of SAPoR.
|
|
7
|
+
#
|
|
8
|
+
# SAPoR is free software: you can redistribute it and/or modify it under the
|
|
9
|
+
# terms of the GNU General Public License as published by the Free Software
|
|
10
|
+
# Foundation, either version 3 of the License, or (at your option) any later
|
|
11
|
+
# version.
|
|
12
|
+
#
|
|
13
|
+
# SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
14
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
15
|
+
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
16
|
+
#
|
|
17
|
+
# You can find a copy of the GNU General Public License in /doc/gpl.txt
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
require 'spec_helper'
|
|
21
|
+
|
|
22
|
+
#
|
|
23
|
+
# Test class that mixes in the PercentageFormatter.
|
|
24
|
+
#
|
|
25
|
+
class Formatter
|
|
26
|
+
include Sapor::NumberFormatter
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe Sapor::NumberFormatter, '#three_digits_percentage' do
|
|
30
|
+
it 'formats 10 as 1000%' do
|
|
31
|
+
output = Formatter.new.three_digits_percentage(10)
|
|
32
|
+
expect(output).to eq('1000%')
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'formats 1 as 100%' do
|
|
36
|
+
output = Formatter.new.three_digits_percentage(1)
|
|
37
|
+
expect(output).to eq('100%')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it 'formats 0.9995 as 100%' do
|
|
41
|
+
output = Formatter.new.three_digits_percentage(0.9995)
|
|
42
|
+
expect(output).to eq('100%')
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'formats 0.99949 as 99.9%' do
|
|
46
|
+
output = Formatter.new.three_digits_percentage(0.99949)
|
|
47
|
+
expect(output).to eq('99.9%')
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it 'formats 0.09995 as 10.0%' do
|
|
51
|
+
output = Formatter.new.three_digits_percentage(0.09995)
|
|
52
|
+
expect(output).to eq('10.0%')
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it 'formats 0.099949 as 9.99%' do
|
|
56
|
+
output = Formatter.new.three_digits_percentage(0.099949)
|
|
57
|
+
expect(output).to eq('9.99%')
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it 'formats 0.009995 as 1.00%' do
|
|
61
|
+
output = Formatter.new.three_digits_percentage(0.009995)
|
|
62
|
+
expect(output).to eq('1.00%')
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'formats 0.0099949 as 0.999%' do
|
|
66
|
+
output = Formatter.new.three_digits_percentage(0.0099949)
|
|
67
|
+
expect(output).to eq('0.999%')
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it 'formats 0.000005 as 0.001%' do
|
|
71
|
+
output = Formatter.new.three_digits_percentage(0.000005)
|
|
72
|
+
expect(output).to eq('0.001%')
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it 'formats 0.0000049 as 0%' do
|
|
76
|
+
output = Formatter.new.three_digits_percentage(0.0000049)
|
|
77
|
+
expect(output).to eq('0%')
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it 'formats 0 as 0%' do
|
|
81
|
+
output = Formatter.new.three_digits_percentage(0)
|
|
82
|
+
expect(output).to eq('0%')
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
describe Sapor::NumberFormatter, '#six_char_percentage' do
|
|
87
|
+
it 'formats 1 as 100.0%' do
|
|
88
|
+
output = Formatter.new.six_char_percentage(1)
|
|
89
|
+
expect(output).to eq('100.0%')
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'formats 0.9995 as 100.0%' do
|
|
93
|
+
output = Formatter.new.six_char_percentage(0.9995)
|
|
94
|
+
expect(output).to eq('100.0%')
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it 'formats 0.99949 as 99.9%' do
|
|
98
|
+
output = Formatter.new.six_char_percentage(0.99949)
|
|
99
|
+
expect(output).to eq(' 99.9%')
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it 'formats 0.0995 as 10.0%' do
|
|
103
|
+
output = Formatter.new.six_char_percentage(0.0995)
|
|
104
|
+
expect(output).to eq(' 10.0%')
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it 'formats 0.09949 as 9.9%' do
|
|
108
|
+
output = Formatter.new.six_char_percentage(0.09949)
|
|
109
|
+
expect(output).to eq(' 9.9%')
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it 'formats 0.00951 as 1.0%' do
|
|
113
|
+
output = Formatter.new.six_char_percentage(0.00951)
|
|
114
|
+
expect(output).to eq(' 1.0%')
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it 'formats 0.00949 as 0.9%' do
|
|
118
|
+
output = Formatter.new.six_char_percentage(0.00949)
|
|
119
|
+
expect(output).to eq(' 0.9%')
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it 'formats 0.0005 as 0.1%' do
|
|
123
|
+
output = Formatter.new.six_char_percentage(0.0005)
|
|
124
|
+
expect(output).to eq(' 0.1%')
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it 'formats 0.00049 as 0.0%' do
|
|
128
|
+
output = Formatter.new.six_char_percentage(0.00049)
|
|
129
|
+
expect(output).to eq(' 0.0%')
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it 'formats 0 as 0.0%' do
|
|
133
|
+
output = Formatter.new.six_char_percentage(0)
|
|
134
|
+
expect(output).to eq(' 0.0%')
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
describe Sapor::NumberFormatter, '#with_thousands_separator' do
|
|
139
|
+
it 'formats 0 as 0' do
|
|
140
|
+
output = Formatter.new.with_thousands_separator(0)
|
|
141
|
+
expect(output).to eq('0')
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
it 'formats 1 as 1' do
|
|
145
|
+
output = Formatter.new.with_thousands_separator(1)
|
|
146
|
+
expect(output).to eq('1')
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
it 'formats 999 as 999' do
|
|
150
|
+
output = Formatter.new.with_thousands_separator(999)
|
|
151
|
+
expect(output).to eq('999')
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
it 'formats 1_000 as 1,000' do
|
|
155
|
+
output = Formatter.new.with_thousands_separator(1_000)
|
|
156
|
+
expect(output).to eq('1,000')
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
it 'formats 999_999 as 999,999' do
|
|
160
|
+
output = Formatter.new.with_thousands_separator(999_999)
|
|
161
|
+
expect(output).to eq('999,999')
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
it 'formats 1_000_000 as 1,000,000' do
|
|
165
|
+
output = Formatter.new.with_thousands_separator(1_000_000)
|
|
166
|
+
expect(output).to eq('1,000,000')
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
it 'formats 999_999_999 as 999,999,999' do
|
|
170
|
+
output = Formatter.new.with_thousands_separator(999_999_999)
|
|
171
|
+
expect(output).to eq('999,999,999')
|
|
172
|
+
end
|
|
173
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Statistical Analysis of Polling Results (SAPoR)
|
|
3
|
+
# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
|
|
4
|
+
#
|
|
5
|
+
# This file is part of SAPoR.
|
|
6
|
+
#
|
|
7
|
+
# SAPoR is free software: you can redistribute it and/or modify it under the
|
|
8
|
+
# terms of the GNU General Public License as published by the Free Software
|
|
9
|
+
# Foundation, either version 3 of the License, or (at your option) any later
|
|
10
|
+
# version.
|
|
11
|
+
#
|
|
12
|
+
# SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
13
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
14
|
+
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You can find a copy of the GNU General Public License in /doc/gpl.txt
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'spec_helper'
|
|
20
|
+
|
|
21
|
+
describe Sapor::Poland, '#area_code' do
|
|
22
|
+
it 'returns PL as the area code' do
|
|
23
|
+
expect(Sapor::Poland.instance.area_code).to eq('PL')
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe Sapor::Poland, '#no_of_seats' do
|
|
28
|
+
it 'returns 460 as the number of seats' do
|
|
29
|
+
expect(Sapor::Poland.instance.no_of_seats).to eq(460)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe Sapor::Poland, '#population_size' do
|
|
34
|
+
it 'returns a population size of 15,200,671' do
|
|
35
|
+
expect(Sapor::Poland.instance.population_size).to eq(15_200_671)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe Sapor::Poland, '#seats' do
|
|
40
|
+
it 'calculates the number of seats for the election of 2015 correctly' do
|
|
41
|
+
Poland = Sapor::Poland.instance
|
|
42
|
+
results = Poland.overall_election_results_of_2015
|
|
43
|
+
seats = Poland.seats(results)
|
|
44
|
+
expect(seats['Prawo i Sprawiedliwość']).to eq(235)
|
|
45
|
+
expect(seats['Platforma Obywatelska']).to eq(138)
|
|
46
|
+
expect(seats['Kukiz’15']).to eq(42)
|
|
47
|
+
expect(seats['.Nowoczesna']).to eq(28)
|
|
48
|
+
expect(seats['Polskie Stronnictwo Ludowe']).to eq(16)
|
|
49
|
+
expect(seats['Mniejszość Niemiecka']).to eq(1)
|
|
50
|
+
expect(seats['Zjednoczona Lewica']).to eq(0)
|
|
51
|
+
expect(seats['Lewica Razem']).to eq(0)
|
|
52
|
+
expect(seats['KORWiN']).to eq(0)
|
|
53
|
+
expect(seats['JOW Bezpartyjni']).to eq(0)
|
|
54
|
+
expect(seats['Stonoga Partia Polska']).to eq(0)
|
|
55
|
+
expect(seats['Ruch Społeczny Rzeczypospolitej Polskiej']).to eq(0)
|
|
56
|
+
expect(seats['Zjednoczeni dla Śląska']).to eq(0)
|
|
57
|
+
expect(seats['Samoobrona']).to eq(0)
|
|
58
|
+
expect(seats['Grzegorz Braun „Szczęść Boże!”']).to eq(0)
|
|
59
|
+
expect(seats['Kongres Nowej Prawicy']).to eq(0)
|
|
60
|
+
expect(seats['Obywatele do Parlamentu']).to eq(0)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Statistical Analysis of Polling Results (SAPoR)
|
|
3
|
+
# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
|
|
4
|
+
#
|
|
5
|
+
# This file is part of SAPoR.
|
|
6
|
+
#
|
|
7
|
+
# SAPoR is free software: you can redistribute it and/or modify it under the
|
|
8
|
+
# terms of the GNU General Public License as published by the Free Software
|
|
9
|
+
# Foundation, either version 3 of the License, or (at your option) any later
|
|
10
|
+
# version.
|
|
11
|
+
#
|
|
12
|
+
# SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
13
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
14
|
+
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You can find a copy of the GNU General Public License in /doc/gpl.txt
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'spec_helper'
|
|
20
|
+
|
|
21
|
+
describe Sapor::PolandWithKoAndLWithoutNPoRAndZl, '#area_code' do
|
|
22
|
+
it 'returns PL∪{KO,L}\{N,PO,R,ZL} as the area code' do
|
|
23
|
+
expect(Sapor::PolandWithKoAndLWithoutNPoRAndZl.instance.area_code).to eq('PL∪{KO,L}\{N,PO,R,ZL}')
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe Sapor::PolandWithKoAndLWithoutNPoRAndZl, '#no_of_seats' do
|
|
28
|
+
it 'returns 460 as the number of seats' do
|
|
29
|
+
expect(Sapor::PolandWithKoAndLWithoutNPoRAndZl.instance.no_of_seats).to eq(460)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe Sapor::PolandWithKoAndLWithoutNPoRAndZl, '#population_size' do
|
|
34
|
+
it 'returns a population size of 15,200,671' do
|
|
35
|
+
expect(Sapor::PolandWithKoAndLWithoutNPoRAndZl.instance.population_size).to eq(15_200_671)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe Sapor::PolandWithKoAndLWithoutNPoRAndZl, '#seats' do
|
|
40
|
+
it 'calculates the number of seats for the election of 2015 correctly' do
|
|
41
|
+
PolandWithKoAndLWithoutNPoRAndZl = Sapor::PolandWithKoAndLWithoutNPoRAndZl.instance
|
|
42
|
+
results = PolandWithKoAndLWithoutNPoRAndZl.overall_election_results_of_2015
|
|
43
|
+
seats = PolandWithKoAndLWithoutNPoRAndZl.seats(results)
|
|
44
|
+
expect(seats['Prawo i Sprawiedliwość']).to eq(235 - 30)
|
|
45
|
+
expect(seats['Koalicja Obywatelska']).to eq(138 + 24)
|
|
46
|
+
expect(seats['Kukiz’15']).to eq(42 - 7)
|
|
47
|
+
expect(seats['Polskie Stronnictwo Ludowe']).to eq(16 - 4)
|
|
48
|
+
expect(seats['Mniejszość Niemiecka']).to eq(1)
|
|
49
|
+
expect(seats['Lewica']).to eq(0 + 45)
|
|
50
|
+
expect(seats['KORWiN']).to eq(0)
|
|
51
|
+
expect(seats['JOW Bezpartyjni']).to eq(0)
|
|
52
|
+
expect(seats['Stonoga Partia Polska']).to eq(0)
|
|
53
|
+
expect(seats['Ruch Społeczny Rzeczypospolitej Polskiej']).to eq(0)
|
|
54
|
+
expect(seats['Zjednoczeni dla Śląska']).to eq(0)
|
|
55
|
+
expect(seats['Samoobrona']).to eq(0)
|
|
56
|
+
expect(seats['Grzegorz Braun „Szczęść Boże!”']).to eq(0)
|
|
57
|
+
expect(seats['Kongres Nowej Prawicy']).to eq(0)
|
|
58
|
+
expect(seats['Obywatele do Parlamentu']).to eq(0)
|
|
59
|
+
end
|
|
60
|
+
end
|