Skip to content

Instantly share code, notes, and snippets.

@arturaz
Last active January 1, 2016 17:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arturaz/8180793 to your computer and use it in GitHub Desktop.
Save arturaz/8180793 to your computer and use it in GitHub Desktop.
package com.tinylabproductions.quazibuild.server.actor.live_game.model
import org.scalatest.{Matchers, FunSpec}
import org.scalatest.prop.PropertyChecks
import org.scalautils.TypeCheckedTripleEquals
import org.scalacheck.Gen
import org.scalacheck.Arbitrary.arbitrary
import com.tinylabproductions.quazibuild.server.actor.live_game.model.Droid.{RandomBehaviour, BackSlashBehaviour, SlashBehaviour}
import support.ExtraMatchers
/**
* Created by arturas on 13.12.16.
*/
class DroidTest extends FunSpec with Matchers with PropertyChecks
with TypeCheckedTripleEquals with ExtraMatchers {
describe("Behaviour") {
def positionGen(boundaries: Field.Boundaries) = for {
x <- Gen.choose(0, boundaries.width - 1)
y <- Gen.choose(0, boundaries.height - 1)
} yield Field.Position(x, y)
describe("creation") {
val boundariesGen = for {
w <- Gen.choose(1, Int.MaxValue)
h <- Gen.choose(1, Int.MaxValue)
} yield Field.Boundaries(w, h)
val boundariesWithPositionGen = for {
boundaries <- boundariesGen
position <- positionGen(boundaries)
} yield (boundaries, position)
describe("slash") {
it("should return None if we're in top-left corner") {
forAll(boundariesGen) { boundaries =>
val position = Field.Position(0, boundaries.height - 1)
Droid.SlashBehaviour(position, boundaries) shouldBe None
}
}
it("should return None if we're in bottom-right corner") {
forAll(boundariesGen) { boundaries =>
val position = Field.Position(boundaries.width - 1, 0)
Droid.SlashBehaviour(position, boundaries) shouldBe None
}
}
it("should return Some otherwise") {
forAll(boundariesWithPositionGen) { case (boundaries, position) =>
whenever(
! boundaries.isTopLeftCorner(position) &&
! boundaries.isBottomRightCorner(position)
) {
Droid.SlashBehaviour(position, boundaries) shouldBe an [Some[_]]
}
}
}
}
describe("backslash") {
it("should return None if we're in top-right corner") {
forAll(boundariesGen) { boundaries =>
val position = Field.Position(
boundaries.width - 1, boundaries.height - 1
)
Droid.BackSlashBehaviour(position, boundaries) shouldBe None
}
}
it("should return None if we're in bottom-left corner") {
forAll(boundariesGen) { boundaries =>
val position = Field.Position(0, 0)
Droid.BackSlashBehaviour(position, boundaries) shouldBe None
}
}
it("should return Some otherwise") {
forAll(boundariesWithPositionGen) { case (boundaries, position) =>
whenever(
! boundaries.isTopRightCorner(position) &&
! boundaries.isBottomLeftCorner(position)
) {
Droid.BackSlashBehaviour(position, boundaries) shouldBe an
[Some[_]]
}
}
}
}
}
describe("moving") {
val (w, h) = (10, 15)
val boundaries = Field.Boundaries(w, h)
val players = Seq.empty[Field.Position]
describe("slash") {
it("should move correctly in top-right corner") {
val p = Field.Position(w - 1, h - 1)
assert(boundaries.isTopRightCorner(p))
SlashBehaviour(p, boundaries).get.
nextPosition(p, boundaries, players) shouldBe
Field.Position(w - 2, h - 2)
}
it("should move correctly in bottom-left corner") {
val p = Field.Position(0, 0)
assert(boundaries.isBottomLeftCorner(p))
SlashBehaviour(p, boundaries).get.
nextPosition(p, boundaries, players) shouldBe Field.Position(1, 1)
}
it("should move correctly anywhere in the field") {
forAll(positionGen(boundaries)) { p =>
val b = SlashBehaviour(p, boundaries)
whenever(b.isDefined) {
Seq(
Field.Position(p.x - 1, p.y - 1),
Field.Position(p.x + 1, p.y + 1)
) should contain(b.get.nextPosition(p, boundaries, players))
}
}
}
}
describe("backslash") {
it("should move correctly in top-left corner") {
val p = Field.Position(0, h - 1)
assert(boundaries.isTopLeftCorner(p))
BackSlashBehaviour(p, boundaries).get.
nextPosition(p, boundaries, players) shouldBe
Field.Position(1, h - 2)
}
it("should move correctly in bottom-right corner") {
val p = Field.Position(w - 1, 0)
assert(boundaries.isBottomRightCorner(p))
BackSlashBehaviour(p, boundaries).get.
nextPosition(p, boundaries, players) shouldBe
Field.Position(w - 2, 1)
}
it("should move correctly anywhere in the field") {
forAll(positionGen(boundaries)) { p =>
val b = BackSlashBehaviour(p, boundaries)
whenever(b.isDefined) {
Seq(
Field.Position(p.x - 1, p.y + 1),
Field.Position(p.x + 1, p.y - 1)
) should contain(b.get.nextPosition(p, boundaries, players))
}
}
}
}
describe("random") {
it("should never go out of field") {
val b = RandomBehaviour
forAll(positionGen(boundaries)) { p =>
boundaries should contain (b.nextPosition(p, boundaries, players))
}
}
it("should always move exactly 1 tile") {
val b = RandomBehaviour
forAll(positionGen(boundaries)) { p =>
val next = b.nextPosition(p, boundaries, players)
// assert(next.tileDistanceTo(p) === 1, s"this: $p, next: $next")
assert(next.tileDistanceTo(p) === 1, "") // BOOM
}
}
}
}
}
}
Loading /c/Program Files (x86)/sbt/bin/sbt-launch-lib.bash
[info] Loading project definition from C:\work\quazibuild\server\project
[info] Set current project to Quazibuild Server (in build file:/C:/work/quazibuild/server/)
[info] Compiling 1 Scala source to C:\work\quazibuild\server\target\scala-2.10\test-classes...
[info] ======= Position error
[info] Synthetic tree [3029] contains nonsynthetic tree [3012]
[info] == Enclosing tree [3029] of type Apply at [5972]DroidTest.scala
[info]
[info] [L 170 ] #3029 [5972] Apply // Apply(method apply)
[info]
[info] == Enclosed tree [3012] of type Literal at [6003:6005]DroidTest.scala
[info]
[info] [L 170 ] #3012 [6003:6005] Literal // "")
[info]
[info]
[info] While validating #3060
[info] [L 1 ] #3060 [0:6048] PackageDef // model
[info]
[info] Children:
[info] [L 1 P# 3060] #49 [8:70] Select // model
[info] [L 3 P# 3060] #52 [72:112] Import // org.scalatest.{Matchers, FunSpec}
[info] [L 4 P# 3060] #56 [113:153] Import // org.scalatest.prop.PropertyChecks
[info] [L 5 P# 3060] #59 [154:199] Import // org.scalautils.TypeCheckedTripleEquals
[info] [L 6 P# 3060] #62 [200:225] Import // org.scalacheck.Gen
[info] [L 7 P# 3060] #66 [226:267] Import // org.scalacheck.Arbitrary.arbitrary
[info] [L 8 P# 3060] #75 [268:397] Import // com.tinylabproductions.quazibuild.server.actor.live_game.model.Droid.{RandomBehaviour, BackSlashBehaviour, SlashBehaviour}
[info] [L 9 P# 3060] #77 [398:426] Import // support.ExtraMatchers
[info] [L 14 P# 3060] #3059 [471:6048] ClassDef // DroidTest extends FunSpec with Matchers with PropertyChecks
[info] =======
[error]
[error] while compiling: C:\work\quazibuild\server\src\test\scala\com\tinylabproductions\quazibuild\server\actor\live_game\model\DroidTest.scala
[error] during phase: typer
[error] library version: version 2.10.3
[error] compiler version: version 2.10.3
[error] reconstructed args: -bootclasspath C:\Program Files (x86)\Java\jre7\lib\resources.jar;C:\Program Files (x86)\Java\jre7\lib\rt.jar;C:\Program Files (x86)\Java\jre7\lib\sunrsasign.jar;C:\Program Files (x86)\Java\jre7\lib\jsse.jar;C:\Program Files (x86)\Java\jre7\lib\jce.jar;C:\Program Files (x86)\Java\jre7\lib\charsets.jar;C:\Program Files (x86)\Java\jre7\lib\jfr.jar;C:\Program Files (x86)\Java\jre7\classes;C:\Users\arturas\.sbt\boot\scala-2.10.3\lib\scala-library.jar -P:continuations:enable -deprecation -Yrangepos -feature -Xplugin:C:\Users\arturas\.ivy2\cache\org.scala-lang.plugins\continuations\jars\continuations-2.10.3.jar -classpath C:\work\quazibuild\server\target\scala-2.10\test-classes;C:\work\quazibuild\server\target\scala-2.10\classes;C:\work\quazibuild\server\lib\scalabuff-runtime_2.10-1.3.7-SNAPSHOT.jar;C:\Users\arturas\.ivy2\cache\com.typesafe.akka\akka-actor_2.10\jars\akka-actor_2.10-2.2.1.jar;C:\Users\arturas\.ivy2\cache\com.typesafe\config\bundles\config-1.0.2.jar;C:\Users\arturas\.ivy2\cache\com.typesafe.akka\akka-channels-experimental_2.10\jars\akka-channels-experimental_2.10-2.2.1.jar;C:\Users\arturas\.ivy2\cache\org.scala-lang\scala-reflect\jars\scala-reflect-2.10.2.jar;C:\Users\arturas\.ivy2\cache\com.google.protobuf\protobuf-java\jars\protobuf-java-2.4.1.jar;C:\Users\arturas\.ivy2\cache\org.joda\joda-convert\jars\joda-convert-1.5.jar;C:\Users\arturas\.ivy2\cache\joda-time\joda-time\jars\joda-time-2.3.jar;C:\Users\arturas\.ivy2\cache\mysql\mysql-connector-java\jars\mysql-connector-java-5.1.26.jar;C:\Users\arturas\.ivy2\cache\com.typesafe.slick\slick_2.10\jars\slick_2.10-1.0.1.jar;C:\Users\arturas\.ivy2\cache\com.jolbox\bonecp\bundles\bonecp-0.8.0.RELEASE.jar;C:\Users\arturas\.ivy2\cache\com.google.guava\guava\bundles\guava-15.0.jar;C:\Users\arturas\.ivy2\cache\org.slf4j\slf4j-api\jars\slf4j-api-1.7.2.jar;C:\Users\arturas\.ivy2\cache\org.clapper\grizzled-scala_2.10\jars\grizzled-scala_2.10-1.1.4.jar;C:\Users\arturas\.ivy2\cache\jline\jline\jars\jline-2.6.jar;C:\Users\arturas\.ivy2\cache\com.typesafe.play\play-json_2.10\jars\play-json_2.10-2.2.1.jar;C:\Users\arturas\.ivy2\cache\com.typesafe.play\play-iteratees_2.10\jars\play-iteratees_2.10-2.2.1.jar;C:\Users\arturas\.ivy2\cache\org.scala-stm\scala-stm_2.10\jars\scala-stm_2.10-0.7.jar;C:\Users\arturas\.ivy2\cache\com.typesafe.play\play-functional_2.10\jars\play-functional_2.10-2.2.1.jar;C:\Users\arturas\.ivy2\cache\com.typesafe.play\play-datacommons_2.10\jars\play-datacommons_2.10-2.2.1.jar;C:\Users\arturas\.ivy2\cache\com.fasterxml.jackson.core\jackson-annotations\jars\jackson-annotations-2.2.2.jar;C:\Users\arturas\.ivy2\cache\com.fasterxml.jackson.core\jackson-core\jars\jackson-core-2.2.2.jar;C:\Users\arturas\.ivy2\cache\com.fasterxml.jackson.core\jackson-databind\jars\jackson-databind-2.2.2.jar;C:\Users\arturas\.ivy2\cache\net.databinder.dispatch\dispatch-core_2.10\jars\dispatch-core_2.10-0.11.0.jar;C:\Users\arturas\.ivy2\cache\com.ning\async-http-client\jars\async-http-client-1.7.16.jar;C:\Users\arturas\.ivy2\cache\io.netty\netty\bundles\netty-3.6.3.Final.jar;C:\Users\arturas\.ivy2\cache\org.scalatest\scalatest_2.10\jars\scalatest_2.10-2.0.jar;C:\Users\arturas\.ivy2\cache\org.scalacheck\scalacheck_2.10\jars\scalacheck_2.10-1.10.1.jar;C:\Users\arturas\.ivy2\cache\org.scala-tools.testing\test-interface\jars\test-interface-0.5.jar;C:\Users\arturas\.ivy2\cache\org.scala-lang\scala-actors\jars\scala-actors-2.10.1.jar;C:\Users\arturas\.ivy2\cache\com.typesafe.akka\akka-testkit_2.10\bundles\akka-testkit_2.10-2.2.1.jar -d C:\work\quazibuild\server\target\scala-2.10\test-classes
[error]
[error] last tree to typer: TypeApply(method shrinkAny)
[error] symbol: method shrinkAny in object Shrink (flags: <method> implicit <triedcooking>)
[error] symbol definition: implicit def shrinkAny[T]: org.scalacheck.Shrink[T]
[error] tpe: org.scalacheck.Shrink[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] symbol owners: method shrinkAny -> object Shrink -> package scalacheck
[error] context owners: value <local DroidTest> -> class DroidTest -> package model
[error]
[error] == Enclosing template or block ==
[error]
[error] Template( // val <local DroidTest>: <notype> in class DroidTest
[error] "FunSpec", "Matchers", "PropertyChecks", "TypeCheckedTripleEquals", "ExtraMatchers" // parents
[error] ValDef(
[error] private
[error] "_"
[error] <tpt>
[error] <empty>
[error] )
[error] // 2 statements
[error] DefDef( // def <init>(): com.tinylabproductions.quazibuild.server.actor.live_game.model.DroidTest in class DroidTest
[error] <method>
[error] "<init>"
[error] []
[error] List(Nil)
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.DroidTest
[error] Block( // tree.tpe=Unit
[error] Apply( // def <init>(): org.scalatest.FunSpec in class FunSpec, tree.tpe=org.scalatest.FunSpec
[error] DroidTest.super."<init>" // def <init>(): org.scalatest.FunSpec in class FunSpec, tree.tpe=()org.scalatest.FunSpec
[error] Nil
[error] )
[error] ()
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "describe"
[error] "Behaviour"
[error] )
[error] Block(
[error] // 2 statements
[error] DefDef( // def positionGen(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries): org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] <method> <triedcooking>
[error] "positionGen"
[error] []
[error] // 1 parameter list
[error] ValDef( // boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <param> <triedcooking>
[error] "boundaries"
[error] "Field"."Boundaries" // case class Boundaries extends Product with Serializable in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <empty>
[error] )
[error] <tpt> // tree.tpe=org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] Apply(
[error] Gen.choose(0, boundaries.width.-(1))."flatMap"
[error] Function( // val $anonfun: <notype>
[error] ValDef( // x: Int
[error] <param> <triedcooking>
[error] "x"
[error] <tpt> // tree.tpe=Int
[error] <empty>
[error] )
[error] Apply(
[error] Gen.choose(0, boundaries.height.-(1))."map"
[error] Function( // val $anonfun: <notype>
[error] ValDef( // y: Int
[error] <param> <triedcooking>
[error] "y"
[error] <tpt> // tree.tpe=Int
[error] <empty>
[error] )
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] "x" // x: Int, tree.tpe=Int
[error] "y" // y: Int, tree.tpe=Int
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "describe"
[error] "creation"
[error] )
[error] Block(
[error] // 3 statements
[error] ValDef( // val boundariesGen: org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries]
[error] <triedcooking>
[error] "boundariesGen"
[error] <tpt> // tree.tpe=org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries]
[error] Apply(
[error] Gen.choose(1, Int.MaxValue)."flatMap"
[error] Function( // val $anonfun: <notype>
[error] ValDef( // w: Int
[error] <param> <triedcooking>
[error] "w"
[error] <tpt> // tree.tpe=Int
[error] <empty>
[error] )
[error] Apply(
[error] Gen.choose(1, Int.MaxValue)."map"
[error] Function( // val $anonfun: <notype>
[error] ValDef( // h: Int
[error] <param> <triedcooking>
[error] "h"
[error] <tpt> // tree.tpe=Int
[error] <empty>
[error] )
[error] Apply( // object Boundaries in object Field
[error] "Field"."Boundaries" // object Boundaries in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries.type
[error] // 2 arguments
[error] "w" // w: Int, tree.tpe=Int
[error] "h" // h: Int, tree.tpe=Int
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] ValDef( // val boundariesWithPositionGen: org.scalacheck.Gen[(com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position)]
[error] <triedcooking>
[error] "boundariesWithPositionGen"
[error] <tpt> // tree.tpe=org.scalacheck.Gen[(com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position)]
[error] Apply( // def flatMap[U](f: T => org.scalacheck.Gen[U]): org.scalacheck.Gen[U] in trait Gen
[error] "boundariesGen"."flatMap" // def flatMap[U](f: T => org.scalacheck.Gen[U]): org.scalacheck.Gen[U] in trait Gen, tree.tpe=[U](f: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries => org.scalacheck.Gen[U])org.scalacheck.Gen[U]
[error] Function( // val $anonfun: <notype>
[error] ValDef( // boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <param> <triedcooking>
[error] "boundaries"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <empty>
[error] )
[error] Apply( // def map[U](f: T => U): org.scalacheck.Gen[U] in trait Gen
[error] positionGen(boundaries)."map" // def map[U](f: T => U): org.scalacheck.Gen[U] in trait Gen, tree.tpe=[U](f: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position => U)org.scalacheck.Gen[U]
[error] Function( // val $anonfun: <notype>
[error] ValDef( // position: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <param> <triedcooking>
[error] "position"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <empty>
[error] )
[error] Apply( // object Tuple2 in package scala
[error] "scala"."Tuple2" // object Tuple2 in package scala, tree.tpe=Tuple2.type
[error] // 2 arguments
[error] "boundaries" // boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] "position" // position: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "describe"
[error] "slash"
[error] )
[error] Block(
[error] // 2 statements
[error] Apply(
[error] Apply(
[error] "it"
[error] "should return None if we\'re in top-left corner"
[error] )
[error] Apply(
[error] Apply(
[error] "forAll"
[error] "boundariesGen" // val boundariesGen: org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries], tree.tpe=org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries]
[error] )
[error] Function( // val $anonfun: <notype>
[error] ValDef( // boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <param> <triedcooking>
[error] "boundaries"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <empty>
[error] )
[error] Block(
[error] ValDef( // val position: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <triedcooking>
[error] "position"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] 0
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "boundaries"."height"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 1
[error] )
[error] )
[error] )
[error] Apply(
[error] Droid.SlashBehaviour(position, boundaries)."shouldBe"
[error] "None"
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "it"
[error] "should return None if we\'re in bottom-right corner"
[error] )
[error] Apply(
[error] Apply(
[error] "forAll"
[error] "boundariesGen" // val boundariesGen: org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries], tree.tpe=org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries]
[error] )
[error] Function( // val $anonfun: <notype>
[error] ValDef( // boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <param> <triedcooking>
[error] "boundaries"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <empty>
[error] )
[error] Block(
[error] ValDef( // val position: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <triedcooking>
[error] "position"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "boundaries"."width"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 1
[error] )
[error] 0
[error] )
[error] )
[error] Apply(
[error] Droid.SlashBehaviour(position, boundaries)."shouldBe"
[error] "None"
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "it"
[error] "should return Some otherwise"
[error] )
[error] Apply(
[error] Apply(
[error] "forAll"
[error] "boundariesWithPositionGen" // val boundariesWithPositionGen: org.scalacheck.Gen[(com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position)], tree.tpe=org.scalacheck.Gen[(com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position)]
[error] )
[error] Match(
[error] <empty>
[error] CaseDef(
[error] Apply( // object Tuple2 in package scala
[error] "scala"."Tuple2" // object Tuple2 in package scala, tree.tpe=Tuple2.type
[error] // 2 arguments
[error] Bind( // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] "boundaries"
[error] "_" // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] )
[error] Bind( // val position: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "position"
[error] "_" // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "whenever"
[error] Apply( // def &&(x: Boolean): Boolean in class Boolean, tree.tpe=Boolean
[error] boundaries.isTopLeftCorner(position)."unary_$bang"."$amp$amp" // def &&(x: Boolean): Boolean in class Boolean, tree.tpe=(x: Boolean)Boolean
[error] boundaries.isBottomRightCorner(position)."unary_$bang" // def unary_!: Boolean in class Boolean, tree.tpe=Boolean
[error] )
[error] )
[error] Apply(
[error] Droid.SlashBehaviour(position, boundaries)."shouldBe"
[error] TypeApply(
[error] "an"
[error] ExistentialTypeTree(
[error] AppliedTypeTree(
[error] "Some"
[error] "_$1" // type _$1, tree.tpe=_$1
[error] )
[error] List(
[error] TypeDef( // type _$1
[error] <deferred> <synthetic> <existential/mixedin>
[error] "_$1"
[error] []
[error] TypeBoundsTree(
[error] "_root_"."scala"."Nothing" // final abstract class Nothing extends Any in package scala, tree.tpe=Nothing
[error] "_root_"."scala"."Any" // abstract class Any extends in package scala, tree.tpe=Any
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "describe"
[error] "backslash"
[error] )
[error] Block(
[error] // 2 statements
[error] Apply(
[error] Apply(
[error] "it"
[error] "should return None if we\'re in top-right corner"
[error] )
[error] Apply(
[error] Apply(
[error] "forAll"
[error] "boundariesGen" // val boundariesGen: org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries], tree.tpe=org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries]
[error] )
[error] Function( // val $anonfun: <notype>
[error] ValDef( // boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <param> <triedcooking>
[error] "boundaries"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <empty>
[error] )
[error] Block(
[error] ValDef( // val position: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <triedcooking>
[error] "position"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "boundaries"."width"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 1
[error] )
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "boundaries"."height"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 1
[error] )
[error] )
[error] )
[error] Apply(
[error] Droid.BackSlashBehaviour(position, boundaries)."shouldBe"
[error] "None"
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "it"
[error] "should return None if we\'re in bottom-left corner"
[error] )
[error] Apply(
[error] Apply(
[error] "forAll"
[error] "boundariesGen" // val boundariesGen: org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries], tree.tpe=org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries]
[error] )
[error] Function( // val $anonfun: <notype>
[error] ValDef( // boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <param> <triedcooking>
[error] "boundaries"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <empty>
[error] )
[error] Block(
[error] ValDef( // val position: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <triedcooking>
[error] "position"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] 0
[error] 0
[error] )
[error] )
[error] Apply(
[error] Droid.BackSlashBehaviour(position, boundaries)."shouldBe"
[error] "None"
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "it"
[error] "should return Some otherwise"
[error] )
[error] Apply(
[error] Apply(
[error] "forAll"
[error] "boundariesWithPositionGen" // val boundariesWithPositionGen: org.scalacheck.Gen[(com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position)], tree.tpe=org.scalacheck.Gen[(com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position)]
[error] )
[error] Match(
[error] <empty>
[error] CaseDef(
[error] Apply( // object Tuple2 in package scala
[error] "scala"."Tuple2" // object Tuple2 in package scala, tree.tpe=Tuple2.type
[error] // 2 arguments
[error] Bind( // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] "boundaries"
[error] "_" // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] )
[error] Bind( // val position: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "position"
[error] "_" // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "whenever"
[error] Apply( // def &&(x: Boolean): Boolean in class Boolean, tree.tpe=Boolean
[error] boundaries.isTopRightCorner(position)."unary_$bang"."$amp$amp" // def &&(x: Boolean): Boolean in class Boolean, tree.tpe=(x: Boolean)Boolean
[error] boundaries.isBottomLeftCorner(position)."unary_$bang" // def unary_!: Boolean in class Boolean, tree.tpe=Boolean
[error] )
[error] )
[error] Apply(
[error] Droid.BackSlashBehaviour(position, boundaries)."shouldBe"
[error] TypeApply(
[error] "an"
[error] ExistentialTypeTree(
[error] AppliedTypeTree(
[error] "Some"
[error] "_$2" // type _$2, tree.tpe=_$2
[error] )
[error] List(
[error] TypeDef( // type _$2
[error] <deferred> <synthetic> <existential/mixedin>
[error] "_$2"
[error] []
[error] TypeBoundsTree(
[error] "_root_"."scala"."Nothing" // final abstract class Nothing extends Any in package scala, tree.tpe=Nothing
[error] "_root_"."scala"."Any" // abstract class Any extends in package scala, tree.tpe=Any
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "describe"
[error] "moving"
[error] )
[error] Block(
[error] // 7 statements
[error] ValDef( // private[this] val x$1: (Int, Int)
[error] private <local> <synthetic> <triedcooking>
[error] "x$1"
[error] <tpt> // tree.tpe=(Int, Int)
[error] Match(
[error] Annotated(
[error] Apply( // def <init>(): unchecked in class unchecked, tree.tpe=(Int, Int) @unchecked
[error] new scala.unchecked."<init>" // def <init>(): unchecked in class unchecked, tree.tpe=()unchecked
[error] Nil
[error] )
[error] Apply( // object Tuple2 in package scala
[error] "scala"."Tuple2" // object Tuple2 in package scala, tree.tpe=Tuple2.type
[error] // 2 arguments
[error] 10
[error] 15
[error] )
[error] )
[error] CaseDef(
[error] Apply( // object Tuple2 in package scala
[error] "scala"."Tuple2" // object Tuple2 in package scala, tree.tpe=Tuple2.type
[error] // 2 arguments
[error] Bind( // val w: Int, tree.tpe=Int
[error] "w"
[error] "_" // tree.tpe=Int
[error] )
[error] Bind( // val h: Int, tree.tpe=Int
[error] "h"
[error] "_" // tree.tpe=Int
[error] )
[error] )
[error] Apply( // object Tuple2 in package scala
[error] "scala"."Tuple2" // object Tuple2 in package scala, tree.tpe=Tuple2.type
[error] // 2 arguments
[error] "w" // val w: Int, tree.tpe=Int
[error] "h" // val h: Int, tree.tpe=Int
[error] )
[error] )
[error] )
[error] )
[error] ValDef( // val w: Int
[error] <triedcooking>
[error] "w"
[error] <tpt> // tree.tpe=Int
[error] "x$1"."_1" // val _1: T1 in class Tuple2, tree.tpe=Int
[error] )
[error] ValDef( // val h: Int
[error] <triedcooking>
[error] "h"
[error] <tpt> // tree.tpe=Int
[error] "x$1"."_2" // val _2: T2 in class Tuple2, tree.tpe=Int
[error] )
[error] ValDef( // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] <triedcooking>
[error] "boundaries"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] Apply( // object Boundaries in object Field
[error] "Field"."Boundaries" // object Boundaries in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries.type
[error] // 2 arguments
[error] "w" // val w: Int, tree.tpe=Int
[error] "h" // val h: Int, tree.tpe=Int
[error] )
[error] )
[error] ValDef( // val players: Seq[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] <triedcooking>
[error] "players"
[error] <tpt> // tree.tpe=Seq[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] TypeApply(
[error] "Seq"."empty"
[error] "Field"."Position" // case class Position extends Product with Serializable in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "describe"
[error] "slash"
[error] )
[error] Block(
[error] // 2 statements
[error] Apply(
[error] Apply(
[error] "it"
[error] "should move correctly in top-right corner"
[error] )
[error] Block(
[error] // 2 statements
[error] ValDef( // val p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <triedcooking>
[error] "p"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "w"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 1
[error] )
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "h"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 1
[error] )
[error] )
[error] )
[error] Apply(
[error] "assert"
[error] Apply( // def isTopRightCorner(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position): Boolean in class Boundaries, tree.tpe=Boolean
[error] "boundaries"."isTopRightCorner" // def isTopRightCorner(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position): Boolean in class Boundaries, tree.tpe=(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position)Boolean
[error] "p" // val p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] )
[error] )
[error] Apply(
[error] SlashBehaviour(p, boundaries).get.nextPosition(p, boundaries, players)."shouldBe"
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "w"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 2
[error] )
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "h"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 2
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "it"
[error] "should move correctly in bottom-left corner"
[error] )
[error] Block(
[error] // 2 statements
[error] ValDef( // val p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <triedcooking>
[error] "p"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] 0
[error] 0
[error] )
[error] )
[error] Apply(
[error] "assert"
[error] Apply( // def isBottomLeftCorner(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position): Boolean in class Boundaries, tree.tpe=Boolean
[error] "boundaries"."isBottomLeftCorner" // def isBottomLeftCorner(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position): Boolean in class Boundaries, tree.tpe=(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position)Boolean
[error] "p" // val p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] )
[error] )
[error] Apply(
[error] SlashBehaviour(p, boundaries).get.nextPosition(p, boundaries, players)."shouldBe"
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] 1
[error] 1
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "it"
[error] "should move correctly anywhere in the field"
[error] )
[error] Apply(
[error] Apply(
[error] "forAll"
[error] Apply( // def positionGen(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries): org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] "positionGen" // def positionGen(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries): org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries)org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] "boundaries" // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] )
[error] )
[error] Function( // val $anonfun: <notype>
[error] ValDef( // p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <param> <triedcooking>
[error] "p"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <empty>
[error] )
[error] Block(
[error] ValDef( // val b: Option[com.tinylabproductions.quazibuild.server.actor.live_game.model.Droid.SlashBehaviour]
[error] <triedcooking>
[error] "b"
[error] <tpt> // tree.tpe=Option[com.tinylabproductions.quazibuild.server.actor.live_game.model.Droid.SlashBehaviour]
[error] Apply(
[error] "SlashBehaviour"
[error] // 2 arguments
[error] "p" // p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "boundaries" // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "whenever"
[error] "b"."isDefined" // def isDefined: Boolean in class Option, tree.tpe=Boolean
[error] )
[error] Apply(
[error] Seq(Field.Position(p.x.-(1), p.y.-(1)), Field.Position(p.x.+(1), p.y.+(1)))."should"
[error] Apply(
[error] "contain"
[error] Apply( // def nextPosition(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position,boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries,players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]): com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position in class PingPongBehaviour, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "b"."get"."nextPosition" // def nextPosition(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position,boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries,players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]): com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position in class PingPongBehaviour, tree.tpe=(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position])com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] // 3 arguments
[error] "p" // p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "boundaries" // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] "players" // val players: Seq[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=Seq[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "describe"
[error] "backslash"
[error] )
[error] Block(
[error] // 2 statements
[error] Apply(
[error] Apply(
[error] "it"
[error] "should move correctly in top-left corner"
[error] )
[error] Block(
[error] // 2 statements
[error] ValDef( // val p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <triedcooking>
[error] "p"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] 0
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "h"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 1
[error] )
[error] )
[error] )
[error] Apply(
[error] "assert"
[error] Apply( // def isTopLeftCorner(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position): Boolean in class Boundaries, tree.tpe=Boolean
[error] "boundaries"."isTopLeftCorner" // def isTopLeftCorner(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position): Boolean in class Boundaries, tree.tpe=(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position)Boolean
[error] "p" // val p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] )
[error] )
[error] Apply(
[error] BackSlashBehaviour(p, boundaries).get.nextPosition(p, boundaries, players)."shouldBe"
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] 1
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "h"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 2
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "it"
[error] "should move correctly in bottom-right corner"
[error] )
[error] Block(
[error] // 2 statements
[error] ValDef( // val p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <triedcooking>
[error] "p"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "w"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 1
[error] )
[error] 0
[error] )
[error] )
[error] Apply(
[error] "assert"
[error] Apply( // def isBottomRightCorner(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position): Boolean in class Boundaries, tree.tpe=Boolean
[error] "boundaries"."isBottomRightCorner" // def isBottomRightCorner(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position): Boolean in class Boundaries, tree.tpe=(pos: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position)Boolean
[error] "p" // val p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] )
[error] )
[error] Apply(
[error] BackSlashBehaviour(p, boundaries).get.nextPosition(p, boundaries, players)."shouldBe"
[error] Apply( // object Position in object Field
[error] "Field"."Position" // object Position in object Field, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position.type
[error] // 2 arguments
[error] Apply( // def -(x: Int): Int in class Int, tree.tpe=Int
[error] "w"."$minus" // def -(x: Int): Int in class Int, tree.tpe=(x: Int)Int
[error] 2
[error] )
[error] 1
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "it"
[error] "should move correctly anywhere in the field"
[error] )
[error] Apply(
[error] Apply(
[error] "forAll"
[error] Apply( // def positionGen(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries): org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] "positionGen" // def positionGen(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries): org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries)org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] "boundaries" // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] )
[error] )
[error] Function( // val $anonfun: <notype>
[error] ValDef( // p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <param> <triedcooking>
[error] "p"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <empty>
[error] )
[error] Block(
[error] ValDef( // val b: Option[com.tinylabproductions.quazibuild.server.actor.live_game.model.Droid.BackSlashBehaviour]
[error] <triedcooking>
[error] "b"
[error] <tpt> // tree.tpe=Option[com.tinylabproductions.quazibuild.server.actor.live_game.model.Droid.BackSlashBehaviour]
[error] Apply(
[error] "BackSlashBehaviour"
[error] // 2 arguments
[error] "p" // p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "boundaries" // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "whenever"
[error] "b"."isDefined" // def isDefined: Boolean in class Option, tree.tpe=Boolean
[error] )
[error] Apply(
[error] Seq(Field.Position(p.x.-(1), p.y.+(1)), Field.Position(p.x.+(1), p.y.-(1)))."should"
[error] Apply(
[error] "contain"
[error] Apply( // def nextPosition(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position,boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries,players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]): com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position in class PingPongBehaviour, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "b"."get"."nextPosition" // def nextPosition(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position,boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries,players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]): com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position in class PingPongBehaviour, tree.tpe=(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position])com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] // 3 arguments
[error] "p" // p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "boundaries" // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] "players" // val players: Seq[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=Seq[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "describe"
[error] "random"
[error] )
[error] Block(
[error] Apply(
[error] Apply(
[error] "it"
[error] "should never go out of field"
[error] )
[error] Block(
[error] ValDef( // val b: com.tinylabproductions.quazibuild.server.actor.live_game.model.Droid.RandomBehaviour.type
[error] <triedcooking>
[error] "b"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Droid.RandomBehaviour.type
[error] "RandomBehaviour"
[error] )
[error] Apply(
[error] Apply(
[error] "forAll"
[error] Apply( // def positionGen(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries): org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] "positionGen" // def positionGen(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries): org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries)org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] "boundaries" // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] )
[error] )
[error] Function( // val $anonfun: <notype>
[error] ValDef( // p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <param> <triedcooking>
[error] "p"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <empty>
[error] )
[error] Apply(
[error] "boundaries"."should"
[error] Apply(
[error] "contain"
[error] Apply( // def nextPosition(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position,boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries,players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]): com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position in object RandomBehaviour, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "b"."nextPosition" // def nextPosition(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position,boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries,players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]): com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position in object RandomBehaviour, tree.tpe=(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position])com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] // 3 arguments
[error] "p" // p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "boundaries" // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] "players" // val players: Seq[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=Seq[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] Apply(
[error] Apply(
[error] "it"
[error] "should always move exactly 1 tile"
[error] )
[error] Block(
[error] ValDef( // val b: com.tinylabproductions.quazibuild.server.actor.live_game.model.Droid.RandomBehaviour.type
[error] <triedcooking>
[error] "b"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Droid.RandomBehaviour.type
[error] "RandomBehaviour"
[error] )
[error] Apply(
[error] Apply(
[error] "forAll"
[error] Apply( // def positionGen(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries): org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] "positionGen" // def positionGen(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries): org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=(boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries)org.scalacheck.Gen[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] "boundaries" // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] )
[error] )
[error] Function( // val $anonfun: <notype>
[error] ValDef( // p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <param> <triedcooking>
[error] "p"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <empty>
[error] )
[error] Block(
[error] ValDef( // val next: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] <triedcooking>
[error] "next"
[error] <tpt> // tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] Apply( // def nextPosition(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position,boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries,players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]): com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position in object RandomBehaviour, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "b"."nextPosition" // def nextPosition(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position,boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries,players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]): com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position in object RandomBehaviour, tree.tpe=(current: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, players: TraversableOnce[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position])com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] // 3 arguments
[error] "p" // p: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position
[error] "boundaries" // val boundaries: com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries, tree.tpe=com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Boundaries
[error] "players" // val players: Seq[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position], tree.tpe=Seq[com.tinylabproductions.quazibuild.server.actor.live_game.model.Field.Position]
[error] )
[error] )
[error] Apply(
[error] "assert"
[error] // 2 arguments
[error] Apply(
[error] next.tileDistanceTo(p)."$eq$eq$eq"
[error] 1
[error] )
[error] ""
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error] )
[error]
[error] == Expanded type of tree ==
[error]
[error] TypeRef(
[error] TypeSymbol(sealed abstract class Shrink[T <: <?>] extends AnyRef)
[error] args = List(
[error] TypeRef(
[error] pre = SingleType(pre = ThisType(package model), object Field)
[error] TypeSymbol(
[error] case class Position extends Product with Serializable
[error] )
[error] )
[error] )
[error] )
[error]
[error] uncaught exception during compilation: scala.tools.nsc.interactive.RangePositions$ValidateException
scala.tools.nsc.interactive.RangePositions$ValidateException: Synthetic tree [3029] contains nonsynthetic tree [3012]
at scala.tools.nsc.interactive.RangePositions$class.positionError$1(RangePositions.scala:201)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:218)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:241)
at scala.tools.nsc.interactive.RangePositions$class.validatePositions(RangePositions.scala:246)
at xsbt.CachedCompiler0$$anon$1.validatePositions(CompilerInterface.scala:113)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.apply(Analyzer.scala:100)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:91)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:91)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.run(Analyzer.scala:91)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
at xsbt.CachedCompiler0.run(CompilerInterface.scala:88)
at xsbt.CachedCompiler0.run(CompilerInterface.scala:72)
at xsbt.CompilerInterface.run(CompilerInterface.scala:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:73)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:35)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:29)
at sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileScala$1$1.apply$mcV$sp(AggressiveCompile.scala:71)
at sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:71)
at sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:71)
at sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:101)
at sbt.compiler.AggressiveCompile$$anonfun$4.compileScala$1(AggressiveCompile.scala:70)
at sbt.compiler.AggressiveCompile$$anonfun$4.apply(AggressiveCompile.scala:88)
at sbt.compiler.AggressiveCompile$$anonfun$4.apply(AggressiveCompile.scala:60)
at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:24)
at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:22)
at sbt.inc.Incremental$.cycle(Incremental.scala:52)
at sbt.inc.Incremental$.compile(Incremental.scala:29)
at sbt.inc.IncrementalCompile$.apply(Compile.scala:20)
at sbt.compiler.AggressiveCompile.compile2(AggressiveCompile.scala:96)
at sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:44)
at sbt.compiler.AggressiveCompile.apply(AggressiveCompile.scala:31)
at sbt.Compiler$.apply(Compiler.scala:79)
at sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:574)
at sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:574)
at sbt.Scoped$$anonfun$hf2$1.apply(Structure.scala:578)
at sbt.Scoped$$anonfun$hf2$1.apply(Structure.scala:578)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:49)
at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311)
at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:41)
at sbt.std.Transform$$anon$5.work(System.scala:71)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
at sbt.Execute.work(Execute.scala:238)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232)
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[error] (test:compile) scala.tools.nsc.interactive.RangePositions$ValidateException: Synthetic tree [3029] contains nonsynthetic tree [3012]
[error] Total time: 3 s, completed 2013-12-30 13.09.03
import sbt._
import sbt.Keys._
object Versions {
val Akka = "2.2.1"
}
object Dependencies {
val Akka = Seq(
"com.typesafe.akka" %% "akka-actor" % Versions.Akka,
"com.typesafe.akka" %% "akka-channels-experimental" % Versions.Akka
)
val Google = Seq(
"com.google.protobuf" % "protobuf-java" % "2.4.1"
)
val Joda = Seq(
"org.joda" % "joda-convert" % "1.5",
"joda-time" % "joda-time" % "2.3"
)
val Slick = Seq(
"mysql" % "mysql-connector-java" % "5.1.26",
"com.typesafe.slick" %% "slick" % "1.0.1",
"com.jolbox" % "bonecp" % "0.8.0.RELEASE"
)
val Other = Seq(
"org.clapper" % "grizzled-scala_2.10" % "1.1.4",
"com.typesafe.play" %% "play-json" % "2.2.1",
"net.databinder.dispatch" %% "dispatch-core" % "0.11.0"
)
val Test = Seq(
"org.scalatest" %% "scalatest" % "2.0" % "test",
"org.scalacheck" %% "scalacheck" % "1.10.1" % "test",
"com.typesafe.akka" %% "akka-testkit" % Versions.Akka % "test"
)
val all = Akka ++ Google ++ Joda ++ Slick ++ Other ++ Test
}
object Resolvers {
val Typesafe = Seq(
"Typesafe Releases" at "http://repo.typesafe.com/typesafe/releases"
)
val Sonatype = Seq("snapshots", "releases").map(Resolver.sonatypeRepo)
val all = Typesafe ++ Sonatype
}
object ServerBuild extends Build {
lazy val server = Project(
id = "server",
base = file("."),
settings = Project.defaultSettings ++
com.github.retronym.SbtOneJar.oneJarSettings ++ Seq(
name := "Quazibuild Server",
organization := "com.tinylabproductions",
version := "0.1-SNAPSHOT",
scalaVersion := "2.10.3",
scalaBinaryVersion := "2.10",
autoCompilerPlugins := true,
libraryDependencies += compilerPlugin(
"org.scala-lang.plugins" % "continuations" % "2.10.3"
),
scalacOptions ++= Seq(
"-feature", "-deprecation", "-P:continuations:enable"
),
scalacOptions in Test ++= Seq("-Yrangepos"),
resolvers ++= Resolvers.all,
libraryDependencies ++= Dependencies.all,
initialCommands in console :=
"import implicits._;" +
"import concurrent.duration._;" +
"import org.joda.time._;" +
"import com.tinylabproductions.quazibuild.server._;"
)
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment