amatch 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/test.rb ADDED
@@ -0,0 +1,94 @@
1
+ require 'test/unit'
2
+ require 'amatch'
3
+
4
+ class TC_AmatchTest < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @matcher = Amatch.new('test')
8
+ end
9
+
10
+ def test_match
11
+ assert(@matcher.match('') == 4)
12
+ assert(@matcher.match('test') == 0)
13
+ assert(@matcher.match('test') == 0)
14
+ assert(@matcher.match('testa') == 1)
15
+ assert(@matcher.match('atest') == 1)
16
+ assert(@matcher.match('teast') == 1)
17
+ assert(@matcher.match('est') == 1)
18
+ assert(@matcher.match('tes') == 1)
19
+ assert(@matcher.match('tst') == 1)
20
+ assert(@matcher.match('best') == 1)
21
+ assert(@matcher.match('tost') == 1)
22
+ assert(@matcher.match('tesa') == 1)
23
+ assert(@matcher.match('taex') == 3)
24
+ assert(@matcher.matchr('') == 1.0)
25
+ assert(@matcher.matchr('tesa') == 0.25)
26
+ assert(@matcher.match('aaatestbbb') == 6)
27
+ end
28
+
29
+ def test_search
30
+ assert(@matcher.search('') == 4)
31
+ assert(@matcher.searchr('') == 1.0)
32
+ assert(@matcher.search('aaatestbbb') == 0)
33
+ assert(@matcher.search('aaataexbbb') == 3)
34
+ assert(@matcher.searchr('aaataexbbb') == 0.75)
35
+ assert(@matcher.search('aaaaaaaaa') == 4)
36
+ assert(@matcher.searchr('aaaaaaaaa') == 1.0)
37
+ end
38
+
39
+ def test_compare
40
+ assert(@matcher.compare('') == -4)
41
+ assert(@matcher.comparer('') == -1.0)
42
+ assert(@matcher.compare('taex') == 3)
43
+ assert(@matcher.comparer('tesa') == 0.25)
44
+ assert(@matcher.compare('aaatestbbb') == 6)
45
+ assert(@matcher.compare('test') == 0)
46
+ assert(@matcher.compare('tex') == -2)
47
+ assert(@matcher.comparer('tsa') == -0.5)
48
+ assert(@matcher.compare('wxyz') == 4)
49
+ assert(@matcher.comparer('wxyz') == 1.0)
50
+ assert_raises(TypeError) { @matcher.match(:foo) }
51
+ end
52
+
53
+ def test_array_result
54
+ assert(@matcher.match([]) == []);
55
+ assert(@matcher.match(["tets", "test"]) == [2, 0]);
56
+ assert(@matcher.matchr(["tets", "test"]) == [0.5, 0]);
57
+ assert(@matcher.compare(["tets", "test"]) == [2, 0]);
58
+ assert(@matcher.comparer(["tets", "test"]) == [0.5, 0]);
59
+ assert(@matcher.search(["tetsaaa", "testaaa"]) == [1, 0]);
60
+ assert(@matcher.searchr(["tetsaaa", "testaaa"]) == [0.25, 0]);
61
+ assert_raises(TypeError) { @matcher.match([:foo, "bar"]) }
62
+ end
63
+
64
+ def test_weights
65
+ assert(@matcher.subw == 1)
66
+ assert(@matcher.insw == 1)
67
+ assert(@matcher.delw == 1)
68
+ @matcher.subw = 2
69
+ assert(@matcher.subw == 2)
70
+ assert(@matcher.match('tast') == 2)
71
+ @matcher.subw = 1
72
+ assert(@matcher.match('tast') == 1)
73
+ @matcher.insw = 2
74
+ assert(@matcher.insw == 2)
75
+ assert(@matcher.match('teist') == 2)
76
+ @matcher.delw = 2
77
+ assert(@matcher.delw == 2)
78
+ assert(@matcher.match('tst') == 2)
79
+ @matcher.resetw
80
+ assert(@matcher.subw == 1)
81
+ assert(@matcher.insw == 1)
82
+ assert(@matcher.delw == 1)
83
+ @matcher.subw = :something
84
+ assert_raises(TypeError) { @matcher.match('anything') }
85
+ @matcher.subw = 1
86
+ @matcher.insw = :something
87
+ assert_raises(TypeError) { @matcher.match('anything') }
88
+ @matcher.insw = 1
89
+ @matcher.delw = :something
90
+ assert_raises(TypeError) { @matcher.match('anything') }
91
+ end
92
+
93
+ end
94
+ # vim: set noet sw=4 ts=4:
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.1
3
+ specification_version: 1
4
+ name: amatch
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.1.3
7
+ date: 2004-09-27
8
+ summary: Approximate String Matching library
9
+ require_paths:
10
+ - lib
11
+ author: Florian Frank
12
+ email: flori@ping.de
13
+ homepage: http://XXX
14
+ rubyforge_project: amatch
15
+ description: Amatch is a library for approximate string matching and searching using a dynamic programming algorithm to compute the Levenstein distance between strings.
16
+ autorequire: amatch
17
+ default_executable: agrep.rb
18
+ bindir: bin
19
+ has_rdoc: true
20
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
21
+ requirements:
22
+ -
23
+ - ">"
24
+ - !ruby/object:Gem::Version
25
+ version: 0.0.0
26
+ version:
27
+ platform: ruby
28
+ files:
29
+ - README.en
30
+ - CHANGES
31
+ - GPL
32
+ - bin
33
+ - bin/agrep.rb
34
+ - ext
35
+ - ext/MANIFEST
36
+ - ext/amatch.c
37
+ - ext/extconf.rb
38
+ - Rakefile
39
+ - VERSION
40
+ - amatch.txt.en
41
+ - install.rb
42
+ - test.rb
43
+ - index.html
44
+ test_files: []
45
+ rdoc_options:
46
+ - "--title"
47
+ - "Rake -- Ruby Make"
48
+ - "--main"
49
+ - README
50
+ - "--line-numbers"
51
+ extra_rdoc_files: []
52
+ executables:
53
+ - agrep.rb
54
+ extensions:
55
+ - ext/extconf.rb
56
+ requirements: []
57
+ dependencies: []