rwanda 0.1.0 → 0.3.1

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.
@@ -1,3 +1,3 @@
1
1
  class Rwanda
2
- VERSION = "0.1.0"
2
+ VERSION = "0.3.1"
3
3
  end
data/lib/rwanda.rb CHANGED
@@ -1,76 +1,124 @@
1
- require "rwanda/version"
2
- require "rwanda/data"
3
- require "fuzzy_match"
1
+ #!/usr/bin/env ruby
4
2
 
5
- class Rwanda
6
- # Province, District, Sector, Cell?, Village?
3
+ require 'rwanda/version'
4
+ #require 'rwanda/data'
5
+ require 'fuzzy_match'
6
+ require 'csv'
7
+ require 'pry'
8
+
9
+ #binding.pry
10
+
11
+ DATA = 'lib/rwanda/data.csv'
12
+
13
+ class Array
14
+ def select_first
15
+ self.each do |el|
16
+ return el if yield(el)
17
+ end
18
+ nil
19
+ end
20
+ end
21
+
22
+ class Village
23
+ attr_accessor :province, :district, :sector, :cell, :village
7
24
 
8
- # Singular Ofs ((
25
+ #def initialize(province, district, sector, cell, village)
26
+ def initialize(row)
27
+ #@province,@district,@sector,@cell,@village=province,district,sector,cell,village
28
+ @province,@district,@sector,@cell,@village=row['province'],row['district'],row['sector'],row['cell'],row['village']
29
+ end
30
+ def to_s
31
+ "#{@province}/#{@district}/#{@sector}/#{@cell}/#{@village}"
32
+ end
33
+ end
34
+
35
+ class Rwanda
36
+ attr_accessor :villages
37
+ DIVISIONS=[:province,:district,:sector,:cell,:village]
38
+ RW = {
39
+ 'Northern Province' => 'Amajyaruguru',
40
+ 'Southern Province' => 'Amajyepfo',
41
+ 'Eastern Province' => 'Iburasirazuba',
42
+ 'Western Province' => 'Iburengerazuba',
43
+ 'Kigali City' => 'Umujyi wa Kigali'
44
+ }
9
45
 
10
- def district_of(sector)
11
- districts_with_sectors.each do |d,s_array|
12
- return d if s_array.include? sector
46
+ def initialize
47
+ @villages = []
48
+ CSV.foreach(DATA, headers: :first_row) do |row|
49
+ villages << Village.new(row)
13
50
  end
14
- nil
15
51
  end
16
- def province_of(district)
17
- Province.each do |p,d_array|
18
- return p if d_array.include? district
52
+ # Singular Ofs ((
53
+ def province_of(district, rw=false)
54
+ village = @villages.select_first {|v| v.district == district}
55
+ if village
56
+ if rw then RW[village.province] else village.province end
57
+ else
58
+ nil
19
59
  end
20
- nil
21
60
  end
22
-
61
+ def district_of(sector)
62
+ village = @villages.select_first {|v| v.sector == sector}
63
+ village ? village.district : nil
64
+ end
23
65
  # )) Plural Ofs ((
24
-
25
66
  def districts_of(province)
26
- return nil unless Province[province]
27
- Province[province].keys
67
+ districts = @villages.select {|v| v.province == province }.collect {|v| v.district}.uniq
68
+ #binding.pry
69
+ districts.empty? ? nil : districts
28
70
  end
29
71
  def sectors_of(district)
30
- districts_with_sectors[district]
72
+ sectors = @villages.select {|v| v.district == district }.collect {|v| v.sector}.uniq
73
+ sectors.empty? ? nil : sectors
31
74
  end
32
-
75
+ def cells_of(district, sector)
76
+ @villages.select {|v| v.district == district and v.sector == sector}.collect {|v| v.cell}.uniq
77
+ end
78
+ def villages_of(district, sector, cell)
79
+ @villages.select {|v| v.district == district and v.sector == sector and v.cell == cell}.collect {|v| v.village}
80
+ end
33
81
  # )) Lists ((
34
-
35
- def provinces; Province.keys; end
36
- def districts; Province.collect {|p,d| d.collect {|d,s| d}}.flatten; end
37
- def sectors; Province.collect {|p,d| d.collect {|d,s| s}}.flatten; end
38
-
39
- # )) Fuzzy Matching ((
40
-
41
- def district_like(district)
42
- @fd ||= FuzzyMatch.new(districts)
43
- @fd.find(district)
82
+ def provinces; @villages.collect{|v| v.province}.uniq; end
83
+ def districts; @villages.collect{|v| v.district}.uniq; end
84
+ # already introduces ambiguity from sectors down: 37 districts are duplicate names
85
+ def sectors
86
+ @sectors ||= @villages.collect {|v| [v.district, v.sector] }.uniq.collect {|ds| ds[1]}.sort
87
+ #@villages.collect{|v| v.sector}.uniq
44
88
  end
89
+
90
+ # )) Matching ((
45
91
  def province_like(province)
46
- @fp = FuzzyMatch.new(provinces)
47
- @fp.find(province)
92
+ @fmp ||= FuzzyMatch.new(provinces)
93
+ @fmp.find(province)
94
+ end
95
+ def district_like(district)
96
+ @fmd ||= FuzzyMatch.new(districts)
97
+ @fmd.find(district)
48
98
  end
49
99
  def sector_like(sector)
50
- @fs = FuzzyMatch.new(sectors)
51
- @fs.find(sector)
100
+ # Already problematic here: there are identical sector names
101
+ @fms ||= FuzzyMatch.new(sectors)
102
+ @fms.find(sector)
52
103
  end
53
-
54
- # )) Existence ((
55
-
56
- def province?(province); provinces.include? province; end
57
- def district?(district); districts.include? district; end
58
- def sector?(sector); sectors.include? sector; end
59
-
60
- # ))
61
-
62
- private
63
-
64
- def districts_with_sectors # flatten out province layer
65
- Province.each_with_object({}) { |(p,d_hash),h| h.merge! d_hash }
104
+ # )) Testing
105
+ #def is_province?(province); @villages.any? {|v| v.province == province}; end
106
+ # is_division?
107
+ DIVISIONS.each do |division|
108
+ define_method("is_#{division}?") do |argument|
109
+ @villages.any? {|v| v.send(division) == argument}
110
+ end
111
+ end
112
+ def exist?(district, sector=false, cell=false, village=false)
113
+ villages = @villages.dup
114
+ return false unless district
115
+ {district: district, sector: sector, cell: cell, village: village}.each_pair do |division_name,division|
116
+ #binding.pry
117
+ return true unless division
118
+ villages.select! {|v| v.send(division_name) == division}
119
+ return false if villages.empty?
120
+ end
121
+ true
66
122
  end
67
- #def sectors_with_cells
68
- # all_sectors_with_cells = {}
69
- # districts_with_sectors.each do |d,s_hash|
70
- # all_sectors_with_cells.merge!(s_hash)
71
- # end
72
- # all_sectors_with_cells
73
- #end
74
- #def sector_of(cell)
75
- #end
76
123
  end
124
+
data/rwanda.gemspec CHANGED
@@ -21,5 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "pry"
24
25
  spec.add_runtime_dependency "fuzzy_match", "~> 2.1.0"
25
26
  end
data/spec/rwanda_spec.rb CHANGED
@@ -1,5 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
+ # Source: old national statistics document
4
+ OLD_SECTORS=['Base', 'Bigogwe', 'Boneza', 'Bugarama', 'Bugeshi', 'Bukure', 'Bumbogo', 'Bungwe', 'Burega', 'Buruhukiro', 'Busanze', 'Busasamana', 'Busasamana', 'Busengo', 'Bushekeri', 'Bushenge', 'Bushoki', 'Busogo', 'Busoro', 'Butare', 'Butaro', 'Buyoga', 'Bweramana', 'Bweyeye', 'Bwira', 'Bwishyura', 'Bwisige', 'Byimana', 'Byumba', 'Coko', 'Cyabakamyi', 'Cyabingo', 'Cyahinda', 'Cyanika', 'Cyanika', 'Cyanzarwe', 'Cyato', 'Cyeru', 'Cyeza', 'Cyinzuzi', 'Cyumba', 'Cyungo', 'Cyuve', 'Fumbwe', 'Gacaca', 'Gacurabwenge', 'Gahanga', 'Gahara', 'Gahengeri', 'Gahini', 'Gahunga', 'Gakenke', 'Gasaka', 'Gasange', 'Gashaki', 'Gashanda', 'Gashenyi', 'Gashonga', 'Gashora', 'Gataraga', 'Gatare', 'Gatebe', 'Gatenga', 'Gatore', 'Gatsata', 'Gatsibo', 'Gatumba', 'Gatunda', 'Gihango', 'Giheke', 'Gihombo', 'Gihundwe', 'Gikomero', 'Gikondo', 'Gikonko', 'Gikundamvura', 'Gisenyi', 'Gishamvu', 'Gishari', 'Gishari', 'Gishubi', 'Gishyita', 'Gisozi', 'Gitambi', 'Gitega', 'Gitesi', 'Giti', 'Gitoki', 'Gitovu', 'Hindiro', 'Huye', 'Jabana', 'Jali', 'Janja', 'Jarama', 'Jenda', 'Jomba', 'Juru', 'Kabacuzi', 'Kabagari', 'Kabare', 'Kabarondo', 'Kabarore', 'Kabatwa', 'Kabaya', 'Kacyiru', 'Kaduha', 'Kagano', 'Kagarama', 'Kageyo', 'Kageyo', 'Kageyo', 'Kagogo', 'Kamabuye', 'Kamegeri', 'Kamembe', 'Kamubuga', 'Kanama', 'Kaniga', 'Kanjongo', 'Kanombe', 'Kansi', 'Kanyinya', 'Kanzenze', 'Karago', 'Karama', 'Karama', 'Karama', 'Karambi', 'Karambo', 'Karangazi', 'Karembo', 'Karenge', 'Karengera', 'Katabagemu', 'Kavumu', 'Kayenzi', 'Kayumbu', 'Kazo', 'Kibangu', 'Kibeho', 'Kibilizi', 'Kibirizi', 'Kibirizi', 'Kibumbwe', 'Kibungo', 'Kicukiro', 'Kigabiro', 'Kigali', 'Kigarama', 'Kigarama', 'Kigembe', 'Kigeyo', 'Kigina', 'Kigoma', 'Kigoma', 'Kimihurura', 'Kimironko', 'Kimisagara', 'Kimonyi', 'Kinazi', 'Kinazi', 'Kinigi', 'Kinihira', 'Kinihira', 'Kinoni', 'Kintobo', 'Kinyababa', 'Kinyinya', 'Kiramuruzi', 'Kirehe', 'Kirimbi', 'Kisaro', 'Kitabi', 'Kivu', 'Kivumu', 'Kivuruga', 'Kivuye', 'Kiyombe', 'Kiyumba', 'Kiziguro', 'Macuba', 'Mageragere', 'Mahama', 'Mahembe', 'Mamba', 'Manihira', 'Manyagiro', 'Maraba', 'Mareba', 'Masaka', 'Masoro', 'Mata', 'Mataba', 'Matimba', 'Matyazo', 'Mayange', 'Mbazi', 'Mbazi', 'Mbogo', 'Mbuye', 'Mimuli', 'Minazi', 'Miyove', 'Mpanga', 'Mubuga', 'Mudende', 'Mugano', 'Muganza', 'Muganza', 'Muganza', 'Mugesera', 'Mugina', 'Mugombwa', 'Mugunga', 'Muhanda', 'Muhanga', 'Muhazi', 'Muhima', 'Muhondo', 'Muhororo', 'Muhoza', 'Muhura', 'Mukama', 'Mukamira', 'Mukarange', 'Mukarange', 'Mukindo', 'Mukingo', 'Muko', 'Muko', 'Mukura', 'Mukura', 'Munini', 'Munyaga', 'Munyiginya', 'Murama', 'Murama', 'Murambi', 'Murambi', 'Murambi', 'Muringa', 'Murunda', 'Murundi', 'Murundi', 'Mururu', 'Musambira', 'Musange', 'Musanze', 'Musasa', 'Musaza', 'Musebeya', 'Musenyi', 'Musha', 'Musha', 'Musheli', 'Mushikiri', 'Mushishiro', 'Mushonyi', 'Mushubati', 'Mushubi', 'Mutenderi', 'Mutete', 'Mutuntu', 'Muyira', 'Muyongwe', 'Muyumbu', 'Muzo', 'Mwendo', 'Mwiri', 'Mwogo', 'Mwulire', 'Nasho', 'Ndaro', 'Ndego', 'Ndera', 'Ndora', 'Nduba', 'Nemba', 'Nemba', 'Ngamba', 'Ngarama', 'Ngera', 'Ngeruka', 'Ngoma', 'Ngoma', 'Ngoma', 'Ngororero', 'Niboye', 'Nkanka', 'Nkomane', 'Nkombo', 'Nkotsi', 'Nkungu', 'Ntarabana', 'Ntarama', 'Ntongwe', 'Ntyazo', 'Nyabimata', 'Nyabinoni', 'Nyabirasi', 'Nyabitekeri', 'Nyagatare', 'Nyagihanga', 'Nyagisozi', 'Nyagisozi', 'Nyakabanda', 'Nyakabuye', 'Nyakarenzo', 'Nyakariro', 'Nyakiliba', 'Nyamabuye', 'Nyamata', 'Nyamirama', 'Nyamirambo', 'Nyamiyaga', 'Nyamiyaga', 'Nyamugali', 'Nyamyumba', 'Nyange', 'Nyange', 'Nyankenke', 'Nyanza', 'Nyarubaka', 'Nyarubuye', 'Nyarugenge', 'Nyarugenge', 'Nyarugunga', 'Nyarusange', 'Nyundo', 'Nzahaha', 'Nzige', 'Rambura', 'Rangiro', 'Remera', 'Remera', 'Remera', 'Remera', 'Rilima', 'Rongi', 'Rubavu', 'Rubaya', 'Rubengera', 'Rubona', 'Rugabano', 'Rugalika', 'Ruganda', 'Rugarama', 'Rugarama', 'Rugendabari', 'Rugengabari', 'Rugera', 'Rugerero', 'Ruhango', 'Ruhango', 'Ruharambuga', 'Ruhashya', 'Ruheru', 'Ruhuha', 'Ruhunde', 'Rukara', 'Rukira', 'Rukoma', 'Rukomo', 'Rukomo', 'Rukozo', 'Rukumberi', 'Ruli', 'Runda', 'Ruramba', 'Ruramira', 'Rurembo', 'Rurenge', 'Rusarabuge', 'Rusasa', 'Rusatira', 'Rusebeya', 'Rusenge', 'Rushaki', 'Rushashi', 'Rusiga', 'Rusororo', 'Rutare', 'Rutunga', 'Ruvune', 'Rwabicuma', 'Rwamiko', 'Rwaniro', 'Rwankuba', 'Rwaza', 'Rwempasha', 'Rwerere', 'Rweru', 'Rwezamenyo', 'Rwimbogo', 'Rwimbogo', 'Rwimiyaga', 'Rwinkwavu', 'Sake', 'Save', 'Shangasha', 'Shangi', 'Shingiro', 'Shyara', 'Shyira', 'Shyogwe', 'Shyorongi', 'Simbi', 'Sovu', 'Tabagwe', 'Tare', 'Tumba', 'Tumba', 'Twumba', 'Uwinkingi', 'Zaza'].sort
5
+
6
+ # Source: MINALOC via Annoncée
7
+ SECTORS=['Base', 'Bigogwe', 'Boneza', 'Bugarama', 'Bugeshi', 'Bukure', 'Bumbogo', 'Bungwe', 'Burega', 'Buruhukiro', 'Busanze', 'Busasamana', 'Busasamana', 'Busengo', 'Bushekeri', 'Bushenge', 'Bushoki', 'Busogo', 'Busoro', 'Butare', 'Butaro', 'Buyoga', 'Bweramana', 'Bweyeye', 'Bwira', 'Bwishyura', 'Bwisige', 'Byimana', 'Byumba', 'Coko', 'Cyabakamyi', 'Cyabingo', 'Cyahinda', 'Cyanika', 'Cyanika', 'Cyanzarwe', 'Cyato', 'Cyeru', 'Cyeza', 'Cyinzuzi', 'Cyumba', 'Cyungo', 'Cyuve', 'Fumbwe', 'Gacaca', 'Gacurabwenge', 'Gahanga', 'Gahara', 'Gahengeri', 'Gahini', 'Gahunga', 'Gakenke', 'Gasaka', 'Gasange', 'Gashaki', 'Gashanda', 'Gashari', 'Gashenyi', 'Gashonga', 'Gashora', 'Gataraga', 'Gatare', 'Gatebe', 'Gatenga', 'Gatore', 'Gatsata', 'Gatsibo', 'Gatumba', 'Gatunda', 'Gihango', 'Giheke', 'Gihombo', 'Gihundwe', 'Gikomero', 'Gikondo', 'Gikonko', 'Gikundamvura', 'Gisenyi', 'Gishali', 'Gishamvu', 'Gishubi', 'Gishyita', 'Gisozi', 'Gitambi', 'Gitega', 'Gitesi', 'Giti', 'Gitoki', 'Gitovu', 'Hindiro', 'Huye', 'Jabana', 'Jali', 'Janja', 'Jarama', 'Jenda', 'Jomba', 'Juru', 'Kabacuzi', 'Kabagali', 'Kabare', 'Kabarondo', 'Kabarore', 'Kabatwa', 'Kabaya', 'Kacyiru', 'Kaduha', 'Kagano', 'Kagarama', 'Kageyo', 'Kageyo', 'Kageyo', 'Kagogo', 'Kamabuye', 'Kamegeri', 'Kamembe', 'Kamubuga', 'Kanama', 'Kaniga', 'Kanjongo', 'Kanombe', 'Kansi', 'Kanyinya', 'Kanzenze', 'Karago', 'Karama', 'Karama', 'Karama', 'Karambi', 'Karambo', 'Karangazi', 'Karembo', 'Karenge', 'Karengera', 'Katabagemu', 'Kavumu', 'Kayenzi', 'Kayumbu', 'Kazo', 'Kibangu', 'Kibeho', 'Kibilizi', 'Kibirizi', 'Kibirizi', 'Kibumbwe', 'Kibungo', 'Kicukiro', 'Kigabiro', 'Kigali', 'Kigarama', 'Kigarama', 'Kigembe', 'Kigeyo', 'Kigina', 'Kigoma', 'Kigoma', 'Kimihurura', 'Kimironko', 'Kimisagara', 'Kimonyi', 'Kinazi', 'Kinazi', 'Kinigi', 'Kinihira', 'Kinihira', 'Kinoni', 'Kintobo', 'Kinyababa', 'Kinyinya', 'Kiramuruzi', 'Kirehe', 'Kirimbi', 'Kisaro', 'Kitabi', 'Kivu', 'Kivumu', 'Kivuruga', 'Kivuye', 'Kiyombe', 'Kiyumba', 'Kiziguro', 'Macuba', 'Mageregere', 'Mahama', 'Mahembe', 'Mamba', 'Manihira', 'Manyagiro', 'Maraba', 'Mareba', 'Masaka', 'Masoro', 'Mata', 'Mataba', 'Matimba', 'Matyazo', 'Mayange', 'Mbazi', 'Mbazi', 'Mbogo', 'Mbuye', 'Mimuri', 'Minazi', 'Miyove', 'Mpanga', 'Mubuga', 'Mudende', 'Mugano', 'Muganza', 'Muganza', 'Muganza', 'Mugesera', 'Mugina', 'Mugombwa', 'Mugunga', 'Muhanda', 'Muhanga', 'Muhazi', 'Muhima', 'Muhondo', 'Muhororo', 'Muhoza', 'Muhura', 'Mukama', 'Mukamira', 'Mukarange', 'Mukarange', 'Mukindo', 'Mukingo', 'Muko', 'Muko', 'Mukura', 'Mukura', 'Munini', 'Munyaga', 'Munyiginya', 'Murama', 'Murama', 'Murambi', 'Murambi', 'Murambi', 'Muringa', 'Murunda', 'Murundi', 'Murundi', 'Mururu', 'Musambira', 'Musange', 'Musanze', 'Musasa', 'Musaza', 'Musebeya', 'Musenyi', 'Musha', 'Musha', 'Musheri', 'Mushikiri', 'Mushishiro', 'Mushonyi', 'Mushubati', 'Mushubi', 'Mutenderi', 'Mutete', 'Mutuntu', 'Muyira', 'Muyongwe', 'Muyumbu', 'Muzo', 'Mwendo', 'Mwiri', 'Mwogo', 'Mwulire', 'Nasho', 'Ndaro', 'Ndego', 'Ndera', 'Ndora', 'Nduba', 'Nemba', 'Nemba', 'Ngamba', 'Ngarama', 'Ngera', 'Ngeruka', 'Ngoma', 'Ngoma', 'Ngoma', 'Ngororero', 'Niboye', 'Nkanka', 'Nkomane', 'Nkombo', 'Nkotsi', 'Nkungu', 'Ntarabana', 'Ntarama', 'Ntongwe', 'Ntyazo', 'Nyabimata', 'Nyabinoni', 'Nyabirasi', 'Nyabitekeri', 'Nyagatare', 'Nyagihanga', 'Nyagisozi', 'Nyagisozi', 'Nyakabanda', 'Nyakabuye', 'Nyakaliro', 'Nyakarenzo', 'Nyakiriba', 'Nyamabuye', 'Nyamata', 'Nyamirama', 'Nyamirambo', 'Nyamiyaga', 'Nyamiyaga', 'Nyamugari', 'Nyamyumba', 'Nyange', 'Nyange', 'Nyankenke', 'Nyanza', 'Nyarubaka', 'Nyarubuye', 'Nyarugenge', 'Nyarugenge', 'Nyarugunga', 'Nyarusange', 'Nyundo', 'Nzahaha', 'Nzige', 'Rambura', 'Rangiro', 'Remera', 'Remera', 'Remera', 'Remera', 'Rilima', 'Rongi', 'Rubavu', 'Rubaya', 'Rubengera', 'Rubona', 'Rugabano', 'Ruganda', 'Rugarama', 'Rugarama', 'Rugarika', 'Rugendabari', 'Rugengabari', 'Rugera', 'Rugerero', 'Ruhango', 'Ruhango', 'Ruharambuga', 'Ruhashya', 'Ruheru', 'Ruhuha', 'Ruhunde', 'Rukara', 'Rukira', 'Rukoma', 'Rukomo', 'Rukomo', 'Rukozo', 'Rukumberi', 'Ruli', 'Runda', 'Ruramba', 'Ruramira', 'Rurembo', 'Rurenge', 'Rusarabuye', 'Rusasa', 'Rusatira', 'Rusebeya', 'Rusenge', 'Rushaki', 'Rushashi', 'Rusiga', 'Rusororo', 'Rutare', 'Rutunga', 'Ruvune', 'Rwabicuma', 'Rwamiko', 'Rwaniro', 'Rwankuba', 'Rwaza', 'Rwempasha', 'Rwerere', 'Rweru', 'Rwezamenyo', 'Rwimbogo', 'Rwimbogo', 'Rwimiyaga', 'Rwinkwavu', 'Sake', 'Save', 'Shangasha', 'Shangi', 'Shingiro', 'Shyara', 'Shyira', 'Shyogwe', 'Shyorongi', 'Simbi', 'Sovu', 'Tabagwe', 'Tare', 'Tumba', 'Tumba', 'Twumba', 'Uwinkingi', 'Zaza'].sort
8
+
3
9
  describe Rwanda do
4
10
  r = Rwanda.new
5
11
 
@@ -48,6 +54,21 @@ describe Rwanda do
48
54
  end
49
55
  end
50
56
 
57
+ # Below this level it is no longer possible to use strings because there are mulitple sectors with the same name
58
+
59
+ describe '.cells_of' do
60
+ it 'knows all the cells of a sector' do
61
+ # Nyagatare,Mimuri,Mahoro,Rubumba
62
+ expect(r.cells_of('Nyagatare', 'Mimuri')).to eq ['Bibare', 'Gakoma', 'Mahoro', 'Mimuri', 'Rugari']
63
+ end
64
+ end
65
+
66
+ describe '.villages_of' do
67
+ it 'knows all the villages of a cell' do
68
+ expect(r.villages_of('Ruhango', 'Ruhango', 'Gikoma')).to eq ['Gatengeri', 'Gikumba', 'Karama', 'Murambi', 'Nangurugomo', 'Nyarusange', 'Rebero', 'Rubiha', 'Rurembo', 'Ryabonyinka', 'Wimana']
69
+ end
70
+ end
71
+
51
72
  # Lists
52
73
 
53
74
  describe '.provinces' do
@@ -67,10 +88,15 @@ describe Rwanda do
67
88
  end
68
89
 
69
90
  describe '.sectors' do
70
- let (:output) { r.sectors }
91
+ #let (:output) { r.sectors }
71
92
 
72
- it 'can list the sectors of Rwanda' do
73
- expect(output.sort).to eq ['Gitega', 'Kanyinya', 'Kigali', 'Kimisagara', 'Mageragere', 'Muhima', 'Nyakabanda', 'Nyamirambo', 'Nyarugenge', 'Rwezamenyo', 'Bumbogo', 'Gatsata', 'Gikomero', 'Gisozi', 'Jabana', 'Jali', 'Kacyiru', 'Kimihurura', 'Kimironko', 'Kinyinya', 'Ndera', 'Nduba', 'Remera', 'Rusororo', 'Rutunga', 'Gahanga', 'Gatenga', 'Gikondo', 'Kagarama', 'Kanombe', 'Kicukiro', 'Kigarama', 'Masaka', 'Niboye', 'Nyarugunga', 'Busasamana', 'Busoro', 'Cyabakamyi', 'Kibirizi', 'Kigoma', 'Mukingo', 'Muyira', 'Ntyazo', 'Nyagisozi', 'Rwabicuma', 'Gikonko', 'Gishubi', 'Kansi', 'Kibilizi', 'Kigembe', 'Mamba', 'Muganza', 'Mugombwa', 'Mukindo', 'Musha', 'Ndora', 'Nyanza', 'Save', 'Busanze', 'Cyahinda', 'Kibeho', 'Kivu', 'Mata', 'Muganza', 'Munini', 'Ngera', 'Ngoma', 'Nyabimata', 'Nyagisozi', 'Ruheru', 'Ruramba', 'Rusenge', 'Gishamvu', 'Huye', 'Karama', 'Kigoma', 'Kinazi', 'Maraba', 'Mbazi', 'Mukura', 'Ngoma', 'Ruhashya', 'Rusatira', 'Rwaniro', 'Simbi', 'Tumba', 'Buruhukiro', 'Cyanika', 'Gasaka', 'Gatare', 'Kaduha', 'Kamegeri', 'Kibirizi', 'Kibumbwe', 'Kitabi', 'Mbazi', 'Mugano', 'Musange', 'Musebeya', 'Mushubi', 'Nkomane', 'Tare', 'Uwinkingi', 'Bweramana', 'Byimana', 'Kabagari', 'Kinazi', 'Kinihira', 'Mbuye', 'Mwendo', 'Ntongwe', 'Ruhango', 'Cyeza', 'Kabacuzi', 'Kibangu', 'Kiyumba', 'Muhanga', 'Mushishiro', 'Nyabinoni', 'Nyamabuye', 'Nyarusange', 'Rongi', 'Rugendabari', 'Shyogwe', 'Gacurabwenge', 'Karama', 'Kayenzi', 'Kayumbu', 'Mugina', 'Musambira', 'Ngamba', 'Nyamiyaga', 'Nyarubaka', 'Rugalika', 'Rukoma', 'Runda', 'Bwishyura', 'Gishari', 'Gishyita', 'Gitesi', 'Mubuga', 'Murambi', 'Murundi', 'Mutuntu', 'Rubengera', 'Rugabano', 'Ruganda', 'Rwankuba', 'Twumba', 'Boneza', 'Gihango', 'Kigeyo', 'Kivumu', 'Manihira', 'Mukura', 'Murunda', 'Musasa', 'Mushonyi', 'Mushubati', 'Nyabirasi', 'Ruhango', 'Rusebeya', 'Bugeshi', 'Busasamana', 'Cyanzarwe', 'Gisenyi', 'Kanama', 'Kanzenze', 'Mudende', 'Nyakiliba', 'Nyamyumba', 'Nyundo', 'Rubavu', 'Rugerero', 'Bigogwe', 'Jenda', 'Jomba', 'Kabatwa', 'Karago', 'Kintobo', 'Mukamira', 'Muringa', 'Rambura', 'Rugera', 'Rurembo', 'Shyira', 'Bwira', 'Gatumba', 'Hindiro', 'Kabaya', 'Kageyo', 'Kavumu', 'Matyazo', 'Muhanda', 'Muhororo', 'Ndaro', 'Ngororero', 'Nyange', 'Sovu', 'Bugarama', 'Butare', 'Bweyeye', 'Gashonga', 'Giheke', 'Gihundwe', 'Gikundamvura', 'Gitambi', 'Kamembe', 'Muganza', 'Mururu', 'Nkanka', 'Nkombo', 'Nkungu', 'Nyakabuye', 'Nyakarenzo', 'Nzahaha', 'Rwimbogo', 'Bushekeri', 'Bushenge', 'Cyato', 'Gihombo', 'Kagano', 'Kanjongo', 'Karambi', 'Karengera', 'Kirimbi', 'Macuba', 'Mahembe', 'Nyabitekeri', 'Rangiro', 'Ruharambuga', 'Shangi', 'Base', 'Burega', 'Bushoki', 'Buyoga', 'Cyinzuzi', 'Cyungo', 'Kinihira', 'Kisaro', 'Masoro', 'Mbogo', 'Murambi', 'Ngoma', 'Ntarabana', 'Rukozo', 'Rusiga', 'Shyorongi', 'Tumba', 'Busengo', 'Coko', 'Cyabingo', 'Gakenke', 'Gashenyi', 'Janja', 'Kamubuga', 'Karambo', 'Kivuruga', 'Mataba', 'Minazi', 'Mugunga', 'Muhondo', 'Muyongwe', 'Muzo', 'Nemba', 'Ruli', 'Rusasa', 'Rushashi', 'Busogo', 'Cyuve', 'Gacaca', 'Gashaki', 'Gataraga', 'Kimonyi', 'Kinigi', 'Muhoza', 'Muko', 'Musanze', 'Nkotsi', 'Nyange', 'Remera', 'Rwaza', 'Shingiro', 'Bungwe', 'Butaro', 'Cyanika', 'Cyeru', 'Gahunga', 'Gatebe', 'Gitovu', 'Kagogo', 'Kinoni', 'Kinyababa', 'Kivuye', 'Nemba', 'Rugarama', 'Rugengabari', 'Ruhunde', 'Rusarabuge', 'Rwerere', 'Bukure', 'Bwisige', 'Byumba', 'Cyumba', 'Giti', 'Kageyo', 'Kaniga', 'Manyagiro', 'Miyove', 'Mukarange', 'Muko', 'Mutete', 'Nyamiyaga', 'Nyankenke', 'Rubaya', 'Rukomo', 'Rushaki', 'Rutare', 'Ruvune', 'Rwamiko', 'Shangasha', 'Fumbwe', 'Gahengeri', 'Gishari', 'Karenge', 'Kigabiro', 'Muhazi', 'Munyaga', 'Munyiginya', 'Musha', 'Muyumbu', 'Mwulire', 'Nyakariro', 'Nzige', 'Rubona', 'Gatunda', 'Karama', 'Karangazi', 'Katabagemu', 'Kiyombe', 'Matimba', 'Mimuli', 'Mukama', 'Musheli', 'Nyagatare', 'Rukomo', 'Rwempasha', 'Rwimiyaga', 'Tabagwe', 'Gasange', 'Gatsibo', 'Gitoki', 'Kabarore', 'Kageyo', 'Kiramuruzi', 'Kiziguro', 'Muhura', 'Murambi', 'Ngarama', 'Nyagihanga', 'Remera', 'Rugarama', 'Rwimbogo', 'Gahini', 'Kabare', 'Kabarondo', 'Mukarange', 'Murama', 'Murundi', 'Mwiri', 'Ndego', 'Nyamirama', 'Rukara', 'Ruramira', 'Rwinkwavu', 'Gahara', 'Gatore', 'Kigarama', 'Kigina', 'Kirehe', 'Mahama', 'Mpanga', 'Musaza', 'Mushikiri', 'Nasho', 'Nyamugali', 'Nyarubuye', 'Gashanda', 'Jarama', 'Karembo', 'Kazo', 'Kibungo', 'Mugesera', 'Murama', 'Mutenderi', 'Remera', 'Rukira', 'Rukumberi', 'Rurenge', 'Sake', 'Zaza', 'Gashora', 'Juru', 'Kamabuye', 'Mareba', 'Mayange', 'Musenyi', 'Mwogo', 'Ngeruka', 'Ntarama', 'Nyamata', 'Nyarugenge', 'Rilima', 'Ruhuha', 'Rweru', 'Shyara' ].sort
93
+ it 'can list the sectors of Rwanda' do
94
+ expect(r.sectors.count).to eq 416
95
+ #expect(r.sectors.sort).to eq SECTORS
96
+ #expect(SECTORS - r.sectors).to eq []
97
+ r.sectors.each_with_index do |s,i|
98
+ expect(s).to eq SECTORS[i]
99
+ end
74
100
  end
75
101
  end
76
102
 
@@ -87,4 +113,34 @@ describe Rwanda do
87
113
  expect(r.sector_like('Kazu')).to eq 'Kazo'
88
114
  end
89
115
  end
116
+
117
+ # Testing
118
+
119
+ describe '.is_[division]?' do
120
+ it 'knows whether a division exists' do
121
+ expect(r.is_district? 'Karongi').to eq true
122
+ expect(r.is_sector? 'Gashari').to eq true
123
+ expect(r.is_cell? 'Musasa').to eq true
124
+ expect(r.is_village? 'Kaduha').to eq true
125
+ expect(r.is_district? 'Karoooongi').to eq false
126
+ expect(r.is_sector? 'Gashariii').to eq false
127
+ expect(r.is_cell? 'Musasasasasa').to eq false
128
+ expect(r.is_village? 'Kaduhahaha').to eq false
129
+ end
130
+ end
131
+
132
+ describe '.is_real' do
133
+ it 'knows whether a chain of divisions is legitimate' do
134
+ expect(r.exist?('Karongi','Bwishyura','Kiniha','Nyarurembo')).to eq true
135
+ expect(r.exist?('Karongi','Bwishyura','Nyarurembo')).to eq false
136
+ expect(r.exist?('Karongi')).to eq true
137
+ end
138
+ end
139
+ #describe '.is_in?' do
140
+ # it 'knows whether a smaller division is inside a larger division' do
141
+ # expect(r.is_in?('Karongi','Gashari')).to eq true
142
+ # expect(r.is_in?('Gashari','Karongi')).to eq false
143
+ # expect(r.is_in?('
144
+ # end
145
+ #end
90
146
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rwanda
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Hetherington
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-18 00:00:00.000000000 Z
11
+ date: 2015-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: fuzzy_match
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -79,6 +93,7 @@ files:
79
93
  - README.md
80
94
  - Rakefile
81
95
  - lib/rwanda.rb
96
+ - lib/rwanda/data.csv
82
97
  - lib/rwanda/data.rb
83
98
  - lib/rwanda/version.rb
84
99
  - rwanda.gemspec