diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-01 00:56:30 -0700 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-01 00:56:30 -0700 |
commit | aae594fd3c8397abca4cd4e55f538d41b172b4e3 (patch) | |
tree | cef34e2404599a8547d864f3d5c158b5297783f0 /scalatexApi/src/test/scala/scalatex/BasicTests.scala | |
parent | 3d73267c4b3ecf3cdca54ded8dfd8a2caeeb3ca9 (diff) | |
download | hands-on-scala-js-aae594fd3c8397abca4cd4e55f538d41b172b4e3.tar.gz hands-on-scala-js-aae594fd3c8397abca4cd4e55f538d41b172b4e3.tar.bz2 hands-on-scala-js-aae594fd3c8397abca4cd4e55f538d41b172b4e3.zip |
added everything
Diffstat (limited to 'scalatexApi/src/test/scala/scalatex/BasicTests.scala')
-rw-r--r-- | scalatexApi/src/test/scala/scalatex/BasicTests.scala | 418 |
1 files changed, 418 insertions, 0 deletions
diff --git a/scalatexApi/src/test/scala/scalatex/BasicTests.scala b/scalatexApi/src/test/scala/scalatex/BasicTests.scala new file mode 100644 index 0000000..0488ef6 --- /dev/null +++ b/scalatexApi/src/test/scala/scalatex/BasicTests.scala @@ -0,0 +1,418 @@ +package scalatex +import utest._ +import scalatex.stages._ +import scalatags.Text.all._ + + +/** +* Created by haoyi on 7/14/14. +*/ +object BasicTests extends TestSuite{ + import TestUtil._ + + val tests = TestSuite{ + + 'helloWorld{ + object omg { + def wtf(s: Frag*): Frag = Seq[Frag]("|", s, "|") + } + def str = "hear me moo" + check( + tw(""" + @omg.wtf + i @b{am} cow @str + """), + "|i<b>am</b>cowhearmemoo|" + ) + } + 'interpolation{ + 'chained-check( + tw("omg @scala.math.pow(0.5, 3) wtf"), + "omg 0.125 wtf" + ) + 'parens-check( + tw("omg @(1 + 2 + 3 + 4) wtf"), + "omg 10 wtf" + ) + 'block-check( + tw(""" + @{"lol" * 3} + @{ + val omg = "omg" + omg * 2 + } + """), + """ + lollollol + omgomg + """ + ) + } + 'imports{ + object Whee{ + def func(x: Int) = x * 2 + } + check( + tw(""" + @import math._ + @import Whee.func + @abs(-10) + @p + @max(1, 2) + @func(2) + """), + """ + 10 + <p> + 2 + 4 + </p> + """ + ) + } + 'parenArgumentLists{ + 'attributes{ + check( + tw(""" + @div(id:="my-id") omg + @div(id:="my-id"){ omg } + @div(id:="my-id") + omg + """), + """ + <divid="my-id">omg</div> + <divid="my-id">omg</div> + <divid="my-id">omg</div> + """ + ) + } + 'multiline{ + + check( + tw(""" + @div( + h1("Hello World"), + p("I am a ", b{"cow"}) + ) + """), + """ + <div> + <h1>Hello World</h1> + <p>I am a <b>cow</b></p> + </div> + """ + ) + } + } + 'grouping{ + 'negative{ + // The indentation for "normal" text is ignored; we only + // create blocks from the indentation following a scala + // @xxx expression + check( + tw(""" + I am cow hear me moo + I weigh twice as much as you + And I look good on the barbecue + Yoghurt curds cream cheese and butter + Comes from liquids from my udder + I am cow I am cow hear me moooooo + """), + """ + I am cow hear me moo + I weigh twice as much as you + And I look good on the barbecue + Yoghurt curds cream cheese and butter + Comes from liquids from my udder + I am cow I am cow hear me moooooo + """ + ) + } + 'indentation{ + 'simple{ + val world = "World2" + + check( + tw(""" + @h1 Hello World + @h2 hello + @world + @h3 + Cow + """), + """ + <h1>HelloWorld</h1> + <h2>helloWorld2</h2> + <h3>Cow</h3> + """ + ) + } + 'linearNested{ + check( + tw(""" + @h1 @span @a Hello World + @h2 @span @a hello + @b world + @h3 @i + @div Cow + """), + """ + <h1><span></span><a></a>HelloWorld</h1> + <h2><span></span><a></a>hello<b>world</b></h2> + <h3><i></i><div>Cow</div></h3> + """ + ) + } + 'crasher{ + tw(""" +@html + @head + @meta + @div + @a + @span + """) + } + } + 'curlies{ + 'simple{ + val world = "World2" + + check( + tw("""@div{Hello World}"""), + """<div>HelloWorld</div>""" + ) + } + 'multiline{ + check( + tw(""" + @div{ + Hello + } + """), + """ + <div>Hello</div> + """ + ) + } + } + 'mixed{ + check( + tw(""" + @div{ + Hello + @div + @h1 WORLD @b{!!!} + lol + @p{ + @h2{Header 2} + } + } + """), + """ + <div> + Hello + <div> + <h1>WORLD<b>!!!</b>lol</h1> + <p><h2>Header2</h2></p> + </div> + </div> + """ + ) + } + + 'args{ + val things = Seq(1, 2, 3) + check( + tw(""" + @ul + @things.map { x => + @li @x + } + """), + tw(""" + @ul + @things.map x => + @li @x + + """), + """ + <ul> + <li>1</li> + <li>2</li> + <li>3</li> + </ul> + """ + ) + } + } + + 'loops { + + * - check( + tw(""" + @for(x <- 0 until 3) + lol + """), + tw(""" + @for(x <- 0 until 3){ + lol + } + """), + tw( + """ + @for(x <- 0 until 3) { + lol + } + """), + "lollollol" + ) + + + * - check( + tw(""" + @p + @for(x <- 0 until 2) + @for(y <- 0 until 2) + lol@x@y + """), + tw( """ + @p + @for(x <- 0 until 2) { + @for(y <- 0 until 2) + lol@x@y + } + """), + tw(""" + @p + @for(x <- 0 until 2) + @for(y <- 0 until 2){ + lol@x@y + } + """), + "<p>lol00lol01lol10lol11</p>" + ) + check( + tw(""" + @p + @for(x <- 0 until 2) + @for(y <- 0 until 2) + lol@x@y + """), + "<p>lol00lol01lol10lol11</p>" + ) + + * - check( + tw( + """ + @for(x <- 0 until 2; y <- 0 until 2) + @div{@x@y} + + """), + """<div>00</div><div>01</div><div>10</div><div>11</div>""" + ) + } + + 'ifElse{ + 'basicExamples{ + * - check( + tw(""" + @if(false) + Hello + @else lols + @p + """), + "lols<p></p>" + ) + + * - check( + tw(""" + @div + @if(true) + Hello + @else lols + """), + "<div>Hello</div>" + ) + + * - check( + tw(""" + @div + @if(true) Hello + @else lols + """), + "<div>Hello</div>" + ) + * - check( + tw(""" + @if(false) Hello + @else lols + """), + "lols" + ) + * - check( + tw(""" + @if(false) + Hello + @else + lols + @img + """), + "lols<img/>" + ) + * - check( + tw(""" + @p + @if(true) + Hello + @else + lols + """), + tw(""" + @p + @if(true) { + Hello + } else { + lols + } + """), + "<p>Hello</p>" + ) + } + 'funkyExpressions{ + * - check( + tw(""" + @p + @if(true == false == (true.==(false))) + @if(true == false == (true.==(false))) + Hello1 + @else + lols1 + @else + @if(true == false == (true.==(false))) + Hello2 + @else + lols2 + """), + "<p>Hello1</p>" + ) + * - check( + tw(""" + @p + @if(true == false != (true.==(false))) + @if(true == false != (true.==(false))) + Hello1 + @else + lols1 + @else + @if(true == false != (true.==(false))) + Hello2 + @else + lols2 + """), + "<p>lols2</p>" + ) + } + } + } +} |