soundcord 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'rake/testtask'
3
3
  Rake::TestTask.new do |t|
4
4
  t.libs << "test"
5
5
  t.test_files = FileList['test/test*.rb'] + FileList['test/languages/pt_br/test*.rb'] + FileList['test/languages/en/test*.rb']
6
- t.verbose = true
6
+ t.verbose = false
7
7
  end
8
8
 
9
9
  desc "Run tests"
@@ -6,10 +6,15 @@ require 'soundcord/integrations/string'
6
6
  require 'soundcord/integrations/array'
7
7
 
8
8
  require 'soundcord/word'
9
+ require 'soundcord/phrase'
9
10
 
10
11
  module SoundCord
11
12
  def self.phonetize text
12
- Word.new(text).to_s
13
+ if text.include? ' '
14
+ Phrase.new(text).to_sound
15
+ else
16
+ Word.new(text).to_sound
17
+ end
13
18
  end
14
19
 
15
20
  def self.compare term_1, term_2
@@ -0,0 +1,9 @@
1
+ module SoundCord::Comparable
2
+ def ==(obj)
3
+ self.to_sound == obj.to_sound
4
+ end
5
+
6
+ def !=(obj)
7
+ self.to_sound != obj.to_sound
8
+ end
9
+ end
@@ -2,7 +2,17 @@ class Array
2
2
  # Search possible homphone matches within the array object for a given string word
3
3
  # Params:
4
4
  # +value+:: string to be phonetized and compared with the array items
5
- def homophones value
5
+ def homophones(value)
6
6
  self.select { |i| i.homophone? value }
7
7
  end
8
+
9
+ def to_sound
10
+ self.map do |item|
11
+ item.to_sound.phonetize
12
+ end
13
+ end
14
+
15
+ def phonetize
16
+ self.to_sound
17
+ end
8
18
  end
@@ -1,21 +1,24 @@
1
1
  class String
2
- # Returns the phonetic version of the object string
2
+ # Returns the phonetic version of the passed string
3
3
  # Params:
4
- # +use_vowels+:: enables the vowel comparison feature (if avaiable)
5
- def phonetize
4
+ # +value+:: string to be phonetized
5
+ def self.phonetize value
6
+ value.to_sound
7
+ end
8
+
9
+ # Returns the phonetic version of the object string
10
+ def to_sound
6
11
  SoundCord.phonetize self
7
12
  end
8
13
 
9
- # Returns the phonetic version of the passed string
10
- # Params:
11
- # +use_vowels+:: enables the vowel comparison feature (if avaiable)
12
- def self.phonetize value
13
- value.phonetize
14
+ # Returns the phonetic version of the object string
15
+ def phonetize
16
+ self.to_sound
14
17
  end
15
18
 
16
19
  # Compares the passed value with the object value, both in their phonetic version
17
20
  # Params:
18
- # +use_vowels+:: enables the vowel comparison feature (if avaiable)
21
+ # +compared+:: the string the be compared with
19
22
  def homophone? compared
20
23
  SoundCord.homophone? self, compared
21
24
  end
@@ -0,0 +1,12 @@
1
+ require 'soundcord/regexable'
2
+ require 'soundcord/comparable'
3
+
4
+ class SoundCord::Phonetizable < Struct.new(:original, :homophone)
5
+ include SoundCord::Regexable
6
+ include SoundCord::Comparable
7
+
8
+ protected
9
+ def phonetize!
10
+ SoundCord.load_language unless SoundCord.language
11
+ end
12
+ end
@@ -0,0 +1,39 @@
1
+ require 'soundcord/phonetizable'
2
+ require 'soundcord/word'
3
+
4
+ class SoundCord::Phrase < SoundCord::Phonetizable
5
+
6
+ def to_sound
7
+ self.homophone ||= self.phonetize!
8
+ end
9
+
10
+ protected
11
+ def phonetize!
12
+ super
13
+
14
+ self.homophone = phonetized_words.join(' ')
15
+
16
+ remove_extra_spaces!
17
+ trimmed!
18
+
19
+ self.homophone
20
+ end
21
+
22
+ def words
23
+ self.original.split ' '
24
+ end
25
+
26
+ def phonetized_words
27
+ self.words.map do |word|
28
+ SoundCord::Word.new(word).to_sound
29
+ end
30
+ end
31
+
32
+ def remove_extra_spaces!
33
+ self.homophone.gsub! /\s{2,}/, ' '
34
+ end
35
+
36
+ def trimmed!
37
+ self.homophone.strip!
38
+ end
39
+ end
@@ -1,28 +1,28 @@
1
- module Regexable
1
+ module SoundCord::Regexable
2
2
  def mount_regexp sentence, options = { :terminations => false, :initiations => false }
3
- regexp = "/"
4
- regexp += "^" if options[:initiations]
5
- regexp += "("
6
- regexp += sentence.kind_of?(Array) ? sentence.join("|") : sentence
7
- regexp += ")"
8
- regexp += "\\b" if options[:terminations]
9
- regexp += "/"
3
+ regexp = '/'
4
+ regexp += '^' if options[:initiations]
5
+ regexp += '('
6
+ regexp += sentence.kind_of?(Array) ? sentence.join('|') : sentence
7
+ regexp += ')'
8
+ regexp += '\\b' if options[:terminations]
9
+ regexp += '/'
10
10
  eval(regexp)
11
11
  end
12
12
 
13
13
  def mount_follow_up_regexp prefix, sufix, options = {}
14
- regexp = options[:not_eval] ? "" : "/"
14
+ regexp = options[:not_eval] ? '' : '/'
15
15
  regexp += prefix
16
- regexp += "(?="
17
- regexp += "("
18
- regexp += sufix.kind_of?(Array) ? sufix.join("|") : sufix
19
- regexp += "))"
20
- regexp += "/" unless options[:not_eval]
16
+ regexp += '(?='
17
+ regexp += '('
18
+ regexp += sufix.kind_of?(Array) ? sufix.join('|') : sufix
19
+ regexp += '))'
20
+ regexp += '/' unless options[:not_eval]
21
21
  options[:not_eval] ? regexp : eval(regexp)
22
22
  end
23
23
 
24
24
  def mount_second_followed_by_regexp char, group
25
- regexp = "/" + not_first(char) + mount_follow_up_regexp(char, group, :not_eval => true) + "/"
25
+ regexp = '/' + not_first(char) + mount_follow_up_regexp(char, group, :not_eval => true) + '/'
26
26
  eval regexp
27
27
  end
28
28
 
@@ -1,15 +1,14 @@
1
- require_relative 'regexable'
1
+ require 'soundcord/phonetizable'
2
2
 
3
- class SoundCord::Word < Struct.new(:original, :homophone)
4
- include Regexable
3
+ class SoundCord::Word < SoundCord::Phonetizable
5
4
 
6
- def to_s
7
- self.homophone or self.process_text
5
+ def to_sound
6
+ self.homophone ||= self.phonetize!
8
7
  end
9
8
 
10
9
  protected
11
- def process_text
12
- SoundCord.load_language unless SoundCord.language
10
+ def phonetize!
11
+ super
13
12
 
14
13
  self.homophone = original.downcase
15
14
 
@@ -37,14 +36,14 @@ protected
37
36
  def remove_duplicity!(options)
38
37
  options[:duplicate_exceptions] = [] unless options[:duplicate_exceptions]
39
38
 
40
- self.homophone = self.homophone.split(//).inject("") do |s, n|
39
+ self.homophone = self.homophone.split(//).inject('') do |s, n|
41
40
  last_s_char = s[s.length-1..s.length-1]
42
41
  s + ((last_s_char === n and
43
42
  !options[:duplicate_exceptions].include?(n)) ? '' : n )
44
43
  end
45
44
  end
46
45
 
47
- def process_group! group, options
46
+ def process_group!(group, options)
48
47
  group.each do |key, values|
49
48
  if values
50
49
  simple_replace! key, values, options
@@ -54,7 +53,7 @@ protected
54
53
  end
55
54
  end
56
55
 
57
- def process_follow_ups! group, options = {}
56
+ def process_follow_ups!(group, options = {})
58
57
  group.each do |key, prefixes|
59
58
  prefixes.each do |prefix, sufixes|
60
59
  regexp = mount_follow_up_regexp prefix, sufixes
@@ -63,7 +62,7 @@ protected
63
62
  end
64
63
  end
65
64
 
66
- def process_second_followed! group, options = {}
65
+ def process_second_followed!(group, options = {})
67
66
  group.each do |key, prefixes|
68
67
  prefixes.each do |prefix, sufixes|
69
68
  regexp = mount_second_followed_by_regexp prefix, sufixes
@@ -74,7 +73,7 @@ protected
74
73
  end
75
74
  end
76
75
 
77
- def process_vowels_pronunciation_insignificance! group, options = {}
76
+ def process_vowels_pronunciation_insignificance!(group, options = {})
78
77
  group.each do |key, value|
79
78
  regexp = mount_vowels_pronunciation_insignificance_regexp key
80
79
  self.homophone =~ regexp
@@ -82,15 +81,17 @@ protected
82
81
  end
83
82
  end
84
83
 
85
- def process_followed_by_consonant_regexp! group
84
+ def process_followed_by_consonant_regexp!(group)
86
85
  group.each do |key, value|
87
86
  regexp = mount_followed_by_consonant_regexp value
88
87
  self.homophone.gsub! regexp, ''
89
88
  end
90
89
  end
91
90
 
92
- def simple_replace! key, values, options
91
+ def simple_replace!(key, values, options)
93
92
  regexp = mount_regexp values, options
93
+ # p self.homophone
94
+ # p regexp
94
95
  self.homophone.gsub! regexp, key.to_s
95
96
  end
96
97
  end
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
3
3
  s.author = 'Lukas Alexandre'
4
4
  s.email = 'lukasalexandre@me.com'
5
5
  s.homepage = 'http://lukelex.github.com/soundcord'
6
- s.version = "0.3.0"
6
+ s.version = "0.4.0"
7
7
  s.date = Date.today
8
8
  s.summary = %q{A phonetic algorithm for indexing of words by their pronunciation.}
9
9
  s.description = %q{"Make comparisons of phonetically similar terms easier."}
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test/unit'
4
+ require 'soundcord'
5
+
6
+ module SoundCord
7
+ class EnPhraseTest < Test::Unit::TestCase
8
+ def setup
9
+ SoundCord.load_language 'en'
10
+ end
11
+
12
+ def test_short_phrase
13
+ short_phrase = 'Imagination is more important than knowledge.'
14
+ expected_phrase = 'MJNXN S MR MPRTNT 0N NLJ.'
15
+
16
+ assert_equal expected_phrase, short_phrase.phonetize
17
+ end
18
+
19
+ def test_medium_phrase
20
+ medium_phrase = 'Too many of us look upon Americans as dollar chasers. This is a cruel libel, even if it is reiterated thoughtlessly by the Americans themselves.'
21
+ expected_phrase = 'T MN F S LK PN MRKNS S TLR XSRS. 0S S KRL LBL, FN F T S RTRT 0GHTLSL B 0 MRKNS 0MSLFS.'
22
+
23
+ assert_equal expected_phrase, medium_phrase.phonetize
24
+ end
25
+
26
+ def test_large_phrase
27
+ large_phrase = 'He who joyfully marches to music rank and file, has already earned my contempt. He has been given a large brain by mistake, since for him the spinal cord would surely suffice. This disgrace to civilization should be done away with at once. Heroism at command, how violently I hate all this, how despicable and ignoble war is; I would rather be torn to shreds than be a part of so base an action. It is my conviction that killing under the cloak of war is nothing but an act of murder.'
28
+ expected_phrase = 'H JFL MRXS T MSK RNK NT FL, HS LRT RNT M KNTMPT. H HS BN JFN LRJ BRN B MSTK, SNS FR HM 0 SPNL KRT LT SRL SFS. 0S TSGRS T SFLSXN XLT B TN 0 T NS. HRSM T KMNT, H FLNTL HT L 0S, H TSPKBL NT GNBL R S; LT R0R B TRN T XRTS 0N B PRT F S BS N KXN. T S M KNFKXN 0T KLNG NTR 0 KLK F R S N0NG BT N KT F MRTR.'
29
+
30
+ assert_equal expected_phrase, large_phrase.phonetize
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,59 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test/unit'
4
+ require 'soundcord'
5
+
6
+ module SoundCord
7
+ class EnWordTest < Test::Unit::TestCase
8
+ def setup
9
+ SoundCord.load_language 'en'
10
+ end
11
+
12
+ def test_initiations_en
13
+ assert_equal 'RL', 'aerial'.phonetize
14
+ assert_equal 'RP', 'wrap'.phonetize
15
+ assert_equal 'SN', 'xeno'.phonetize
16
+ assert_equal 'TFR', 'whatever'.phonetize
17
+ assert_equal 'NM', 'gnome'.phonetize
18
+ assert_equal 'NF', 'knife'.phonetize
19
+ assert_equal 'NMNK', 'pneumonic'.phonetize
20
+ end
21
+ def test_unusual_combinations_en
22
+ assert_equal '0TR', 'theater'.phonetize
23
+ assert_equal 'TX', 'touch'.phonetize
24
+ assert_equal 'XL', 'shell'.phonetize
25
+ assert_equal 'KRX', 'crutch'.phonetize
26
+ assert_equal 'FS', 'phase'.phonetize
27
+ assert_equal 'BKR', 'beggar'.phonetize
28
+ end
29
+ def test_terminations_en
30
+ assert_equal 'LM', 'lmb'.phonetize
31
+ end
32
+ def test_middle_en
33
+ # couldn't remember a better word with SCH in the middle
34
+ assert_equal 'PRSK', 'porsche'.phonetize
35
+ end
36
+ def test_duplicate_exceptions_en
37
+ assert_equal 'GKLS', 'goggles'.phonetize
38
+ end
39
+ def test_special_chars_en
40
+ assert_equal true, 'Qeyla'.homophone?('keyla')
41
+ assert_equal true, 'Courtiney'.homophone?('kourtiney')
42
+ assert_equal true, 'Quartz'.homophone?('kuarts')
43
+ assert_equal true, 'falue'.homophone?('value')
44
+ assert_equal true, 'data'.homophone?('tada')
45
+ end
46
+ def test_second_follwed_by_en
47
+ assert_equal 'JM', 'ogema'.phonetize
48
+ end
49
+ def test_vowels_pronunciation_insignificance_en
50
+ assert_equal 'MSX', 'messiah'.phonetize
51
+ assert_equal 'ML', 'mehlia'.phonetize
52
+ end
53
+ def test_find_in_collection_en
54
+ list = %w( mail male main Maine mane )
55
+ expected = %w( main Maine mane )
56
+ assert_equal expected, list.homophones('main')
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test/unit'
4
+ require 'soundcord'
5
+
6
+ module SoundCord
7
+ class PtBrPhraseTest < Test::Unit::TestCase
8
+ def setup
9
+ SoundCord.load_language 'pt-BR'
10
+ end
11
+
12
+ def test_short_phrase
13
+ short_phrase = 'Ser feliz sem motivo é a mais autêntica forma de felicidade.'
14
+ expected_phrase = 'S FL S MTV M TMTK FM D FLSD.'
15
+
16
+ assert_equal expected_phrase, short_phrase.phonetize
17
+ end
18
+
19
+ def test_medium_phrase
20
+ medium_phrase = 'O amor é grande e cabe nesta janela sobre o mar. O mar é grande e cabe na cama e no colchão de amar. O amor é grande e cabe no breve espaço de beijar.'
21
+ expected_phrase = 'M GMD KB MT JML SB M. M GMD KB M KM M KLS D M. M GMD KB M BV SPS D BJ.'
22
+
23
+ assert_equal expected_phrase, medium_phrase.phonetize
24
+ end
25
+
26
+ def test_large_phrase
27
+ large_phrase = 'A cada dia que vivo, mais me convenço de que o desperdício da vida está no amor que não damos, nas forças que não usamos, na prudência egoísta que nada arrisca e que, esquivando-nos do sofrimento, perdemos também a felicidade.'
28
+ expected_phrase = 'KD D K V, M M KMVMS D K DSPRDíS D VD T M M K M DM, M FS K M SM, M PDMS GíT K MD RSK K, SKVMD-M D SFRMT, PRDM TMB FLSD.'
29
+
30
+ assert_equal expected_phrase, large_phrase.phonetize
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test/unit'
4
+ require 'soundcord'
5
+
6
+ module SoundCord
7
+ class PtBrWordTest < Test::Unit::TestCase
8
+ def setup
9
+ SoundCord.load_language 'pt-BR'
10
+ end
11
+
12
+ def test_simple_words_pt_br
13
+ assert_equal 'J', 'João'.phonetize
14
+ assert_equal 'MR', 'Maria'.phonetize
15
+ assert_equal 'LM', 'Helena'.phonetize
16
+ assert_equal 'VLM', 'Valmir'.phonetize
17
+ assert_equal 'VLM', 'Walmir'.phonetize
18
+ end
19
+ def test_simple_comparisons_pt_br
20
+ assert_equal true, 'Joao'.homophone?('João')
21
+ assert_equal true, 'Helena'.homophone?('Elena')
22
+ assert_equal true, 'Walmir'.homophone?('Valmir')
23
+ assert_equal true, 'Marria'.homophone?('Maria')
24
+ assert_equal true, 'Wagner'.homophone?('Vagner')
25
+ assert_equal true, 'Mirela'.homophone?('Mirella')
26
+ assert_equal true, 'Artur'.homophone?('Arthur')
27
+ assert_equal true, 'Diego'.homophone?('Dyego')
28
+ assert_equal true, 'Felipe'.homophone?('Phelipe')
29
+ assert_equal true, 'Filipe'.homophone?('Felipe')
30
+ assert_equal true, 'Phelipe'.homophone?('Filipe')
31
+ assert_equal true, 'Philippe'.homophone?('Felipe')
32
+ end
33
+ def test_special_chars_pt_br
34
+ assert_equal true, 'Luçia'.homophone?('lucia')
35
+ assert_equal true, 'Lúcio'.homophone?('lucio')
36
+ end
37
+ def test_find_in_collection_pt_br
38
+ list = %w( saola paulo saulo ricardo sallo )
39
+ expected = %w( saola saulo sallo )
40
+ assert_equal expected, list.homophones('saulo')
41
+ list = %w( leonardo lucene rodrigo luciana lussene )
42
+ expected = %w( lucene luciana lussene )
43
+ assert_equal expected, list.homophones('lucene')
44
+ end
45
+ end
46
+ end
@@ -6,5 +6,16 @@ require 'soundcord/integrations/array'
6
6
  class SoundCordTest < Test::Unit::TestCase
7
7
  def test_homophones_method_existance
8
8
  assert_equal Array.new.respond_to?(:homophones), true
9
+ assert_equal Array.new.respond_to?(:phonetize), true
10
+ assert_equal Array.new.respond_to?(:to_sound), true
11
+ end
12
+
13
+ def test_phonetizing_the_array
14
+ SoundCord.load_language 'en'
15
+
16
+ result = %w(Lukas Marcy Richard John).to_sound
17
+ expected = %w(LKS MRS RXRT JN)
18
+
19
+ assert_equal expected, result
9
20
  end
10
21
  end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test/unit'
4
+ require 'soundcord'
5
+
6
+ module SoundCord
7
+ class ComparableTest < Test::Unit::TestCase
8
+ def test_comparing_equals
9
+ assert_equal Word.new('lukas') == Word.new('lucas'), true
10
+ end
11
+ def test_comparing_differents
12
+ assert_equal Word.new('lukas') != Word.new('Maria'), true
13
+ end
14
+ end
15
+ end
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
- require "benchmark"
3
+ require 'benchmark'
4
4
  require 'test/unit'
5
5
  require 'soundcord'
6
6
 
@@ -6,6 +6,7 @@ require 'soundcord/integrations/string'
6
6
  class SoundCordTest < Test::Unit::TestCase
7
7
  def test_phonetize_method_existance_in_instance
8
8
  assert_equal String.new.respond_to?(:phonetize), true
9
+ assert_equal String.new.respond_to?(:to_sound), true
9
10
  end
10
11
  def test_phonetize_method_existance_in_class
11
12
  assert_equal String.respond_to?(:phonetize), true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soundcord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,23 +9,29 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-05 00:00:00.000000000 Z
12
+ date: 2013-02-06 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: "\"Make comparisons of phonetically similar terms easier.\""
14
+ description: ! '"Make comparisons of phonetically similar terms easier."'
15
15
  email: lukasalexandre@me.com
16
16
  executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - lib/soundcord/comparable.rb
20
21
  - lib/soundcord/config.rb
21
22
  - lib/soundcord/integrations/array.rb
22
23
  - lib/soundcord/integrations/string.rb
24
+ - lib/soundcord/phonetizable.rb
25
+ - lib/soundcord/phrase.rb
23
26
  - lib/soundcord/regexable.rb
24
27
  - lib/soundcord/word.rb
25
28
  - lib/soundcord.rb
26
- - test/languages/en/test_soundcord.rb
27
- - test/languages/pt_br/test_soundcord.rb
29
+ - test/languages/en/test_phrase.rb
30
+ - test/languages/en/test_word.rb
31
+ - test/languages/pt_br/test_phrase.rb
32
+ - test/languages/pt_br/test_word.rb
28
33
  - test/test_array.rb
34
+ - test/test_comparable.rb
29
35
  - test/test_config.rb
30
36
  - test/test_performance.rb
31
37
  - test/test_string.rb
@@ -40,13 +46,13 @@ require_paths:
40
46
  required_ruby_version: !ruby/object:Gem::Requirement
41
47
  none: false
42
48
  requirements:
43
- - - ">="
49
+ - - ! '>='
44
50
  - !ruby/object:Gem::Version
45
51
  version: '0'
46
52
  required_rubygems_version: !ruby/object:Gem::Requirement
47
53
  none: false
48
54
  requirements:
49
- - - ">="
55
+ - - ! '>='
50
56
  - !ruby/object:Gem::Version
51
57
  version: '0'
52
58
  requirements: []
@@ -1,71 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/unit'
4
- require 'soundcord'
5
-
6
- class SoundCordTest < Test::Unit::TestCase
7
- def test_initiations_en
8
- SoundCord.load_language 'en'
9
-
10
- assert_equal "RL", "aerial".phonetize
11
- assert_equal "RP", "wrap".phonetize
12
- assert_equal "SN", "xeno".phonetize
13
- assert_equal "TFR", "whatever".phonetize
14
- assert_equal "NM", "gnome".phonetize
15
- assert_equal "NF", "knife".phonetize
16
- assert_equal "NMNK", "pneumonic".phonetize
17
- end
18
- def test_unusual_combinations_en
19
- SoundCord.load_language 'en'
20
-
21
- assert_equal "0TR", "theater".phonetize
22
- assert_equal "TX", "touch".phonetize
23
- assert_equal "XL", "shell".phonetize
24
- assert_equal "KRX", "crutch".phonetize
25
- assert_equal "FS", "phase".phonetize
26
- assert_equal "BKR", "beggar".phonetize
27
- end
28
- def test_terminations_en
29
- SoundCord.load_language 'en'
30
-
31
- assert_equal "LM", "lmb".phonetize
32
- end
33
- def test_middle_en
34
- SoundCord.load_language 'en'
35
-
36
- # couldn't remember a better word with SCH in the middle
37
- assert_equal "PRSK", "porsche".phonetize
38
- end
39
- def test_duplicate_exceptions_en
40
- SoundCord.load_language 'en'
41
-
42
- assert_equal "GKLS", "goggles".phonetize
43
- end
44
- def test_special_chars_en
45
- SoundCord.load_language 'en'
46
-
47
- assert_equal true, "Qeyla".homophone?("keyla")
48
- assert_equal true, "Courtiney".homophone?("kourtiney")
49
- assert_equal true, "Quartz".homophone?("kuarts")
50
- assert_equal true, "falue".homophone?("value")
51
- assert_equal true, "data".homophone?("tada")
52
- end
53
- def test_second_follwed_by_en
54
- SoundCord.load_language 'en'
55
-
56
- assert_equal "JM", "ogema".phonetize
57
- end
58
- def test_vowels_pronunciation_insignificance_en
59
- SoundCord.load_language 'en'
60
-
61
- assert_equal "MSX", "messiah".phonetize
62
- assert_equal "ML", "mehlia".phonetize
63
- end
64
- def test_find_in_collection_en
65
- SoundCord.load_language 'en'
66
-
67
- list = %w( mail male main Maine mane )
68
- expected = %w( main Maine mane )
69
- assert_equal expected, list.homophones("main")
70
- end
71
- end
@@ -1,48 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/unit'
4
- require 'soundcord'
5
-
6
- class SoundCordTest < Test::Unit::TestCase
7
- def test_simple_words_pt_br
8
- SoundCord.load_language 'pt-BR'
9
-
10
- assert_equal "J", "João".phonetize
11
- assert_equal "MR", "Maria".phonetize
12
- assert_equal "LM", "Helena".phonetize
13
- assert_equal "VLM", "Valmir".phonetize
14
- assert_equal "VLM", "Walmir".phonetize
15
- end
16
- def test_simple_comparisons_pt_br
17
- SoundCord.load_language 'pt-BR'
18
-
19
- assert_equal true, "Joao".homophone?("João")
20
- assert_equal true, "Helena".homophone?("Elena")
21
- assert_equal true, "Walmir".homophone?("Valmir")
22
- assert_equal true, "Marria".homophone?("Maria")
23
- assert_equal true, "Wagner".homophone?("Vagner")
24
- assert_equal true, "Mirela".homophone?("Mirella")
25
- assert_equal true, "Artur".homophone?("Arthur")
26
- assert_equal true, "Diego".homophone?("Dyego")
27
- assert_equal true, "Felipe".homophone?("Phelipe")
28
- assert_equal true, "Filipe".homophone?("Felipe")
29
- assert_equal true, "Phelipe".homophone?("Filipe")
30
- assert_equal true, "Philippe".homophone?("Felipe")
31
- end
32
- def test_special_chars_pt_br
33
- SoundCord.load_language 'pt-BR'
34
-
35
- assert_equal true, "Luçia".homophone?("lucia")
36
- assert_equal true, "Lúcio".homophone?("lucio")
37
- end
38
- def test_find_in_collection_pt_br
39
- SoundCord.load_language 'pt-BR'
40
-
41
- list = %w( saola paulo saulo ricardo sallo )
42
- expected = %w( saola saulo sallo )
43
- assert_equal expected, list.homophones("saulo")
44
- list = %w( leonardo lucene rodrigo luciana lussene )
45
- expected = %w( lucene luciana lussene )
46
- assert_equal expected, list.homophones("lucene")
47
- end
48
- end