summaryrefslogtreecommitdiff
path: root/core/src/test/scala/com/rockymadden/stringmetric/similarity/OverlapMetricSpec.scala
blob: ba5059200bf01a898c742653c095a254a2761a34 (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
package com.rockymadden.stringmetric.similarity

object OverlapMetricSpec extends org.specs2.mutable.SpecificationWithJUnit {
	"OverlapMetric compare()" should {
		"return None with empty arguments" in {
			OverlapMetric(1).compare("", "").isDefined must beFalse
			OverlapMetric(1).compare("abc", "").isDefined must beFalse
			OverlapMetric(1).compare("", "xyz").isDefined must beFalse
		}
		"return 1 with equal arguments" in {
			OverlapMetric(1).compare("abc", "abc").get must beEqualTo(1)
			OverlapMetric(2).compare("abc", "abc").get must beEqualTo(1)
			OverlapMetric(3).compare("abc", "abc").get must beEqualTo(1)
		}
		"return 0 with unequal arguments" in {
			OverlapMetric(1).compare("abc", "xyz").get must beEqualTo(0)
			OverlapMetric(2).compare("abc", "xyz").get must beEqualTo(0)
			OverlapMetric(3).compare("abc", "xyz").get must beEqualTo(0)
		}
		"return None with invalid arguments" in {
			OverlapMetric(2).compare("n", "naght").isDefined must beFalse
			OverlapMetric(2).compare("night", "n").isDefined must beFalse
			OverlapMetric(3).compare("ni", "naght").isDefined must beFalse
			OverlapMetric(3).compare("night", "na").isDefined must beFalse
		}
		"return distance with valid arguments" in {
			OverlapMetric(1).compare("bob", "bobman").get must beEqualTo(1)
			OverlapMetric(1).compare("bob", "manbobman").get must beEqualTo(1)
			OverlapMetric(1).compare("night", "nacht").get must beEqualTo(0.6)
			OverlapMetric(1).compare("night", "naght").get must beEqualTo(0.8)
			OverlapMetric(1).compare("context", "contact").get must beEqualTo(0.7142857142857143)

			OverlapMetric(2).compare("night", "nacht").get must beEqualTo(0.25)
			OverlapMetric(2).compare("night", "naght").get must beEqualTo(0.5)
			OverlapMetric(2).compare("context", "contact").get must beEqualTo(0.5)
			OverlapMetric(2).compare("contextcontext", "contact").get must beEqualTo(0.5)
			OverlapMetric(2).compare("context", "contactcontact").get must beEqualTo(0.5)
			OverlapMetric(2).compare("ht", "nacht").get must beEqualTo(1)
			OverlapMetric(2).compare("xp", "nacht").get must beEqualTo(0)
			OverlapMetric(2).compare("ht", "hththt").get must beEqualTo(1)

			OverlapMetric(3).compare("night", "nacht").get must beEqualTo(0)
			OverlapMetric(3).compare("night", "naght").get must beEqualTo(0.3333333333333333)
			OverlapMetric(3).compare("context", "contact").get must beEqualTo(0.4)
		}
	}
}