From ce4a80d105e3e4e7954371a702cbff36936a7c63 Mon Sep 17 00:00:00 2001 From: Abhinav Sarkar Date: Fri, 28 May 2010 01:50:50 +0530 Subject: [PATCH] Removed JUnit test. Added Scalatest spec. --- .classpath | 1 + .project | 5 +- SpelHelper.iml | 23 ++++++- pom.xml | 62 ++++++++++++++++++- .../spelhelper/ImplicitMethodResolver.java | 4 +- .../abhinavsarkar/spelhelper/Functions.java | 13 ++++ .../spelhelper/SpelHelperTest.java | 43 ------------- .../spelhelper/SpelHelperSpec.scala | 54 ++++++++++++++++ 8 files changed, 156 insertions(+), 49 deletions(-) create mode 100644 src/test/java/net/abhinavsarkar/spelhelper/Functions.java delete mode 100644 src/test/java/net/abhinavsarkar/spelhelper/SpelHelperTest.java create mode 100644 src/test/scala/net/abhinavsarkar/spelhelper/SpelHelperSpec.scala diff --git a/.classpath b/.classpath index d558bcd..1a76e64 100644 --- a/.classpath +++ b/.classpath @@ -2,6 +2,7 @@ + diff --git a/.project b/.project index 5aff713..e592793 100644 --- a/.project +++ b/.project @@ -6,17 +6,18 @@ - org.eclipse.jdt.core.javabuilder + org.maven.ide.eclipse.maven2Builder - org.maven.ide.eclipse.maven2Builder + ch.epfl.lamp.sdt.core.scalabuilder + ch.epfl.lamp.sdt.core.scalanature org.eclipse.jdt.core.javanature org.maven.ide.eclipse.maven2Nature diff --git a/SpelHelper.iml b/SpelHelper.iml index 4e976e6..a43f4dc 100644 --- a/SpelHelper.iml +++ b/SpelHelper.iml @@ -1,16 +1,35 @@ - + + + + + + + + + - + + + + + + + diff --git a/pom.xml b/pom.xml index 99da534..62caf58 100644 --- a/pom.xml +++ b/pom.xml @@ -13,6 +13,7 @@ UTF-8 + 2.7.7 @@ -41,7 +42,7 @@ javadoc - process-sources + install javadoc @@ -70,7 +71,38 @@ 1.6 + + org.scala-tools + maven-scala-plugin + 2.12 + + + + compile + testCompile + + + + + ${scala.version} + + **/*.scala + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.5 + + plain + + **/*Spec.class + + + + true @@ -82,7 +114,34 @@ + + + scala-tools.org + Scala-tools Maven2 Repository + http://scala-tools.org/repo-releases + + + + + + scala-tools.org + Scala-Tools Maven2 Repository + http://scala-tools.org/repo-releases + + + + + org.scala-lang + scala-library + ${scala.version} + + + org.scalatest + scalatest + 1.0 + test + junit junit @@ -100,4 +159,5 @@ 3.0.2.RELEASE + diff --git a/src/main/java/net/abhinavsarkar/spelhelper/ImplicitMethodResolver.java b/src/main/java/net/abhinavsarkar/spelhelper/ImplicitMethodResolver.java index a3c49b7..40e910b 100644 --- a/src/main/java/net/abhinavsarkar/spelhelper/ImplicitMethodResolver.java +++ b/src/main/java/net/abhinavsarkar/spelhelper/ImplicitMethodResolver.java @@ -87,7 +87,9 @@ final class ImplicitMethodResolver implements MethodResolver { newArgumentTypes); MethodExecutor wrappedExecutor = executor == null ? null : new ImplicitMethodExecutor(executor); - CACHE.putIfAbsent(cacheKey, wrappedExecutor); + if(wrappedExecutor == null) { + CACHE.putIfAbsent(cacheKey, NULL_ME); + } return wrappedExecutor; } } diff --git a/src/test/java/net/abhinavsarkar/spelhelper/Functions.java b/src/test/java/net/abhinavsarkar/spelhelper/Functions.java new file mode 100644 index 0000000..dbc637a --- /dev/null +++ b/src/test/java/net/abhinavsarkar/spelhelper/Functions.java @@ -0,0 +1,13 @@ +package net.abhinavsarkar.spelhelper; + +public final class Functions { + + public static String test(String str) { + return str; + } + + @Override + public boolean equals(Object o) { + return o instanceof Functions; + } +} diff --git a/src/test/java/net/abhinavsarkar/spelhelper/SpelHelperTest.java b/src/test/java/net/abhinavsarkar/spelhelper/SpelHelperTest.java deleted file mode 100644 index 75d5a40..0000000 --- a/src/test/java/net/abhinavsarkar/spelhelper/SpelHelperTest.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.abhinavsarkar.spelhelper; - -import java.util.Arrays; -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -public class SpelHelperTest { - - @Test - public void testRegisteredFunction() { - Assert.assertEquals( - Arrays.asList("abhinav", "mini", "dan"), - new SpelHelper().evalExpression( - "#list('abhinav','mini','dan')", new Object(), List.class)); - } - - @Test - public void testImplicitMethod() { - Assert.assertEquals( - Arrays.asList("abhinav", "dan", "mini"), - new SpelHelper().evalExpression( - "#list('abhinav','mini','dan').sorted", new Object(), List.class)); - } - - public static final class ConstructorTest { - @Override - public boolean equals(final Object o) { - return o instanceof ConstructorTest; - } - } - - @Test - public void testImplicitConstructor() { - Assert.assertEquals( - new ConstructorTest(), - new SpelHelper() - .registerConstructorsFromClass(ConstructorTest.class) - .evalExpression("new ConstructorTest()", new Object(), ConstructorTest.class)); - } - -} diff --git a/src/test/scala/net/abhinavsarkar/spelhelper/SpelHelperSpec.scala b/src/test/scala/net/abhinavsarkar/spelhelper/SpelHelperSpec.scala new file mode 100644 index 0000000..a4e09e8 --- /dev/null +++ b/src/test/scala/net/abhinavsarkar/spelhelper/SpelHelperSpec.scala @@ -0,0 +1,54 @@ +package net.abhinavsarkar.spelhelper + +import org.scalatest.junit.JUnitRunner +import org.junit.runner.RunWith +import org.scalatest.Spec +import org.scalatest.junit.ShouldMatchersForJUnit + +@RunWith(classOf[JUnitRunner]) +class SpelHelperSpec extends Spec with ShouldMatchersForJUnit { + describe("SpelHelper") { + + it ("should register and evaluate functions ") { + new SpelHelper() + .registerFunctionsFromClass(classOf[Functions]) + .evalExpression( + "#test('check')", new {}, classOf[String]) should equal("check") + } + + it ("should register implicit methods ") { + new SpelHelper() + .registerImplicitMethodsFromClass(classOf[Functions]) + .lookupImplicitMethod("java.lang.String.test") should equal( + classOf[Functions].getMethod("test", classOf[String])) + } + + it ("should register implicit constructors ") { + new SpelHelper() + .registerConstructorsFromClass(classOf[Functions]) + .lookupImplicitConstructor("Functions[]") should equal( + classOf[Functions].getConstructor()) + } + + it ("should evaluate implicit methods ") { + new SpelHelper() + .registerImplicitMethodsFromClass(classOf[Functions]) + .evalExpression( + "'check'.test()", new {}, classOf[String]) should equal("check") + } + + it ("should evaluate implicit constructors ") { + new SpelHelper() + .registerConstructorsFromClass(classOf[Functions]) + .evalExpression( + "new Functions()", new {}, classOf[Functions]) should equal(new Functions) + } + + it ("should evaluate implicit properties ") { + new SpelHelper().evalExpression( + "'abc'.hashCode", new {}, classOf[int]) should equal("abc".hashCode) + } + + } +} +