Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tag: Lift-2.0-M1-re…
Fetching contributors…

Cannot retrieve contributors at this time

87 lines (74 sloc) 3.023 kb
package net.liftweb.json
import _root_.org.specs.Specification
import _root_.org.specs.runner.{Runner, JUnit}
class QueryExamplesTest extends Runner(QueryExamples) with JUnit
object QueryExamples extends Specification {
import JsonAST._
import JsonParser._
"List of IPs" in {
val ips = for { JString(ip) <- json \\ "ip" } yield ip
ips mustEqual List("192.168.1.125", "192.168.1.126", "192.168.1.127", "192.168.2.125", "192.168.2.126")
}
"List of IPs converted to XML" in {
val ips = <ips>{ for { JString(ip) <- json \\ "ip" } yield <ip>{ ip }</ip> }</ips>
ips mustEqual <ips><ip>192.168.1.125</ip><ip>192.168.1.126</ip><ip>192.168.1.127</ip><ip>192.168.2.125</ip><ip>192.168.2.126</ip></ips>
}
"List of IPs in cluster2" in {
val ips = for {
cluster @ JObject(x) <- json \ "data_center"
if (x contains JField("name", JString("cluster2")))
JString(ip) <- cluster \\ "ip" } yield ip
ips mustEqual List("192.168.2.125", "192.168.2.126")
}
"Total cpus in data center" in {
(for { JInt(x) <- json \\ "cpus" } yield x) reduceLeft (_ + _) mustEqual 40
}
"Servers sorted by uptime" in {
case class Server(ip: String, uptime: Long)
val servers = for {
JArray(servers) <- json \\ "servers"
JObject(server) <- servers
JField("ip", JString(ip)) <- server
JField("uptime", JInt(uptime)) <- server
} yield Server(ip, uptime.longValue)
servers sort (_.uptime > _.uptime) mustEqual List(Server("192.168.1.127", 901214), Server("192.168.2.125", 453423), Server("192.168.2.126", 214312), Server("192.168.1.126", 189822), Server("192.168.1.125", 150123))
}
"Clusters administered by liza" in {
val clusters = for {
JObject(cluster) <- json
JField("admins", JArray(admins)) <- cluster
if admins contains JString("liza")
JField("name", JString(name)) <- cluster
} yield name
clusters mustEqual List("cluster2")
}
val json = parse("""
{ "data_center": [
{
"name": "cluster1",
"servers": [
{"ip": "192.168.1.125", "uptime": 150123, "specs": {"cpus": 8, "ram": 2048}},
{"ip": "192.168.1.126", "uptime": 189822, "specs": {"cpus": 16, "ram": 4096}},
{"ip": "192.168.1.127", "uptime": 901214, "specs": {"cpus": 8, "ram": 4096}}
],
"links": [
{"href": "http://www.example.com/admin", "name": "admin"},
{"href": "http://www,example.com/home", "name": "home"}
],
"admins": ["jim12", "joe", "maddog"]
},
{
"name": "cluster2",
"servers": [
{"ip": "192.168.2.125", "uptime": 453423, "specs": {"cpus": 4, "ram": 2048}},
{"ip": "192.168.2.126", "uptime": 214312, "specs": {"cpus": 4, "ram": 2048}},
],
"links": [
{"href": "http://www.example2.com/admin", "name": "admin"},
{"href": "http://www,example2.com/home", "name": "home"}
],
"admins": ["joe", "liza"]
}
]}
""")
}
Jump to Line
Something went wrong with that request. Please try again.