amatch 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +8 -0
- data/GPL +340 -0
- data/README.en +27 -0
- data/Rakefile +99 -0
- data/VERSION +1 -0
- data/amatch.txt.en +117 -0
- data/bin/agrep.rb +74 -0
- data/ext/MANIFEST +2 -0
- data/ext/amatch.c +317 -0
- data/ext/extconf.rb +6 -0
- data/index.html +9 -0
- data/install.rb +1015 -0
- data/test.rb +94 -0
- metadata +57 -0
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: []
|