RegressionTests__FuzzyMatcherTests.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 18:53:03 +0200
changeset 2327 bf482d49aeaf
parent 1792 6c1e59502722
permissions -rw-r--r--
#QUALITY by exept class: RegressionTests::StringTests added: #test82c_expanding
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
1791
7378294bb6c6 #BUGFIX by sr
sr
parents: 1636
diff changeset
    97
        | matcher |
1636
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
1791
7378294bb6c6 #BUGFIX by sr
sr
parents: 1636
diff changeset
    99
        matcher := self newMatcher.
7378294bb6c6 #BUGFIX by sr
sr
parents: 1636
diff changeset
   100
        
7378294bb6c6 #BUGFIX by sr
sr
parents: 1636
diff changeset
   101
        self
7378294bb6c6 #BUGFIX by sr
sr
parents: 1636
diff changeset
   102
        
7378294bb6c6 #BUGFIX by sr
sr
parents: 1636
diff changeset
   103
                assert: matcher pattern isEmpty; 
7378294bb6c6 #BUGFIX by sr
sr
parents: 1636
diff changeset
   104
                
7378294bb6c6 #BUGFIX by sr
sr
parents: 1636
diff changeset
   105
                assert: matcher scoreFor: ''            equals: 0;
7378294bb6c6 #BUGFIX by sr
sr
parents: 1636
diff changeset
   106
                assert: matcher scoreFor: 'abc'         equals: -3;
1792
6c1e59502722 #BUGFIX by sr
sr
parents: 1791
diff changeset
   107
                assert: matcher scoreFor: '   '         equals: -3.
1636
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
testIsSeperator
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
        | matcher |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
        
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
        matcher := self newMatcher.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
        
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
        self 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
                assert:         (matcher isSeparator: $_);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
                assert:         (matcher isSeparator: $:);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
                deny:           (matcher isSeparator: $!!);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
                deny:           (matcher isSeparator: $a)
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    "Modified: / 13-07-2017 / 13:31:05 / cg"
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
testMatching
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
        | matcher |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
        
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
        matcher := self newMatcher.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
        matcher pattern: 'a'.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
        
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
        self 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
                assert: (matcher matches: 'a');
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
                assert: (matcher matches: String return, String tab, String lf, String space, 'a');
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
                assert: (matcher matches: ',;:_-!!"#¤%&/?+\()a').
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
    "Modified: / 13-07-2017 / 12:45:24 / cg"
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
testScoreValues
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
	| matcher |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
	matcher := self newMatcher.
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 pattern: 'a'.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
	self 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
		scoreFor: 'a' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
		equals: (matcher firstLetterBonus + matcher caseEqualBonus);
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);
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: 'ab' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
		equals: (matcher firstLetterBonus + matcher caseEqualBonus + matcher unmatchedLetterPenalty);
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: '1a' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
		equals: (matcher leadingLetterPenalty + matcher unmatchedLetterPenalty + matcher caseEqualBonus);
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: '12345a' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
		equals: (matcher maxLeadingLetterPenalty + (5 * 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
	matcher pattern: 'ab'.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
	self 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
		scoreFor: 'ab' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
		equals: [ "delayed bonus calculation since #indexscore is based on state after matching" 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
			matcher firstLetterBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
			+  matcher adjacencyBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
			+ (matcher caseEqualBonus * 2) 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
			+ (matcher adjacentCaseEqualBonus) 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
			+  matcher indexScore
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
		];
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
		scoreFor: 'A:B' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
		equals: (
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
			matcher firstLetterBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
			+ matcher separatorBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
			+ matcher unmatchedLetterPenalty
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
		);
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
		assert: matcher 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
		scoreFor: 'able' 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
		equals: [ 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
			matcher firstLetterBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
			+  matcher adjacencyBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
			+  matcher adjacentCaseEqualBonus 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
			+ (matcher caseEqualBonus * 2) 
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
			+ (matcher unmatchedLetterPenalty * 2)
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
			+  matcher indexScore
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
		].
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
testSortedByScore
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
	| input output |
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
	input := #('abc' 'a'  'whj' 'cab' 'cat' 'dog' 'ab').	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
		
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
	output := FuzzyMatcher allSortedByScoreMatching: 'a' in: input.
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
	self assertCollection: output asArray equals: #('a' 'ab' 'abc' 'cab' 'cat')
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
	
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
! !
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
!FuzzyMatcherTests class methodsFor:'documentation'!
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
version
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    ^ '$Header$'
18f80ba74aa8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
!
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_CVS
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