Skip to content

Commit

Permalink
return male/female/unknown instead of M/F/Unknown
Browse files Browse the repository at this point in the history
  • Loading branch information
Jason Morrison committed Aug 29, 2009
1 parent 97f33fa commit fe54a54
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 21 deletions.
15 changes: 8 additions & 7 deletions genderer.rb
Expand Up @@ -5,22 +5,23 @@

class Genderer
def initialize(name_frequencies = CensusFileNameFrequencies.gender_hashes)
@female_frequencies = name_frequencies["female"]
@male_frequencies = name_frequencies["male"]
@name_frequencies = name_frequencies
# @female_frequencies = name_frequencies["female"]
# @male_frequencies = name_frequencies["male"]
end

def gender_for(name)
name = name.upcase

female_score = score_gender_by(@female_frequencies, name)
male_score = score_gender_by(@male_frequencies, name)
female_score = score_gender_by(@name_frequencies["female"], name)
male_score = score_gender_by(@name_frequencies["male"], name)

if female_score == male_score
'Unknown'
'unknown'
elsif female_score > male_score
'F'
'female'
else
'M'
'male'
end
end

Expand Down
28 changes: 14 additions & 14 deletions genderer_test.rb
Expand Up @@ -25,37 +25,37 @@ class GendererTest < Test::Unit::TestCase
})
end

should "return M for male name" do
assert_equal "M", @genderer.gender_for("James")
should "return male for male name" do
assert_equal "male", @genderer.gender_for("James")
end

should "return F for female name" do
assert_equal "F", @genderer.gender_for("Mary")
should "return female for female name" do
assert_equal "female", @genderer.gender_for("Mary")
end

should "be case insensitive" do
assert_equal "M", @genderer.gender_for("james")
assert_equal "M", @genderer.gender_for("JAMES")
assert_equal "male", @genderer.gender_for("james")
assert_equal "male", @genderer.gender_for("JAMES")
end

should "give best match for misspelled names" do
assert_equal "F", @genderer.gender_for("Linda")
assert_equal "F", @genderer.gender_for("Linnad")
assert_equal "female", @genderer.gender_for("Linda")
assert_equal "female", @genderer.gender_for("Linnad")

assert_equal "M", @genderer.gender_for("James")
assert_equal "M", @genderer.gender_for("Janes")
assert_equal "male", @genderer.gender_for("James")
assert_equal "male", @genderer.gender_for("Janes")
end

should "give most likely match for either-gender names" do
assert_equal "M", @genderer.gender_for("Bobby")
assert_equal "male", @genderer.gender_for("Bobby")
end

should "return unknown for no match" do
assert_equal "Unknown", @genderer.gender_for("Zaphod")
assert_equal "unknown", @genderer.gender_for("Zaphod")
end

should "return unknown for equal match" do
assert_equal "Unknown", @genderer.gender_for("Jo")
assert_equal "unknown", @genderer.gender_for("Jo")
end
end

Expand All @@ -71,6 +71,6 @@ class GendererTest < Test::Unit::TestCase
}

genderer = Genderer.new(gender_hash)
assert_equal "M", genderer.gender_for("Jarry")
assert_equal "male", genderer.gender_for("Jarry")
end
end

0 comments on commit fe54a54

Please sign in to comment.