diff options
author | Rocky Madden <git@rockymadden.com> | 2013-03-02 17:06:56 -0700 |
---|---|---|
committer | Rocky Madden <git@rockymadden.com> | 2013-03-02 17:06:56 -0700 |
commit | 1baf09a2de5cb31fa2846f4d4ab7be4c488fa3f9 (patch) | |
tree | 1d04c9fc3d2b212b60fb3ce684001105cb674456 | |
parent | 2c2d4df0c8ee806dbab2a8c7c84755a1ed529e08 (diff) | |
download | stringmetric-1baf09a2de5cb31fa2846f4d4ab7be4c488fa3f9.tar.gz stringmetric-1baf09a2de5cb31fa2846f4d4ab7be4c488fa3f9.tar.bz2 stringmetric-1baf09a2de5cb31fa2846f4d4ab7be4c488fa3f9.zip |
Reduce boxing/unboxing and need remove need for implicits.
12 files changed, 115 insertions, 85 deletions
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/Alphabet.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/Alphabet.scala index 0d6726a..ca934d8 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/Alphabet.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/Alphabet.scala @@ -1,36 +1,60 @@ package com.rockymadden.stringmetric.phonetic +import scala.collection.immutable.Set import scala.language.implicitConversions -private[phonetic] final class Alphabet private(private[this] val self: Array[Char]) { - def is(set: Set[Char]): Boolean = self.length > 0 && self.takeWhile(set.contains(_)).length == self.length +sealed abstract class Alphabet { + val Chars: Set[Char] - def startsWith(set: Set[Char]): Boolean = self.length > 0 && set.contains(self.head) -} - -private[phonetic] object Alphabet { - final val LowercaseConsonant = Set('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x' ,'z') - final val UppercaseConsonant = Set('B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X' ,'Z') - final val Consonant = LowercaseConsonant ++ UppercaseConsonant - final val LowercaseVowel = Set('a', 'e', 'i', 'o', 'u') - final val UppercaseVowel = Set('A', 'E', 'I', 'O', 'U') - final val Vowel = LowercaseVowel ++ UppercaseVowel - final val LowercaseY = Set('y') - final val UppercaseY = Set('Y') - final val Y = LowercaseY ++ UppercaseY - final val LowercaseAlpha = LowercaseConsonant ++ LowercaseVowel ++ LowercaseY - final val UppercaseAlpha = UppercaseConsonant ++ UppercaseVowel ++ UppercaseY - final val Alpha = LowercaseAlpha ++ UppercaseAlpha + def isSuperset(char: Char): Boolean = Chars.contains(char) - implicit def CharToAlphabet(char: Char): Alphabet = apply(char) + def isSuperset(charArray: Array[Char]): Boolean = + charArray.length > 0 && charArray.takeWhile(Chars.contains(_)).length == charArray.length - implicit def CharArrayToAlphabet(charArray: Array[Char]): Alphabet = apply(charArray) + def isSuperset(string: String): Boolean = isSuperset(string.toCharArray) - implicit def CharToAlphabet(string: String): Alphabet = apply(string) + def startsWith(char: Char): Boolean = Chars.contains(char) - def apply(char: Char): Alphabet = new Alphabet(Array(char)) + def startsWith(charArray: Array[Char]): Boolean = charArray.length > 0 && Chars.contains(charArray.head) - def apply(charArray: Array[Char]): Alphabet = new Alphabet(charArray) + def startsWith(string: String): Boolean = startsWith(string.toCharArray) +} - def apply(string: String): Alphabet = new Alphabet(string.toCharArray) +case object LowercaseConsonant extends Alphabet { + override final val Chars = + Set('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x' ,'z') +} +case object UppercaseConsonant extends Alphabet { + override final val Chars = + Set('B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X' ,'Z') +} +case object Consonant extends Alphabet { + override final val Chars = LowercaseConsonant.Chars ++ UppercaseConsonant.Chars +} +case object LowercaseVowel extends Alphabet { + override final val Chars = Set('a', 'e', 'i', 'o', 'u') +} +case object UppercaseVowel extends Alphabet { + override final val Chars = Set('A', 'E', 'I', 'O', 'U') +} +case object Vowel extends Alphabet { + override final val Chars = LowercaseVowel.Chars ++ UppercaseVowel.Chars +} +case object LowercaseY extends Alphabet { + override final val Chars = Set('y') +} +case object UppercaseY extends Alphabet { + override final val Chars = Set('Y') +} +case object Y extends Alphabet { + override final val Chars = LowercaseY.Chars ++ UppercaseY.Chars +} +case object LowercaseAlpha extends Alphabet { + override final val Chars = LowercaseConsonant.Chars ++ LowercaseVowel.Chars ++ LowercaseY.Chars +} +case object UppercaseAlpha extends Alphabet { + override final val Chars = UppercaseConsonant.Chars ++ UppercaseVowel.Chars ++ UppercaseY.Chars +} +case object Alpha extends Alphabet { + override final val Chars = LowercaseAlpha.Chars ++ UppercaseAlpha.Chars } diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithm.scala index 573d90b..cb1bb45 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithm.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithm.scala @@ -1,7 +1,6 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.StringAlgorithm -import com.rockymadden.stringmetric.phonetic.Alphabet._ import scala.annotation.{ switch, tailrec } /** An implementation of the Metaphone algorithm. */ @@ -9,7 +8,7 @@ class MetaphoneAlgorithm extends StringAlgorithm[String] { final override def compute(charArray: Array[Char]): Option[Array[Char]] = { val fca = filter(charArray) - if (fca.length == 0 || !(fca.head is Alpha)) None + if (fca.length == 0 || !(Alpha isSuperset fca.head)) None else { val th = deduplicate(transcodeHead(fca.map(_.toLower))) val t = transcode(Array.empty[Char], th.head, th.tail, Array.empty[Char]) @@ -64,7 +63,7 @@ class MetaphoneAlgorithm extends StringAlgorithm[String] { else if (r.length >= 1 && (r.head == 'i' || r.head == 'e' || r.head == 'y')) shift(2, o :+ 'j') else shift(1, o :+ 'k') case 'h' => - if ((l.length >= 1 && (l.last is LowercaseVowel) && (r.length == 0 || !(r.head is LowercaseVowel))) + if ((l.length >= 1 && (LowercaseVowel isSuperset l.last) && (r.length == 0 || !(LowercaseVowel isSuperset r.head))) || (l.length >= 2 && l.last == 'h' && (l(l.length - 2) == 'c' || l(l.length - 2) == 's' || l(l.length - 2) == 'p' || l(l.length - 2) == 't' || l(l.length - 2) == 'g'))) shift(1, o) @@ -82,7 +81,7 @@ class MetaphoneAlgorithm extends StringAlgorithm[String] { else if (r.length >= 2 && r.head == 'c' && r(1) == 'h') shift(1, o) else shift(1, o :+ 't') case 'v' => shift(1, o :+ 'f') - case 'w' | 'y' => if (r.length == 0 || !(r.head is LowercaseVowel)) shift(1, o) else shift(1, o :+ c) + case 'w' | 'y' => if (r.length == 0 || !(LowercaseVowel isSuperset r.head)) shift(1, o) else shift(1, o :+ c) case 'x' => shift(1, (o :+ 'k') :+ 's') case 'z' => shift(1, o :+ 's') case _ => shift(1, o) diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetric.scala index 6a9becf..5c76262 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetric.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetric.scala @@ -1,7 +1,6 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.StringMetric -import com.rockymadden.stringmetric.phonetic.Alphabet._ /** A implementation of the Metaphone metric. */ class MetaphoneMetric extends StringMetric[Boolean] { @@ -9,7 +8,7 @@ class MetaphoneMetric extends StringMetric[Boolean] { val fca1 = filter(charArray1) lazy val fca2 = filter(charArray2) - if (fca1.length == 0 || !(fca1.head is Alpha) || fca2.length == 0 || !(fca2.head is Alpha)) None + if (fca1.length == 0 || !(Alpha isSuperset fca1.head) || fca2.length == 0 || !(Alpha isSuperset fca2.head)) None else { val metaphoneAlgorithm = MetaphoneAlgorithm() diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithm.scala index b218a9c..a83b563 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithm.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithm.scala @@ -1,7 +1,6 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.StringAlgorithm -import com.rockymadden.stringmetric.phonetic.Alphabet._ import scala.annotation.{ switch, tailrec } /** An implementation of the NYSIIS algorithm. */ @@ -9,7 +8,7 @@ class NysiisAlgorithm extends StringAlgorithm[String] { final override def compute(charArray: Array[Char]): Option[Array[Char]] = { val fca = filter(charArray) - if (fca.length == 0 || !(fca.head is Alpha)) None + if (fca.length == 0 || !(Alpha isSuperset fca.head)) None else { val tr = transcodeRight(fca.map(_.toLower)) val tl = transcodeLeft(tr._1) @@ -65,7 +64,7 @@ class NysiisAlgorithm extends StringAlgorithm[String] { if (r.length >= 1 && r.head == 'v') shift(2, o ++ Array('a', 'f')) else shift(1, o :+ 'a') case 'h' => - if (l.length >= 1 && (!(l.last is LowercaseVowel) || (r.length >= 1 && !(r.head is LowercaseVowel)))) shift(1, o) + if (l.length >= 1 && (!(LowercaseVowel isSuperset l.last) || (r.length >= 1 && !(LowercaseVowel isSuperset r.head)))) shift(1, o) else shift(1, o :+ c) case 'k' => if (r.length >= 1 && r.head == 'n') shift(2, o :+ 'n') else shift(1, o :+ 'c') case 'm' => shift(1, o :+ 'n') @@ -75,7 +74,7 @@ class NysiisAlgorithm extends StringAlgorithm[String] { if (r.length >= 2 && r.head == 'c' && r(1) == 'h') shift(3, o :+ c) else shift(1, o :+ c) case 'w' => - if (l.length >= 1 && (l.last is LowercaseVowel)) shift(1, o) + if (l.length >= 1 && (LowercaseVowel isSuperset l.last)) shift(1, o) else shift(1, o :+ c) case 'z' => shift(1, o :+ 's') case _ => shift(1, o) diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisMetric.scala index 2595593..ab9527b 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisMetric.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisMetric.scala @@ -1,7 +1,6 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.StringMetric -import com.rockymadden.stringmetric.phonetic.Alphabet._ /** An implementation of the NYSIIS metric. */ class NysiisMetric extends StringMetric[Boolean] { @@ -16,7 +15,7 @@ class NysiisMetric extends StringMetric[Boolean] { val fca1 = filter(charArray1) lazy val fca2 = filter(charArray2) - if (fca1.length == 0 || !(fca1.head is Alpha) || fca2.length == 0 || !(fca2.head is Alpha)) None + if (fca1.length == 0 || !(Alpha isSuperset fca1.head) || fca2.length == 0 || !(Alpha isSuperset fca2.head)) None else if (unequal(fca1.head, fca2.head)) Some(false) else { val nysiisAlgorithm = NysiisAlgorithm() diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithm.scala index 8f81e6c..32f05d0 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithm.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithm.scala @@ -1,7 +1,6 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.StringAlgorithm -import com.rockymadden.stringmetric.phonetic.Alphabet._ import scala.annotation.{ switch, tailrec } /** An implementation of the refined NYSIIS algorithm. */ @@ -9,7 +8,7 @@ class RefinedNysiisAlgorithm extends StringAlgorithm[String] { final override def compute(charArray: Array[Char]): Option[Array[Char]] = { val fca = filter(charArray) - if (fca.length == 0 || !(fca.head is Alpha)) None + if (fca.length == 0 || !(Alpha isSuperset fca.head)) None else { val lfca = fca.map(_.toLower) val tlh = transcodeLast(transcodeHead(lfca.head +: cleanLast(lfca.tail, Set('s', 'z')))) @@ -67,7 +66,7 @@ class RefinedNysiisAlgorithm extends StringAlgorithm[String] { else shift(1, o :+ c) case 'h' => if (l.length == 0) shift(1, o :+ c) - else if (!(l.last is LowercaseVowel) || (r.length >= 1 && !(r.head is LowercaseVowel))) shift(1, o) + else if (!(LowercaseVowel isSuperset l.last) || (r.length >= 1 && !(LowercaseVowel isSuperset r.head))) shift(1, o) else shift(1, o :+ c) case 'k' => if (r.length >= 1 && r.head == 'n') shift(2, o :+ 'n') else shift(1, o :+ 'c') case 'm' => if (l.length == 0) shift(1, o :+ c) else shift(1, o :+ 'n') @@ -78,7 +77,7 @@ class RefinedNysiisAlgorithm extends StringAlgorithm[String] { else if (r.length >= 1 && r.head == 'h') shift(2, o :+ c) else shift(1, o :+ c) case 'w' => - if (l.length >= 1 && (l.last is LowercaseVowel)) shift(1, o) + if (l.length >= 1 && (LowercaseVowel isSuperset l.last)) shift(1, o) else if (r.length >= 1 && r.head == 'r') shift(2, o :+ 'r') else shift(1, o :+ c) case 'y' => diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetric.scala index 290cd15..0db8a8c 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetric.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetric.scala @@ -1,7 +1,6 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.StringMetric -import com.rockymadden.stringmetric.phonetic.Alphabet._ /** An implementation of the refined NYSIIS metric. */ class RefinedNysiisMetric extends StringMetric[Boolean] { @@ -16,7 +15,7 @@ class RefinedNysiisMetric extends StringMetric[Boolean] { val fca1 = filter(charArray1) lazy val fca2 = filter(charArray2) - if (fca1.length == 0 || !(fca1.head is Alpha) || fca2.length == 0 || !(fca2.head is Alpha)) None + if (fca1.length == 0 || !(Alpha isSuperset fca1.head) || fca2.length == 0 || !(Alpha isSuperset fca2.head)) None else if (unequal(fca1.head, fca2.head)) Some(false) else { val refinedNysiisAlgorithm = RefinedNysiisAlgorithm() diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithm.scala index 60f2a31..b054a99 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithm.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithm.scala @@ -1,7 +1,6 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.StringAlgorithm -import com.rockymadden.stringmetric.phonetic.Alphabet._ import scala.annotation.{ switch, tailrec } /** An implementation of the refined Soundex algorithm. */ @@ -9,7 +8,7 @@ class RefinedSoundexAlgorithm extends StringAlgorithm[String] { final override def compute(charArray: Array[Char]): Option[Array[Char]] = { val fca = filter(charArray) - if (fca.length == 0 || !(fca.head is Alpha)) None + if (fca.length == 0 || !(Alpha isSuperset fca.head)) None else Some(transcode(fca, Array(fca.head.toLower))) } diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetric.scala index f65fc4e..5ad134e 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetric.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetric.scala @@ -1,7 +1,6 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.StringMetric -import com.rockymadden.stringmetric.phonetic.Alphabet._ /** An implementation of the refined Soundex metric. */ class RefinedSoundexMetric extends StringMetric[Boolean] { @@ -9,7 +8,7 @@ class RefinedSoundexMetric extends StringMetric[Boolean] { val fca1 = filter(charArray1) lazy val fca2 = filter(charArray2) - if (fca1.length == 0 || !(fca1.head is Alpha) || fca2.length == 0 || !(fca2.head is Alpha)) None + if (fca1.length == 0 || !(Alpha isSuperset fca1.head) || fca2.length == 0 || !(Alpha isSuperset fca2.head)) None else if (fca1.head.toLower != fca2.head.toLower) Some(false) else { val refinedSoundexAlgorithm = RefinedSoundexAlgorithm() diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithm.scala index 4b217a2..0ab4a5b 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithm.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithm.scala @@ -1,7 +1,6 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.StringAlgorithm -import com.rockymadden.stringmetric.phonetic.Alphabet._ import scala.annotation.{ switch, tailrec } /** An implementation of the Soundex algorithm. */ @@ -9,7 +8,7 @@ class SoundexAlgorithm extends StringAlgorithm[String] { final override def compute(charArray: Array[Char]): Option[Array[Char]] = { val fca = filter(charArray) - if (fca.length == 0 || !(fca.head is Alpha)) None + if (fca.length == 0 || !(Alpha isSuperset fca.head)) None else { val fc = fca.head.toLower diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexMetric.scala index 89a26be..bb011be 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexMetric.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexMetric.scala @@ -1,7 +1,6 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.StringMetric -import com.rockymadden.stringmetric.phonetic.Alphabet._ /** An implementation of the Soundex metric. */ class SoundexMetric extends StringMetric[Boolean] { @@ -9,7 +8,7 @@ class SoundexMetric extends StringMetric[Boolean] { val fca1 = filter(charArray1) lazy val fca2 = filter(charArray2) - if (fca1.length == 0 || !(fca1.head is Alpha) || fca2.length == 0 || !(fca2.head is Alpha)) None + if (fca1.length == 0 || !(Alpha isSuperset fca1.head) || fca2.length == 0 || !(Alpha isSuperset fca2.head)) None else if (fca1.head.toLower != fca2.head.toLower) Some(false) else { val soundexAlgorithm = SoundexAlgorithm() diff --git a/core/source/test/scala/com/rockymadden/stringmetric/phonetic/AlphabetSpec.scala b/core/source/test/scala/com/rockymadden/stringmetric/phonetic/AlphabetSpec.scala index 5d41633..8329b57 100755 --- a/core/source/test/scala/com/rockymadden/stringmetric/phonetic/AlphabetSpec.scala +++ b/core/source/test/scala/com/rockymadden/stringmetric/phonetic/AlphabetSpec.scala @@ -1,129 +1,145 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.ScalaTest -import com.rockymadden.stringmetric.phonetic.Alphabet._ import org.junit.runner.RunWith import org.scalatest.junit.JUnitRunner @RunWith(classOf[JUnitRunner]) final class AlphabetSpec extends ScalaTest { "Alphabet" should provide { - "an overloaded is method which accepts a Char" when passed { + "an overloaded isSuperset method which accepts Char" when passed { "non-alphabet argument" should returns { "false" in { - '0' is Alpha should be (false) + Alpha isSuperset '0' should be (false) } } "alphabet argument" should returns { "true" in { - 'a' is Alpha should be (true) - 'A' is Alpha should be (true) + Alpha isSuperset 'a' should be (true) + Alpha isSuperset 'A' should be (true) } } "non-vowel argument" should returns { "false" in { - 'y' is Vowel should be (false) + Vowel isSuperset 'y' should be (false) } } "vowel argument" should returns { "true" in { - 'a' is Vowel should be (true) - 'A' is Vowel should be (true) + Vowel isSuperset 'a' should be (true) + Vowel isSuperset 'A' should be (true) } } } - "an overloaded is method which accepts an Array[Char]" when passed { + "an overloaded isSuperset method which accepts Array[Char]" when passed { "empty argument" should returns { "false" in { - Array.empty[Char] is Alpha should be (false) + Alpha isSuperset Array.empty[Char] should be (false) } } "non-alphabet argument" should returns { "false" in { - "hi!".toCharArray is Alpha should be (false) - "helloworld!".toCharArray is Alpha should be (false) + Alpha isSuperset "hi!".toCharArray should be (false) + Alpha isSuperset "helloworld!".toCharArray should be (false) } } "alphabet argument" should returns { "true" in { - "hi".toCharArray is Alpha should be (true) - "helloworld".toCharArray is Alpha should be (true) - "HI".toCharArray is Alpha should be (true) - "HELLOWORLD".toCharArray is Alpha should be (true) + Alpha isSuperset "hi".toCharArray should be (true) + Alpha isSuperset "helloworld".toCharArray should be (true) + Alpha isSuperset "HI".toCharArray should be (true) + Alpha isSuperset "HELLOWORLD".toCharArray should be (true) } } "non-vowel argument" should returns { "false" in { - "y".toCharArray is Vowel should be (false) + Vowel isSuperset "y".toCharArray should be (false) } } "vowel argument" should returns { "true" in { - "a".toCharArray is Vowel should be (true) - "A".toCharArray is Vowel should be (true) + Vowel isSuperset "a".toCharArray should be (true) + Vowel isSuperset "A".toCharArray should be (true) } } } - "an overloaded is method which accepts a String" when passed { + "an overloaded isSuperset method which accepts String" when passed { "empty argument" should returns { "false" in { - "" is Alpha should be (false) + Alpha isSuperset "" should be (false) } } "non-alphabet argument" should returns { "false" in { - "helloworld!" is Alpha should be (false) + Alpha isSuperset "helloworld!" should be (false) } } "alphabet argument" should returns { "true" in { - "helloworld" is Alpha should be (true) - "HELLOWORLD" is Alpha should be (true) + Alpha isSuperset "helloworld" should be (true) + Alpha isSuperset "HELLOWORLD" should be (true) } } "non-vowel argument" should returns { "false" in { - "y" is Vowel should be (false) + Vowel isSuperset "y" should be (false) } } "vowel argument" should returns { "true" in { - "a" is Vowel should be (true) - "A" is Vowel should be (true) + Vowel isSuperset "a" should be (true) + Vowel isSuperset "A" should be (true) } } } - "an overloaded startsWith method which accepts an Array[Char]" when passed { + "an overloaded startsWith method which accepts Array[Char]" when passed { "empty argument" should returns { "false" in { - Array.empty[Char] is Alpha should be (false) + Alpha startsWith Array.empty[Char] should be (false) } } "non-alphabet argument" should returns { "false" in { - "1abc".toCharArray is Alpha should be (false) + Alpha startsWith "1abc".toCharArray should be (false) } } "alphabet argument" should returns { "true" in { - "abc".toCharArray is Alpha should be (true) + Alpha startsWith "abc".toCharArray should be (true) } } } - "an overloaded startsWith method which accepts a String" when passed { + "an overloaded startsWith method which accepts Char" when passed { "empty argument" should returns { "false" in { - "" is Alpha should be (false) + Alpha startsWith '0' should be (false) } } "non-alphabet argument" should returns { "false" in { - "1abc" is Alpha should be (false) + Alpha startsWith '1' should be (false) } } "alphabet argument" should returns { "true" in { - "abc" is Alpha should be (true) + Alpha startsWith 'a' should be (true) + } + } + } + "an overloaded startsWith method which accepts String" when passed { + "empty argument" should returns { + "false" in { + Alpha startsWith "" should be (false) + } + } + "non-alphabet argument" should returns { + "false" in { + Alpha startsWith "1abc" should be (false) + } + } + "alphabet argument" should returns { + "true" in { + Alpha startsWith "abc" should be (true) } } } |