soundcord 0.3.0 → 0.4.0

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.
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