diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-05 22:25:58 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-05 22:25:58 -0800 |
commit | 784f3da4192a0e30ddd94cfb10f91d0bc8dc4f7f (patch) | |
tree | 83bc659db8b89e904b6b3377d91ef3016be98d18 /scalatexApi/src/test/scala/scalatex/BasicTests.scala | |
parent | 62871430033658a36e04772a4417526ac399b0dc (diff) | |
download | hands-on-scala-js-784f3da4192a0e30ddd94cfb10f91d0bc8dc4f7f.tar.gz hands-on-scala-js-784f3da4192a0e30ddd94cfb10f91d0bc8dc4f7f.tar.bz2 hands-on-scala-js-784f3da4192a0e30ddd94cfb10f91d0bc8dc4f7f.zip |
Fixed the Scala grammar, property/call/type-param chaining now works and more tests pass
Diffstat (limited to 'scalatexApi/src/test/scala/scalatex/BasicTests.scala')
-rw-r--r-- | scalatexApi/src/test/scala/scalatex/BasicTests.scala | 868 |
1 files changed, 434 insertions, 434 deletions
diff --git a/scalatexApi/src/test/scala/scalatex/BasicTests.scala b/scalatexApi/src/test/scala/scalatex/BasicTests.scala index fc4bff8..4bc362c 100644 --- a/scalatexApi/src/test/scala/scalatex/BasicTests.scala +++ b/scalatexApi/src/test/scala/scalatex/BasicTests.scala @@ -1,468 +1,468 @@ -//package scalatex -//import utest._ -//import scala.collection.mutable.ArrayBuffer -//import scalatex.stages._ -//import scalatags.Text.all._ +package scalatex +import utest._ +import scala.collection.mutable.ArrayBuffer +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 + """ + ) + } + 'definitions{ + '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> + """ + ) + } + 'valDefVar{ + check( + tw(""" + Hello + @val x = 1 + World @x + @def y = "omg" + mooo + @y + """), + """ + Hello + World 1 + mooo + omg + """ + ) + } + 'classObjectTrait{ + check( + tw(""" + @trait Trait{ + def tt = 2 + } + Hello + @case object moo extends Trait{ + val omg = "wtf" + } + + @moo.toString + @moo.omg + @case class Foo(i: Int, s: String, b: Boolean) + TT is @moo.tt + @Foo(10, "10", true).toString + """), + """ + Hello + moo + wtf + TT is 2 + Foo(10, 10, true) + """ + ) + } + } + 'parenArgumentLists{ + 'attributes{ + check( + tw(""" + @div(id:="my-id"){ omg } + @div(id:="my-id") + omg + """), + """ + <divid="my-id">omg</div> + <divid="my-id">omg</div> + """ + ) + } +// 'multiline{ // -// -///** -//* 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 -// """ -// ) -// } -// 'definitions{ -// '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> -// """ -// ) -// } -// 'valDefVar{ // check( // tw(""" -// Hello -// @val x = 1 -// World @x -// @def y = "omg" -// mooo -// @y +// @div( +// h1("Hello World"), +// p("I am a ", b{"cow"}) +// ) // """), // """ -// Hello -// World 1 -// mooo -// omg +// <div> +// <h1>Hello World</h1> +// <p>I am a <b>cow</b></p> +// </div> // """ // ) // } -// 'classObjectTrait{ -// check( -// tw(""" -// @trait Trait{ -// def tt = 2 -// } -// Hello -// @case object moo extends Trait{ -// val omg = "wtf" -// } + } + '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></h1><span></span><a></a>HelloWorld + <h2></h2><span></span><a></a>hello<b></b>world + <h3></h3><i></i><div></div>Cow + """ + ) + } + '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> + """ + ) + } // -// @moo.toString -// @moo.omg -// @case class Foo(i: Int, s: String, b: Boolean) -// TT is @moo.tt -// @Foo(10, "10", true).toString -// """), -// """ -// Hello -// moo -// wtf -// TT is 2 -// Foo(10, 10, true) -// """ -// ) -// } -// } -// 'parenArgumentLists{ -// 'attributes{ +// 'args{ +// val things = Seq(1, 2, 3) // check( // tw(""" -// @div(id:="my-id"){ omg } -// @div(id:="my-id") -// omg -// """), -// """ -// <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 +// @ul +// @things.map { x => +// @li +// @x +// } // """), -// """ -// 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></h1><span></span><a></a>HelloWorld -// <h2></h2><span></span><a></a>hello<b></b>world -// <h3></h3><i></i><div></div>Cow -// """ -// ) -// } -// 'crasher{ // tw(""" -//@html -// @head -// @meta -// @div -// @a -// @span -// """) -// } -// } -// 'curlies{ -// 'simple{ -// val world = "World2" +// @ul +// @things.map x => +// @li +// @x // -// 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> +// <ul> +// <li>1</li> +// <li>2</li> +// <li>3</li> +// </ul> // """ // ) // } -//// -//// '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 -// } -// """), -// "lollollol" -// ) + } // + 'loops { // -// * - 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(""" + @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(""" -// @if(false) -// Hello -// @else -// lols // @p -// """), -// "lols<p></p>" -// ) -// -// * - check( -// tw(""" -// @div -// @if(true) -// Hello +// @if(true == false == (true.==(false))) +// @if(true == false == (true.==(false))) +// Hello1 +// @else +// lols1 // @else -// lols +// @if(true == false == (true.==(false))) +// Hello2 +// @else +// lols2 // """), -// "<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/>" +// "<p>Hello1</p>" // ) // * - check( // tw(""" // @p -// @if(true) -// Hello +// @if(true == false != (true.==(false))) +// @if(true == false != (true.==(false))) +// Hello1 +// @else +// lols1 // @else -// lols +// @if(true == false != (true.==(false))) +// Hello2 +// @else +// lols2 // """), -// tw(""" -// @p -// @if(true){ -// Hello -// }else{ -// lols -// } -// """), -// "<p>Hello</p>" +// "<p>lols2</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>" -//// ) -//// } -// } -// } -// -//} + } + } + +} |