summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2014-11-21 00:48:10 -0800
committeriximeow <me@iximeow.net>2014-11-21 00:48:10 -0800
commit708c0c523df97d1542b7b6d128c5218f6e2cc460 (patch)
tree7377685c7718a6028ee845614d902726422f1f1e
parent481bbd0ee786ec6056918fb2016244836e450907 (diff)
Move things around a bit
-rw-r--r--build.sbt5
-rw-r--r--src/utils/ByteUtils.scala (renamed from src/ByteUtils.scala)2
-rw-r--r--src/utils/ConversionUtils.scala (renamed from src/ConversionUtils.scala)8
-rw-r--r--src/utils/external/Base64.scala (renamed from src/Base64.scala)0
-rw-r--r--test/ByteUtilsSpec.scala85
-rw-r--r--test/ConversionUtilsSpec.scala31
6 files changed, 126 insertions, 5 deletions
diff --git a/build.sbt b/build.sbt
index bc8c1c9..ac67f2e 100644
--- a/build.sbt
+++ b/build.sbt
@@ -6,6 +6,11 @@ scalaSource in Compile := baseDirectory.value / "src"
scalaSource in Test := baseDirectory.value / "test"
+lazy val testUtils = RootProject(file("/toy/scala/test_utils"))
+
+lazy val root = Project("root", file("."))
+ .dependsOn(testUtils)
+
resolvers ++= Seq(
"Sonatype Releases" at "http://oss.sonatype.org/content/repositories/releases"
)
diff --git a/src/ByteUtils.scala b/src/utils/ByteUtils.scala
index 3b6046c..344f6f7 100644
--- a/src/ByteUtils.scala
+++ b/src/utils/ByteUtils.scala
@@ -1,4 +1,4 @@
-package main.utils
+package ixee.cryptopals.utils
object ByteUtils {
trait SizedNumeric[T] {
diff --git a/src/ConversionUtils.scala b/src/utils/ConversionUtils.scala
index 5d01429..26f2d24 100644
--- a/src/ConversionUtils.scala
+++ b/src/utils/ConversionUtils.scala
@@ -1,9 +1,9 @@
-package main.utils
+package ixee.cryptopals.utils
import ByteUtils.WithBitOpts
object ConversionUtils {
- def hexStr2ByteArr(s: String): Iterator[Byte] =
+ def hexStr2Bytes(s: String): Iterator[Byte] =
padToByte(s).grouped(2).map(byteStr2Byte)
def byteStr2Byte(str: String): Byte =
@@ -16,7 +16,7 @@ object ConversionUtils {
((a @<< 4) @+ b)
def padToByte(s: String): String =
- if (s.length % 2 != 0) s + "0" else s
+ if (s.length % 2 != 0) "0" + s else s
def octet2nibble(c: Char): Byte = {
(c.toLower match {
@@ -32,7 +32,7 @@ object ConversionUtils {
def hexStr2Base64String(s: String): String = {
import io.github.marklister.base64.Base64._
- hexStr2ByteArr(s).toArray.toBase64
+ hexStr2Bytes(s).toArray.toBase64
}
}
diff --git a/src/Base64.scala b/src/utils/external/Base64.scala
index 692abb8..692abb8 100644
--- a/src/Base64.scala
+++ b/src/utils/external/Base64.scala
diff --git a/test/ByteUtilsSpec.scala b/test/ByteUtilsSpec.scala
new file mode 100644
index 0000000..8c7c7c9
--- /dev/null
+++ b/test/ByteUtilsSpec.scala
@@ -0,0 +1,85 @@
+package ixee.cryptopals.test
+
+import ixee.cryptopals.utils.ByteUtils
+
+import com.ixee.IxeeSpec
+
+class ByteUtilsSpec extends IxeeSpec {
+
+ "ByteUtils" - {
+
+ "SizedNumeric" - {
+
+ ".liftedTo" - {
+
+ "when the destination is >= the source in range" - {
+
+ "losslessly converts to the destination type" - {
+
+ }
+
+ }
+
+ "when the destination is smaller than the source" - {
+
+ "throws an exception TODO: make it a Try?" - {
+
+ }
+
+ }
+
+ }
+
+ ".truncatedTo" - {
+
+ "converts to the target type, truncating extra bytes" - {
+
+ }
+
+ }
+
+ ".byteSize" - {
+
+ "returns the size of a the type, in bytes" - {
+
+ }
+
+ }
+
+ ".bitSize" - {
+
+ "returns the size of a type, in bits" - {
+
+ }
+
+ }
+
+ }
+
+ "BitOps" - {
+
+ "provides typed operations that don't upcast to Int" - {
+
+ }
+
+ }
+
+ "toByteArray TODO: toByteSeq?" - {
+
+ "returns the value as an array of bytes TODO: endianness?" - {
+
+ }
+
+ }
+
+ "toBinaryString" - {
+
+ "returns the value as a string of 1s and 0s, padded to the full size" - {
+
+ }
+
+ }
+
+ }
+
+}
diff --git a/test/ConversionUtilsSpec.scala b/test/ConversionUtilsSpec.scala
new file mode 100644
index 0000000..d6c17b3
--- /dev/null
+++ b/test/ConversionUtilsSpec.scala
@@ -0,0 +1,31 @@
+package ixee.cryptopals.test
+
+import com.ixee.IxeeSpec
+import org.scalatest._
+
+class ConversionUtilsSpec extends FreeSpec with MustMatchers {
+
+ import ixee.cryptopals.utils.ConversionUtils._
+
+ "ConversionUtils" - {
+ ".hexStr2Bytes" - {
+ "converts a hexadecimal string to an equivalent iterator of bytes" - {
+ hexStr2Bytes("12348765").toArray must equal(
+ Array[Byte](
+ 0x12.toByte,
+ 0x34.toByte,
+ 0x87.toByte,
+ 0x65.toByte
+ )
+ )
+ }
+
+ "when the string is not an even length" - {
+ "prepends a 0" - {
+ hexStr2Bytes("2123").toArray must equal(hexStr2Bytes("0123").toArray)
+ }
+ }
+ }
+ }
+
+}