146 lines
5.1 KiB
Go
146 lines
5.1 KiB
Go
|
// Copyright 2016 ALRUX Inc.
|
||
|
//
|
||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
// you may not use this file except in compliance with the License.
|
||
|
// You may obtain a copy of the License at
|
||
|
//
|
||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
//
|
||
|
// Unless required by applicable law or agreed to in writing, software
|
||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
// See the License for the specific language governing permissions and
|
||
|
// limitations under the License.
|
||
|
|
||
|
package levenshtein
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func Test_Params(t *testing.T) {
|
||
|
// Different allocations should not be equal.
|
||
|
if NewParams() == NewParams() {
|
||
|
t.Errorf(`NewParams() == NewParams()`)
|
||
|
}
|
||
|
|
||
|
// Clone should not be equal to original allocation.
|
||
|
p := NewParams()
|
||
|
if p == p.Clone() {
|
||
|
t.Errorf(`p == p.Clone()`)
|
||
|
}
|
||
|
|
||
|
// Defaults
|
||
|
if p.insCost != 1 {
|
||
|
t.Errorf(`NewParams().insCost == %v, want %v`, p.insCost, 1)
|
||
|
}
|
||
|
if p.subCost != 1 {
|
||
|
t.Errorf(`NewParams().subCost == %v, want %v`, p.subCost, 1)
|
||
|
}
|
||
|
if p.delCost != 1 {
|
||
|
t.Errorf(`NewParams().delCost == %v, want %v`, p.delCost, 1)
|
||
|
}
|
||
|
if p.maxCost != 0 {
|
||
|
t.Errorf(`NewParams().maxCost == %v, want %v`, p.maxCost, 0)
|
||
|
}
|
||
|
if p.minScore != 0 {
|
||
|
t.Errorf(`NewParams().minScore == %v, want %v`, p.minScore, 0)
|
||
|
}
|
||
|
if p.bonusPrefix != 4 {
|
||
|
t.Errorf(`NewParams().bonusPrefix == %v, want %v`, p.bonusPrefix, 4)
|
||
|
}
|
||
|
if p.bonusScale != .1 {
|
||
|
t.Errorf(`NewParams().bonusScale == %v, want %v`, p.bonusScale, .1)
|
||
|
}
|
||
|
if p.bonusThreshold != .7 {
|
||
|
t.Errorf(`NewParams().bonusThreshold == %v, want %v`, p.bonusThreshold, .7)
|
||
|
}
|
||
|
|
||
|
// Setters
|
||
|
if p = NewParams().InsCost(2); p.insCost != 2 {
|
||
|
t.Errorf(`NewParams().InsCost(2).insCost == %v, want %v`, p.insCost, 2)
|
||
|
}
|
||
|
if p = NewParams().InsCost(-2); p.insCost != 1 {
|
||
|
t.Errorf(`NewParams().InsCost(-2).insCost == %v, want %v`, p.insCost, 1)
|
||
|
}
|
||
|
if p = NewParams().SubCost(3); p.subCost != 3 {
|
||
|
t.Errorf(`NewParams().SubCost(3).subCost == %v, want %v`, p.subCost, 3)
|
||
|
}
|
||
|
if p = NewParams().SubCost(-3); p.subCost != 1 {
|
||
|
t.Errorf(`NewParams().SubCost(-3).subCost == %v, want %v`, p.subCost, 1)
|
||
|
}
|
||
|
if p = NewParams().DelCost(5); p.delCost != 5 {
|
||
|
t.Errorf(`NewParams().DelCost(5).delCost == %v, want %v`, p.delCost, 5)
|
||
|
}
|
||
|
if p = NewParams().DelCost(-1); p.delCost != 1 {
|
||
|
t.Errorf(`NewParams().DelCost(-1).delCost == %v, want %v`, p.delCost, 1)
|
||
|
}
|
||
|
if p = NewParams().MaxCost(7); p.maxCost != 7 {
|
||
|
t.Errorf(`NewParams().MaxCost(7).maxCost == %v, want %v`, p.maxCost, 7)
|
||
|
}
|
||
|
if p = NewParams().MaxCost(-5); p.maxCost != 0 {
|
||
|
t.Errorf(`NewParams().MaxCost(-5).maxCost == %v, want %v`, p.maxCost, 0)
|
||
|
}
|
||
|
if p = NewParams().MinScore(.5); p.minScore != .5 {
|
||
|
t.Errorf(`NewParams().MinScore(.5).minScore == %v, want %v`, p.minScore, .5)
|
||
|
}
|
||
|
if p = NewParams().MinScore(3); p.minScore != 3 {
|
||
|
t.Errorf(`NewParams().MinScore(3).minScore == %v, want %v`, p.minScore, 3)
|
||
|
}
|
||
|
if p = NewParams().MinScore(-5); p.minScore != 0 {
|
||
|
t.Errorf(`NewParams().MinScore(-5).minScore == %v, want %v`, p.minScore, 0)
|
||
|
}
|
||
|
if p = NewParams().BonusPrefix(7); p.bonusPrefix != 7 {
|
||
|
t.Errorf(`NewParams().BonusPrefix(7).bonusPrefix == %v, want %v`, p.bonusPrefix, 7)
|
||
|
}
|
||
|
if p = NewParams().BonusPrefix(-5); p.bonusPrefix != 4 {
|
||
|
t.Errorf(`NewParams().BonusPrefix(-5).bonusPrefix == %v, want %v`, p.bonusPrefix, 4)
|
||
|
}
|
||
|
if p = NewParams().BonusScale(.2); p.bonusScale != .2 {
|
||
|
t.Errorf(`NewParams().BonusScale(.2).bonusScale == %v, want %v`, p.bonusScale, .2)
|
||
|
}
|
||
|
if p = NewParams().BonusScale(-.3); p.bonusScale != .1 {
|
||
|
t.Errorf(`NewParams().BonusScale(-.3).bonusScale == %v, want %v`, p.bonusScale, .1)
|
||
|
}
|
||
|
if p = NewParams().BonusScale(7); p.bonusScale != 1/float64(p.bonusPrefix) {
|
||
|
t.Errorf(`NewParams().BonusScale(7).bonusScale == %v, want %v`, p.bonusScale, 1/float64(p.bonusPrefix))
|
||
|
}
|
||
|
if p = NewParams().BonusThreshold(.3); p.bonusThreshold != .3 {
|
||
|
t.Errorf(`NewParams().BonusThreshold(.3).bonusThreshold == %v, want %v`, p.bonusThreshold, .3)
|
||
|
}
|
||
|
if p = NewParams().BonusThreshold(7); p.bonusThreshold != 7 {
|
||
|
t.Errorf(`NewParams().BonusThreshold(7).bonusThreshold == %v, want %v`, p.bonusThreshold, 7)
|
||
|
}
|
||
|
if p = NewParams().BonusThreshold(-7); p.bonusThreshold != .7 {
|
||
|
t.Errorf(`NewParams().BonusThreshold(-7).bonusThreshold == %v, want %v`, p.bonusThreshold, .7)
|
||
|
}
|
||
|
|
||
|
// Cloning nil pointer should initiate with default values
|
||
|
var p1 *Params
|
||
|
p2 := p1.Clone()
|
||
|
if p2.insCost != 1 {
|
||
|
t.Errorf(`nil.Clone().insCost == %v, want %v`, p2.insCost, 1)
|
||
|
}
|
||
|
if p2.subCost != 1 {
|
||
|
t.Errorf(`nil.Clone().subCost == %v, want %v`, p2.subCost, 1)
|
||
|
}
|
||
|
if p2.delCost != 1 {
|
||
|
t.Errorf(`nil.Clone().delCost == %v, want %v`, p2.delCost, 1)
|
||
|
}
|
||
|
if p2.maxCost != 0 {
|
||
|
t.Errorf(`nil.Clone().maxCost == %v, want %v`, p2.maxCost, 0)
|
||
|
}
|
||
|
if p2.minScore != 0 {
|
||
|
t.Errorf(`nil.Clone().minScore == %v, want %v`, p2.minScore, 0)
|
||
|
}
|
||
|
if p2.bonusPrefix != 4 {
|
||
|
t.Errorf(`nil.Clone().bonusPrefix == %v, want %v`, p2.bonusPrefix, 4)
|
||
|
}
|
||
|
if p2.bonusScale != .1 {
|
||
|
t.Errorf(`nil.Clone().bonusScale == %v, want %v`, p2.bonusScale, .1)
|
||
|
}
|
||
|
if p2.bonusThreshold != .7 {
|
||
|
t.Errorf(`nil.Clone().bonusThreshold == %v, want %v`, p2.bonusThreshold, .7)
|
||
|
}
|
||
|
}
|