a bit more testing
This commit is contained in:
parent
224daa6ea0
commit
f7265e3705
|
@ -1,7 +1,8 @@
|
|||
package lila
|
||||
package lila.app
|
||||
package game
|
||||
|
||||
import game._
|
||||
import lila.game._
|
||||
import lila.user._
|
||||
|
||||
class FeaturedTest extends LilaSpec {
|
||||
|
||||
|
@ -34,14 +35,16 @@ class FeaturedTest extends LilaSpec {
|
|||
}
|
||||
}
|
||||
|
||||
val game1 = DbGame(
|
||||
val game1 = Game.make(
|
||||
game = chess.Game(chess.Variant.default),
|
||||
whitePlayer = DbPlayer.white.copy(elo = 1600.some),
|
||||
blackPlayer = DbPlayer.black,
|
||||
whitePlayer = Player.white.copy(elo = 1600.some),
|
||||
blackPlayer = Player.black,
|
||||
ai = None,
|
||||
creatorColor = chess.Color.White,
|
||||
mode = chess.Mode.default,
|
||||
variant = chess.Variant.default)
|
||||
variant = chess.Variant.default,
|
||||
source = Source.Lobby,
|
||||
pgnImport = None)
|
||||
|
||||
val game2 = game1.copy(
|
||||
clock = chess.Clock(180,0).some,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package lila
|
||||
package lila.app
|
||||
|
||||
import org.specs2.mutable._
|
||||
import ornicar.scalalib.test.ValidationMatchers
|
||||
|
|
|
@ -1,162 +0,0 @@
|
|||
package lila
|
||||
package tournament
|
||||
|
||||
import tournament._
|
||||
|
||||
import ornicar.scalalib.Random.nextString
|
||||
|
||||
class PairingTest extends LilaSpec {
|
||||
|
||||
import Pairing._
|
||||
|
||||
val u1 = "u1"
|
||||
val u2 = "u2"
|
||||
val u3 = "u3"
|
||||
val u4 = "u4"
|
||||
val u5 = "u5"
|
||||
val u6 = "u6"
|
||||
|
||||
"All pair combinations" should {
|
||||
//"2 elems" in {
|
||||
//val elems = List(u1, u2)
|
||||
//allPairCombinations(elems) must contain(List(u1 -> u2)).only
|
||||
//}
|
||||
"4 elems" in {
|
||||
val elems = List(u1, u2, u3, u4)
|
||||
allPairCombinations(elems) must contain(
|
||||
List(u1 -> u2, u3 -> u4),
|
||||
List(u1 -> u3, u2 -> u4),
|
||||
List(u1 -> u4, u2 -> u3)).only
|
||||
}
|
||||
"6 elems" in {
|
||||
val elems = List(u1, u2, u3, u4, u5, u6)
|
||||
"size" in {
|
||||
allPairCombinations(elems).size must_== 15
|
||||
}
|
||||
"pairings" in {
|
||||
allPairCombinations(elems) must contain(
|
||||
List(u1 -> u2, u3 -> u4, u5 -> u6),
|
||||
List(u1 -> u2, u3 -> u5, u4 -> u6),
|
||||
List(u1 -> u2, u3 -> u6, u4 -> u5),
|
||||
List(u1 -> u3, u2 -> u4, u5 -> u6),
|
||||
List(u1 -> u3, u2 -> u5, u4 -> u6),
|
||||
List(u1 -> u3, u2 -> u6, u4 -> u5),
|
||||
List(u1 -> u4, u2 -> u3, u5 -> u6),
|
||||
List(u1 -> u4, u2 -> u5, u3 -> u6),
|
||||
List(u1 -> u4, u2 -> u6, u3 -> u5),
|
||||
List(u1 -> u4, u2 -> u3, u5 -> u6),
|
||||
List(u1 -> u5, u2 -> u3, u4 -> u6),
|
||||
List(u1 -> u6, u2 -> u3, u4 -> u5))
|
||||
}
|
||||
}
|
||||
"14 elems" in {
|
||||
val elems = List.fill(14)(nextString(8))
|
||||
"size" in {
|
||||
allPairCombinations(elems).size must_== 3 * 5 * 7 * 9 * 11 * 13
|
||||
}
|
||||
}
|
||||
}
|
||||
"Create new pairings" should {
|
||||
"initial pairings" in {
|
||||
"even players" in {
|
||||
val users = List.fill(100)(nextString(8))
|
||||
pairs(users, Nil) must have size 50
|
||||
}
|
||||
"odd players" in {
|
||||
val users = List.fill(99)(nextString(8))
|
||||
pairs(users, Nil) must have size 49
|
||||
}
|
||||
}
|
||||
"2 players" in {
|
||||
val users = List(u1, u2)
|
||||
"first pairing" in {
|
||||
val pairings = List[Pairing]()
|
||||
pairs(users, pairings) must_== List(u1 -> u2)
|
||||
}
|
||||
"finished pairing" in {
|
||||
val pairings = List(mate(u1, u2))
|
||||
pairs(users, pairings) must_== List(u1 -> u2)
|
||||
}
|
||||
"started pairing" in {
|
||||
val pairings = List(started(u1, u2))
|
||||
pairs(users, pairings) must_== Nil
|
||||
}
|
||||
"finished and started pairing" in {
|
||||
val pairings = List(mate(u1, u2), started(u1, u2))
|
||||
pairs(users, pairings) must_== Nil
|
||||
}
|
||||
}
|
||||
}
|
||||
"3 players" should {
|
||||
val users = List(u1, u2, u3)
|
||||
"first pairing" in {
|
||||
val pairings = List[Pairing]()
|
||||
pairs(users, pairings) must beOneOf(List(u1 -> u2), List(u1 -> u3), List(u2 -> u3))
|
||||
}
|
||||
"finished pairing" in {
|
||||
val pairings = List(mate(u1, u2))
|
||||
pairs(users, pairings) must beOneOf(List(u1 -> u3), List(u2 -> u3))
|
||||
}
|
||||
"started pairing" in {
|
||||
val pairings = List(started(u1, u2))
|
||||
pairs(users, pairings) must_== Nil
|
||||
}
|
||||
"finished and started pairing" in {
|
||||
val pairings = List(mate(u1, u2), started(u1, u3))
|
||||
pairs(users, pairings) must_== Nil
|
||||
}
|
||||
"many finished pairings" in {
|
||||
"without ambiguity" in {
|
||||
val pairings = List(mate(u1, u3), mate(u1, u2))
|
||||
pairs(users, pairings) must beOneOf(List(u2 -> u3), List(u1 -> u2))
|
||||
}
|
||||
"favor longer idle" in {
|
||||
val pairings = List(mate(u2, u3), mate(u1, u3), mate(u1, u2))
|
||||
pairs(users, pairings) must beOneOf(List(u1 -> u2), List(u1 -> u3))
|
||||
}
|
||||
}
|
||||
}
|
||||
"4 players" should {
|
||||
val users = List(u1, u2, u3, u4)
|
||||
"finished pairing" in {
|
||||
"one finished" in {
|
||||
val pairings = List(mate(u1, u2))
|
||||
"size" in {
|
||||
pairs(users, pairings) must have size 2
|
||||
}
|
||||
"no rematch" in {
|
||||
pairs(users, pairings) must not contain(u1 -> u2)
|
||||
}
|
||||
}
|
||||
"two finished" in {
|
||||
val pairings = List(mate(u1, u2), mate(u3, u4))
|
||||
"size" in {
|
||||
pairs(users, pairings) must have size 2
|
||||
}
|
||||
"no rematch" in {
|
||||
pairs(users, pairings) must beOneOf(
|
||||
List(u1 -> u3, u2 -> u4),
|
||||
List(u1 -> u4, u2 -> u3))
|
||||
}
|
||||
}
|
||||
}
|
||||
"started pairing" in {
|
||||
val pairings = List(started(u1, u2))
|
||||
pairs(users, pairings) must_== List(u3 -> u4)
|
||||
}
|
||||
"finished and started pairing" in {
|
||||
val pairings = List(started(u3, u4), mate(u1, u2))
|
||||
pairs(users, pairings) must_== Nil
|
||||
}
|
||||
}
|
||||
|
||||
private def pairs(users: List[String], pairings: Pairings): List[(String, String)] =
|
||||
createNewPairings(users, pairings, users.size) map (_.usersPair) map {
|
||||
case (a, b) ⇒ (a < b).fold(a -> b, b -> a)
|
||||
}
|
||||
|
||||
private def started(a: String, b: String) =
|
||||
Pairing(a, b) withStatus chess.Status.Started
|
||||
private def mate(a: String, b: String) =
|
||||
Pairing(a, b) withStatus chess.Status.Mate
|
||||
}
|
64
test/user/RepoTest.scala
Normal file
64
test/user/RepoTest.scala
Normal file
|
@ -0,0 +1,64 @@
|
|||
package lila.app
|
||||
package user
|
||||
|
||||
import lila.user.{ User, UserRepo }
|
||||
import lila.user.tube.userTube
|
||||
import lila.db.Implicits._
|
||||
import lila.db.api._
|
||||
import lila.db.test.WithDb
|
||||
|
||||
import org.specs2.mutable.Specification
|
||||
|
||||
import play.api.test._
|
||||
import play.api.libs.json._
|
||||
|
||||
import org.joda.time.DateTime
|
||||
import org.scala_tools.time.Imports._
|
||||
|
||||
final class RepoTest extends Specification {
|
||||
|
||||
val user = User(
|
||||
id = "thibault",
|
||||
username = "Thibault",
|
||||
elo = 1200,
|
||||
nbGames = 10,
|
||||
nbRatedGames = 5,
|
||||
nbWins = 5,
|
||||
nbLosses = 5,
|
||||
nbDraws = 0,
|
||||
nbWinsH = 5,
|
||||
nbLossesH = 2,
|
||||
nbDrawsH = 0,
|
||||
nbAi = 3,
|
||||
isChatBan = false,
|
||||
enabled = true,
|
||||
roles = Nil,
|
||||
settings = Map.empty,
|
||||
bio = None,
|
||||
engine = false,
|
||||
toints = 0,
|
||||
createdAt = DateTime.now)
|
||||
|
||||
import makeTimeout.large
|
||||
|
||||
sequential
|
||||
|
||||
def cleanup {
|
||||
println("cleaning up...")
|
||||
($remove($select.all) >> $insert(user)).await
|
||||
println("cleaning up done")
|
||||
}
|
||||
|
||||
"The user repo" should {
|
||||
"idempotency" in new WithDb {
|
||||
cleanup
|
||||
$find.one($select(user.id)).await must_== user.some
|
||||
}
|
||||
"date selector" in new WithDb {
|
||||
cleanup
|
||||
$find.one(Json.obj(
|
||||
"createdAt" -> $gt($date(user.createdAt - RichInt(1).hours))
|
||||
)).await must_== user.some
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue