summaryrefslogtreecommitdiff
path: root/core/src/test/scala/com/rockymadden/stringmetric/MetricSpec.scala
blob: a72889e0644430d00824a13bc7fdb6b51814d9b6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.rockymadden.stringmetric

object MetricSpec extends org.specs2.mutable.SpecificationWithJUnit {
	import phonetic._
	import similarity._
	import Metric._
	import Transform._

	"StringMetric convenience methods" should {
		"pass through" in {
			StringMetric.compareWithDiceSorensen(1)("testone", "testtwo").get must
				beEqualTo(DiceSorensenMetric(1).compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithHamming("testone", "testtwo").get must
				beEqualTo(HammingMetric.compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithJaccard(1)("testone", "testtwo").get must
				beEqualTo(JaccardMetric(1).compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithJaro("testone", "testtwo").get must
				beEqualTo(JaroMetric.compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithJaroWinkler("testone", "testtwo").get must
				beEqualTo(JaroWinklerMetric.compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithLevenshtein("testone", "testtwo").get must
				beEqualTo(LevenshteinMetric.compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithMetaphone("testone", "testtwo").get must
				beEqualTo(MetaphoneMetric.compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithNGram(1)("testone", "testtwo").get must
				beEqualTo(NGramMetric(1).compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithNysiis("testone", "testtwo").get must
				beEqualTo(NysiisMetric.compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithOverlap(1)("testone", "testtwo").get must
				beEqualTo(OverlapMetric(1).compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithRefinedNysiis("testone", "testtwo").get must
				beEqualTo(RefinedNysiisMetric.compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithRefinedSoundex("testone", "testtwo").get must
				beEqualTo(RefinedSoundexMetric.compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithSoundex("testone", "testtwo").get must
				beEqualTo(SoundexMetric.compare("testone".toCharArray, "testtwo".toCharArray).get)
			StringMetric.compareWithWeightedLevenshtein(1, 2, 3)("testone", "testtwo").get must
				beEqualTo(WeightedLevenshteinMetric(1, 2, 3).compare("testone".toCharArray, "testtwo".toCharArray).get)
		}
	}

	"StringMetricDecorator withMemoization()" should {
		"memoize" in {
			val memo = MetaphoneMetric withMemoization

			(0 until 1000000) foreach { i =>
				memo.compare("abc123", "abc456")
				memo.compare("abc456", "abc123")
			}

			true must beTrue
		}
	}

	"StringMetricDecorator withTransform()" should {
		"transform" in {
			(MetaphoneMetric withTransform StringTransform.filterAlpha).compare("abc123", "abc456").get must
				beEqualTo(true)
			(DiceSorensenMetric(1) withTransform StringTransform.filterAlpha).compare("abc123", "abc456").get must
				beEqualTo(1.0)
		}
	}
}