From 582cd7c022644bd96e29386ba741397fa7a4ba73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 28 Feb 2011 17:50:25 +0000 Subject: [PATCH] --- .../com/mysema/query/scala/Expressions.scala | 33 +++---------------- .../mysema/query/scala/ExpressionTest.scala | 29 +++++++++------- 2 files changed, 23 insertions(+), 39 deletions(-) diff --git a/querydsl-scala/src/main/scala/com/mysema/query/scala/Expressions.scala b/querydsl-scala/src/main/scala/com/mysema/query/scala/Expressions.scala index 3cc548e8d..758052b2e 100644 --- a/querydsl-scala/src/main/scala/com/mysema/query/scala/Expressions.scala +++ b/querydsl-scala/src/main/scala/com/mysema/query/scala/Expressions.scala @@ -293,6 +293,8 @@ trait NumberExpression[T <: Number with Comparable[T]] extends ComparableExpress def floor() = number[T](getType, MathOps.FLOOR, this); def round() = number[T](getType, MathOps.ROUND, this); + + def unary_-() = negate private def castToNum[A <: Number with Comparable[A]](t: Class[A]): NumberExpression[A] = { if (t.equals(getType)) { @@ -320,6 +322,8 @@ trait BooleanExpression extends ComparableExpression[java.lang.Boolean] with Pre def not() = boolean(Ops.NOT, this); + def unary_! = not(); + override def as(right: Path[java.lang.Boolean]) = boolean(ALIAS.asInstanceOf[Operator[java.lang.Boolean]], this, right); override def as(alias: String): BooleanExpression = as(new PathImpl[java.lang.Boolean](getType, alias)); @@ -418,37 +422,10 @@ trait StringExpression extends ComparableExpression[String] { override def as(alias: String): StringExpression = as(new PathImpl[String](getType, alias)); - def not() = new StringNegations(this) +// def not[F](func: (StringExpression) => F): F = func(this); } -// NOTE : experimental -class StringNegations (val str: StringExpression) { - - def like(right: String): BooleanExpression = str.like(right).not; - - def like(right: Expression[String]) = str.like(right).not; - - def matches(right: String) = str.matches(right).not; - - def matches(right: Expression[String]) = str.matches(right).not; - - def contains(right: String) = str.contains(right).not; - - def contains(right: Expression[String]) = str.contains(right).not; - - def startsWith(right: String) = str.startsWith(right).not; - - def startsWith(right: Expression[String]) = str.startsWith(right).not; - - def endsWith(right: String) = str.endsWith(right).not; - - def endsWith(right: Expression[String]) = str.endsWith(right).not; - - def empty = str.isNotEmpty; - -} - trait TemporalExpression[T <: Comparable[_]] extends ComparableExpression[T] { def after(right: T) = gt(right); diff --git a/querydsl-scala/src/test/scala/com/mysema/query/scala/ExpressionTest.scala b/querydsl-scala/src/test/scala/com/mysema/query/scala/ExpressionTest.scala index f52a30284..1b82e4fb6 100644 --- a/querydsl-scala/src/test/scala/com/mysema/query/scala/ExpressionTest.scala +++ b/querydsl-scala/src/test/scala/com/mysema/query/scala/ExpressionTest.scala @@ -116,6 +116,11 @@ class ExpressionTest { assertEquals("person.javaInt != 5", person.javaInt ne 5.asInstanceOf[Integer]); // FIXME } + @Test + def Number_Negation { + assertEquals("person.scalaInt * -1", -person.scalaInt); + } + @Test def Number_Comparison_With_Operators { assertEquals("person.scalaInt < 5", person.scalaInt < 5); @@ -297,18 +302,20 @@ class ExpressionTest { @Test def String_Negations { - assertEquals("!person.firstName like XXX", person.firstName not() like "XXX"); // FIXME - assertEquals("!matches(person.firstName,XXX)", person.firstName not() matches "XXX"); // FIXME - assertEquals("!startsWith(person.firstName,XXX)", person.firstName not() startsWith"XXX"); // FIXME - assertEquals("!endsWith(person.firstName,XXX)", person.firstName not() endsWith "XXX"); // FIXME - assertEquals("!empty(person.firstName)", person.firstName not() empty); // FIXME +// assertEquals("!person.firstName like XXX", person.firstName not like "XXX"); // FIXME +// assertEquals("!matches(person.firstName,XXX)", person.firstName not matches("XXX")); // FIXME +// assertEquals("!startsWith(person.firstName,XXX)", person.firstName not startsWith("XXX")); // FIXME +// assertEquals("!endsWith(person.firstName,XXX)", person.firstName not endsWith("XXX")); // FIXME +// assertEquals("!empty(person.firstName)", person.firstName not empty); // FIXME } -// @Test -// def Prefix(){ -// assertEquals("count(person)", count(person)); -// assertEquals("min(person.javaInt)", min(person.javaInt)); -// assertEquals("min(person.scalaInt)", min(person.scalaInt)); -// } + @Test + def String_Negations2 { + assertEquals("!person.firstName like XXX", !(person.firstName like "XXX")); + assertEquals("!matches(person.firstName,XXX)", !(person.firstName matches "XXX")); + assertEquals("!startsWith(person.firstName,XXX)", !(person.firstName startsWith "XXX")); + assertEquals("!endsWith(person.firstName,XXX)", !(person.firstName endsWith "XXX")); + assertEquals("!empty(person.firstName)", !(person.firstName isEmpty)); + } } \ No newline at end of file