Skip to content

Commit 30f71f8

Browse files
author
colin-passiv
committed
add unit test
1 parent a88d8ff commit 30f71f8

File tree

6 files changed

+39
-2
lines changed

6 files changed

+39
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ One possible usecase is in Scala js projects to move html into their own file.
3636
e.g.
3737

3838
```scala
39+
import com.passivsystems.embed.Embed._
3940
import org.scalajs.dom
4041
def el[T <: dom.raw.Element](id: String) =
4142
dom.document.getElementById(id).asInstanceOf[T]

build.sbt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ version := "0.0.1"
77
scalaVersion := "2.11.7"
88

99
libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _) // for scala macro
10+
11+
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0" % Test

src/main/scala/Embed.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,9 @@ package object Embed {
6262

6363
def interpolateExpr(c: Context)(content: String): c.Expr[String] = {
6464
import c.universe._
65-
val parts = content.split("\\$\\{([^\\}]*)\\}").toSeq
66-
val args = "\\$\\{([^\\}]*)\\}".r.findAllMatchIn(content).map(_.group(1)).map(c.parse(_)).toSeq
65+
val regex = "\\$\\{([^\\}]*)\\}"
66+
val parts = content.split(regex).toSeq
67+
val args = regex.r.findAllMatchIn(content).map(_.group(1)).map(c.parse(_)).toSeq
6768
c.Expr[String](q"scala.StringContext(..$parts).s(..$args)")
6869
}
6970

src/test/scala/EmbedTest.scala

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import com.passivsystems.embed.Embed._
2+
3+
import org.scalatest._
4+
5+
class EmbedTest extends FlatSpec with Matchers {
6+
7+
private def contentOf(path: String) = {
8+
val source = scala.io.Source.fromFile(path)
9+
val content = source.mkString
10+
source.close()
11+
content
12+
}
13+
14+
"Embed" should "include static file content" in {
15+
val txt = embed("resource.txt")
16+
val expectedTxt = contentOf("src/test/scala/resource.txt")
17+
txt should be (expectedTxt)
18+
}
19+
20+
it should "string interpolate static file content" in {
21+
def test(guard: Boolean) = {
22+
val txt = sEmbed("sResource.txt")
23+
val expectedTxt = s"the guard is: ${if (guard) "TRUE" else "FALSE"}\n"
24+
txt should be (expectedTxt)
25+
}
26+
test(true)
27+
test(false)
28+
}
29+
}

src/test/scala/resource.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce congue neque quam, in dignissim mi porttitor ut. Nunc pulvinar leo id commodo lobortis. Nunc magna felis, suscipit sed bibendum et, sodales iaculis nunc. Nunc eros velit, suscipit quis leo vitae, facilisis ultrices velit. Curabitur ultrices aliquam metus, id sagittis est semper id. Maecenas quam ex, lobortis at aliquet eget, lobortis eget est. Cras efficitur dolor vitae arcu aliquet, vel bibendum sem sollicitudin. Maecenas et tempus leo, eget aliquam quam. Aenean semper sollicitudin vestibulum.
2+
3+
Aliquam sed ex malesuada urna molestie pellentesque. In vel magna consectetur, efficitur massa id, aliquet risus. Integer quis ornare sem, non sollicitudin augue. Sed cursus tellus libero. Pellentesque imperdiet tempus aliquam. Proin efficitur, nulla sed tempus laoreet, odio velit imperdiet lectus, ut convallis augue metus eleifend nibh. Suspendisse egestas non augue eu dapibus. Phasellus quis viverra odio. Sed ut blandit ipsum. Integer scelerisque sollicitudin diam eu suscipit.

src/test/scala/sResource.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
the guard is: ${if (guard) "TRUE" else "FALSE"}

0 commit comments

Comments
 (0)