//package scalatex // //import utest._ //import scalatex.stages._ //import scalatags.Text.all._ //import scalatex.Internals.{DebugFailure, twRuntimeErrors} // ///** //* Created by haoyi on 7/14/14. //*/ //object ErrorTests extends TestSuite{ // def check(x: => Unit, expectedMsg: String, expectedError: String) = { // val DebugFailure(msg, pos) = intercept[DebugFailure](x) // def format(str: String) = { // val whitespace = " \t\n".toSet // "\n" + str.dropWhile(_ == '\n') // .reverse // .dropWhile(whitespace.contains) // .reverse // } // // Format these guys nicely to normalize them and make them // // display nicely in the assert error message if it blows up // val formattedPos = format(pos) // val formattedExpectedPos = format(expectedError) // // assert(msg.contains(expectedMsg)) // assert(formattedPos == formattedExpectedPos) // // } // val tests = TestSuite{ // // // 'simple - check( // twRuntimeErrors("omg @notInScope lol"), // """not found: value notInScope""", // """ // twRuntimeErrors("omg @notInScope lol"), // ^ // """ // ) // // 'chained{ // 'properties { // * - check( // twRuntimeErrors("omg @math.lol lol"), // """object lol is not a member of package math""", // """ // twRuntimeErrors("omg @math.lol lol"), // ^ // """ // ) // // * - check( // twRuntimeErrors("omg @math.E.lol lol"), // """value lol is not a member of Double""", // """ // twRuntimeErrors("omg @math.E.lol lol"), // ^ // """ // ) // * - check( // twRuntimeErrors("omg @_root_.scala.math.lol lol"), // """object lol is not a member of package math""", // """ // twRuntimeErrors("omg @_root_.scala.math.lol lol"), // ^ // """ // ) // * - check( // twRuntimeErrors("omg @_root_.scala.gg.lol lol"), // """object gg is not a member of package scala""", // """ // twRuntimeErrors("omg @_root_.scala.gg.lol lol"), // ^ // """ // ) // * - check( // twRuntimeErrors("omg @_root_.ggnore.math.lol lol"), // """object ggnore is not a member of package """, // """ // twRuntimeErrors("omg @_root_.ggnore.math.lol lol"), // ^ // """ // ) // } // 'calls{ // * - check( // twRuntimeErrors("@scala.QQ.abs(-10).tdo(10).sum.z"), // """object QQ is not a member of package scala""", // """ // twRuntimeErrors("@scala.QQ.abs(-10).tdo(10).sum.z"), // ^ // """ // ) // * - check( // twRuntimeErrors("@scala.math.abs(-10).tdo(10).sum.z"), // "value tdo is not a member of Int", // """ // twRuntimeErrors("@scala.math.abs(-10).tdo(10).sum.z"), // ^ // """ // ) // * - check( // twRuntimeErrors("@scala.math.abs(-10).to(10).sum.z"), // "value z is not a member of Int", // """ // twRuntimeErrors("@scala.math.abs(-10).to(10).sum.z"), // ^ // """ // ) // * - check( // twRuntimeErrors("@scala.math.abs(-10).to(10).sum.z()"), // "value z is not a member of Int", // """ // twRuntimeErrors("@scala.math.abs(-10).to(10).sum.z()"), // ^ // """ // ) // * - check( // twRuntimeErrors("@scala.math.abs(-10).cow.sum.z"), // "value cow is not a member of Int", // """ // twRuntimeErrors("@scala.math.abs(-10).cow.sum.z"), // ^ // """ // ) // * - check( // twRuntimeErrors("@scala.smath.abs.cow.sum.z"), // "object smath is not a member of package scala", // """ // twRuntimeErrors("@scala.smath.abs.cow.sum.z"), // ^ // """ // ) // * - check( // twRuntimeErrors(""" // I am cow hear me moo // @scala.math.abs(-10).tdo(10).sum.z // I weigh twice as much as you // """), // "value tdo is not a member of Int", // """ // @scala.math.abs(-10).tdo(10).sum.z // ^ // """ // ) // } // 'curlies{ // * - check( // twRuntimeErrors("@p{@Seq(1, 2, 3).foldLeft(0)}"), // "missing arguments for method foldLeft", // """ // twRuntimeErrors("@p{@Seq(1, 2, 3).foldLeft(0)}"), // ^ // """ // ) // // * - check( // twRuntimeErrors("@Nil.foldLeft{XY}"), // "missing arguments for method foldLeft", // """ // twRuntimeErrors("@Nil.foldLeft{XY}"), // ^ // """ // ) // // * - check( // twRuntimeErrors("@Nil.map{(x: Int, y: String) => omg}"), // "type mismatch", // """ // twRuntimeErrors("@Nil.map{(x: Int, y: String) => omg}"), // ^ // """ // ) // * - check( // twRuntimeErrors("@Nil.map{ omg}"), // "too many arguments for method map", // """ // twRuntimeErrors("@Nil.map{ omg}"), // ^ // """ // ) // } // 'callContents{ // * - check( // twRuntimeErrors("@scala.math.abs((1, 2).wtf)"), // "value wtf is not a member of (Int, Int)", // """ // twRuntimeErrors("@scala.math.abs((1, 2).wtf)"), // ^ // """ // ) // // * - check( // twRuntimeErrors("@scala.math.abs((1, 2).swap._1.toString().map(_.toString.wtf))"), // "value wtf is not a member of String", // """ // twRuntimeErrors("@scala.math.abs((1, 2).swap._1.toString().map(_.toString.wtf))"), // ^ // """ // ) // } // } // 'ifElse{ // 'oneLine { // * - check( // twRuntimeErrors("@if(math > 10){ 1 }else{ 2 }"), // "object > is not a member of package math", // """ // twRuntimeErrors("@if(math > 10){ 1 }else{ 2 }"), // ^ // """ // ) // * - check( // twRuntimeErrors("@if(true){ (@math.pow(10)) * 10 }else{ 2 }"), // "Unspecified value parameter y", // """ // twRuntimeErrors("@if(true){ (@math.pow(10)) * 10 }else{ 2 }"), // ^ // """ // ) // * - check( // twRuntimeErrors("@if(true){ * 10 }else{ @math.sin(3, 4, 5) }"), // "too many arguments for method sin: (x: Double)Double", // """ // twRuntimeErrors("@if(true){ * 10 }else{ @math.sin(3, 4, 5) }"), // ^ // """ // ) // } // 'multiLine{ // * - check( // twRuntimeErrors(""" // Ho Ho Ho // // @if(math != 10) // I am a cow // @else // You are a cow // GG // """), // "object != is not a member of package math", // """ // @if(math != 10) // ^ // """ // ) // * - check( // twRuntimeErrors(""" // Ho Ho Ho // // @if(4 != 10) // I am a cow @math.lols // @else // You are a cow // GG // """), // "object lols is not a member of package math", // """ // I am a cow @math.lols // ^ // """ // ) // * - check( // twRuntimeErrors(""" // Ho Ho Ho // // @if(12 != 10) // I am a cow // @else // @math.E.toString.gog(1) // GG // """), // "value gog is not a member of String", // """ // @math.E.toString.gog(1) // ^ // """ // ) // } // } // 'forLoop{ // 'oneLine{ // 'header - check( // twRuntimeErrors("omg @for(x <- (0 + 1 + 2) omglolol (10 + 11 + 2)){ hello }"), // """value omglolol is not a member of Int""", // """ // twRuntimeErrors("omg @for(x <- (0 + 1 + 2) omglolol (10 + 11 + 2)){ hello }"), // ^ // """ // ) // // 'body - check( // twRuntimeErrors("omg @for(x <- 0 until 10){ @((x, 2) + (1, 2)) }"), // """too many arguments for method +""", // """ // twRuntimeErrors("omg @for(x <- 0 until 10){ @((x, 2) + (1, 2)) }"), // ^ // """ // ) // } // 'multiLine{ // 'body - check( // twRuntimeErrors(""" // omg // @for(x <- 0 until 10) // I am cow hear me moo // I weigh twice as much as @x.kkk // """), // """value kkk is not a member of Int""", // """ // I weigh twice as much as @x.kkk // ^ // """ // ) // } // } // 'multiLine{ // 'missingVar - check( // twRuntimeErrors(""" // omg @notInScope lol // """), // """not found: value notInScope""", // """ // omg @notInScope lol // ^ // """ // ) // 'wrongType - check( // twRuntimeErrors(""" // omg @{() => ()} lol // """), // """type mismatch""", // """ // omg @{() => ()} lol // ^ // """ // ) // // 'bigExpression - check( // twRuntimeErrors(""" // @{ // val x = 1 + 2 // val y = new Object() // val z = y * x // x // } // """), // "value * is not a member of Object", // """ // val z = y * x // ^ // """ // ) // } // } //}