RegressionTests__FuzzyMatcherTests.st
author Claus Gittinger <cg@exept.de>
Thu, 27 Jul 2017 15:15:40 +0200
changeset 1650 1c57e4ea22ce
parent 1636 18f80ba74aa8
child 1791 7378294bb6c6
permissions -rw-r--r--
#DOCUMENTATION by cg class: RegressionTests::SoundexStringComparatorTest added: #test01_SomeCombinations #test02_WellKnownResults removed: #testSomeCombinations #testWellKnownResults
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1636
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Encoding: utf8 }"
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ Package: 'stx:goodies/regression' }"
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
"{ NameSpace: RegressionTests }"
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
TestCase subclass:#FuzzyMatcherTests
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	instanceVariableNames:''
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	classVariableNames:''
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	poolDictionaries:''
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
	category:'tests-Regression-Collections-Utilities'
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
FuzzyMatcherTests comment:'Tests for FuzzyMatcher. '
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
!FuzzyMatcherTests methodsFor:'asserting'!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
assert: matcher scoreFor: aString equals: aBlockOrNumber
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	matcher match: aString ifScored: [ :score |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
		self assert: score equals: aBlockOrNumber value.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
		^ self	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
	].
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
	self error: 'Expected to match: ', aString
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
! !
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
!FuzzyMatcherTests methodsFor:'running'!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
newMatcher
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	^ FuzzyMatcher new
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
! !
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!FuzzyMatcherTests methodsFor:'tests'!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
testAllMatchingIn
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
	| input output |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
	input := #('0g' 'ogb' 'gat' 'dog' 'FroG' 'hog' 'goh' 'hgo').
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
	output := FuzzyMatcher allMatching: 'og' in: input.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
	self assert: output asArray equals: #('ogb' 'dog' 'FroG' 'hog')
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
testAssumptions
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
	self
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	 	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
		assert: (((1 - 1) * 3) max: -9) 	equals: 0;
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	 	assert: ((2 - 1 - 1) negated) 		equals: 0;
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
				
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
		assert: ('a' findString: 'a' startingAt: 2 caseSensitive: false) equals: 0.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
testChangePattern
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	| matcher |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	matcher := self newMatcher.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
	self 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	assert: matcher pattern equals: '';
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	assert: (matcher matches: 'abcdefghijkl');
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
	assert: (matcher matches: '').
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
	matcher pattern: 'afg'.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
	self 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
	assert: (matcher matches: 'abcdefghijkl');
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
	deny: (matcher matches: '').
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
testClassSideAPI
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
	"if the protocol is changed, so should the class comment"
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
	FuzzyMatcher class protocols detect: [ :p | p = #'utilities api' ].
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	self 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
		assert: (FuzzyMatcher allMatching: #a in: #(a b ab))
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
		equals: #(a ab);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
		assert: (FuzzyMatcher allMatching: #a in: { #a -> 1 . #b -> 2 . #acb -> 3 } by: [:each | each key ])
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
		equals: { #a -> 1 . #acb -> 3 };
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
		assert: (FuzzyMatcher allSortedByScoreMatching: #b in: { #aaca .#aAaaB . #Aaab . #baaa . #aaba })
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
		equals: #(baaa aaba Aaab aAaaB) 	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
testEmptyPattern
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
	| matcher |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
	matcher := self newMatcher.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
	self
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
		assert: matcher pattern isEmpty; 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
		assert: matcher scoreFor: '' 		equals: 0;
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
		assert: matcher scoreFor: 'abc' 	equals: 0;
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
		assert: matcher scoreFor: '   ' 	equals: 0.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
			
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
			
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
testIsSeperator
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
        | matcher |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
        
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
        matcher := self newMatcher.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
        
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
        self 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
                assert:         (matcher isSeparator: $_);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
                assert:         (matcher isSeparator: $:);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
                deny:           (matcher isSeparator: $!!);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
                deny:           (matcher isSeparator: $a)
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    "Modified: / 13-07-2017 / 13:31:05 / cg"
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
testMatching
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
        | matcher |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
        
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
        matcher := self newMatcher.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
        matcher pattern: 'a'.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
        
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
        self 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
                assert: (matcher matches: 'a');
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
                assert: (matcher matches: String return, String tab, String lf, String space, 'a');
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
                assert: (matcher matches: ',;:_-!!"#¤%&/?+\()a').
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    "Modified: / 13-07-2017 / 12:45:24 / cg"
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
testScoreValues
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
	| matcher |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
	matcher := self newMatcher.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
	matcher pattern: 'a'.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
	self 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
		scoreFor: 'a' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
		equals: (matcher firstLetterBonus + matcher caseEqualBonus);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
		scoreFor: 'A' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
		equals: (matcher firstLetterBonus);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
		scoreFor: 'ab' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
		equals: (matcher firstLetterBonus + matcher caseEqualBonus + matcher unmatchedLetterPenalty);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
		scoreFor: '1a' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
		equals: (matcher leadingLetterPenalty + matcher unmatchedLetterPenalty + matcher caseEqualBonus);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
		scoreFor: '12345a' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
		equals: (matcher maxLeadingLetterPenalty + (5 * matcher unmatchedLetterPenalty ) + (matcher caseEqualBonus)).
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
	matcher pattern: 'ab'.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
	self 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
		scoreFor: 'ab' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
		equals: [ "delayed bonus calculation since #indexscore is based on state after matching" 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
			matcher firstLetterBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
			+  matcher adjacencyBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
			+ (matcher caseEqualBonus * 2) 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
			+ (matcher adjacentCaseEqualBonus) 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
			+  matcher indexScore
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
		];
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
		scoreFor: 'A:B' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
		equals: (
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
			matcher firstLetterBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
			+ matcher separatorBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
			+ matcher unmatchedLetterPenalty
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
		);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
		scoreFor: 'able' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
		equals: [ 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
			matcher firstLetterBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
			+  matcher adjacencyBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
			+  matcher adjacentCaseEqualBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
			+ (matcher caseEqualBonus * 2) 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
			+ (matcher unmatchedLetterPenalty * 2)
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
			+  matcher indexScore
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
		].
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
testSortedByScore
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
	| input output |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
	input := #('abc' 'a'  'whj' 'cab' 'cat' 'dog' 'ab').	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
	output := FuzzyMatcher allSortedByScoreMatching: 'a' in: input.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
	self assertCollection: output asArray equals: #('a' 'ab' 'abc' 'cab' 'cat')
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
! !
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
!FuzzyMatcherTests class methodsFor:'documentation'!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
version
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
    ^ '$Header$'
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
version_CVS
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    ^ '$Header$'
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
! !
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229