sapor 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) 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/pl/2015-gl-lis-okr.csv +42 -0
  25. data/data/pl/poland_2015_to_psv.rb +79 -0
  26. data/data/pl/poland_2015_to_psv_with_ko_and_rsw.rb +94 -0
  27. data/data/pl/poland_2015_to_psv_with_ko_konf_kp_l_and_zp.rb +100 -0
  28. data/data/pl/poland_2015_to_psv_with_ko_sld_and_wi.rb +92 -0
  29. data/data/pl/poland_2015_to_psv_with_sld.rb +84 -0
  30. data/data/pl/poland_2015_to_psv_with_sld_and_wi.rb +85 -0
  31. data/data/uk/inject_ukip_2015_as_brexit_2019_in_2017.rb +54 -0
  32. data/data/uk/united_kingdom_2015.txt +651 -0
  33. data/data/uk/united_kingdom_2015_to_psv.rb +104 -0
  34. data/data/uk/united_kingdom_2017.txt +651 -0
  35. data/data/uk/united_kingdom_2017_to_psv.rb +104 -0
  36. data/data/uk/united_kingdom_2017_to_psv_with_brexit_and_chuk.rb +113 -0
  37. data/data/uk/united_kingdom_2017_to_psv_with_tig.rb +111 -0
  38. data/lib/sapor.rb +150 -0
  39. data/lib/sapor/binomials_cache.rb +45 -0
  40. data/lib/sapor/combinations_distribution.rb +222 -0
  41. data/lib/sapor/denominators.rb +67 -0
  42. data/lib/sapor/dichotomies.rb +138 -0
  43. data/lib/sapor/dichotomy.rb +164 -0
  44. data/lib/sapor/first_past_the_post.rb +82 -0
  45. data/lib/sapor/largest_remainder.rb +118 -0
  46. data/lib/sapor/log4r_logger.rb +49 -0
  47. data/lib/sapor/log_facade.rb +40 -0
  48. data/lib/sapor/multi_district_leveled_proportional.rb +64 -0
  49. data/lib/sapor/multi_district_proportional.rb +123 -0
  50. data/lib/sapor/multi_district_variable_threshold_proportional.rb +128 -0
  51. data/lib/sapor/number_formatter.rb +45 -0
  52. data/lib/sapor/options.rb +73 -0
  53. data/lib/sapor/poll.rb +286 -0
  54. data/lib/sapor/polychotomy.rb +200 -0
  55. data/lib/sapor/pseudorandom_multirange_enumerator.rb +87 -0
  56. data/lib/sapor/referendum_polychotomy.rb +165 -0
  57. data/lib/sapor/regional_data/area.rb +82 -0
  58. data/lib/sapor/regional_data/austria.rb +84 -0
  59. data/lib/sapor/regional_data/belgium-brussels-2014.psv +46 -0
  60. data/lib/sapor/regional_data/belgium-brussels-20190526.psv +33 -0
  61. data/lib/sapor/regional_data/belgium-flanders-2014.psv +80 -0
  62. data/lib/sapor/regional_data/belgium-flanders-20190526.psv +74 -0
  63. data/lib/sapor/regional_data/belgium-wallonia-2014.psv +114 -0
  64. data/lib/sapor/regional_data/belgium-wallonia-20190526.psv +93 -0
  65. data/lib/sapor/regional_data/belgium.rb +97 -0
  66. data/lib/sapor/regional_data/belgium_brussels.rb +62 -0
  67. data/lib/sapor/regional_data/belgium_flanders.rb +64 -0
  68. data/lib/sapor/regional_data/belgium_wallonia.rb +63 -0
  69. data/lib/sapor/regional_data/catalonia-2012-2015.psv +100 -0
  70. data/lib/sapor/regional_data/catalonia-2012.psv +87 -0
  71. data/lib/sapor/regional_data/catalonia-2015-jxcat.psv +68 -0
  72. data/lib/sapor/regional_data/catalonia-2015-no-jxsi.psv +68 -0
  73. data/lib/sapor/regional_data/catalonia-2015.psv +63 -0
  74. data/lib/sapor/regional_data/catalonia-jxcat.rb +109 -0
  75. data/lib/sapor/regional_data/catalonia-no-jxsi.rb +96 -0
  76. data/lib/sapor/regional_data/catalonia.rb +96 -0
  77. data/lib/sapor/regional_data/denmark-20150618-with-e-and-p.psv +164 -0
  78. data/lib/sapor/regional_data/denmark-20150618-with-e.psv +153 -0
  79. data/lib/sapor/regional_data/denmark-20150618-with-p.psv +153 -0
  80. data/lib/sapor/regional_data/denmark-20150618.psv +142 -0
  81. data/lib/sapor/regional_data/denmark.rb +128 -0
  82. data/lib/sapor/regional_data/denmark_with_e.rb +128 -0
  83. data/lib/sapor/regional_data/denmark_with_e_and_p.rb +128 -0
  84. data/lib/sapor/regional_data/denmark_with_p.rb +128 -0
  85. data/lib/sapor/regional_data/estonia.rb +88 -0
  86. data/lib/sapor/regional_data/european-union-great-britain-20140522-brexit-chuk.psv +172 -0
  87. data/lib/sapor/regional_data/european-union-great-britain-20140522.psv +146 -0
  88. data/lib/sapor/regional_data/european-union-great-britain-20190523.psv +141 -0
  89. data/lib/sapor/regional_data/european-union-ireland-2014-ia-ri-sd.psv +64 -0
  90. data/lib/sapor/regional_data/european-union-ireland-2014-ia-sd.psv +60 -0
  91. data/lib/sapor/regional_data/european-union-ireland-2014-ia.psv +56 -0
  92. data/lib/sapor/regional_data/european-union-ireland-2014-sd.psv +56 -0
  93. data/lib/sapor/regional_data/european-union-ireland-2014.psv +50 -0
  94. data/lib/sapor/regional_data/european-union-ireland-20190524-ia.psv +58 -0
  95. data/lib/sapor/regional_data/european-union-ireland-20190524.psv +52 -0
  96. data/lib/sapor/regional_data/european_union_27_austria.rb +76 -0
  97. data/lib/sapor/regional_data/european_union_27_croatia.rb +81 -0
  98. data/lib/sapor/regional_data/european_union_27_denmark.rb +77 -0
  99. data/lib/sapor/regional_data/european_union_27_estonia.rb +74 -0
  100. data/lib/sapor/regional_data/european_union_27_finland.rb +74 -0
  101. data/lib/sapor/regional_data/european_union_27_ireland.rb +96 -0
  102. data/lib/sapor/regional_data/european_union_27_ireland_with_ia.rb +97 -0
  103. data/lib/sapor/regional_data/european_union_27_italy.rb +84 -0
  104. data/lib/sapor/regional_data/european_union_27_netherlands.rb +81 -0
  105. data/lib/sapor/regional_data/european_union_27_poland.rb +84 -0
  106. data/lib/sapor/regional_data/european_union_27_romania.rb +78 -0
  107. data/lib/sapor/regional_data/european_union_27_slovakia.rb +80 -0
  108. data/lib/sapor/regional_data/european_union_27_spain.rb +82 -0
  109. data/lib/sapor/regional_data/european_union_27_sweden.rb +76 -0
  110. data/lib/sapor/regional_data/european_union_austria.rb +76 -0
  111. data/lib/sapor/regional_data/european_union_bulgaria.rb +81 -0
  112. data/lib/sapor/regional_data/european_union_croatia.rb +81 -0
  113. data/lib/sapor/regional_data/european_union_cyprus.rb +72 -0
  114. data/lib/sapor/regional_data/european_union_czech_republic.rb +82 -0
  115. data/lib/sapor/regional_data/european_union_denmark.rb +77 -0
  116. data/lib/sapor/regional_data/european_union_estonia.rb +74 -0
  117. data/lib/sapor/regional_data/european_union_finland.rb +74 -0
  118. data/lib/sapor/regional_data/european_union_flanders.rb +74 -0
  119. data/lib/sapor/regional_data/european_union_france.rb +84 -0
  120. data/lib/sapor/regional_data/european_union_france_2019.rb +84 -0
  121. data/lib/sapor/regional_data/european_union_french_community_of_belgium.rb +73 -0
  122. data/lib/sapor/regional_data/european_union_germany.rb +86 -0
  123. data/lib/sapor/regional_data/european_union_great_britain.rb +98 -0
  124. data/lib/sapor/regional_data/european_union_greece.rb +77 -0
  125. data/lib/sapor/regional_data/european_union_hungary.rb +76 -0
  126. data/lib/sapor/regional_data/european_union_ireland.rb +96 -0
  127. data/lib/sapor/regional_data/european_union_ireland_with_ia.rb +97 -0
  128. data/lib/sapor/regional_data/european_union_italy.rb +84 -0
  129. data/lib/sapor/regional_data/european_union_latvia.rb +81 -0
  130. data/lib/sapor/regional_data/european_union_lithuania.rb +80 -0
  131. data/lib/sapor/regional_data/european_union_luxembourg.rb +75 -0
  132. data/lib/sapor/regional_data/european_union_malta.rb +71 -0
  133. data/lib/sapor/regional_data/european_union_netherlands.rb +81 -0
  134. data/lib/sapor/regional_data/european_union_northern_ireland.rb +75 -0
  135. data/lib/sapor/regional_data/european_union_poland.rb +84 -0
  136. data/lib/sapor/regional_data/european_union_portugal.rb +75 -0
  137. data/lib/sapor/regional_data/european_union_romania.rb +78 -0
  138. data/lib/sapor/regional_data/european_union_slovakia.rb +81 -0
  139. data/lib/sapor/regional_data/european_union_slovenia.rb +85 -0
  140. data/lib/sapor/regional_data/european_union_spain.rb +82 -0
  141. data/lib/sapor/regional_data/european_union_sweden.rb +76 -0
  142. data/lib/sapor/regional_data/finland-20150419-with-sin.psv +224 -0
  143. data/lib/sapor/regional_data/finland-20150419.psv +212 -0
  144. data/lib/sapor/regional_data/finland.rb +107 -0
  145. data/lib/sapor/regional_data/finland_with_sin.rb +107 -0
  146. data/lib/sapor/regional_data/flanders-2014.psv +96 -0
  147. data/lib/sapor/regional_data/flanders-20190526.psv +87 -0
  148. data/lib/sapor/regional_data/flanders.rb +115 -0
  149. data/lib/sapor/regional_data/france.rb +38 -0
  150. data/lib/sapor/regional_data/greece.rb +92 -0
  151. data/lib/sapor/regional_data/hungary-2014.psv +2104 -0
  152. data/lib/sapor/regional_data/hungary.rb +116 -0
  153. data/lib/sapor/regional_data/iceland-20161029-midflokkurinn.psv +94 -0
  154. data/lib/sapor/regional_data/iceland-20161029.psv +88 -0
  155. data/lib/sapor/regional_data/iceland-20171028.psv +85 -0
  156. data/lib/sapor/regional_data/iceland.rb +133 -0
  157. data/lib/sapor/regional_data/latvia-20141004-kpv-p-par.psv +109 -0
  158. data/lib/sapor/regional_data/latvia-20141004-kpv-par.psv +103 -0
  159. data/lib/sapor/regional_data/latvia-20141004-kpv.psv +97 -0
  160. data/lib/sapor/regional_data/latvia-20141004.psv +89 -0
  161. data/lib/sapor/regional_data/latvia.rb +112 -0
  162. data/lib/sapor/regional_data/latvia_kpv.rb +112 -0
  163. data/lib/sapor/regional_data/latvia_kpv_p_par.rb +112 -0
  164. data/lib/sapor/regional_data/latvia_kpv_par.rb +112 -0
  165. data/lib/sapor/regional_data/luxembourg-20131020.psv +76 -0
  166. data/lib/sapor/regional_data/luxembourg.rb +82 -0
  167. data/lib/sapor/regional_data/netherlands.rb +108 -0
  168. data/lib/sapor/regional_data/norway.rb +425 -0
  169. data/lib/sapor/regional_data/norwegian_municipality.rb +68 -0
  170. data/lib/sapor/regional_data/poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv +321 -0
  171. 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
  172. data/lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv +403 -0
  173. data/lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv +444 -0
  174. data/lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv +403 -0
  175. data/lib/sapor/regional_data/poland-20151025.psv +403 -0
  176. data/lib/sapor/regional_data/poland.rb +125 -0
  177. data/lib/sapor/regional_data/poland_with_ko_and_l_without_n_po_r_and_zl.rb +122 -0
  178. 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
  179. data/lib/sapor/regional_data/poland_with_ko_sld_and_wi_without_n_po_and_zl.rb +125 -0
  180. data/lib/sapor/regional_data/poland_with_sld_and_wi_without_zl.rb +126 -0
  181. data/lib/sapor/regional_data/poland_with_sld_without_zl.rb +126 -0
  182. data/lib/sapor/regional_data/portugal-20151004-with-a-and-ch-without-paf.psv +438 -0
  183. data/lib/sapor/regional_data/portugal-20151004-with-a-and-il-without-paf.psv +438 -0
  184. data/lib/sapor/regional_data/portugal-20151004-with-a-ch-and-il-without-paf.psv +461 -0
  185. data/lib/sapor/regional_data/portugal-20151004-with-a-without-paf.psv +415 -0
  186. data/lib/sapor/regional_data/portugal-20151004-with-ch-and-il-without-paf.psv +438 -0
  187. data/lib/sapor/regional_data/portugal-20151004-without-paf.psv +392 -0
  188. data/lib/sapor/regional_data/portugal-20151004.psv +370 -0
  189. data/lib/sapor/regional_data/portugal.rb +101 -0
  190. data/lib/sapor/regional_data/portugal_with_a_and_ch_without_paf.rb +92 -0
  191. data/lib/sapor/regional_data/portugal_with_a_and_il_without_paf.rb +92 -0
  192. data/lib/sapor/regional_data/portugal_with_a_ch_and_il_without_paf.rb +92 -0
  193. data/lib/sapor/regional_data/portugal_with_a_without_paf.rb +92 -0
  194. data/lib/sapor/regional_data/portugal_with_ch_and_il_without_paf.rb +92 -0
  195. data/lib/sapor/regional_data/portugal_without_paf.rb +92 -0
  196. data/lib/sapor/regional_data/slovakia.rb +81 -0
  197. data/lib/sapor/regional_data/slovenia.rb +114 -0
  198. data/lib/sapor/regional_data/spain-20160626.psv +619 -0
  199. data/lib/sapor/regional_data/spain.rb +136 -0
  200. data/lib/sapor/regional_data/sweden.rb +92 -0
  201. data/lib/sapor/regional_data/sweden_20140914.rb +89 -0
  202. data/lib/sapor/regional_data/united_kingdom-2015.psv +4358 -0
  203. data/lib/sapor/regional_data/united_kingdom-20170608-brexit-chuk.psv +5154 -0
  204. data/lib/sapor/regional_data/united_kingdom-20170608-brexit.psv +4521 -0
  205. data/lib/sapor/regional_data/united_kingdom-20170608-tig.psv +4529 -0
  206. data/lib/sapor/regional_data/united_kingdom-20170608.psv +3894 -0
  207. data/lib/sapor/regional_data/united_kingdom.rb +94 -0
  208. data/lib/sapor/regional_data/united_kingdom_with_brexit.rb +110 -0
  209. data/lib/sapor/regional_data/united_kingdom_with_brexit_and_chuk.rb +111 -0
  210. data/lib/sapor/regional_data/united_kingdom_with_tig.rb +111 -0
  211. data/lib/sapor/regional_data/utopia.rb +66 -0
  212. data/lib/sapor/regional_data/wallonia-2014.psv +101 -0
  213. data/lib/sapor/regional_data/wallonia-20190526.psv +88 -0
  214. data/lib/sapor/regional_data/wallonia.rb +112 -0
  215. data/lib/sapor/representatives_polychotomy.rb +338 -0
  216. data/lib/sapor/single_district_proportional.rb +75 -0
  217. data/sapor.gemspec +35 -0
  218. data/spec/integration/area_spec.rb +28 -0
  219. data/spec/integration/poll_spec.rb +112 -0
  220. data/spec/integration/sample.poll +8 -0
  221. data/spec/spec_helper.rb +31 -0
  222. data/spec/unit/area_spec.rb +115 -0
  223. data/spec/unit/austria_spec.rb +76 -0
  224. data/spec/unit/belgium_brussels_spec.rb +58 -0
  225. data/spec/unit/belgium_flanders_spec.rb +62 -0
  226. data/spec/unit/belgium_spec.rb +26 -0
  227. data/spec/unit/belgium_wallonia_spec.rb +65 -0
  228. data/spec/unit/binomials_cache_spec.rb +34 -0
  229. data/spec/unit/catalonia_spec.rb +74 -0
  230. data/spec/unit/combinations_distribution_spec.rb +241 -0
  231. data/spec/unit/denmark_spec.rb +56 -0
  232. data/spec/unit/denmark_with_e_and_p_spec.rb +58 -0
  233. data/spec/unit/denmark_with_e_spec.rb +57 -0
  234. data/spec/unit/denmark_with_p_spec.rb +57 -0
  235. data/spec/unit/denominators_spec.rb +40 -0
  236. data/spec/unit/dichotomies_spec.rb +154 -0
  237. data/spec/unit/dichotomy_spec.rb +320 -0
  238. data/spec/unit/estonia_spec.rb +65 -0
  239. data/spec/unit/european_union_27_austria_spec.rb +61 -0
  240. data/spec/unit/european_union_27_croatia_spec.rb +60 -0
  241. data/spec/unit/european_union_27_denmark_spec.rb +62 -0
  242. data/spec/unit/european_union_27_estonia_spec.rb +94 -0
  243. data/spec/unit/european_union_27_finland_spec.rb +75 -0
  244. data/spec/unit/european_union_27_ireland_spec.rb +72 -0
  245. data/spec/unit/european_union_27_ireland_with_ia_spec.rb +74 -0
  246. data/spec/unit/european_union_27_italy_spec.rb +69 -0
  247. data/spec/unit/european_union_27_netherlands_spec.rb +81 -0
  248. data/spec/unit/european_union_27_poland_spec.rb +69 -0
  249. data/spec/unit/european_union_27_romania_spec.rb +67 -0
  250. data/spec/unit/european_union_27_slovakia_spec.rb +111 -0
  251. data/spec/unit/european_union_27_spain_spec.rb +130 -0
  252. data/spec/unit/european_union_27_sweden_spec.rb +89 -0
  253. data/spec/unit/european_union_austria_spec.rb +61 -0
  254. data/spec/unit/european_union_bulgaria_spec.rb +97 -0
  255. data/spec/unit/european_union_croatia_spec.rb +59 -0
  256. data/spec/unit/european_union_cyprus_spec.rb +65 -0
  257. data/spec/unit/european_union_czech_republic_spec.rb +125 -0
  258. data/spec/unit/european_union_denmark_spec.rb +61 -0
  259. data/spec/unit/european_union_estonia_spec.rb +93 -0
  260. data/spec/unit/european_union_finland_spec.rb +75 -0
  261. data/spec/unit/european_union_flanders_spec.rb +56 -0
  262. data/spec/unit/european_union_france_2019_spec.rb +73 -0
  263. data/spec/unit/european_union_france_spec.rb +73 -0
  264. data/spec/unit/european_union_french_community_of_belgium_spec.rb +61 -0
  265. data/spec/unit/european_union_germany_spec.rb +90 -0
  266. data/spec/unit/european_union_great_britain_spec.rb +87 -0
  267. data/spec/unit/european_union_greece_spec.rb +148 -0
  268. data/spec/unit/european_union_hungary_spec.rb +57 -0
  269. data/spec/unit/european_union_ireland_spec.rb +72 -0
  270. data/spec/unit/european_union_ireland_with_ia_spec.rb +74 -0
  271. data/spec/unit/european_union_italy_spec.rb +69 -0
  272. data/spec/unit/european_union_latvia_spec.rb +76 -0
  273. data/spec/unit/european_union_lithuania_spec.rb +68 -0
  274. data/spec/unit/european_union_luxembourg_spec.rb +63 -0
  275. data/spec/unit/european_union_malta_spec.rb +60 -0
  276. data/spec/unit/european_union_netherlands_spec.rb +81 -0
  277. data/spec/unit/european_union_northern_ireland_spec.rb +66 -0
  278. data/spec/unit/european_union_poland_spec.rb +69 -0
  279. data/spec/unit/european_union_portugal_spec.rb +77 -0
  280. data/spec/unit/european_union_romania_spec.rb +67 -0
  281. data/spec/unit/european_union_slovakia_spec.rb +111 -0
  282. data/spec/unit/european_union_slovenia_spec.rb +77 -0
  283. data/spec/unit/european_union_spain_spec.rb +129 -0
  284. data/spec/unit/european_union_sweden_spec.rb +89 -0
  285. data/spec/unit/finland_spec.rb +65 -0
  286. data/spec/unit/finland_with_sin_spec.rb +67 -0
  287. data/spec/unit/first_past_the_post_spec.rb +54 -0
  288. data/spec/unit/flanders_spec.rb +70 -0
  289. data/spec/unit/france_spec.rb +32 -0
  290. data/spec/unit/greece_spec.rb +118 -0
  291. data/spec/unit/hungary_spec.rb +132 -0
  292. data/spec/unit/iceland_spec.rb +57 -0
  293. data/spec/unit/largest_remainder_spec.rb +79 -0
  294. data/spec/unit/latvia_kpv_p_par_spec.rb +38 -0
  295. data/spec/unit/latvia_kpv_par_spec.rb +38 -0
  296. data/spec/unit/latvia_kpv_spec.rb +38 -0
  297. data/spec/unit/latvia_spec.rb +60 -0
  298. data/spec/unit/luxembourg_spec.rb +54 -0
  299. data/spec/unit/multi_district_leveled_proportional_spec.rb +49 -0
  300. data/spec/unit/multi_district_proportional_spec.rb +81 -0
  301. data/spec/unit/netherlands_spec.rb +107 -0
  302. data/spec/unit/norway_spec.rb +64 -0
  303. data/spec/unit/norwegian_municipality_spec.rb +89 -0
  304. data/spec/unit/number_formatter_spec.rb +173 -0
  305. data/spec/unit/poland_spec.rb +62 -0
  306. data/spec/unit/poland_with_ko_and_l_without_n_po_r_and_zl_spec.rb +60 -0
  307. 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
  308. data/spec/unit/poland_with_ko_sld_and_wi_without_n_po_and_zl_spec.rb +62 -0
  309. data/spec/unit/poland_with_sld_and_wi_without_zl_spec.rb +63 -0
  310. data/spec/unit/poland_with_sld_without_zl_spec.rb +62 -0
  311. data/spec/unit/poll_spec.rb +110 -0
  312. data/spec/unit/portugal_spec.rb +66 -0
  313. data/spec/unit/portugal_with_a_and_ch_without_paf_spec.rb +68 -0
  314. data/spec/unit/portugal_with_a_and_il_without_paf_spec.rb +68 -0
  315. data/spec/unit/portugal_with_a_ch_and_il_without_paf_spec.rb +69 -0
  316. data/spec/unit/portugal_with_a_without_paf_spec.rb +67 -0
  317. data/spec/unit/portugal_with_ch_and_il_without_paf_spec.rb +68 -0
  318. data/spec/unit/portugal_without_paf_spec.rb +66 -0
  319. data/spec/unit/pseudorandom_multirange_enumerator_spec.rb +82 -0
  320. data/spec/unit/referendum_polychotomy_spec.rb +289 -0
  321. data/spec/unit/representatives_polychotomy_spec.rb +332 -0
  322. data/spec/unit/slovakia_spec.rb +99 -0
  323. data/spec/unit/slovenia_spec.rb +80 -0
  324. data/spec/unit/spain_spec.rb +101 -0
  325. data/spec/unit/sweden_20140914_spec.rb +112 -0
  326. data/spec/unit/sweden_spec.rb +113 -0
  327. data/spec/unit/united_kingdom_spec.rb +65 -0
  328. data/spec/unit/united_kingdom_with_brexit_and_chuk_spec.rb +67 -0
  329. data/spec/unit/united_kingdom_with_brexit_spec.rb +66 -0
  330. data/spec/unit/united_kingdom_with_tig_spec.rb +66 -0
  331. data/spec/unit/wallonia_spec.rb +70 -0
  332. metadata +490 -0
@@ -0,0 +1,73 @@
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::EuropeanUnionFrance, '#area_code' do
23
+ it 'returns EU[FR] as the area code' do
24
+ expect(Sapor::EuropeanUnionFrance.instance.area_code).to eq('EU[FR]')
25
+ end
26
+ end
27
+
28
+ describe Sapor::EuropeanUnionFrance, '#no_of_seats' do
29
+ it 'returns 74 as the number of seats' do
30
+ expect(Sapor::EuropeanUnionFrance.instance.no_of_seats).to eq(74)
31
+ end
32
+ end
33
+
34
+ describe Sapor::EuropeanUnionFrance, '#population_size' do
35
+ it 'returns a population size of 18,955,636' do
36
+ expect(Sapor::EuropeanUnionFrance.instance.population_size).to \
37
+ eq(18_955_636)
38
+ end
39
+ end
40
+
41
+ describe Sapor::EuropeanUnionFrance, '#seats' do
42
+ it 'calculates the number of seats using the votes of the 2014 election' do
43
+ results = { 'Front national–Rassemblement bleu Marine (ENF)' => 4_712_461,
44
+ 'Union pour un mouvement populaire (EPP)' => 3_943_819,
45
+ 'Parti socialiste–Parti radical de gauche (S&D)' => 2_650_357,
46
+ 'L’Alternative (ALDE)' => 1_884_565,
47
+ 'Europe Écologie Les Verts (Greens/EFA)' => 1_696_442,
48
+ 'Front de gauche–L’Union pour les Outremer (GUE/NGL)' =>
49
+ 1_252_730,
50
+ 'Debout la République (—)' => 724_441,
51
+ 'Nouvelle Donne (—)' => 549_734, 'Nous Citoyens (—)' => 266_343,
52
+ 'Lutte ouvrière (—)' => 222_491,
53
+ 'Alliance écologiste indépendante (—)' => 211_759,
54
+ 'Force vie' => 138_708, 'Europe citoyenne (—)' => 127_849,
55
+ 'Parti du vote blanc (—)' => 110_090 }
56
+ seats = Sapor::EuropeanUnionFrance.instance.seats(results)
57
+ expect(seats['Front national–Rassemblement bleu Marine (ENF)']).to eq(22)
58
+ expect(seats['Union pour un mouvement populaire (EPP)']).to eq(18)
59
+ expect(seats['Parti socialiste–Parti radical de gauche (S&D)']).to eq(12)
60
+ expect(seats['L’Alternative (ALDE)']).to eq(9)
61
+ expect(seats['Europe Écologie Les Verts (Greens/EFA)']).to eq(8)
62
+ expect(seats['Front de gauche–L’Union pour les Outremer (GUE/NGL)']).to \
63
+ eq(5)
64
+ expect(seats['Debout la République (—)']).to eq(0)
65
+ expect(seats['Nouvelle Donne (—)']).to eq(0)
66
+ expect(seats['Nous Citoyens (—)']).to eq(0)
67
+ expect(seats['Lutte ouvrière (—)']).to eq(0)
68
+ expect(seats['Alliance écologiste indépendante (—)']).to eq(0)
69
+ expect(seats['Force vie']).to eq(0)
70
+ expect(seats['Europe citoyenne (—)']).to eq(0)
71
+ expect(seats['Parti du vote blanc (—)']).to eq(0)
72
+ end
73
+ end
@@ -0,0 +1,61 @@
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::EuropeanUnionFrenchCommunityOfBelgium, '#area_code' do
22
+ it 'returns EU[BE-FRC] as the area code' do
23
+ expect(
24
+ Sapor::EuropeanUnionFrenchCommunityOfBelgium.instance.area_code
25
+ ).to eq('EU[BE-FRC]')
26
+ end
27
+ end
28
+
29
+ describe Sapor::EuropeanUnionFrenchCommunityOfBelgium, '#no_of_seats' do
30
+ it 'returns 8 as the number of seats' do
31
+ expect(
32
+ Sapor::EuropeanUnionFrenchCommunityOfBelgium.instance.no_of_seats
33
+ ).to eq(8)
34
+ end
35
+ end
36
+
37
+ describe Sapor::EuropeanUnionFrenchCommunityOfBelgium, '#population_size' do
38
+ it 'returns a population size of 2,439,775' do
39
+ expect(
40
+ Sapor::EuropeanUnionFrenchCommunityOfBelgium.instance.population_size
41
+ ).to eq(2_439_775)
42
+ end
43
+ end
44
+
45
+ describe Sapor::EuropeanUnionFrenchCommunityOfBelgium, '#seats' do
46
+ it 'calculates the number of seats for the election of 2014' do
47
+ results = { 'PS (S&D)' => 713_375, 'MR (ALDE)' => 660_118,
48
+ 'Ecolo (Greens/EFA)' => 284_656, 'cdH (EPP)' => 276_879,
49
+ 'PTB (GUE/NGL)' => 133_472, 'Parti Populaire (EFDD)' => 145_538,
50
+ 'DéFI (ALDE)' => 82_631, 'Debout Les Belges! (*)' => 72_639 }
51
+ seats = Sapor::EuropeanUnionFrenchCommunityOfBelgium.instance.seats(results)
52
+ expect(seats['PS (S&D)']).to eq(3)
53
+ expect(seats['MR (ALDE)']).to eq(3)
54
+ expect(seats['Ecolo (Greens/EFA)']).to eq(1)
55
+ expect(seats['cdH (EPP)']).to eq(1)
56
+ expect(seats['PTB (GUE/NGL)']).to eq(0)
57
+ expect(seats['Parti Populaire (EFDD)']).to eq(0)
58
+ expect(seats['DéFI (ALDE)']).to eq(0)
59
+ expect(seats['Debout Les Belges! (*)']).to eq(0)
60
+ end
61
+ end
@@ -0,0 +1,90 @@
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::EuropeanUnionGermany, '#area_code' do
23
+ it 'returns EU[DE] as the area code' do
24
+ expect(Sapor::EuropeanUnionGermany.instance.area_code).to eq('EU[DE]')
25
+ end
26
+ end
27
+
28
+ describe Sapor::EuropeanUnionGermany, '#no_of_seats' do
29
+ it 'returns 96 as the number of seats' do
30
+ expect(Sapor::EuropeanUnionGermany.instance.no_of_seats).to eq(96)
31
+ end
32
+ end
33
+
34
+ describe Sapor::EuropeanUnionGermany, '#population_size' do
35
+ it 'returns a population size of 37,389,231' do
36
+ expect(Sapor::EuropeanUnionGermany.instance.population_size).to \
37
+ eq(37_389_231)
38
+ end
39
+ end
40
+
41
+ describe Sapor::EuropeanUnionGermany, '#seats' do
42
+ it 'calculates the number of seats for the election of 2014' do
43
+ results = { 'CDU (EPP)' => 8_812_653, 'SPD (S&D)' => 8_003_628,
44
+ 'BÜNDNIS 90/DIE GRÜNEN (Greens/EFA)' => 3_139_274,
45
+ 'DIE LINKE (GUE/NGL)' => 2_168_455,
46
+ 'Alternative für Deutschland (EFDD)' => 2_070_014,
47
+ 'CSU (EPP)' => 1_567_448, 'FDP (ALDE)' => 986_841,
48
+ 'FREIE WÄHLER (ALDE)' => 428_800,
49
+ 'PIRATEN (Greens/EFA)' => 425_044,
50
+ 'Partei Mensch Umwelt Tierschutz (GUE/NGL)' => 366_598,
51
+ 'NPD (—)' => 301_139,
52
+ 'Familien-Partei Deutschlands (ECR)' => 202_803,
53
+ 'ÖDP (Greens/EFA)' => 185_244,
54
+ 'Die PARTEI (—)' => 184_709, 'Die Republikaner (—)' => 109_757,
55
+ 'Volksabstimmung (—)' => 88_535,
56
+ 'Bayernpartei (Greens/EFA)' => 62_438,
57
+ 'Partei Bibeltreuer Christen (ECR)' => 55_336,
58
+ 'Bürgerbewegung pro NRW (—)' => 52_649,
59
+ 'AUF (ECR)' => 50_953, 'Christliche Mitte (—)' => 30_136,
60
+ 'DKP (GUE/NGL)' => 25_147, 'MLPD (—)' => 18_198,
61
+ 'BüSo (—)' => 10_369,
62
+ 'Sozialistische Gleichheitspartei (—)' => 8_924 }
63
+ seats = Sapor::EuropeanUnionGermany.instance.seats(results)
64
+ expect(seats['CDU (EPP)']).to eq(29)
65
+ expect(seats['SPD (S&D)']).to eq(27)
66
+ expect(seats['BÜNDNIS 90/DIE GRÜNEN (Greens/EFA)']).to eq(11)
67
+ expect(seats['DIE LINKE (GUE/NGL)']).to eq(7)
68
+ expect(seats['Alternative für Deutschland (EFDD)']).to eq(7)
69
+ expect(seats['CSU (EPP)']).to eq(5)
70
+ expect(seats['FDP (ALDE)']).to eq(3)
71
+ expect(seats['FREIE WÄHLER (ALDE)']).to eq(1)
72
+ expect(seats['PIRATEN (Greens/EFA)']).to eq(1)
73
+ expect(seats['Partei Mensch Umwelt Tierschutz (GUE/NGL)']).to eq(1)
74
+ expect(seats['NPD (—)']).to eq(1)
75
+ expect(seats['Familien-Partei Deutschlands (ECR)']).to eq(1)
76
+ expect(seats['ÖDP (Greens/EFA)']).to eq(1)
77
+ expect(seats['Die PARTEI (—)']).to eq(1)
78
+ expect(seats['Die Republikaner (—)']).to eq(0)
79
+ expect(seats['Volksabstimmung (—)']).to eq(0)
80
+ expect(seats['Bayernpartei (Greens/EFA)']).to eq(0)
81
+ expect(seats['Partei Bibeltreuer Christen (ECR)']).to eq(0)
82
+ expect(seats['Bürgerbewegung pro NRW (—)']).to eq(0)
83
+ expect(seats['AUF (ECR)']).to eq(0)
84
+ expect(seats['Christliche Mitte (—)']).to eq(0)
85
+ expect(seats['DKP (GUE/NGL)']).to eq(0)
86
+ expect(seats['MLPD (—)']).to eq(0)
87
+ expect(seats['BüSo (—)']).to eq(0)
88
+ expect(seats['Sozialistische Gleichheitspartei (—)']).to eq(0)
89
+ end
90
+ end
@@ -0,0 +1,87 @@
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::EuropeanUnionGreatBritain, '#area_code' do
23
+ it 'returns EU[GB-GBN] as the area code' do
24
+ expect(Sapor::EuropeanUnionGreatBritain.instance.area_code).to \
25
+ eq('EU[GB-GBN]')
26
+ end
27
+ end
28
+
29
+ describe Sapor::EuropeanUnionGreatBritain, '#no_of_seats' do
30
+ it 'returns 70 as the number of seats' do
31
+ expect(Sapor::EuropeanUnionGreatBritain.instance.no_of_seats).to eq(70)
32
+ end
33
+ end
34
+
35
+ describe Sapor::EuropeanUnionGreatBritain, '#population_size' do
36
+ it 'returns a population size of 17,199,701 (UK) - 572,447 (NI)' do
37
+ expect(Sapor::EuropeanUnionGreatBritain.instance.population_size).to \
38
+ eq(17_199_701 - 572_447)
39
+ end
40
+ end
41
+
42
+ describe Sapor::EuropeanUnionGreatBritain, '#seats' do
43
+ it 'calculates the number of seats for the election of 2014' do
44
+ great_britain = Sapor::EuropeanUnionGreatBritain.instance
45
+ results = great_britain.overall_election_results_of_2019
46
+ seats = great_britain.seats(results)
47
+ expect(seats['Brexit Party (NI)']).to eq(29)
48
+ expect(seats['Liberal Democrats (RE)']).to eq(16)
49
+ expect(seats['Labour Party (S&D)']).to eq(10)
50
+ expect(seats['Green Party (Greens/EFA)']).to eq(7)
51
+ expect(seats['Conservative Party (ECR)']).to eq(4)
52
+ expect(seats['Scottish National Party (Greens/EFA)']).to eq(3)
53
+ expect(seats['Plaid Cymru (Greens/EFA)']).to eq(1)
54
+ expect(seats['Change UK (RE)']).to eq(0)
55
+ expect(seats['UK Independence Party (ID)']).to eq(0)
56
+ expect(seats['Yorkshire Party (Greens/EFA)']).to eq(0)
57
+ expect(seats['English Democrats (*)']).to eq(0)
58
+ expect(seats['UK European Union Party (*)']).to eq(0)
59
+ expect(seats['Animal Welfare Party (GUE/NGL)']).to eq(0)
60
+ expect(seats['Women’s Equality Party (*)']).to eq(0)
61
+ expect(seats['Independent Network (*)']).to eq(0)
62
+ expect(seats['Socialist Party of Great Britain (*)']).to eq(0)
63
+ expect(seats['Independent: Alan Kirkby (*)']).to eq(0)
64
+ expect(seats['Independent: Andrea Venzon (*)']).to eq(0)
65
+ expect(seats['Independent: Andrew Medhurst (*)']).to eq(0)
66
+ expect(seats['Independent: Attila Csordas (*)']).to eq(0)
67
+ expect(seats['Independent: Claudia McDowell (*)']).to eq(0)
68
+ expect(seats['Independent: David Victor Round (*)']).to eq(0)
69
+ expect(seats['Independent: Daze Aghaji (*)']).to eq(0)
70
+ expect(seats['Independent: Gordon Edgar (*)']).to eq(0)
71
+ expect(seats['Independent: Henry Muss (*)']).to eq(0)
72
+ expect(seats['Independent: Ian Sowden (*)']).to eq(0)
73
+ expect(seats['Independent: Jason Guy Spencer McMahon (*)']).to eq(0)
74
+ expect(seats['Independent: Ken Parke (*)']).to eq(0)
75
+ expect(seats['Independent: Kofi Klu (*)']).to eq(0)
76
+ expect(seats['Independent: Larch Maxey (*)']).to eq(0)
77
+ expect(seats['Independent: Michael Jeffrey Tuberville (*)']).to eq(0)
78
+ expect(seats['Independent: Mike Shad (*)']).to eq(0)
79
+ expect(seats['Independent: Mohammad Aslam (*)']).to eq(0)
80
+ expect(seats['Independent: Mothiur Rahman (*)']).to eq(0)
81
+ expect(seats['Independent: Neville Seed (*)']).to eq(0)
82
+ expect(seats['Independent: Roger Hallam (*)']).to eq(0)
83
+ expect(seats['Independent: Simon Rood (*)']).to eq(0)
84
+ expect(seats['Independent: Tommy Robinson (*)']).to eq(0)
85
+ expect(seats['Independent: Zoe Lafferty (*)']).to eq(0)
86
+ end
87
+ end
@@ -0,0 +1,148 @@
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::EuropeanUnionGreece, '#area_code' do
23
+ it 'returns EU[GR] as the area code' do
24
+ expect(Sapor::EuropeanUnionGreece.instance.area_code).to eq('EU[GR]')
25
+ end
26
+ end
27
+
28
+ describe Sapor::EuropeanUnionGreece, '#no_of_seats' do
29
+ it 'returns 21 as the number of seats' do
30
+ expect(Sapor::EuropeanUnionGreece.instance.no_of_seats).to eq(21)
31
+ end
32
+ end
33
+
34
+ describe Sapor::EuropeanUnionGreece, '#population_size' do
35
+ it 'returns a population size of 5,656,122' do
36
+ expect(Sapor::EuropeanUnionGreece.instance.population_size).to \
37
+ eq(5_656_122)
38
+ end
39
+ end
40
+
41
+ describe Sapor::EuropeanUnionGreece, '#seats' do
42
+ it 'calculates the number of seats for the election of 2014' do
43
+ results = { 'Συνασπισμός Ριζοσπαστικής Αριστεράς (GUE/NGL)' => 1_518_608,
44
+ 'Νέα Δημοκρατία (EPP)' => 1_295_967,
45
+ 'Χρυσή Αυγή (—)' => 536_409,
46
+ 'Ελιά–Δημοκρατική Παράταξη (S&D)' => 457_573,
47
+ 'Το Ποτάμι (S&D)' => 376_629,
48
+ 'Κομμουνιστικό Κόμμα Ελλάδας (—)' => 347_467,
49
+ 'Ανεξάρτητοι Έλληνες (ECR)' => 197_536,
50
+ 'Λαϊκός Ορθόδοξος Συναγερμός (EFDD)' => 153_920,
51
+ 'Έλληνες Ευρωπαίοι Πολίτες (—)' => 82_220,
52
+ 'Δημοκρατική Αριστερά–Προοδευτική Συνεργασία (S&D)' => 68_695,
53
+ 'Ένωση για την Πατρίδα και τον Λαό (—)' => 59_291,
54
+ 'Κόμμα Ελλήνων Κυνηγών (—)' => 57_000,
55
+ 'Γέφυρες (ALDE)' => 51_542,
56
+ 'Οικολόγοι Πράσινοι–Κόμμα Πειρατών Ελλάδας (Greens/EFA)' =>
57
+ 51_573,
58
+ 'Ενιαίο Παλλαϊκό Μέτωπο (—)' => 49_293,
59
+ 'Παναθηναϊκό Κίνημα (—)' => 42_203,
60
+ 'Αντικαπιταλιστική Αριστερή Συνεργασία για την Ανατροπή (—)' =>
61
+ 41_131,
62
+ 'Κόμμα Ισότητας, Ειρήνης και Φιλίας (—)' => 42_620,
63
+ 'Ένωση Κεντρώων (ALDE)' => 36_837,
64
+ 'Κοινωνία–Πολιτική παράταξη συνεχιστών του Καποδίστρια (—)' =>
65
+ 34_475,
66
+ 'Αγροτικό Κτηνοτροφικό Κόμμα Ελλάδας (—)' => 32_366,
67
+ 'ΠΡΑΣΙΝΟΙ - Αλληλεγγύη, Δημιουργία, Οικολογία (Greens/EFA)' =>
68
+ 28_390,
69
+ 'Κοινωνία Αξιών (—)' => 20_882,
70
+ 'Σύνδεσμος Εθνικής Ενότητας (—)' => 17_110,
71
+ 'Σχέδιο Β (—)' => 11_331,
72
+ 'Σοσιαλιστικό Κόμμα (—)' => 11_062,
73
+ 'Μαρξιστικό-Λενινιστικό Κομμουνιστικό Κόμμα Ελλάδας (—)' =>
74
+ 10_784,
75
+ 'Κολλάτος–Ανεξάρτητο Πολιτικό Κίνημα–Οικολογικό Ελληνικό (—)' =>
76
+ 8_989,
77
+ 'Λαϊκές Ενώσεις Υπερκομματικών Κοινωνικών Ομάδων (—)' => 8_891,
78
+ 'ΔΡΑΧΜΗ (—)' => 8_791,
79
+ 'Εθνικό Μέτωπο (—)' => 8_789,
80
+ 'Ελπίδα Πολιτείας (—)' => 6_787,
81
+ 'Ευρωπαϊκή Ελεύθερη Συμμαχία–Ουράνιο Τόξο (Greens/EFA)' =>
82
+ 5_754,
83
+ 'Έλληνες Οικολόγοι (—)' => 5_578,
84
+ 'Πατριωτική ΄Ενωση–Ελληνική Λαϊκή Συσπείρωση (—)' => 4_738,
85
+ 'Εργατικό Επαναστατικό Κόμμα (—)' => 4_511,
86
+ 'Αγωνιστικό Σοσιαλιστικό Κόμμα Ελλάδας (—)' => 3_637,
87
+ 'Οργάνωση Κομμουνιστών Διεθνιστών Ελλάδας (—)' => 3_052,
88
+ 'Οργάνωση για την Ανασυγκρότηση του Κομμουνιστικού Κόμματος' \
89
+ ' Ελλάδας (—)' => 2_860,
90
+ 'Κίνημα Εθνικής Αντίστασης (—)' => 2_525,
91
+ 'Εθνική Αυγή (—)' => 303,
92
+ 'Πανεργατικό Εργατικό Κίνημα Ελλάδος (—)' => 198,
93
+ 'ΕΛΕΥΘΕΡΙΑ' => 12 }
94
+ seats = Sapor::EuropeanUnionGreece.instance.seats(results)
95
+ expect(seats['Συνασπισμός Ριζοσπαστικής Αριστεράς (GUE/NGL)']).to eq(6)
96
+ expect(seats['Νέα Δημοκρατία (EPP)']).to eq(5)
97
+ expect(seats['Χρυσή Αυγή (—)']).to eq(3)
98
+ expect(seats['Ελιά–Δημοκρατική Παράταξη (S&D)']).to eq(2)
99
+ expect(seats['Το Ποτάμι (S&D)']).to eq(2)
100
+ expect(seats['Κομμουνιστικό Κόμμα Ελλάδας (—)']).to eq(2)
101
+ expect(seats['Ανεξάρτητοι Έλληνες (ECR)']).to eq(1)
102
+ expect(seats['Λαϊκός Ορθόδοξος Συναγερμός (EFDD)']).to eq(0)
103
+ expect(seats['Έλληνες Ευρωπαίοι Πολίτες (—)']).to eq(0)
104
+ expect(seats['Δημοκρατική Αριστερά–Προοδευτική Συνεργασία (S&D)']).to eq(0)
105
+ expect(seats['Ένωση για την Πατρίδα και τον Λαό (—)']).to eq(0)
106
+ expect(seats['Κόμμα Ελλήνων Κυνηγών (—)']).to eq(0)
107
+ expect(seats['Γέφυρες (ALDE)']).to eq(0)
108
+ expect(seats['Οικολόγοι Πράσινοι–Κόμμα Πειρατών Ελλάδας (Greens/EFA)']).to \
109
+ eq(0)
110
+ expect(seats['Ενιαίο Παλλαϊκό Μέτωπο (—)']).to eq(0)
111
+ expect(seats['Παναθηναϊκό Κίνημα (—)']).to eq(0)
112
+ expect(seats['Αντικαπιταλιστική Αριστερή Συνεργασία για την Ανατροπή' \
113
+ ' (—)']).to eq(0)
114
+ expect(seats['Κόμμα Ισότητας, Ειρήνης και Φιλίας (—)']).to eq(0)
115
+ expect(seats['Ένωση Κεντρώων (ALDE)']).to eq(0)
116
+ expect(seats['Κοινωνία–Πολιτική παράταξη συνεχιστών του Καποδίστρια' \
117
+ ' (—)']).to eq(0)
118
+ expect(seats['Αγροτικό Κτηνοτροφικό Κόμμα Ελλάδας (—)']).to eq(0)
119
+ expect(seats['ΠΡΑΣΙΝΟΙ - Αλληλεγγύη, Δημιουργία, Οικολογία' \
120
+ ' (Greens/EFA)']).to eq(0)
121
+ expect(seats['Κοινωνία Αξιών (—)']).to eq(0)
122
+ expect(seats['Σύνδεσμος Εθνικής Ενότητας (—)']).to eq(0)
123
+ expect(seats['Σχέδιο Β (—)']).to eq(0)
124
+ expect(seats['Σοσιαλιστικό Κόμμα (—)']).to eq(0)
125
+ expect(seats['Μαρξιστικό-Λενινιστικό Κομμουνιστικό Κόμμα Ελλάδας (—)']).to \
126
+ eq(0)
127
+ expect(seats['Κολλάτος–Ανεξάρτητο Πολιτικό Κίνημα–Οικολογικό Ελληνικό' \
128
+ ' (—)']).to eq(0)
129
+ expect(seats['Λαϊκές Ενώσεις Υπερκομματικών Κοινωνικών Ομάδων (—)']).to \
130
+ eq(0)
131
+ expect(seats['ΔΡΑΧΜΗ (—)']).to eq(0)
132
+ expect(seats['Εθνικό Μέτωπο (—)']).to eq(0)
133
+ expect(seats['Ελπίδα Πολιτείας (—)']).to eq(0)
134
+ expect(seats['Ευρωπαϊκή Ελεύθερη Συμμαχία–Ουράνιο Τόξο (Greens/EFA)']).to \
135
+ eq(0)
136
+ expect(seats['Έλληνες Οικολόγοι (—)']).to eq(0)
137
+ expect(seats['Πατριωτική ΄Ενωση–Ελληνική Λαϊκή Συσπείρωση (—)']).to eq(0)
138
+ expect(seats['Εργατικό Επαναστατικό Κόμμα (—)']).to eq(0)
139
+ expect(seats['Αγωνιστικό Σοσιαλιστικό Κόμμα Ελλάδας (—)']).to eq(0)
140
+ expect(seats['Οργάνωση Κομμουνιστών Διεθνιστών Ελλάδας (—)']).to eq(0)
141
+ expect(seats['Οργάνωση για την Ανασυγκρότηση του Κομμουνιστικού Κόμματος' \
142
+ ' Ελλάδας (—)']).to eq(0)
143
+ expect(seats['Κίνημα Εθνικής Αντίστασης (—)']).to eq(0)
144
+ expect(seats['Εθνική Αυγή (—)']).to eq(0)
145
+ expect(seats['Πανεργατικό Εργατικό Κίνημα Ελλάδος (—)']).to eq(0)
146
+ expect(seats['ΕΛΕΥΘΕΡΙΑ']).to eq(0)
147
+ end
148
+ end