sapor 0.3.4
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 +82 -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,101 @@
|
|
|
1
|
+
|
|
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::Spain, '#area_code' do
|
|
23
|
+
it 'returns ES as the area code' do
|
|
24
|
+
expect(Sapor::Spain.instance.area_code).to eq('ES')
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe Sapor::Spain, '#no_of_seats' do
|
|
29
|
+
it 'returns 135 as the number of seats' do
|
|
30
|
+
expect(Sapor::Spain.instance.no_of_seats).to eq(350)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe Sapor::Spain, '#population_size' do
|
|
35
|
+
it 'returns a population size of 24,053,755' do
|
|
36
|
+
expect(Sapor::Spain.instance.population_size).to eq(24_053_755)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe Sapor::Spain, '#seats' do
|
|
41
|
+
it 'calculates the number of seats for the election of 2016 correctly' do
|
|
42
|
+
Spain = Sapor::Spain.instance
|
|
43
|
+
results = Spain.overall_election_results_of_2016
|
|
44
|
+
seats = Spain.seats(results)
|
|
45
|
+
expect(seats['Partido Popular']).to eq(137)
|
|
46
|
+
expect(seats['Partido Socialista Obrero Español']).to eq(85)
|
|
47
|
+
expect(seats['Unidos Podemos']).to eq(71)
|
|
48
|
+
expect(seats['Ciudadanos–Partido de la Ciudadanía']).to eq(32)
|
|
49
|
+
expect(seats['Esquerra Republicana de Catalunya–Catalunya Sí']).to eq(9)
|
|
50
|
+
expect(seats['Partit Demòcrata Europeu Català']).to eq(8)
|
|
51
|
+
expect(seats['Euzko Alderdi Jeltzalea/Partido Nacionalista Vasco']).to eq(5)
|
|
52
|
+
expect(seats['Partido Animalista Contra el Maltrato Animal']).to eq(0)
|
|
53
|
+
expect(seats['Euskal Herria Bildu']).to eq(2)
|
|
54
|
+
expect(seats['Coalición Canaria–Partido Nacionalista Canario']).to eq(1)
|
|
55
|
+
expect(seats['Recortes Cero–Grupo Verde']).to eq(0)
|
|
56
|
+
expect(seats['Unión Progreso y Democracia']).to eq(0)
|
|
57
|
+
expect(seats['Vox']).to eq(0)
|
|
58
|
+
expect(seats['Bloque Nacionalista Galego–Nós Candidatura Galega']).to eq(0)
|
|
59
|
+
expect(seats['Partido Comunista de los Pueblos de España']).to eq(0)
|
|
60
|
+
expect(seats['Geroa Bai']).to eq(0)
|
|
61
|
+
expect(seats['Escaños en Blanco']).to eq(0)
|
|
62
|
+
expect(seats['Falange Española de las JONS']).to eq(0)
|
|
63
|
+
expect(seats['Sobirania per a les Illes']).to eq(0)
|
|
64
|
+
expect(seats['Som Valencians']).to eq(0)
|
|
65
|
+
expect(seats['Ciudadanos de Centro Democrático']).to eq(0)
|
|
66
|
+
expect(seats['Partit Comunista del Poble de Catalunya']).to eq(0)
|
|
67
|
+
expect(seats['Solidaridad y Autogestión Internacionalista']).to eq(0)
|
|
68
|
+
expect(seats['Partido Humanista']).to eq(0)
|
|
69
|
+
expect(seats['Los Verdes Ecopacifistas']).to eq(0)
|
|
70
|
+
expect(seats['Partido Libertario']).to eq(0)
|
|
71
|
+
expect(seats['Ciudadanos de Centro Democrático–Candidatura Independiente']).to eq(0)
|
|
72
|
+
expect(seats['Unión del Pueblo Leonés']).to eq(0)
|
|
73
|
+
expect(seats['Partido Comunista Obrero Español']).to eq(0)
|
|
74
|
+
expect(seats['Partido Somos Andaluces por Andalucía y los Pueblos']).to eq(0)
|
|
75
|
+
expect(seats['Juntos por Canarias']).to eq(0)
|
|
76
|
+
expect(seats['Partido Familia y Vida']).to eq(0)
|
|
77
|
+
expect(seats['Ciudadanos Libres Unidos']).to eq(0)
|
|
78
|
+
expect(seats['Plataforma per Catalunya']).to eq(0)
|
|
79
|
+
expect(seats['Movimiento Aragonés Social']).to eq(0)
|
|
80
|
+
expect(seats['Izquierda Anticapitalista Revolucionaria']).to eq(0)
|
|
81
|
+
expect(seats['Unidad del Pueblo']).to eq(0)
|
|
82
|
+
expect(seats['Partido Regionalista del País Leonés']).to eq(0)
|
|
83
|
+
expect(seats['Libertate Nafarra']).to eq(0)
|
|
84
|
+
expect(seats['Renovació Política']).to eq(0)
|
|
85
|
+
expect(seats['Independientes por Aragón']).to eq(0)
|
|
86
|
+
expect(seats['ENTABAN']).to eq(0)
|
|
87
|
+
expect(seats['Iniciativa Merindades de Castilla']).to eq(0)
|
|
88
|
+
expect(seats['Partido Unionista Estado de España']).to eq(0)
|
|
89
|
+
expect(seats['La Falange']).to eq(0)
|
|
90
|
+
expect(seats['Alianza de Centro Democrático']).to eq(0)
|
|
91
|
+
expect(seats['La Fuerza de los Mayores de España']).to eq(0)
|
|
92
|
+
expect(seats['Hegoalde Rioja–Libertad Navarra']).to eq(0)
|
|
93
|
+
expect(seats['Unión de Todos']).to eq(0)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
describe Sapor::Spain, '#threshold' do
|
|
98
|
+
it 'returns a threshold of 3%' do
|
|
99
|
+
expect(Sapor::Spain.instance.threshold).to eq(0.03)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
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::Sweden20140914, '#area_code' do
|
|
22
|
+
it 'returns SE@20140914 as the area code' do
|
|
23
|
+
expect(Sapor::Sweden20140914.instance.area_code).to eq('SE@20140914')
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe Sapor::Sweden20140914, '#no_of_seats' do
|
|
28
|
+
it 'returns 349 as the number of seats' do
|
|
29
|
+
expect(Sapor::Sweden20140914.instance.no_of_seats).to eq(349)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe Sapor::Sweden20140914, '#population_size' do
|
|
34
|
+
it 'returns a population size of 6,231,573' do
|
|
35
|
+
expect(Sapor::Sweden20140914.instance.population_size).to \
|
|
36
|
+
eq(6_231_573)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe Sapor::Sweden20140914, '#seats' do
|
|
41
|
+
it 'calculates the number of seats for the election of 2014' do
|
|
42
|
+
results = { 'Sveriges socialdemokratiska arbetareparti' => 1_932_711,
|
|
43
|
+
'Moderata samlingspartiet' => 1_453_517,
|
|
44
|
+
'Sverigedemokraterna' => 801_178,
|
|
45
|
+
'Miljöpartiet de gröna' => 429_275,
|
|
46
|
+
'Centerpartiet' => 380_937,
|
|
47
|
+
'Vänsterpartiet' => 356_331,
|
|
48
|
+
'Folkpartiet liberalerna' => 337_773,
|
|
49
|
+
'Kristdemokraterna' => 284_806,
|
|
50
|
+
'Feministiskt initiativ' => 194_719,
|
|
51
|
+
'Piratpartiet' => 26_515,
|
|
52
|
+
'Enhet' => 6_277,
|
|
53
|
+
'Svenskarnas parti' => 4_189,
|
|
54
|
+
'Djurens parti' => 4_093,
|
|
55
|
+
'Kristna Värdepartiet' => 3_553,
|
|
56
|
+
'Landsbygdspartiet oberoende' => 3_450,
|
|
57
|
+
'SPI Välfärden' => 3_369,
|
|
58
|
+
'Direktdemokraterna' => 1_417,
|
|
59
|
+
'Klassiskt liberala partiet' => 1_210,
|
|
60
|
+
'Vägvalet' => 1_037,
|
|
61
|
+
'Rättvisepartiet Socialisterna' => 791,
|
|
62
|
+
'Sveriges kommunistiska parti' => 558,
|
|
63
|
+
'Framstegspartiet' => 196,
|
|
64
|
+
'Europeiska arbetarpartiet' => 140,
|
|
65
|
+
'Hälsopartiet' => 131,
|
|
66
|
+
'Fredsdemokraterna' => 56,
|
|
67
|
+
'Gula partiet' => 35,
|
|
68
|
+
'Nya partiet' => 32,
|
|
69
|
+
'Frihetliga rättvisepartiet' => 32,
|
|
70
|
+
'Skånepartiet' => 28,
|
|
71
|
+
'De nya svenskarna' => 18,
|
|
72
|
+
'Reformist Neutral Partiet' => 11,
|
|
73
|
+
'Republikanerna' => 9,
|
|
74
|
+
'Djurägarpartiet' => 3,
|
|
75
|
+
'Humandemokraterna' => 2 }
|
|
76
|
+
seats = Sapor::Sweden20140914.instance.seats(results)
|
|
77
|
+
expect(seats['Sveriges socialdemokratiska arbetareparti']).to eq(113 - 1)
|
|
78
|
+
expect(seats['Moderata samlingspartiet']).to eq(84 + 1)
|
|
79
|
+
expect(seats['Sverigedemokraterna']).to eq(49 - 2)
|
|
80
|
+
expect(seats['Miljöpartiet de gröna']).to eq(25)
|
|
81
|
+
expect(seats['Centerpartiet']).to eq(22)
|
|
82
|
+
expect(seats['Vänsterpartiet']).to eq(21)
|
|
83
|
+
expect(seats['Folkpartiet liberalerna']).to eq(19 + 1)
|
|
84
|
+
expect(seats['Kristdemokraterna']).to eq(16 + 1)
|
|
85
|
+
expect(seats['Feministiskt initiativ']).to eq(0)
|
|
86
|
+
expect(seats['Piratpartiet']).to eq(0)
|
|
87
|
+
expect(seats['Enhet']).to eq(0)
|
|
88
|
+
expect(seats['Svenskarnas parti']).to eq(0)
|
|
89
|
+
expect(seats['Djurens parti']).to eq(0)
|
|
90
|
+
expect(seats['Kristna Värdepartiet']).to eq(0)
|
|
91
|
+
expect(seats['Landsbygdspartiet oberoende']).to eq(0)
|
|
92
|
+
expect(seats['SPI Välfärden']).to eq(0)
|
|
93
|
+
expect(seats['Direktdemokraterna']).to eq(0)
|
|
94
|
+
expect(seats['Klassiskt liberala partiet']).to eq(0)
|
|
95
|
+
expect(seats['Vägvalet']).to eq(0)
|
|
96
|
+
expect(seats['Rättvisepartiet Socialisterna']).to eq(0)
|
|
97
|
+
expect(seats['Sveriges kommunistiska parti']).to eq(0)
|
|
98
|
+
expect(seats['Framstegspartiet']).to eq(0)
|
|
99
|
+
expect(seats['Europeiska arbetarpartiet']).to eq(0)
|
|
100
|
+
expect(seats['Hälsopartiet']).to eq(0)
|
|
101
|
+
expect(seats['Fredsdemokraterna']).to eq(0)
|
|
102
|
+
expect(seats['Gula partiet']).to eq(0)
|
|
103
|
+
expect(seats['Nya partiet']).to eq(0)
|
|
104
|
+
expect(seats['Frihetliga rättvisepartiet']).to eq(0)
|
|
105
|
+
expect(seats['Skånepartiet']).to eq(0)
|
|
106
|
+
expect(seats['De nya svenskarna']).to eq(0)
|
|
107
|
+
expect(seats['Reformist Neutral Partiet']).to eq(0)
|
|
108
|
+
expect(seats['Republikanerna']).to eq(0)
|
|
109
|
+
expect(seats['Djurägarpartiet']).to eq(0)
|
|
110
|
+
expect(seats['Humandemokraterna']).to eq(0)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
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::Sweden, '#area_code' do
|
|
23
|
+
it 'returns SE as the area code' do
|
|
24
|
+
expect(Sapor::Sweden.instance.area_code).to eq('SE')
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe Sapor::Sweden, '#no_of_seats' do
|
|
29
|
+
it 'returns 349 as the number of seats' do
|
|
30
|
+
expect(Sapor::Sweden.instance.no_of_seats).to eq(349)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe Sapor::Sweden, '#population_size' do
|
|
35
|
+
it 'returns a population size of 6,231,573' do
|
|
36
|
+
expect(Sapor::Sweden.instance.population_size).to \
|
|
37
|
+
eq(6_231_573)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe Sapor::Sweden, '#seats' do
|
|
42
|
+
it 'calculates the number of seats for the election of 2014' do
|
|
43
|
+
results = { 'Sveriges socialdemokratiska arbetareparti' => 1_932_711,
|
|
44
|
+
'Moderata samlingspartiet' => 1_453_517,
|
|
45
|
+
'Sverigedemokraterna' => 801_178,
|
|
46
|
+
'Miljöpartiet de gröna' => 429_275,
|
|
47
|
+
'Centerpartiet' => 380_937,
|
|
48
|
+
'Vänsterpartiet' => 356_331,
|
|
49
|
+
'Folkpartiet liberalerna' => 337_773,
|
|
50
|
+
'Kristdemokraterna' => 284_806,
|
|
51
|
+
'Feministiskt initiativ' => 194_719,
|
|
52
|
+
'Piratpartiet' => 26_515,
|
|
53
|
+
'Enhet' => 6_277,
|
|
54
|
+
'Svenskarnas parti' => 4_189,
|
|
55
|
+
'Djurens parti' => 4_093,
|
|
56
|
+
'Kristna Värdepartiet' => 3_553,
|
|
57
|
+
'Landsbygdspartiet oberoende' => 3_450,
|
|
58
|
+
'SPI Välfärden' => 3_369,
|
|
59
|
+
'Direktdemokraterna' => 1_417,
|
|
60
|
+
'Klassiskt liberala partiet' => 1_210,
|
|
61
|
+
'Vägvalet' => 1_037,
|
|
62
|
+
'Rättvisepartiet Socialisterna' => 791,
|
|
63
|
+
'Sveriges kommunistiska parti' => 558,
|
|
64
|
+
'Framstegspartiet' => 196,
|
|
65
|
+
'Europeiska arbetarpartiet' => 140,
|
|
66
|
+
'Hälsopartiet' => 131,
|
|
67
|
+
'Fredsdemokraterna' => 56,
|
|
68
|
+
'Gula partiet' => 35,
|
|
69
|
+
'Nya partiet' => 32,
|
|
70
|
+
'Frihetliga rättvisepartiet' => 32,
|
|
71
|
+
'Skånepartiet' => 28,
|
|
72
|
+
'De nya svenskarna' => 18,
|
|
73
|
+
'Reformist Neutral Partiet' => 11,
|
|
74
|
+
'Republikanerna' => 9,
|
|
75
|
+
'Djurägarpartiet' => 3,
|
|
76
|
+
'Humandemokraterna' => 2 }
|
|
77
|
+
seats = Sapor::Sweden.instance.seats(results)
|
|
78
|
+
expect(seats['Sveriges socialdemokratiska arbetareparti']).to eq(113 - 1)
|
|
79
|
+
expect(seats['Moderata samlingspartiet']).to eq(84 + 1)
|
|
80
|
+
expect(seats['Sverigedemokraterna']).to eq(49 - 2)
|
|
81
|
+
expect(seats['Miljöpartiet de gröna']).to eq(25)
|
|
82
|
+
expect(seats['Centerpartiet']).to eq(22)
|
|
83
|
+
expect(seats['Vänsterpartiet']).to eq(21)
|
|
84
|
+
expect(seats['Folkpartiet liberalerna']).to eq(19 + 1)
|
|
85
|
+
expect(seats['Kristdemokraterna']).to eq(16 + 1)
|
|
86
|
+
expect(seats['Feministiskt initiativ']).to eq(0)
|
|
87
|
+
expect(seats['Piratpartiet']).to eq(0)
|
|
88
|
+
expect(seats['Enhet']).to eq(0)
|
|
89
|
+
expect(seats['Svenskarnas parti']).to eq(0)
|
|
90
|
+
expect(seats['Djurens parti']).to eq(0)
|
|
91
|
+
expect(seats['Kristna Värdepartiet']).to eq(0)
|
|
92
|
+
expect(seats['Landsbygdspartiet oberoende']).to eq(0)
|
|
93
|
+
expect(seats['SPI Välfärden']).to eq(0)
|
|
94
|
+
expect(seats['Direktdemokraterna']).to eq(0)
|
|
95
|
+
expect(seats['Klassiskt liberala partiet']).to eq(0)
|
|
96
|
+
expect(seats['Vägvalet']).to eq(0)
|
|
97
|
+
expect(seats['Rättvisepartiet Socialisterna']).to eq(0)
|
|
98
|
+
expect(seats['Sveriges kommunistiska parti']).to eq(0)
|
|
99
|
+
expect(seats['Framstegspartiet']).to eq(0)
|
|
100
|
+
expect(seats['Europeiska arbetarpartiet']).to eq(0)
|
|
101
|
+
expect(seats['Hälsopartiet']).to eq(0)
|
|
102
|
+
expect(seats['Fredsdemokraterna']).to eq(0)
|
|
103
|
+
expect(seats['Gula partiet']).to eq(0)
|
|
104
|
+
expect(seats['Nya partiet']).to eq(0)
|
|
105
|
+
expect(seats['Frihetliga rättvisepartiet']).to eq(0)
|
|
106
|
+
expect(seats['Skånepartiet']).to eq(0)
|
|
107
|
+
expect(seats['De nya svenskarna']).to eq(0)
|
|
108
|
+
expect(seats['Reformist Neutral Partiet']).to eq(0)
|
|
109
|
+
expect(seats['Republikanerna']).to eq(0)
|
|
110
|
+
expect(seats['Djurägarpartiet']).to eq(0)
|
|
111
|
+
expect(seats['Humandemokraterna']).to eq(0)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
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::UnitedKingdom, '#area_code' do
|
|
23
|
+
it 'returns UK as the area code' do
|
|
24
|
+
expect(Sapor::UnitedKingdom.instance.area_code).to eq('UK')
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe Sapor::UnitedKingdom, '#no_of_seats' do
|
|
29
|
+
it 'returns 650 as the number of seats' do
|
|
30
|
+
expect(Sapor::UnitedKingdom.instance.no_of_seats).to eq(650)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe Sapor::UnitedKingdom, '#population_size' do
|
|
35
|
+
it 'returns a population size of 32,204,124' do
|
|
36
|
+
expect(Sapor::UnitedKingdom.instance.population_size).to eq(32_204_124)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe Sapor::UnitedKingdom, '#seats' do
|
|
41
|
+
it 'calculates the number of seats for the election of 8 June 2017' do
|
|
42
|
+
uk = Sapor::UnitedKingdom.instance
|
|
43
|
+
results = uk.overall_election_results_of_2017
|
|
44
|
+
seats = uk.seats(results)
|
|
45
|
+
expect(seats['Conservative Party']).to eq(317 + 1)
|
|
46
|
+
expect(seats['Labour Party']).to eq(262)
|
|
47
|
+
expect(seats['Scottish National Party']).to eq(35)
|
|
48
|
+
expect(seats['Liberal Democrats']).to eq(12)
|
|
49
|
+
expect(seats['Democratic Unionist Party']).to eq(10)
|
|
50
|
+
expect(seats['Sinn Féin']).to eq(7)
|
|
51
|
+
expect(seats['Plaid Cymru']).to eq(4)
|
|
52
|
+
expect(seats['Social Democratic & Labour Party']).to eq(0)
|
|
53
|
+
expect(seats['Ulster Unionist Party']).to eq(0)
|
|
54
|
+
expect(seats['UK Independence Party']).to eq(0)
|
|
55
|
+
expect(seats['Green Party']).to eq(1)
|
|
56
|
+
expect(seats['Small or local party, or independent candidate']).to eq(1)
|
|
57
|
+
expect(seats['All other candidates']).to eq(0)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe Sapor::UnitedKingdom, '#threshold' do
|
|
62
|
+
it 'returns there is no threshold' do
|
|
63
|
+
expect(Sapor::UnitedKingdom.instance.threshold).to be_nil
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
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::UnitedKingdomWithBrexitAndChuk, '#area_code' do
|
|
23
|
+
it 'returns UK∪{BREXIT,ChUK} as the area code' do
|
|
24
|
+
expect(Sapor::UnitedKingdomWithBrexitAndChuk.instance.area_code).to eq('UK∪{BREXIT,ChUK}')
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe Sapor::UnitedKingdomWithBrexitAndChuk, '#no_of_seats' do
|
|
29
|
+
it 'returns 650 as the number of seats' do
|
|
30
|
+
expect(Sapor::UnitedKingdomWithBrexitAndChuk.instance.no_of_seats).to eq(650)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe Sapor::UnitedKingdomWithBrexitAndChuk, '#population_size' do
|
|
35
|
+
it 'returns a population size of 32,204,124' do
|
|
36
|
+
expect(Sapor::UnitedKingdomWithBrexitAndChuk.instance.population_size).to eq(32_204_124)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe Sapor::UnitedKingdomWithBrexitAndChuk, '#seats' do
|
|
41
|
+
it 'calculates the number of seats for the election of 8 June 2017' do
|
|
42
|
+
uk = Sapor::UnitedKingdomWithBrexitAndChuk.instance
|
|
43
|
+
results = uk.overall_election_results_of_2017
|
|
44
|
+
seats = uk.seats(results)
|
|
45
|
+
expect(seats['Conservative Party']).to eq(317 + 1)
|
|
46
|
+
expect(seats['Labour Party']).to eq(262)
|
|
47
|
+
expect(seats['Scottish National Party']).to eq(35)
|
|
48
|
+
expect(seats['Liberal Democrats']).to eq(12)
|
|
49
|
+
expect(seats['Democratic Unionist Party']).to eq(10)
|
|
50
|
+
expect(seats['Sinn Féin']).to eq(7)
|
|
51
|
+
expect(seats['Plaid Cymru']).to eq(4)
|
|
52
|
+
expect(seats['Social Democratic & Labour Party']).to eq(0)
|
|
53
|
+
expect(seats['Ulster Unionist Party']).to eq(0)
|
|
54
|
+
expect(seats['UK Independence Party']).to eq(0)
|
|
55
|
+
expect(seats['Brexit Party']).to eq(0)
|
|
56
|
+
expect(seats['Green Party']).to eq(1)
|
|
57
|
+
expect(seats['Small or local party, or independent candidate']).to eq(1)
|
|
58
|
+
expect(seats['Change UK']).to eq(0)
|
|
59
|
+
expect(seats['All other candidates']).to eq(0)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe Sapor::UnitedKingdomWithBrexitAndChuk, '#threshold' do
|
|
64
|
+
it 'returns there is no threshold' do
|
|
65
|
+
expect(Sapor::UnitedKingdomWithBrexitAndChuk.instance.threshold).to be_nil
|
|
66
|
+
end
|
|
67
|
+
end
|