sapor 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. checksums.yaml +7 -0
  2. data/Area Class Diagram.dia +0 -0
  3. data/Area Class Diagram.png +0 -0
  4. data/Class Diagram.dia +0 -0
  5. data/Class Diagram.png +0 -0
  6. data/Example-Catalonia.md +361 -0
  7. data/Example-Flanders.md +486 -0
  8. data/Example-Greece.md +25 -0
  9. data/Example-Oslo.md +678 -0
  10. data/Example-UnitedKingdom-Referendum.md +132 -0
  11. data/Examples.md +15 -0
  12. data/LICENSE +674 -0
  13. data/README.md +103 -0
  14. data/Rakefile +18 -0
  15. data/Technical Documentation.md +14 -0
  16. data/bin/create_installation_package.sh +49 -0
  17. data/bin/install.sh +45 -0
  18. data/bin/sapor.rb +24 -0
  19. data/bin/sapor.sh +106 -0
  20. data/data/hu/hungary-2014.txt +1680 -0
  21. data/data/hu/hungary_2014_screen_scraper.rb +48 -0
  22. data/data/hu/hungary_2014_to_psv.rb +80 -0
  23. data/data/hu/index-2014.txt +106 -0
  24. data/data/ie/2016-04-28_general-election-2016-candidate-details-csv_en.csv +552 -0
  25. data/data/ie/ireland_2016_to_psv.rb +138 -0
  26. data/data/no/2020-01-01_partifordeling_1_st_2017.csv +335 -0
  27. data/data/no/norway_2017_to_psv.rb +61 -0
  28. data/data/pl/2015-gl-lis-okr.csv +42 -0
  29. data/data/pl/poland_2015_to_psv.rb +79 -0
  30. data/data/pl/poland_2015_to_psv_with_ko_and_rsw.rb +94 -0
  31. data/data/pl/poland_2015_to_psv_with_ko_konf_kp_l_and_zp.rb +100 -0
  32. data/data/pl/poland_2015_to_psv_with_ko_sld_and_wi.rb +92 -0
  33. data/data/pl/poland_2015_to_psv_with_sld.rb +84 -0
  34. data/data/pl/poland_2015_to_psv_with_sld_and_wi.rb +85 -0
  35. data/data/uk/inject_ukip_2015_as_brexit_2019_in_2017.rb +54 -0
  36. data/data/uk/united_kingdom_2015.txt +651 -0
  37. data/data/uk/united_kingdom_2015_to_psv.rb +104 -0
  38. data/data/uk/united_kingdom_2017.txt +651 -0
  39. data/data/uk/united_kingdom_2017_to_psv.rb +104 -0
  40. data/data/uk/united_kingdom_2017_to_psv_with_brexit_and_chuk.rb +113 -0
  41. data/data/uk/united_kingdom_2017_to_psv_with_tig.rb +111 -0
  42. data/lib/sapor.rb +147 -0
  43. data/lib/sapor/binomials_cache.rb +45 -0
  44. data/lib/sapor/combinations_distribution.rb +222 -0
  45. data/lib/sapor/denominators.rb +67 -0
  46. data/lib/sapor/dichotomies.rb +138 -0
  47. data/lib/sapor/dichotomy.rb +164 -0
  48. data/lib/sapor/first_past_the_post.rb +82 -0
  49. data/lib/sapor/largest_remainder.rb +118 -0
  50. data/lib/sapor/log4r_logger.rb +49 -0
  51. data/lib/sapor/log_facade.rb +40 -0
  52. data/lib/sapor/many_past_the_post.rb +113 -0
  53. data/lib/sapor/multi_district_leveled_proportional.rb +64 -0
  54. data/lib/sapor/multi_district_proportional.rb +123 -0
  55. data/lib/sapor/multi_district_variable_threshold_proportional.rb +128 -0
  56. data/lib/sapor/number_formatter.rb +45 -0
  57. data/lib/sapor/options.rb +73 -0
  58. data/lib/sapor/poll.rb +282 -0
  59. data/lib/sapor/polychotomy.rb +200 -0
  60. data/lib/sapor/pseudorandom_multirange_enumerator.rb +87 -0
  61. data/lib/sapor/referendum_polychotomy.rb +165 -0
  62. data/lib/sapor/regional_data/area.rb +100 -0
  63. data/lib/sapor/regional_data/austria.rb +84 -0
  64. data/lib/sapor/regional_data/belgium-brussels-2014.psv +46 -0
  65. data/lib/sapor/regional_data/belgium-brussels-20190526.psv +33 -0
  66. data/lib/sapor/regional_data/belgium-flanders-2014.psv +80 -0
  67. data/lib/sapor/regional_data/belgium-flanders-20190526.psv +74 -0
  68. data/lib/sapor/regional_data/belgium-wallonia-2014.psv +114 -0
  69. data/lib/sapor/regional_data/belgium-wallonia-20190526.psv +93 -0
  70. data/lib/sapor/regional_data/belgium.rb +97 -0
  71. data/lib/sapor/regional_data/belgium_brussels.rb +62 -0
  72. data/lib/sapor/regional_data/belgium_flanders.rb +64 -0
  73. data/lib/sapor/regional_data/belgium_wallonia.rb +63 -0
  74. data/lib/sapor/regional_data/catalonia-2012-2015.psv +100 -0
  75. data/lib/sapor/regional_data/catalonia-2012.psv +87 -0
  76. data/lib/sapor/regional_data/catalonia-2015-jxcat.psv +68 -0
  77. data/lib/sapor/regional_data/catalonia-2015-no-jxsi.psv +68 -0
  78. data/lib/sapor/regional_data/catalonia-2015.psv +63 -0
  79. data/lib/sapor/regional_data/catalonia-20171221-with-vox.psv +67 -0
  80. data/lib/sapor/regional_data/catalonia-20171221.psv +61 -0
  81. data/lib/sapor/regional_data/catalonia.rb +124 -0
  82. data/lib/sapor/regional_data/denmark-20150618-with-e-and-p.psv +164 -0
  83. data/lib/sapor/regional_data/denmark-20150618-with-e.psv +153 -0
  84. data/lib/sapor/regional_data/denmark-20150618-with-p.psv +153 -0
  85. data/lib/sapor/regional_data/denmark-20150618.psv +142 -0
  86. data/lib/sapor/regional_data/denmark.rb +128 -0
  87. data/lib/sapor/regional_data/denmark_with_e.rb +128 -0
  88. data/lib/sapor/regional_data/denmark_with_e_and_p.rb +128 -0
  89. data/lib/sapor/regional_data/denmark_with_p.rb +128 -0
  90. data/lib/sapor/regional_data/estonia.rb +88 -0
  91. data/lib/sapor/regional_data/european-union-great-britain-20140522-brexit-chuk.psv +172 -0
  92. data/lib/sapor/regional_data/european-union-great-britain-20140522.psv +146 -0
  93. data/lib/sapor/regional_data/european-union-great-britain-20190523.psv +141 -0
  94. data/lib/sapor/regional_data/european-union-ireland-2014-ia-ri-sd.psv +64 -0
  95. data/lib/sapor/regional_data/european-union-ireland-2014-ia-sd.psv +60 -0
  96. data/lib/sapor/regional_data/european-union-ireland-2014-ia.psv +56 -0
  97. data/lib/sapor/regional_data/european-union-ireland-2014-sd.psv +56 -0
  98. data/lib/sapor/regional_data/european-union-ireland-2014.psv +50 -0
  99. data/lib/sapor/regional_data/european-union-ireland-20190524-ia.psv +58 -0
  100. data/lib/sapor/regional_data/european-union-ireland-20190524.psv +52 -0
  101. data/lib/sapor/regional_data/european_union_27_austria.rb +76 -0
  102. data/lib/sapor/regional_data/european_union_27_croatia.rb +83 -0
  103. data/lib/sapor/regional_data/european_union_27_denmark.rb +77 -0
  104. data/lib/sapor/regional_data/european_union_27_estonia.rb +74 -0
  105. data/lib/sapor/regional_data/european_union_27_finland.rb +74 -0
  106. data/lib/sapor/regional_data/european_union_27_france.rb +84 -0
  107. data/lib/sapor/regional_data/european_union_27_ireland.rb +96 -0
  108. data/lib/sapor/regional_data/european_union_27_ireland_with_ia.rb +97 -0
  109. data/lib/sapor/regional_data/european_union_27_italy.rb +84 -0
  110. data/lib/sapor/regional_data/european_union_27_netherlands.rb +81 -0
  111. data/lib/sapor/regional_data/european_union_27_poland.rb +84 -0
  112. data/lib/sapor/regional_data/european_union_27_romania.rb +78 -0
  113. data/lib/sapor/regional_data/european_union_27_slovakia.rb +80 -0
  114. data/lib/sapor/regional_data/european_union_27_spain.rb +82 -0
  115. data/lib/sapor/regional_data/european_union_27_sweden.rb +76 -0
  116. data/lib/sapor/regional_data/european_union_austria.rb +76 -0
  117. data/lib/sapor/regional_data/european_union_bulgaria.rb +82 -0
  118. data/lib/sapor/regional_data/european_union_croatia.rb +83 -0
  119. data/lib/sapor/regional_data/european_union_cyprus.rb +72 -0
  120. data/lib/sapor/regional_data/european_union_czech_republic.rb +82 -0
  121. data/lib/sapor/regional_data/european_union_denmark.rb +77 -0
  122. data/lib/sapor/regional_data/european_union_estonia.rb +74 -0
  123. data/lib/sapor/regional_data/european_union_finland.rb +74 -0
  124. data/lib/sapor/regional_data/european_union_flanders.rb +74 -0
  125. data/lib/sapor/regional_data/european_union_france.rb +84 -0
  126. data/lib/sapor/regional_data/european_union_french_community_of_belgium.rb +73 -0
  127. data/lib/sapor/regional_data/european_union_germany.rb +86 -0
  128. data/lib/sapor/regional_data/european_union_great_britain.rb +98 -0
  129. data/lib/sapor/regional_data/european_union_greece.rb +77 -0
  130. data/lib/sapor/regional_data/european_union_hungary.rb +76 -0
  131. data/lib/sapor/regional_data/european_union_ireland.rb +96 -0
  132. data/lib/sapor/regional_data/european_union_ireland_with_ia.rb +97 -0
  133. data/lib/sapor/regional_data/european_union_italy.rb +84 -0
  134. data/lib/sapor/regional_data/european_union_latvia.rb +81 -0
  135. data/lib/sapor/regional_data/european_union_lithuania.rb +80 -0
  136. data/lib/sapor/regional_data/european_union_luxembourg.rb +75 -0
  137. data/lib/sapor/regional_data/european_union_malta.rb +71 -0
  138. data/lib/sapor/regional_data/european_union_netherlands.rb +81 -0
  139. data/lib/sapor/regional_data/european_union_northern_ireland.rb +75 -0
  140. data/lib/sapor/regional_data/european_union_poland.rb +84 -0
  141. data/lib/sapor/regional_data/european_union_portugal.rb +75 -0
  142. data/lib/sapor/regional_data/european_union_romania.rb +78 -0
  143. data/lib/sapor/regional_data/european_union_slovakia.rb +81 -0
  144. data/lib/sapor/regional_data/european_union_slovenia.rb +85 -0
  145. data/lib/sapor/regional_data/european_union_spain.rb +82 -0
  146. data/lib/sapor/regional_data/european_union_sweden.rb +76 -0
  147. data/lib/sapor/regional_data/finland-20150419-with-sin.psv +224 -0
  148. data/lib/sapor/regional_data/finland-20150419.psv +212 -0
  149. data/lib/sapor/regional_data/finland.rb +107 -0
  150. data/lib/sapor/regional_data/finland_with_sin.rb +107 -0
  151. data/lib/sapor/regional_data/flanders-2014.psv +96 -0
  152. data/lib/sapor/regional_data/flanders-20190526.psv +87 -0
  153. data/lib/sapor/regional_data/flanders.rb +115 -0
  154. data/lib/sapor/regional_data/france.rb +38 -0
  155. data/lib/sapor/regional_data/greece.rb +92 -0
  156. data/lib/sapor/regional_data/hungary-2014.psv +2104 -0
  157. data/lib/sapor/regional_data/hungary.rb +116 -0
  158. data/lib/sapor/regional_data/iceland-20161029-midflokkurinn.psv +94 -0
  159. data/lib/sapor/regional_data/iceland-20161029.psv +88 -0
  160. data/lib/sapor/regional_data/iceland-20171028-with-j.psv +94 -0
  161. data/lib/sapor/regional_data/iceland-20171028.psv +85 -0
  162. data/lib/sapor/regional_data/iceland.rb +149 -0
  163. data/lib/sapor/regional_data/ireland-20160226-2020-candidates.psv +322 -0
  164. data/lib/sapor/regional_data/ireland-20160226-2020.psv +344 -0
  165. data/lib/sapor/regional_data/ireland-20160226.psv +348 -0
  166. data/lib/sapor/regional_data/ireland.rb +165 -0
  167. data/lib/sapor/regional_data/latvia-20141004-kpv-p-par.psv +109 -0
  168. data/lib/sapor/regional_data/latvia-20141004-kpv-par.psv +103 -0
  169. data/lib/sapor/regional_data/latvia-20141004-kpv.psv +97 -0
  170. data/lib/sapor/regional_data/latvia-20141004.psv +89 -0
  171. data/lib/sapor/regional_data/latvia-20181006.psv +104 -0
  172. data/lib/sapor/regional_data/latvia.rb +111 -0
  173. data/lib/sapor/regional_data/luxembourg-20131020.psv +60 -0
  174. data/lib/sapor/regional_data/luxembourg-20181014.psv +59 -0
  175. data/lib/sapor/regional_data/luxembourg.rb +88 -0
  176. data/lib/sapor/regional_data/netherlands.rb +108 -0
  177. data/lib/sapor/regional_data/norway-20170911.psv +331 -0
  178. data/lib/sapor/regional_data/norway.rb +130 -0
  179. data/lib/sapor/regional_data/norwegian_municipality.rb +68 -0
  180. data/lib/sapor/regional_data/poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv +321 -0
  181. 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
  182. data/lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv +403 -0
  183. data/lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv +444 -0
  184. data/lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv +403 -0
  185. data/lib/sapor/regional_data/poland-20151025.psv +403 -0
  186. data/lib/sapor/regional_data/poland.rb +125 -0
  187. data/lib/sapor/regional_data/poland_with_ko_and_l_without_n_po_r_and_zl.rb +122 -0
  188. 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
  189. data/lib/sapor/regional_data/poland_with_ko_sld_and_wi_without_n_po_and_zl.rb +125 -0
  190. data/lib/sapor/regional_data/poland_with_sld_and_wi_without_zl.rb +126 -0
  191. data/lib/sapor/regional_data/poland_with_sld_without_zl.rb +126 -0
  192. data/lib/sapor/regional_data/portugal-20151004-with-a-and-ch-without-paf.psv +438 -0
  193. data/lib/sapor/regional_data/portugal-20151004-with-a-and-il-without-paf.psv +438 -0
  194. data/lib/sapor/regional_data/portugal-20151004-with-a-ch-and-il-without-paf.psv +461 -0
  195. data/lib/sapor/regional_data/portugal-20151004-with-a-without-paf.psv +415 -0
  196. data/lib/sapor/regional_data/portugal-20151004-with-ch-and-il-without-paf.psv +438 -0
  197. data/lib/sapor/regional_data/portugal-20151004-without-paf.psv +392 -0
  198. data/lib/sapor/regional_data/portugal-20151004.psv +370 -0
  199. data/lib/sapor/regional_data/portugal.rb +101 -0
  200. data/lib/sapor/regional_data/portugal_with_a_and_ch_without_paf.rb +92 -0
  201. data/lib/sapor/regional_data/portugal_with_a_and_il_without_paf.rb +92 -0
  202. data/lib/sapor/regional_data/portugal_with_a_ch_and_il_without_paf.rb +92 -0
  203. data/lib/sapor/regional_data/portugal_with_a_without_paf.rb +92 -0
  204. data/lib/sapor/regional_data/portugal_with_ch_and_il_without_paf.rb +92 -0
  205. data/lib/sapor/regional_data/portugal_without_paf.rb +92 -0
  206. data/lib/sapor/regional_data/slovakia.rb +81 -0
  207. data/lib/sapor/regional_data/slovenia.rb +114 -0
  208. data/lib/sapor/regional_data/spain-20160626.psv +619 -0
  209. data/lib/sapor/regional_data/spain.rb +136 -0
  210. data/lib/sapor/regional_data/sweden.rb +92 -0
  211. data/lib/sapor/regional_data/sweden_20140914.rb +89 -0
  212. data/lib/sapor/regional_data/united_kingdom-2015.psv +4358 -0
  213. data/lib/sapor/regional_data/united_kingdom-20170608-brexit-chuk.psv +5154 -0
  214. data/lib/sapor/regional_data/united_kingdom-20170608-brexit.psv +4521 -0
  215. data/lib/sapor/regional_data/united_kingdom-20170608-tig.psv +4529 -0
  216. data/lib/sapor/regional_data/united_kingdom-20170608.psv +3894 -0
  217. data/lib/sapor/regional_data/united_kingdom.rb +94 -0
  218. data/lib/sapor/regional_data/united_kingdom_with_brexit.rb +110 -0
  219. data/lib/sapor/regional_data/united_kingdom_with_brexit_and_chuk.rb +111 -0
  220. data/lib/sapor/regional_data/united_kingdom_with_tig.rb +111 -0
  221. data/lib/sapor/regional_data/utopia.rb +66 -0
  222. data/lib/sapor/regional_data/wallonia-2014.psv +101 -0
  223. data/lib/sapor/regional_data/wallonia-20190526.psv +88 -0
  224. data/lib/sapor/regional_data/wallonia.rb +112 -0
  225. data/lib/sapor/representatives_polychotomy.rb +338 -0
  226. data/lib/sapor/single_district_proportional.rb +75 -0
  227. data/sapor.gemspec +35 -0
  228. data/spec/integration/area_spec.rb +28 -0
  229. data/spec/integration/poll_spec.rb +112 -0
  230. data/spec/integration/sample.poll +8 -0
  231. data/spec/spec_helper.rb +31 -0
  232. data/spec/unit/area_spec.rb +115 -0
  233. data/spec/unit/austria_spec.rb +76 -0
  234. data/spec/unit/belgium_brussels_spec.rb +58 -0
  235. data/spec/unit/belgium_flanders_spec.rb +62 -0
  236. data/spec/unit/belgium_spec.rb +26 -0
  237. data/spec/unit/belgium_wallonia_spec.rb +65 -0
  238. data/spec/unit/binomials_cache_spec.rb +34 -0
  239. data/spec/unit/catalonia_spec.rb +61 -0
  240. data/spec/unit/catalonia_with_vox_spec.rb +62 -0
  241. data/spec/unit/combinations_distribution_spec.rb +241 -0
  242. data/spec/unit/denmark_spec.rb +56 -0
  243. data/spec/unit/denmark_with_e_and_p_spec.rb +58 -0
  244. data/spec/unit/denmark_with_e_spec.rb +57 -0
  245. data/spec/unit/denmark_with_p_spec.rb +57 -0
  246. data/spec/unit/denominators_spec.rb +40 -0
  247. data/spec/unit/dichotomies_spec.rb +154 -0
  248. data/spec/unit/dichotomy_spec.rb +320 -0
  249. data/spec/unit/estonia_spec.rb +65 -0
  250. data/spec/unit/european_union_27_austria_spec.rb +61 -0
  251. data/spec/unit/european_union_27_croatia_spec.rb +60 -0
  252. data/spec/unit/european_union_27_denmark_spec.rb +62 -0
  253. data/spec/unit/european_union_27_estonia_spec.rb +94 -0
  254. data/spec/unit/european_union_27_finland_spec.rb +75 -0
  255. data/spec/unit/european_union_27_france_spec.rb +73 -0
  256. data/spec/unit/european_union_27_ireland_spec.rb +72 -0
  257. data/spec/unit/european_union_27_ireland_with_ia_spec.rb +74 -0
  258. data/spec/unit/european_union_27_italy_spec.rb +69 -0
  259. data/spec/unit/european_union_27_netherlands_spec.rb +81 -0
  260. data/spec/unit/european_union_27_poland_spec.rb +69 -0
  261. data/spec/unit/european_union_27_romania_spec.rb +67 -0
  262. data/spec/unit/european_union_27_slovakia_spec.rb +111 -0
  263. data/spec/unit/european_union_27_spain_spec.rb +130 -0
  264. data/spec/unit/european_union_27_sweden_spec.rb +89 -0
  265. data/spec/unit/european_union_austria_spec.rb +61 -0
  266. data/spec/unit/european_union_bulgaria_spec.rb +97 -0
  267. data/spec/unit/european_union_croatia_spec.rb +59 -0
  268. data/spec/unit/european_union_cyprus_spec.rb +65 -0
  269. data/spec/unit/european_union_czech_republic_spec.rb +125 -0
  270. data/spec/unit/european_union_denmark_spec.rb +61 -0
  271. data/spec/unit/european_union_estonia_spec.rb +93 -0
  272. data/spec/unit/european_union_finland_spec.rb +75 -0
  273. data/spec/unit/european_union_flanders_spec.rb +56 -0
  274. data/spec/unit/european_union_france_spec.rb +73 -0
  275. data/spec/unit/european_union_french_community_of_belgium_spec.rb +61 -0
  276. data/spec/unit/european_union_germany_spec.rb +90 -0
  277. data/spec/unit/european_union_great_britain_spec.rb +87 -0
  278. data/spec/unit/european_union_greece_spec.rb +148 -0
  279. data/spec/unit/european_union_hungary_spec.rb +57 -0
  280. data/spec/unit/european_union_ireland_spec.rb +72 -0
  281. data/spec/unit/european_union_ireland_with_ia_spec.rb +74 -0
  282. data/spec/unit/european_union_italy_spec.rb +69 -0
  283. data/spec/unit/european_union_latvia_spec.rb +76 -0
  284. data/spec/unit/european_union_lithuania_spec.rb +68 -0
  285. data/spec/unit/european_union_luxembourg_spec.rb +63 -0
  286. data/spec/unit/european_union_malta_spec.rb +60 -0
  287. data/spec/unit/european_union_netherlands_spec.rb +81 -0
  288. data/spec/unit/european_union_northern_ireland_spec.rb +66 -0
  289. data/spec/unit/european_union_poland_spec.rb +69 -0
  290. data/spec/unit/european_union_portugal_spec.rb +77 -0
  291. data/spec/unit/european_union_romania_spec.rb +67 -0
  292. data/spec/unit/european_union_slovakia_spec.rb +111 -0
  293. data/spec/unit/european_union_slovenia_spec.rb +77 -0
  294. data/spec/unit/european_union_spain_spec.rb +129 -0
  295. data/spec/unit/european_union_sweden_spec.rb +89 -0
  296. data/spec/unit/finland_spec.rb +65 -0
  297. data/spec/unit/finland_with_sin_spec.rb +67 -0
  298. data/spec/unit/first_past_the_post_spec.rb +54 -0
  299. data/spec/unit/flanders_spec.rb +70 -0
  300. data/spec/unit/france_spec.rb +32 -0
  301. data/spec/unit/greece_spec.rb +118 -0
  302. data/spec/unit/hungary_spec.rb +132 -0
  303. data/spec/unit/iceland_spec.rb +57 -0
  304. data/spec/unit/iceland_with_j_spec.rb +58 -0
  305. data/spec/unit/ireland_2016_spec.rb +62 -0
  306. data/spec/unit/ireland_spec.rb +62 -0
  307. data/spec/unit/largest_remainder_spec.rb +79 -0
  308. data/spec/unit/latvia_spec.rb +62 -0
  309. data/spec/unit/luxembourg_spec.rb +55 -0
  310. data/spec/unit/multi_district_leveled_proportional_spec.rb +49 -0
  311. data/spec/unit/multi_district_proportional_spec.rb +81 -0
  312. data/spec/unit/netherlands_spec.rb +107 -0
  313. data/spec/unit/norway_spec.rb +69 -0
  314. data/spec/unit/norwegian_municipality_spec.rb +89 -0
  315. data/spec/unit/number_formatter_spec.rb +173 -0
  316. data/spec/unit/poland_spec.rb +62 -0
  317. data/spec/unit/poland_with_ko_and_l_without_n_po_r_and_zl_spec.rb +60 -0
  318. 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
  319. data/spec/unit/poland_with_ko_sld_and_wi_without_n_po_and_zl_spec.rb +62 -0
  320. data/spec/unit/poland_with_sld_and_wi_without_zl_spec.rb +63 -0
  321. data/spec/unit/poland_with_sld_without_zl_spec.rb +62 -0
  322. data/spec/unit/poll_spec.rb +110 -0
  323. data/spec/unit/portugal_spec.rb +66 -0
  324. data/spec/unit/portugal_with_a_and_ch_without_paf_spec.rb +68 -0
  325. data/spec/unit/portugal_with_a_and_il_without_paf_spec.rb +68 -0
  326. data/spec/unit/portugal_with_a_ch_and_il_without_paf_spec.rb +69 -0
  327. data/spec/unit/portugal_with_a_without_paf_spec.rb +67 -0
  328. data/spec/unit/portugal_with_ch_and_il_without_paf_spec.rb +68 -0
  329. data/spec/unit/portugal_without_paf_spec.rb +66 -0
  330. data/spec/unit/pseudorandom_multirange_enumerator_spec.rb +82 -0
  331. data/spec/unit/referendum_polychotomy_spec.rb +289 -0
  332. data/spec/unit/representatives_polychotomy_spec.rb +332 -0
  333. data/spec/unit/slovakia_spec.rb +99 -0
  334. data/spec/unit/slovenia_spec.rb +80 -0
  335. data/spec/unit/spain_spec.rb +101 -0
  336. data/spec/unit/sweden_20140914_spec.rb +112 -0
  337. data/spec/unit/sweden_spec.rb +113 -0
  338. data/spec/unit/united_kingdom_spec.rb +65 -0
  339. data/spec/unit/united_kingdom_with_brexit_and_chuk_spec.rb +67 -0
  340. data/spec/unit/united_kingdom_with_brexit_spec.rb +66 -0
  341. data/spec/unit/united_kingdom_with_tig_spec.rb +66 -0
  342. data/spec/unit/wallonia_spec.rb +70 -0
  343. metadata +502 -0
@@ -0,0 +1,33 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2020 Filip van Laenen <f.a.vanlaenen@ieee.org>
3
+ #
4
+ # This file is part of SAPoR.
5
+ #
6
+ # SAPoR is free software: you can redistribute it and/or modify it under the
7
+ # terms of the GNU General Public License as published by the Free Software
8
+ # Foundation, either version 3 of the License, or (at your option) any later
9
+ # version.
10
+ #
11
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
12
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
+ #
15
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
16
+ #
17
+
18
+ # Source: Web page with the official results of the elections of 26 May 2019,
19
+ # downloaded on 6 August 2019,
20
+ # URL: https://verkiezingen2019.belgium.be/nl/resultaten-cijfers?el=CK&id=CKC21004
21
+
22
+ Bruxelles-Capitale / Brussel-Hoofdstad | Ecolo | 108,144
23
+ Bruxelles-Capitale / Brussel-Hoofdstad | Parti Socialiste | 100,195
24
+ Bruxelles-Capitale / Brussel-Hoofdstad | Mouvement Réformateur | 87,594
25
+ Bruxelles-Capitale / Brussel-Hoofdstad | Parti du Travail de Belgique | 61,589
26
+ Bruxelles-Capitale / Brussel-Hoofdstad | DéFI | 51,544
27
+ Bruxelles-Capitale / Brussel-Hoofdstad | Centre démocrate humaniste | 29,161
28
+ Bruxelles-Capitale / Brussel-Hoofdstad | Nieuw-Vlaamse Alliantie | 15,983
29
+ Bruxelles-Capitale / Brussel-Hoofdstad | Listes Destexhe | 12,879
30
+ Bruxelles-Capitale / Brussel-Hoofdstad | Open Vlaamse Liberalen en Democraten | 11,511
31
+ Bruxelles-Capitale / Brussel-Hoofdstad | Parti Populaire | 8,455
32
+ Bruxelles-Capitale / Brussel-Hoofdstad | Vlaams Belang | 7,824
33
+ Bruxelles-Capitale / Brussel-Hoofdstad | Christen-Democratisch en Vlaams | 6,580
@@ -0,0 +1,80 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2020 Filip van Laenen <f.a.vanlaenen@ieee.org>
3
+ #
4
+ # This file is part of SAPoR.
5
+ #
6
+ # SAPoR is free software: you can redistribute it and/or modify it under the
7
+ # terms of the GNU General Public License as published by the Free Software
8
+ # Foundation, either version 3 of the License, or (at your option) any later
9
+ # version.
10
+ #
11
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
12
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
+ #
15
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
16
+ #
17
+
18
+ # Source: Web page with the official results of the elections of 25 May 2014,
19
+ # downloaded on 3 November 2016,
20
+ # URL: http://verkiezingen2014.belgium.be/nl/cha/results/results_tab_CKR00000.html
21
+
22
+ # Replaced FDF with DéFI
23
+
24
+ Antwerpen | N-VA | 449,531
25
+ Antwerpen | CD&V | 183,636
26
+ Antwerpen | sp.a | 132,096
27
+ Antwerpen | Open Vld | 116,892
28
+ Antwerpen | Groen | 112,477
29
+ Antwerpen | Vlaams Belang | 79,852
30
+ Antwerpen | PVDA | 51,638
31
+ Antwerpen | Piratenpartij | 11,136
32
+ Antwerpen | R.O.S.S.E.M. | 2,984
33
+ Antwerpen | B.U.B. | 1,299
34
+
35
+ Limburg | N-VA | 174,030
36
+ Limburg | CD&V | 125,962
37
+ Limburg | sp.a | 98,194
38
+ Limburg | Open Vld | 68,713
39
+ Limburg | Vlaams Belang | 34,020
40
+ Limburg | Groen | 33,244
41
+ Limburg | PVDA | 14,253
42
+ Limburg | Piratenpartij | 3,909
43
+ Limburg | R.O.S.S.E.M. | 1,415
44
+ Limburg | B.U.B. | 714
45
+
46
+ Oost-Vlaanderen | N-VA | 306,650
47
+ Oost-Vlaanderen | Open Vld | 179,167
48
+ Oost-Vlaanderen | CD&V | 177,349
49
+ Oost-Vlaanderen | sp.a | 131,903
50
+ Oost-Vlaanderen | Groen | 90,473
51
+ Oost-Vlaanderen | Vlaams Belang | 61,620
52
+ Oost-Vlaanderen | PVDA | 26,381
53
+ Oost-Vlaanderen | Piratenpartij | 8,124
54
+ Oost-Vlaanderen | R.O.S.S.E.M. | 2,557
55
+ Oost-Vlaanderen | SD&P | 2,298
56
+ Oost-Vlaanderen | B.U.B. | 1,366
57
+ Oost-Vlaanderen | PVGW | 932
58
+
59
+ Vlaams-Brabant | N-VA | 192,698
60
+ Vlaams-Brabant | Open Vld | 170,128
61
+ Vlaams-Brabant | CD&V | 112,251
62
+ Vlaams-Brabant | sp.a | 81,254
63
+ Vlaams-Brabant | Groen | 59,096
64
+ Vlaams-Brabant | Vlaams Belang | 28,857
65
+ Vlaams-Brabant | DéFI | 15,405
66
+ Vlaams-Brabant | PVDA | 12,664
67
+ Vlaams-Brabant | B.U.B. | 2,577
68
+ Vlaams-Brabant | Piratenpartij | 2,281
69
+ Vlaams-Brabant | R.O.S.S.E.M. | 1,914
70
+
71
+ West-Vlaanderen | N-VA | 230,265
72
+ West-Vlaanderen | CD&V | 175,669
73
+ West-Vlaanderen | sp.a | 142,406
74
+ West-Vlaanderen | Open Vld | 111,388
75
+ West-Vlaanderen | Groen | 63,657
76
+ West-Vlaanderen | Vlaams Belang | 38,232
77
+ West-Vlaanderen | PVDA | 13,397
78
+ West-Vlaanderen | R.O.S.S.E.M. | 2,810
79
+ West-Vlaanderen | B.U.B. | 1,691
80
+ West-Vlaanderen | Lijst Dedecker | 28,414
@@ -0,0 +1,74 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2020 Filip van Laenen <f.a.vanlaenen@ieee.org>
3
+ #
4
+ # This file is part of SAPoR.
5
+ #
6
+ # SAPoR is free software: you can redistribute it and/or modify it under the
7
+ # terms of the GNU General Public License as published by the Free Software
8
+ # Foundation, either version 3 of the License, or (at your option) any later
9
+ # version.
10
+ #
11
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
12
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
+ #
15
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
16
+ #
17
+
18
+ # Source: Web page with the official results of the elections of 26 May 2019,
19
+ # downloaded on 7 August 2019,
20
+ # URL: https://verkiezingen2019.belgium.be/nl/verkiezingen?el=CK
21
+
22
+ Antwerpen | Nieuw-Vlaamse Alliantie | 361,022
23
+ Antwerpen | Vlaams Belang | 217,333
24
+ Antwerpen | Christen-Democratisch en Vlaams | 128,036
25
+ Antwerpen | Groen | 127,131
26
+ Antwerpen | Open Vlaamse Liberalen en Democraten | 111,505
27
+ Antwerpen | Socialistische Partij Anders | 93,114
28
+ Antwerpen | Partij van de Arbeid van België | 88,430
29
+ Antwerpen | DierAnimal | 13,544
30
+ Antwerpen | Piratenpartij | 7,521
31
+ Antwerpen | Democratisch-Solidair Appèl | 3,605
32
+ Antwerpen | Partij Vrede en Solidariteit | 3,217
33
+ Antwerpen | Volt | 1,669
34
+
35
+ Limburg | Nieuw-Vlaamse Alliantie | 125,273
36
+ Limburg | Vlaams Belang | 109,499
37
+ Limburg | Christen-Democratisch en Vlaams | 103,625
38
+ Limburg | Socialistische Partij Anders | 76,614
39
+ Limburg | Open Vlaamse Liberalen en Democraten | 66,602
40
+ Limburg | Groen | 38,154
41
+ Limburg | Partij van de Arbeid van België | 31,037
42
+ Limburg | Democratisch-Solidair Appèl | 2,344
43
+ Limburg | PRO | 1,690
44
+
45
+ Oost-Vlaanderen | Nieuw-Vlaamse Alliantie | 218,023
46
+ Oost-Vlaanderen | Vlaams Belang | 200,173
47
+ Oost-Vlaanderen | Open Vlaamse Liberalen en Democraten | 178,349
48
+ Oost-Vlaanderen | Christen-Democratisch en Vlaams | 127,024
49
+ Oost-Vlaanderen | Groen | 103,061
50
+ Oost-Vlaanderen | Socialistische Partij Anders | 101,447
51
+ Oost-Vlaanderen | Partij van de Arbeid van België | 55,209
52
+ Oost-Vlaanderen | DierAnimal | 11,801
53
+ Oost-Vlaanderen | Belgische Unie – Union Belge | 2,092
54
+ Oost-Vlaanderen | de coöperatie | 1,732
55
+
56
+ Vlaams-Brabant | Nieuw-Vlaamse Alliantie | 193,735
57
+ Vlaams-Brabant | Open Vlaamse Liberalen en Democraten | 106,175
58
+ Vlaams-Brabant | Christen-Democratisch en Vlaams | 94,743
59
+ Vlaams-Brabant | Vlaams Belang | 92,844
60
+ Vlaams-Brabant | Groen | 81,620
61
+ Vlaams-Brabant | Socialistische Partij Anders | 65,347
62
+ Vlaams-Brabant | Partij van de Arbeid van België | 33,016
63
+ Vlaams-Brabant | DéFI | 14,043
64
+ Vlaams-Brabant | Belgische Unie – Union Belge | 4,513
65
+ Vlaams-Brabant | PRO | 3,992
66
+
67
+ West-Vlaanderen | Nieuw-Vlaamse Alliantie | 172,751
68
+ West-Vlaanderen | Vlaams Belang | 164,427
69
+ West-Vlaanderen | Christen-Democratisch en Vlaams | 142,512
70
+ West-Vlaanderen | Socialistische Partij Anders | 118,512
71
+ West-Vlaanderen | Open Vlaamse Liberalen en Democraten | 105,192
72
+ West-Vlaanderen | Groen | 63,870
73
+ West-Vlaanderen | Partij van de Arbeid van België | 29,205
74
+ West-Vlaanderen | DierAnimal | 9,926
@@ -0,0 +1,114 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2020 Filip van Laenen <f.a.vanlaenen@ieee.org>
3
+ #
4
+ # This file is part of SAPoR.
5
+ #
6
+ # SAPoR is free software: you can redistribute it and/or modify it under the
7
+ # terms of the GNU General Public License as published by the Free Software
8
+ # Foundation, either version 3 of the License, or (at your option) any later
9
+ # version.
10
+ #
11
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
12
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
+ #
15
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
16
+ #
17
+
18
+ # Source: Web page with the official results of the elections of 25 May 2014,
19
+ # downloaded on 3 November 2016,
20
+ # URL: http://verkiezingen2014.belgium.be/nl/cha/results/results_tab_CKR00000.html
21
+
22
+ # Replaced FDF with DéFI
23
+ # Replaced PTB-GO! with PTB
24
+
25
+ Brabant wallon | MR | 97,741
26
+ Brabant wallon | PS | 51,359
27
+ Brabant wallon | Ecolo | 27,356
28
+ Brabant wallon | cdH | 26,335
29
+ Brabant wallon | DéFI | 11,198
30
+ Brabant wallon | Parti Populaire | 9,544
31
+ Brabant wallon | PTB | 6,449
32
+ Brabant wallon | Debout les Belges | 3,342
33
+ Brabant wallon | La Droite | 2,337
34
+ Brabant wallon | R.W.F. | 1,102
35
+ Brabant wallon | B.U.B. | 961
36
+ Brabant wallon | NATION | 908
37
+ Brabant wallon | NWA | 442
38
+ Brabant wallon | MOVE | 400
39
+ Brabant wallon | VLC | 208
40
+ Brabant wallon | MG | 187
41
+
42
+ Hainaut | PS | 303,085
43
+ Hainaut | MR | 153,301
44
+ Hainaut | cdH | 76,812
45
+ Hainaut | Ecolo | 43,488
46
+ Hainaut | PTB | 38,194
47
+ Hainaut | Parti Populaire | 32,158
48
+ Hainaut | Debout les Belges | 24,634
49
+ Hainaut | Faire place Nette | 15,467
50
+ Hainaut | DéFI | 14,382
51
+ Hainaut | La Droite | 6,804
52
+ Hainaut | PIRATE | 5,907
53
+ Hainaut | Wallonie d’Abord | 4,926
54
+ Hainaut | NATION | 3,767
55
+ Hainaut | Lutte Ouvrière | 3,539
56
+ Hainaut | P+ | 2,254
57
+ Hainaut | R.W.F. | 2,058
58
+ Hainaut | NWA | 1,673
59
+ Hainaut | MG | 1,662
60
+ Hainaut | FW | 1,633
61
+ Hainaut | RassemblementWalon | 1,598
62
+ Hainaut | B.U.B. | 688
63
+ Hainaut | MGJOD | 460
64
+
65
+ Liège | PS | 187,897
66
+ Liège | MR | 158,046
67
+ Liège | cdH | 81,759
68
+ Liège | Ecolo | 56,890
69
+ Liège | PTB | 50,603
70
+ Liège | Parti Populaire | 32,229
71
+ Liège | DéFI | 13,915
72
+ Liège | Debout les Belges | 9,381
73
+ Liège | La Droite | 8,714
74
+ Liège | Wallonie d’Abord | 6,295
75
+ Liège | ISLAM | 4,332
76
+ Liège | PIRATE | 3,938
77
+ Liège | PP PARTIPENSIONNES | 3,178
78
+ Liège | NATION | 2,342
79
+ Liège | VLC | 1,820
80
+ Liège | R.W.F. | 1,622
81
+ Liège | B.U.B. | 1,198
82
+ Liège | MG | 1,024
83
+ Liège | FW | 752
84
+ Liège | CIM | 430
85
+
86
+ Luxembourg | cdH | 56,702
87
+ Luxembourg | MR | 41,346
88
+ Luxembourg | PS | 37,371
89
+ Luxembourg | Ecolo | 13,471
90
+ Luxembourg | Parti Populaire | 6,980
91
+ Luxembourg | PTB | 4,003
92
+ Luxembourg | Debout les Belges | 2,958
93
+ Luxembourg | DéFI | 2,811
94
+ Luxembourg | La Droite | 2,012
95
+ Luxembourg | B.U.B. | 752
96
+ Luxembourg | MG | 666
97
+ Luxembourg | R.W.F. | 645
98
+
99
+ Namur | MR | 84,788
100
+ Namur | PS | 83,361
101
+ Namur | cdH | 48,135
102
+ Namur | Ecolo | 29,186
103
+ Namur | PTB | 14,559
104
+ Namur | Parti Populaire | 13,029
105
+ Namur | DéFI | 8,367
106
+ Namur | Debout les Belges | 6,616
107
+ Namur | La Droite | 4,003
108
+ Namur | R.W.F. | 1,967
109
+ Namur | NATION | 1,576
110
+ Namur | Vox Populi Belgica | 1,280
111
+ Namur | B.U.B. | 857
112
+ Namur | FW | 695
113
+ Namur | NWA | 670
114
+ Namur | MG | 423
@@ -0,0 +1,93 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2020 Filip van Laenen <f.a.vanlaenen@ieee.org>
3
+ #
4
+ # This file is part of SAPoR.
5
+ #
6
+ # SAPoR is free software: you can redistribute it and/or modify it under the
7
+ # terms of the GNU General Public License as published by the Free Software
8
+ # Foundation, either version 3 of the License, or (at your option) any later
9
+ # version.
10
+ #
11
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
12
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
+ #
15
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
16
+ #
17
+
18
+ # Source: Web page with the official results of the elections of 26 May 2019,
19
+ # downloaded on 7 August 2019,
20
+ # URL: https://verkiezingen2019.belgium.be/nl/verkiezingen?el=CK
21
+
22
+ Brabant wallon | Mouvement Réformateur | 86,463
23
+ Brabant wallon | Ecolo | 48,874
24
+ Brabant wallon | Parti Socialiste | 37,730
25
+ Brabant wallon | Centre démocrate humaniste | 18,805
26
+ Brabant wallon | Parti du Travail de Belgique | 18,278
27
+ Brabant wallon | DéFI | 15,109
28
+ Brabant wallon | Listes Destexhe | 6,313
29
+ Brabant wallon | Parti Populaire | 6,085
30
+ Brabant wallon | Collectif Citoyen | 3,299
31
+ Brabant wallon | Vlaams Belang | 2,097
32
+ Brabant wallon | Wallonie Insoumise | 2,088
33
+ Brabant wallon | La Droite | 1,460
34
+ Brabant wallon | Turquoise | 626
35
+
36
+ Hainaut | Parti Socialiste | 250,146
37
+ Hainaut | Mouvement Réformateur | 116,528
38
+ Hainaut | Parti du Travail de Belgique | 114,243
39
+ Hainaut | Ecolo | 89,898
40
+ Hainaut | Centre démocrate humaniste | 58,695
41
+ Hainaut | DéFI | 27,484
42
+ Hainaut | Parti Populaire | 24,719
43
+ Hainaut | Vlaams Belang | 8,246
44
+ Hainaut | Listes Destexhe | 8,177
45
+ Hainaut | Collectif Citoyen | 7,992
46
+ Hainaut | AGIR | 5,916
47
+ Hainaut | La Droite | 5,916
48
+ Hainaut | Lutte Ouvrière | 5,735
49
+ Hainaut | NATION | 5,341
50
+ Hainaut | Parti Communiste de Belgique | 1,626
51
+
52
+ Liège | Parti Socialiste | 154,232
53
+ Liège | Mouvement Réformateur | 121,732
54
+ Liège | Parti du Travail de Belgique | 101,860
55
+ Liège | Ecolo | 95,878
56
+ Liège | Centre démocrate humaniste | 52,167
57
+ Liège | DéFI | 22,313
58
+ Liège | Parti Populaire | 21,998
59
+ Liège | Les Belges d’Abord | 10,463
60
+ Liège | Listes Destexhe | 9,310
61
+ Liège | DierAnimal | 8,392
62
+ Liège | Collectif Citoyen | 7,395
63
+ Liège | Vlaams Belang | 4,093
64
+ Liège | La Droite | 3,949
65
+ Liège | Wallonie Insoumise | 3,266
66
+ Liège | NATION | 2,137
67
+
68
+ Luxembourg | Mouvement Réformateur | 40,242
69
+ Luxembourg | Centre démocrate humaniste | 40,056
70
+ Luxembourg | Parti Socialiste | 31,898
71
+ Luxembourg | Ecolo | 27,338
72
+ Luxembourg | Parti du Travail de Belgique | 15,424
73
+ Luxembourg | DéFI | 5,092
74
+ Luxembourg | Parti Populaire | 4,933
75
+ Luxembourg | Listes Destexhe | 1,707
76
+ Luxembourg | Vlaams Belang | 1,517
77
+ Luxembourg | La Droite | 1,440
78
+ Luxembourg | NATION | 1,176
79
+
80
+ Namur | Parti Socialiste | 67,422
81
+ Namur | Mouvement Réformateur | 60,266
82
+ Namur | Centre démocrate humaniste | 51,977
83
+ Namur | Ecolo | 46,320
84
+ Namur | Parti du Travail de Belgique | 36,330
85
+ Namur | DéFI | 14,809
86
+ Namur | Parti Populaire | 8,906
87
+ Namur | Listes Destexhe | 4,326
88
+ Namur | DierAnimal | 4,070
89
+ Namur | Collectif Citoyen | 2,406
90
+ Namur | La Droite | 2,310
91
+ Namur | Vlaams Belang | 2,124
92
+ Namur | NATION | 1,929
93
+ Namur | AGIR | 1,682
@@ -0,0 +1,97 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Statistical Analysis of Polling Results (SAPoR)
4
+ # Copyright (C) 2020 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
+ module Sapor
21
+ #
22
+ # The regional data for Belgium.
23
+ #
24
+ class Belgium < Area
25
+ include Singleton
26
+ def coalitions
27
+ COALITIONS
28
+ end
29
+
30
+ def no_of_seats
31
+ seat_distribution.values.inject(:+)
32
+ end
33
+
34
+ def seats(simulation)
35
+ electoral_system.project(simulation)
36
+ end
37
+
38
+ def threshold
39
+ THRESHOLD
40
+ end
41
+
42
+ private
43
+
44
+ THRESHOLD = 0.05
45
+
46
+ CDH_PARTY = 'Centre démocrate humaniste'.freeze
47
+ CDV_PARTY = 'Christen-Democratisch en Vlaams'.freeze
48
+ ECOLO_PARTY = 'Ecolo'.freeze
49
+ GROEN_PARTY = 'Groen'.freeze
50
+ MR_PARTY = 'Mouvement Réformateur'.freeze
51
+ NVA_PARTY = 'Nieuw-Vlaamse Alliantie'.freeze
52
+ OVLD_PARTY = 'Open Vlaamse Liberalen en Democraten'.freeze
53
+ PS_PARTY = 'Parti Socialiste'.freeze
54
+ PTB_PARTY = 'Parti du Travail de Belgique'.freeze
55
+ PVDA_PARTY = 'Partij van de Arbeid van België'.freeze
56
+ SPA_PARTY = 'Socialistische Partij Anders'.freeze
57
+
58
+ COALITIONS = [[CDH_PARTY, CDV_PARTY, ECOLO_PARTY, GROEN_PARTY, MR_PARTY,
59
+ OVLD_PARTY, PS_PARTY, SPA_PARTY],
60
+ [CDH_PARTY, CDV_PARTY, ECOLO_PARTY, GROEN_PARTY, MR_PARTY,
61
+ OVLD_PARTY],
62
+ [CDH_PARTY, CDV_PARTY, ECOLO_PARTY, GROEN_PARTY, PS_PARTY,
63
+ PTB_PARTY, PVDA_PARTY, SPA_PARTY],
64
+ [CDH_PARTY, CDV_PARTY, ECOLO_PARTY, GROEN_PARTY, PS_PARTY,
65
+ SPA_PARTY],
66
+ [CDH_PARTY, CDV_PARTY, MR_PARTY, NVA_PARTY, OVLD_PARTY],
67
+ [CDH_PARTY, CDV_PARTY, MR_PARTY, OVLD_PARTY],
68
+ [CDH_PARTY, CDV_PARTY, MR_PARTY, OVLD_PARTY, PS_PARTY,
69
+ SPA_PARTY],
70
+ [CDH_PARTY, CDV_PARTY, MR_PARTY, OVLD_PARTY, PS_PARTY],
71
+ [CDH_PARTY, CDV_PARTY, PS_PARTY, SPA_PARTY],
72
+ [CDH_PARTY, ECOLO_PARTY, GROEN_PARTY, PS_PARTY, PTB_PARTY,
73
+ PVDA_PARTY, SPA_PARTY],
74
+ [CDV_PARTY, ECOLO_PARTY, GROEN_PARTY, MR_PARTY, OVLD_PARTY,
75
+ PS_PARTY, SPA_PARTY],
76
+ [CDV_PARTY, MR_PARTY, NVA_PARTY, OVLD_PARTY],
77
+ [ECOLO_PARTY, GROEN_PARTY, MR_PARTY, OVLD_PARTY, PS_PARTY,
78
+ SPA_PARTY],
79
+ [ECOLO_PARTY, GROEN_PARTY, PS_PARTY, PTB_PARTY, PVDA_PARTY,
80
+ SPA_PARTY],
81
+ [MR_PARTY, NVA_PARTY, OVLD_PARTY, PS_PARTY, SPA_PARTY],
82
+ [MR_PARTY, OVLD_PARTY, PS_PARTY, SPA_PARTY]].freeze
83
+
84
+ def electoral_system
85
+ if @electoral_system.nil?
86
+ @electoral_system = MultiDistrictProportional.new(
87
+ overall_election_results_of_2019,
88
+ election_results_of_2019,
89
+ seat_distribution,
90
+ DhondtDenominators,
91
+ THRESHOLD
92
+ )
93
+ end
94
+ @electoral_system
95
+ end
96
+ end
97
+ end