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,108 @@
1
+ #
2
+ # Statistical Analysis of Polling Results (SAPoR)
3
+ # Copyright (C) 2020 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
+ module Sapor
20
+ #
21
+ # The regional data for Netherlands.
22
+ #
23
+ class Netherlands < Area
24
+ include Singleton
25
+
26
+ def area_code
27
+ 'NL'
28
+ end
29
+
30
+ def coalitions
31
+ COALITIONS
32
+ end
33
+
34
+ def no_of_seats
35
+ NO_OF_SEATS
36
+ end
37
+
38
+ def population_size
39
+ POPULATION_SIZE
40
+ end
41
+
42
+ def seats(simulation)
43
+ electoral_system.project(simulation)
44
+ end
45
+
46
+ def threshold
47
+ THRESHOLD
48
+ end
49
+
50
+ private
51
+
52
+ CDA_PARTY = 'Christen-Democratisch Appèl'.freeze
53
+ CU_PARTY = 'ChristenUnie'.freeze
54
+ D66_PARTY = 'Democraten 66'.freeze
55
+ FIFTY_PARTY = '50Plus'.freeze
56
+ FVD_PARTY = 'Forum voor Democratie'.freeze
57
+ GL_PARTY = 'GroenLinks'.freeze
58
+ PVDA_PARTY = 'Partij van de Arbeid'.freeze
59
+ PVV_PARTY = 'Partij voor de Vrijheid'.freeze
60
+ SGP_PARTY = 'Staatkundig Gereformeerde Partij'.freeze
61
+ SP_PARTY = 'Socialistische Partij'.freeze
62
+ VVD_PARTY = 'Volkspartij voor Vrijheid en Democratie'.freeze
63
+
64
+ COALITIONS = [[CDA_PARTY, CU_PARTY, D66_PARTY, GL_PARTY, PVDA_PARTY],
65
+ [CDA_PARTY, CU_PARTY, D66_PARTY, GL_PARTY, PVDA_PARTY,
66
+ SP_PARTY],
67
+ [CDA_PARTY, CU_PARTY, D66_PARTY, GL_PARTY, VVD_PARTY],
68
+ [CDA_PARTY, CU_PARTY, D66_PARTY, PVDA_PARTY, VVD_PARTY],
69
+ [CDA_PARTY, CU_PARTY, D66_PARTY, VVD_PARTY],
70
+ [CDA_PARTY, CU_PARTY, PVDA_PARTY],
71
+ [CDA_PARTY, D66_PARTY],
72
+ [CDA_PARTY, D66_PARTY, PVDA_PARTY],
73
+ [CDA_PARTY, D66_PARTY, VVD_PARTY],
74
+ [CDA_PARTY, FIFTY_PARTY, FVD_PARTY, VVD_PARTY],
75
+ [CDA_PARTY, FIFTY_PARTY, FVD_PARTY, VVD_PARTY, SGP_PARTY],
76
+ [CDA_PARTY, FVD_PARTY, PVV_PARTY, SGP_PARTY, VVD_PARTY],
77
+ [CDA_PARTY, FVD_PARTY, PVV_PARTY, VVD_PARTY],
78
+ [CDA_PARTY, FVD_PARTY, SGP_PARTY, VVD_PARTY],
79
+ [CDA_PARTY, FVD_PARTY, VVD_PARTY],
80
+ [CDA_PARTY, PVDA_PARTY],
81
+ [CDA_PARTY, PVDA_PARTY, VVD_PARTY],
82
+ [CDA_PARTY, PVV_PARTY, VVD_PARTY],
83
+ [CDA_PARTY, VVD_PARTY],
84
+ [D66_PARTY, PVDA_PARTY, VVD_PARTY],
85
+ [PVDA_PARTY, VVD_PARTY]].freeze
86
+
87
+ NO_OF_SEATS = 150
88
+
89
+ # Voter turnout on 21 March 2017
90
+ # Source: Web page with the official results of the elections of 21 March
91
+ # 2017, downloaded on 10 August 2019,
92
+ # https://nl.wikipedia.org/wiki/Tweede_Kamerverkiezingen_2017
93
+ POPULATION_SIZE = 10_516_041
94
+
95
+ THRESHOLD = 1 / NO_OF_SEATS.to_f
96
+
97
+ def electoral_system
98
+ if @electoral_system.nil?
99
+ @electoral_system = SingleDistrictProportional.new(
100
+ NO_OF_SEATS,
101
+ DhondtDenominators,
102
+ THRESHOLD
103
+ )
104
+ end
105
+ @electoral_system
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,331 @@
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
+ Østfold | Arbeiderpartiet | 51545
18
+ Østfold | Sosialistisk Venstreparti | 7036
19
+ Østfold | Rødt | 3435
20
+ Østfold | Senterpartiet | 13943
21
+ Østfold | Kristelig Folkeparti | 6811
22
+ Østfold | Miljøpartiet De Grønne | 4192
23
+ Østfold | Venstre | 3878
24
+ Østfold | Høyre | 38264
25
+ Østfold | Fremskrittspartiet | 28181
26
+ Østfold | Alliansen | 211
27
+ Østfold | Demokratene i Norge | 190
28
+ Østfold | Helsepartiet | 806
29
+ Østfold | Partiet De Kristne | 518
30
+ Østfold | Kystpartiet | 98
31
+ Østfold | Liberalistene | 353
32
+ Østfold | Pensjonistpartiet | 1359
33
+ Akershus | Arbeiderpartiet | 88689
34
+ Akershus | Sosialistisk Venstreparti | 17859
35
+ Akershus | Rødt | 6542
36
+ Akershus | Senterpartiet | 20219
37
+ Akershus | Kristelig Folkeparti | 7839
38
+ Akershus | Miljøpartiet De Grønne | 12459
39
+ Akershus | Venstre | 21853
40
+ Akershus | Høyre | 104451
41
+ Akershus | Fremskrittspartiet | 50741
42
+ Akershus | Alliansen | 383
43
+ Akershus | Demokratene i Norge | 268
44
+ Akershus | Helsepartiet | 2052
45
+ Akershus | Partiet De Kristne | 420
46
+ Akershus | Kystpartiet | 136
47
+ Akershus | Liberalistene | 598
48
+ Akershus | Piratpartiet | 565
49
+ Akershus | Pensjonistpartiet | 1954
50
+ Oslo | Arbeiderpartiet | 104089
51
+ Oslo | Sosialistisk Venstreparti | 34052
52
+ Oslo | Rødt | 23083
53
+ Oslo | Senterpartiet | 7778
54
+ Oslo | Kristelig Folkeparti | 7843
55
+ Oslo | Miljøpartiet De Grønne | 21853
56
+ Oslo | Venstre | 30933
57
+ Oslo | Høyre | 97085
58
+ Oslo | Fremskrittspartiet | 35037
59
+ Oslo | Alliansen | 314
60
+ Oslo | Demokratene i Norge | 326
61
+ Oslo | Helsepartiet | 1184
62
+ Oslo | Partiet De Kristne | 343
63
+ Oslo | Liberalistene | 667
64
+ Oslo | Norges Kommunistiske Parti | 119
65
+ Oslo | Piratpartiet | 630
66
+ Oslo | Pensjonistpartiet | 1335
67
+ Oslo | Samfunnspartiet | 104
68
+ Oslo | Feministisk Initiativ | 326
69
+ Hedmark | Arbeiderpartiet | 40561
70
+ Hedmark | Sosialistisk Venstreparti | 6528
71
+ Hedmark | Rødt | 1443
72
+ Hedmark | Senterpartiet | 25296
73
+ Hedmark | Kristelig Folkeparti | 2051
74
+ Hedmark | Miljøpartiet De Grønne | 2215
75
+ Hedmark | Venstre | 2659
76
+ Hedmark | Høyre | 17454
77
+ Hedmark | Fremskrittspartiet | 13376
78
+ Hedmark | Alliansen | 120
79
+ Hedmark | Demokratene i Norge | 192
80
+ Hedmark | Helsepartiet | 356
81
+ Hedmark | Partiet De Kristne | 165
82
+ Hedmark | Kystpartiet | 45
83
+ Hedmark | Liberalistene | 165
84
+ Hedmark | Pensjonistpartiet | 1303
85
+ Hedmark | Norgespartiet | 151
86
+ Oppland | Arbeiderpartiet | 38056
87
+ Oppland | Sosialistisk Venstreparti | 5028
88
+ Oppland | Rødt | 1823
89
+ Oppland | Senterpartiet | 22990
90
+ Oppland | Kristelig Folkeparti | 2281
91
+ Oppland | Miljøpartiet De Grønne | 2550
92
+ Oppland | Venstre | 2776
93
+ Oppland | Høyre | 18163
94
+ Oppland | Fremskrittspartiet | 13285
95
+ Oppland | Alliansen | 138
96
+ Oppland | Demokratene i Norge | 132
97
+ Oppland | Helsepartiet | 455
98
+ Oppland | Partiet De Kristne | 184
99
+ Oppland | Kystpartiet | 40
100
+ Oppland | Liberalistene | 146
101
+ Oppland | Pensjonistpartiet | 453
102
+ Buskerud | Arbeiderpartiet | 43143
103
+ Buskerud | Sosialistisk Venstreparti | 7642
104
+ Buskerud | Rødt | 2260
105
+ Buskerud | Senterpartiet | 16446
106
+ Buskerud | Kristelig Folkeparti | 3995
107
+ Buskerud | Miljøpartiet De Grønne | 4112
108
+ Buskerud | Venstre | 5604
109
+ Buskerud | Høyre | 41011
110
+ Buskerud | Fremskrittspartiet | 26419
111
+ Buskerud | Alliansen | 221
112
+ Buskerud | Demokratene i Norge | 201
113
+ Buskerud | Helsepartiet | 855
114
+ Buskerud | Partiet De Kristne | 275
115
+ Buskerud | Kystpartiet | 91
116
+ Buskerud | Liberalistene | 318
117
+ Vestfold | Arbeiderpartiet | 39118
118
+ Vestfold | Sosialistisk Venstreparti | 6927
119
+ Vestfold | Rødt | 2602
120
+ Vestfold | Senterpartiet | 8777
121
+ Vestfold | Kristelig Folkeparti | 5159
122
+ Vestfold | Miljøpartiet De Grønne | 4107
123
+ Vestfold | Venstre | 5373
124
+ Vestfold | Høyre | 42179
125
+ Vestfold | Fremskrittspartiet | 23628
126
+ Vestfold | Alliansen | 186
127
+ Vestfold | Demokratene i Norge | 160
128
+ Vestfold | Helsepartiet | 672
129
+ Vestfold | Partiet De Kristne | 403
130
+ Vestfold | Kystpartiet | 111
131
+ Vestfold | Liberalistene | 309
132
+ Vestfold | Piratpartiet | 217
133
+ Telemark | Arbeiderpartiet | 30931
134
+ Telemark | Sosialistisk Venstreparti | 4800
135
+ Telemark | Rødt | 2041
136
+ Telemark | Senterpartiet | 12457
137
+ Telemark | Kristelig Folkeparti | 4825
138
+ Telemark | Miljøpartiet De Grønne | 2392
139
+ Telemark | Venstre | 2591
140
+ Telemark | Høyre | 19445
141
+ Telemark | Fremskrittspartiet | 16013
142
+ Telemark | Alliansen | 138
143
+ Telemark | Demokratene i Norge | 129
144
+ Telemark | Helsepartiet | 354
145
+ Telemark | Partiet De Kristne | 537
146
+ Telemark | Kystpartiet | 81
147
+ Telemark | Liberalistene | 133
148
+ Aust-Agder | Arbeiderpartiet | 16481
149
+ Aust-Agder | Sosialistisk Venstreparti | 2562
150
+ Aust-Agder | Rødt | 807
151
+ Aust-Agder | Senterpartiet | 5385
152
+ Aust-Agder | Kristelig Folkeparti | 6352
153
+ Aust-Agder | Miljøpartiet De Grønne | 1676
154
+ Aust-Agder | Venstre | 2121
155
+ Aust-Agder | Høyre | 16614
156
+ Aust-Agder | Fremskrittspartiet | 11195
157
+ Aust-Agder | Alliansen | 61
158
+ Aust-Agder | Demokratene i Norge | 102
159
+ Aust-Agder | Helsepartiet | 249
160
+ Aust-Agder | Partiet De Kristne | 470
161
+ Aust-Agder | Kystpartiet | 24
162
+ Aust-Agder | Liberalistene | 122
163
+ Aust-Agder | Piratpartiet | 102
164
+ Aust-Agder | Pensjonistpartiet | 453
165
+ Vest-Agder | Arbeiderpartiet | 21238
166
+ Vest-Agder | Sosialistisk Venstreparti | 4333
167
+ Vest-Agder | Rødt | 1376
168
+ Vest-Agder | Senterpartiet | 6542
169
+ Vest-Agder | Kristelig Folkeparti | 12747
170
+ Vest-Agder | Miljøpartiet De Grønne | 2911
171
+ Vest-Agder | Venstre | 3654
172
+ Vest-Agder | Høyre | 28146
173
+ Vest-Agder | Fremskrittspartiet | 17284
174
+ Vest-Agder | Alliansen | 99
175
+ Vest-Agder | Demokratene i Norge | 748
176
+ Vest-Agder | Helsepartiet | 226
177
+ Vest-Agder | Partiet De Kristne | 793
178
+ Vest-Agder | Kystpartiet | 66
179
+ Vest-Agder | Liberalistene | 211
180
+ Vest-Agder | Piratpartiet | 153
181
+ Vest-Agder | Pensjonistpartiet | 428
182
+ Rogaland | Arbeiderpartiet | 56340
183
+ Rogaland | Sosialistisk Venstreparti | 9895
184
+ Rogaland | Rødt | 2895
185
+ Rogaland | Senterpartiet | 18897
186
+ Rogaland | Kristelig Folkeparti | 21092
187
+ Rogaland | Miljøpartiet De Grønne | 6444
188
+ Rogaland | Venstre | 8851
189
+ Rogaland | Høyre | 72201
190
+ Rogaland | Fremskrittspartiet | 49451
191
+ Rogaland | Alliansen | 231
192
+ Rogaland | Demokratene i Norge | 240
193
+ Rogaland | Helsepartiet | 530
194
+ Rogaland | Partiet De Kristne | 1256
195
+ Rogaland | Kystpartiet | 248
196
+ Rogaland | Liberalistene | 644
197
+ Rogaland | Norges Kommunistiske Parti | 75
198
+ Rogaland | Piratpartiet | 444
199
+ Rogaland | Pensjonistpartiet | 1226
200
+ Rogaland | Verdipartiet | 148
201
+ Hordaland | Arbeiderpartiet | 68195
202
+ Hordaland | Sosialistisk Venstreparti | 20958
203
+ Hordaland | Rødt | 6402
204
+ Hordaland | Senterpartiet | 22594
205
+ Hordaland | Kristelig Folkeparti | 16513
206
+ Hordaland | Miljøpartiet De Grønne | 10476
207
+ Hordaland | Venstre | 13027
208
+ Hordaland | Høyre | 90733
209
+ Hordaland | Fremskrittspartiet | 45060
210
+ Hordaland | Alliansen | 309
211
+ Hordaland | Demokratene i Norge | 328
212
+ Hordaland | Helsepartiet | 745
213
+ Hordaland | Partiet De Kristne | 1357
214
+ Hordaland | Kystpartiet | 443
215
+ Hordaland | Liberalistene | 601
216
+ Hordaland | Piratpartiet | 486
217
+ Hordaland | Feministisk Initiativ | 370
218
+ Sogn og Fjordane | Arbeiderpartiet | 15258
219
+ Sogn og Fjordane | Sosialistisk Venstreparti | 2781
220
+ Sogn og Fjordane | Rødt | 790
221
+ Sogn og Fjordane | Senterpartiet | 18446
222
+ Sogn og Fjordane | Kristelig Folkeparti | 2683
223
+ Sogn og Fjordane | Miljøpartiet De Grønne | 1410
224
+ Sogn og Fjordane | Venstre | 2532
225
+ Sogn og Fjordane | Høyre | 11572
226
+ Sogn og Fjordane | Fremskrittspartiet | 6153
227
+ Sogn og Fjordane | Alliansen | 43
228
+ Sogn og Fjordane | Demokratene i Norge | 43
229
+ Sogn og Fjordane | Helsepartiet | 110
230
+ Sogn og Fjordane | Partiet De Kristne | 255
231
+ Sogn og Fjordane | Liberalistene | 56
232
+ Møre og Romsdal | Arbeiderpartiet | 31353
233
+ Møre og Romsdal | Sosialistisk Venstreparti | 5745
234
+ Møre og Romsdal | Rødt | 1809
235
+ Møre og Romsdal | Senterpartiet | 19046
236
+ Møre og Romsdal | Kristelig Folkeparti | 9017
237
+ Møre og Romsdal | Miljøpartiet De Grønne | 3167
238
+ Møre og Romsdal | Venstre | 5088
239
+ Møre og Romsdal | Høyre | 34708
240
+ Møre og Romsdal | Fremskrittspartiet | 32750
241
+ Møre og Romsdal | Alliansen | 181
242
+ Møre og Romsdal | Demokratene i Norge | 129
243
+ Møre og Romsdal | Partiet De Kristne | 741
244
+ Møre og Romsdal | Kystpartiet | 121
245
+ Møre og Romsdal | Liberalistene | 175
246
+ Møre og Romsdal | Pensjonistpartiet | 798
247
+ Møre og Romsdal | Nordmørslista | 2135
248
+ Sør-Trøndelag | Arbeiderpartiet | 59610
249
+ Sør-Trøndelag | Sosialistisk Venstreparti | 14008
250
+ Sør-Trøndelag | Rødt | 5344
251
+ Sør-Trøndelag | Senterpartiet | 19409
252
+ Sør-Trøndelag | Kristelig Folkeparti | 4974
253
+ Sør-Trøndelag | Miljøpartiet De Grønne | 7082
254
+ Sør-Trøndelag | Venstre | 7385
255
+ Sør-Trøndelag | Høyre | 37719
256
+ Sør-Trøndelag | Fremskrittspartiet | 21248
257
+ Sør-Trøndelag | Alliansen | 264
258
+ Sør-Trøndelag | Demokratene i Norge | 168
259
+ Sør-Trøndelag | Helsepartiet | 405
260
+ Sør-Trøndelag | Partiet De Kristne | 225
261
+ Sør-Trøndelag | Kystpartiet | 143
262
+ Sør-Trøndelag | Liberalistene | 368
263
+ Sør-Trøndelag | Piratpartiet | 361
264
+ Sør-Trøndelag | Pensjonistpartiet | 3083
265
+ Nord-Trøndelag | Arbeiderpartiet | 26822
266
+ Nord-Trøndelag | Sosialistisk Venstreparti | 3951
267
+ Nord-Trøndelag | Rødt | 1282
268
+ Nord-Trøndelag | Senterpartiet | 19155
269
+ Nord-Trøndelag | Kristelig Folkeparti | 2115
270
+ Nord-Trøndelag | Miljøpartiet De Grønne | 1386
271
+ Nord-Trøndelag | Venstre | 1758
272
+ Nord-Trøndelag | Høyre | 11568
273
+ Nord-Trøndelag | Fremskrittspartiet | 9014
274
+ Nord-Trøndelag | Alliansen | 91
275
+ Nord-Trøndelag | Demokratene i Norge | 98
276
+ Nord-Trøndelag | Helsepartiet | 295
277
+ Nord-Trøndelag | Partiet De Kristne | 169
278
+ Nord-Trøndelag | Kystpartiet | 61
279
+ Nord-Trøndelag | Liberalistene | 78
280
+ Nord-Trøndelag | Piratpartiet | 112
281
+ Nord-Trøndelag | Pensjonistpartiet | 463
282
+ Nordland | Arbeiderpartiet | 35196
283
+ Nordland | Sosialistisk Venstreparti | 9467
284
+ Nordland | Rødt | 3905
285
+ Nordland | Senterpartiet | 25207
286
+ Nordland | Kristelig Folkeparti | 3284
287
+ Nordland | Miljøpartiet De Grønne | 2932
288
+ Nordland | Venstre | 3509
289
+ Nordland | Høyre | 27273
290
+ Nordland | Fremskrittspartiet | 22248
291
+ Nordland | Alliansen | 127
292
+ Nordland | Demokratene i Norge | 186
293
+ Nordland | Helsepartiet | 615
294
+ Nordland | Partiet De Kristne | 288
295
+ Nordland | Kystpartiet | 420
296
+ Nordland | Liberalistene | 269
297
+ Nordland | Norges Kommunistiske Parti | 59
298
+ Nordland | Piratpartiet | 210
299
+ Troms Romsa | Arbeiderpartiet | 21882
300
+ Troms Romsa | Sosialistisk Venstreparti | 9213
301
+ Troms Romsa | Rødt | 2081
302
+ Troms Romsa | Senterpartiet | 13640
303
+ Troms Romsa | Kristelig Folkeparti | 2408
304
+ Troms Romsa | Miljøpartiet De Grønne | 2588
305
+ Troms Romsa | Venstre | 2674
306
+ Troms Romsa | Høyre | 18709
307
+ Troms Romsa | Fremskrittspartiet | 16604
308
+ Troms Romsa | Alliansen | 115
309
+ Troms Romsa | Demokratene i Norge | 119
310
+ Troms Romsa | Helsepartiet | 289
311
+ Troms Romsa | Partiet De Kristne | 160
312
+ Troms Romsa | Kystpartiet | 173
313
+ Troms Romsa | Liberalistene | 300
314
+ Troms Romsa | Norges Kommunistiske Parti | 56
315
+ Troms Romsa | Nordting | 59
316
+ Finnmark Finnmárku | Arbeiderpartiet | 12440
317
+ Finnmark Finnmárku | Sosialistisk Venstreparti | 3437
318
+ Finnmark Finnmárku | Rødt | 602
319
+ Finnmark Finnmárku | Senterpartiet | 5790
320
+ Finnmark Finnmárku | Kristelig Folkeparti | 808
321
+ Finnmark Finnmárku | Miljøpartiet De Grønne | 836
322
+ Finnmark Finnmárku | Venstre | 1644
323
+ Finnmark Finnmárku | Høyre | 5600
324
+ Finnmark Finnmárku | Fremskrittspartiet | 6994
325
+ Finnmark Finnmárku | Alliansen | 79
326
+ Finnmark Finnmárku | Demokratene i Norge | 71
327
+ Finnmark Finnmárku | Helsepartiet | 139
328
+ Finnmark Finnmárku | Partiet De Kristne | 141
329
+ Finnmark Finnmárku | Kystpartiet | 166
330
+ Finnmark Finnmárku | Liberalistene | 86
331
+ Finnmark Finnmárku | Piratpartiet | 76
@@ -0,0 +1,130 @@
1
+ #
2
+ # Statistical Analysis of Polling Results (SAPoR)
3
+ # Copyright (C) 2020 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
+ module Sapor
20
+ #
21
+ # The regional data for Norway.
22
+ #
23
+ class Norway < Area
24
+ include Singleton
25
+
26
+ def area_code
27
+ 'NO'
28
+ end
29
+
30
+ def coalitions
31
+ COALITIONS
32
+ end
33
+
34
+ def no_of_seats
35
+ NO_OF_SEATS
36
+ end
37
+
38
+ def overall_election_results_of_2017
39
+ if @overall_election_results_of_2017.nil?
40
+ @overall_election_results_of_2017 = \
41
+ summarize_election_results(election_results_of_2017)
42
+ end
43
+ @overall_election_results_of_2017
44
+ end
45
+
46
+ def population_size
47
+ # Source: Valgresultat.no, retrieved on 1 January 2020.
48
+ # URL: https://valgresultat.no/?type=st&year=2017
49
+ 2_926_836
50
+ end
51
+
52
+ def seats(simulation)
53
+ electoral_system.project(simulation)
54
+ end
55
+
56
+ def threshold
57
+ LEVELING_THRESHOLD
58
+ end
59
+
60
+ private
61
+
62
+ AP_PARTY = 'Arbeiderpartiet'.freeze
63
+ FRP_PARTY = 'Fremskrittspartiet'.freeze
64
+ H_PARTY = 'Høyre'.freeze
65
+ KRF_PARTY = 'Kristelig Folkeparti'.freeze
66
+ MDG_PARTY = 'Miljøpartiet De Grønne'.freeze
67
+ R_PARTY = 'Rødt'.freeze
68
+ SP_PARTY = 'Senterpartiet'.freeze
69
+ SV_PARTY = 'Sosialistisk Venstreparti'.freeze
70
+ V_PARTY = 'Venstre'.freeze
71
+
72
+ COALITIONS = [[AP_PARTY, KRF_PARTY, MDG_PARTY, SP_PARTY],
73
+ [AP_PARTY, KRF_PARTY, MDG_PARTY, SP_PARTY, SV_PARTY],
74
+ [AP_PARTY, KRF_PARTY, SP_PARTY],
75
+ [AP_PARTY, MDG_PARTY, R_PARTY, SP_PARTY, SV_PARTY],
76
+ [AP_PARTY, MDG_PARTY, SP_PARTY, SV_PARTY],
77
+ [AP_PARTY, R_PARTY, SP_PARTY, SV_PARTY],
78
+ [AP_PARTY, SP_PARTY, SV_PARTY],
79
+ [AP_PARTY, SP_PARTY],
80
+ [AP_PARTY, SV_PARTY],
81
+ [FRP_PARTY, H_PARTY],
82
+ [FRP_PARTY, H_PARTY, KRF_PARTY, MDG_PARTY, V_PARTY],
83
+ [FRP_PARTY, H_PARTY, KRF_PARTY, SP_PARTY, V_PARTY],
84
+ [FRP_PARTY, H_PARTY, KRF_PARTY, V_PARTY],
85
+ [FRP_PARTY, H_PARTY, V_PARTY],
86
+ [H_PARTY, KRF_PARTY, V_PARTY],
87
+ [KRF_PARTY, SP_PARTY, V_PARTY]].freeze
88
+
89
+ # Source: Valg i Norge, Valgkretser, Wikipedia, retrieved on 1 May 2015.
90
+ # URL: http://no.wikipedia.org/wiki/Valg_i_Norge#Valgkretser
91
+ DIRECT_SEAT_DISTRIBUTION = { 'Akershus' => 16, 'Aust-Agder' => 3,
92
+ 'Buskerud' => 8, 'Finnmark Finnmárku' => 4,
93
+ 'Hedmark' => 6, 'Hordaland' => 15,
94
+ 'Møre og Romsdal' => 8, 'Nord-Trøndelag' => 4,
95
+ 'Nordland' => 8, 'Oppland' => 6, 'Oslo' => 18,
96
+ 'Rogaland' => 13, 'Sogn og Fjordane' => 3,
97
+ 'Sør-Trøndelag' => 9, 'Telemark' => 5,
98
+ 'Troms Romsa' => 5, 'Vest-Agder' => 5,
99
+ 'Vestfold' => 6, 'Østfold' => 8 }.freeze
100
+
101
+ LEVELING_THRESHOLD = 0.04
102
+
103
+ # Source: Valg i Norge, Valgkretser, Wikipedia, retrieved on 16 April 2015.
104
+ # URL: http://no.wikipedia.org/wiki/Valg_i_Norge#Valgkretser
105
+ NO_OF_LEVELING_SEATS = 19
106
+
107
+ NO_OF_SEATS = NO_OF_LEVELING_SEATS + \
108
+ DIRECT_SEAT_DISTRIBUTION.values.inject(:+)
109
+
110
+ def election_results_of_2017
111
+ if @election_results_of_2017.nil?
112
+ @election_results_of_2017 = load_election_results(
113
+ 'norway-20170911.psv'
114
+ )
115
+ end
116
+ @election_results_of_2017
117
+ end
118
+
119
+ def electoral_system
120
+ if @electoral_system.nil?
121
+ @electoral_system = MultiDistrictLeveledProportional.new(
122
+ overall_election_results_of_2017, election_results_of_2017,
123
+ DIRECT_SEAT_DISTRIBUTION, NO_OF_LEVELING_SEATS, LEVELING_THRESHOLD,
124
+ SainteLague14Denominators
125
+ )
126
+ end
127
+ @electoral_system
128
+ end
129
+ end
130
+ end