summaryrefslogtreecommitdiff
path: root/src/test/scala/com/google/gimd/query
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grek@google.com>2009-09-24 16:54:49 -0700
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2010-04-02 01:36:45 +0200
commit630113dcce18e4be54550669ccfc2c7bc6c3dff9 (patch)
treef8749b09a0f4b8d5582cd5aba86bcf26760f140b /src/test/scala/com/google/gimd/query
parentcc3cf9fdc34eec1bcb54f81d94184b1e2e38be63 (diff)
downloadgimd-630113dcce18e4be54550669ccfc2c7bc6c3dff9.tar.gz
Define implicit conversions from FieldSpec to functions that extract values.
Defined FieldSpecOne2T and FieldSpecOption implicit conversions where T is a type of a value that given UserObject stores in it's class field. Thanks to that it's possible to use FieldSpec as functions: Message => T which is very convenient for defining UserType and implementing it's method toUserObject. Another improvement is defining implicit conversion FieldSpec => List[FieldSpec] that allows one to define list of FieldSpecs in an elegant way. FieldSpecMany and it's implicit conversions has not been implemented yet as it requires much more work. The problem is with sorting of fields that can be either interpreted as string and int fields. This ambiguity makes it much more difficult to define what is a valid (sorted) representation of given message that has fields named the same but storing both ints and non-int values. Change-Id: Iadeec3a97c7dac60508245e8f773e408ea9e5541 Signed-off-by: Grzegorz Kossakowski <grek@google.com>
Diffstat (limited to 'src/test/scala/com/google/gimd/query')
-rw-r--r--src/test/scala/com/google/gimd/query/MessageQueryTestCase.scala11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/test/scala/com/google/gimd/query/MessageQueryTestCase.scala b/src/test/scala/com/google/gimd/query/MessageQueryTestCase.scala
index 21b461b..c8c58eb 100644
--- a/src/test/scala/com/google/gimd/query/MessageQueryTestCase.scala
+++ b/src/test/scala/com/google/gimd/query/MessageQueryTestCase.scala
@@ -17,17 +17,16 @@ package com.google.gimd.query
import file.{File, FileType}
import org.junit.Test
import org.junit.Assert._
+import UserType._
class MessageQueryTestCase {
case class TreeNode(id: Int, name: String)
object TreeNodeType extends UserType[TreeNode] {
- def toUserObject(m: Message): TreeNode =
- new TreeNode(
- m.one("id").intField.value,
- m.one("name").stringField.value
- )
+ val id = FieldSpecOne("id", IntField, _.id)
+ val name = FieldSpecOne("name", StringField, _.name)
+ def fields = id :: name
override def children = Seq(new NestedMember("node", TreeNodeType))
- def fields = List(FieldSpec("id", IntField, _.id), FieldSpec("name", StringField, _.name))
+ def toUserObject(m: Message) = new TreeNode(id(m), name(m))
}
val root = new TreeNode(-1, "a")