Modify StatelessCheckerTest And fix bug.

Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c39fbdc9
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c39fbdc9
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c39fbdc9

Branch: refs/heads/master
Commit: c39fbdc99e142c6b2c27ea79c34fe6dda98c9ec2
Parents: 20c2b89
Author: kensakurai <[email protected]>
Authored: Sat Feb 18 19:48:33 2017 +0900
Committer: kensakurai <[email protected]>
Committed: Sat Feb 18 19:48:33 2017 +0900

----------------------------------------------------------------------
 .../StatelessCheckFailureException.java         |   2 +-
 .../devutils/stateless/StatelessChecker.java    |   4 +
 .../stateless/StatelessCheckerTest.java         | 126 +++++++++++--------
 3 files changed, 78 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/c39fbdc9/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessCheckFailureException.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessCheckFailureException.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessCheckFailureException.java
index b87e79a..84def0a 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessCheckFailureException.java
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessCheckFailureException.java
@@ -42,7 +42,7 @@ public class StatelessCheckFailureException  extends 
WicketRuntimeException
         */
        public StatelessCheckFailureException(Component component, String 
reason)
     {
-        super("'" + component + "' claims to be stateless but isn't. ");
+        super("'" + component + "' claims to be stateless but isn't." + 
reason);
         this.component = component;
     }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/c39fbdc9/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
index b2a7a32..5312b2f 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/stateless/StatelessChecker.java
@@ -120,6 +120,7 @@ public class StatelessChecker implements 
IComponentOnBeforeRenderListener
                                    reason = " Stateful behaviors: " + 
statefulBehaviors.join();
                                }
                                fail(new 
StatelessCheckFailureException(component, reason));
+                               return;
                        }
 
                        if (component instanceof MarkupContainer)
@@ -130,6 +131,7 @@ public class StatelessChecker implements 
IComponentOnBeforeRenderListener
                                if (o != null)
                                {
                                        fail(new 
StatelessCheckFailureException(container, " Offending component: " + o));
+                                       return;
                                }
                        }
 
@@ -139,10 +141,12 @@ public class StatelessChecker implements 
IComponentOnBeforeRenderListener
                                if (!p.isBookmarkable())
                                {
                                        fail(new 
StatelessCheckFailureException(p, " Only bookmarkable pages can be stateless"));
+                                       return;
                                }
                                if (!p.isPageStateless())
                                {
                                        fail(new 
StatelessCheckFailureException(p, " for unknown reason"));
+                                       return;
                                }
                        }
                }

http://git-wip-us.apache.org/repos/asf/wicket/blob/c39fbdc9/wicket-devutils/src/test/java/org/apache/wicket/devutils/stateless/StatelessCheckerTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/test/java/org/apache/wicket/devutils/stateless/StatelessCheckerTest.java
 
b/wicket-devutils/src/test/java/org/apache/wicket/devutils/stateless/StatelessCheckerTest.java
index 41df859..0d16468 100644
--- 
a/wicket-devutils/src/test/java/org/apache/wicket/devutils/stateless/StatelessCheckerTest.java
+++ 
b/wicket-devutils/src/test/java/org/apache/wicket/devutils/stateless/StatelessCheckerTest.java
@@ -87,14 +87,27 @@ public class StatelessCheckerTest extends Assert
                }
        }
 
-       private final StatelessChecker checker = new StatelessChecker();
+       /**
+        * StatelessCheckerQuietly
+        */
+       private static class StatelessCheckerQuietly extends StatelessChecker
+       {
+               private StatelessCheckFailureException ex;
 
-       private final StatelessChecker checkerQuietly = new StatelessChecker() {
                protected void fail(StatelessCheckFailureException e)
                {
-                       // Do Nothing...
+                       this.ex = e;
                }
-       };
+
+               public StatelessCheckFailureException getFailureException()
+               {
+                       return ex;
+               }
+       }
+
+       private StatelessChecker checker;
+
+       private StatelessCheckerQuietly checkerQuietly;
 
        private WicketTester tester;
 
@@ -105,6 +118,8 @@ public class StatelessCheckerTest extends Assert
        public void setUp()
        {
                tester = new WicketTester();
+               checker = new StatelessChecker();
+               checkerQuietly = new StatelessCheckerQuietly();
        }
 
        /**
@@ -119,95 +134,100 @@ public class StatelessCheckerTest extends Assert
        @Test
        public void testNonBookmarkablePage()
        {
-               boolean hit1 = false;
                try
                {
-                       
tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checker);
-                       tester.startPage(StatelessPage.class);
+                       startNonBookmarkablePage(checker);
+                       fail("Expected tester.startPage() to fail with 
StatelessCheckFailureException");
                }
                catch (StatelessCheckFailureException ex)
                {
-                       hit1 = true;
+                       assertNonBookmarkablePage(ex);
                }
-               boolean hit = hit1;
-               assertTrue("Expected exception", hit);
        }
 
        @Test
        public void testNonBookmarkablePageQuietly()
        {
-               boolean hit1 = false;
+               startNonBookmarkablePage(checkerQuietly);
+               StatelessCheckFailureException ex = 
checkerQuietly.getFailureException();
+               assertNonBookmarkablePage(ex);
+       }
+
+       private void startNonBookmarkablePage(StatelessChecker checker)
+       {
+               
tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checker);
+               tester.startPage(StatelessPage.class);
+       }
+
+       private void assertNonBookmarkablePage(StatelessCheckFailureException 
ex) {
+               assertEquals("'[Page class = 
org.apache.wicket.devutils.stateless.StatelessCheckerTest$StatelessPage, id = 
0, render count = 1]' claims to be stateless but isn't. Offending component: 
[TestLink [Component id = testPage]]", ex.getMessage());
+               assertEquals(StatelessPage.class, ex.getComponent().getClass());
+       }
+
+       @Test
+       public void testStatefulBehaviors()
+       {
                try
                {
-                       
tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checkerQuietly);
-                       tester.startPage(StatelessPage.class);
+                       startComponentInPage(checker, new 
StatelessLabel("foo").add(new StatefulBehavior()));
+                       fail("Expected tester.startComponentInPage() to fail 
with StatelessCheckFailureException");
                }
                catch (StatelessCheckFailureException ex)
                {
-                       hit1 = true;
+                       assertStatefulBehaviors(ex);
                }
-               boolean hit = hit1;
-               assertFalse("Expected exception", hit);
        }
 
        @Test
-       public void testStatefulBehaviors()
-       {
-               boolean hit = isHitBehaviors(checker);
-               assertTrue("Expected exception", hit);
-       }
-       @Test
        public void testStatefulBehaviorsQuietly()
        {
-               boolean hit = isHitBehaviors(checkerQuietly);
-               assertFalse("Expected exception", hit);
+               startComponentInPage(checkerQuietly, new 
StatelessLabel("foo").add(new StatefulBehavior()));
+               StatelessCheckFailureException ex = 
checkerQuietly.getFailureException();
+               assertStatefulBehaviors(ex);
        }
 
-       @Test
-       public void testPositive()
-       {
+       private void startComponentInPage(StatelessChecker checker, Component 
foo) {
                
tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checker);
-               tester.startComponentInPage(new StatelessLabel("foo"));
+               tester.startComponentInPage(foo);
        }
 
-       @Test
-       public void testStatefulMarkupContainer() {
-               boolean hit = isHitMarkupContainer(checker);
-               assertTrue("Expected exception", hit);
+       private void assertStatefulBehaviors(StatelessCheckFailureException ex) 
{
+               assertEquals("'[Component id = foo]' claims to be stateless but 
isn't. Stateful behaviors: 
org.apache.wicket.devutils.stateless.StatelessCheckerTest$StatefulBehavior", 
ex.getMessage());
+               assertEquals(StatelessLabel.class, 
ex.getComponent().getClass());
        }
 
        @Test
-       public void testStatefulMarkupContainerQuietly() {
-               boolean hit = isHitMarkupContainer(checkerQuietly);
-               assertFalse("Expected exception", hit);
+       public void testPositive()
+       {
+               startComponentInPage(checker, new StatelessLabel("foo"));
        }
 
-       private boolean isHitMarkupContainer(StatelessChecker checker) {
-               boolean hit = false;
+       @Test
+       public void testStatefulMarkupContainer()
+       {
                try
                {
-                       
tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checker);
-                       tester.startComponentInPage(new 
StatefulMarkupContainer("foo"));
+                       startComponentInPage(checker, new 
StatefulMarkupContainer("foo"));
+                       fail("Expected tester.startComponentInPage() to fail 
with StatelessCheckFailureException");
                }
                catch (StatelessCheckFailureException ex)
                {
-                       hit = true;
+                       assertStatefulMarkupContainer(ex);
                }
-               return hit;
        }
 
-       private boolean isHitBehaviors(StatelessChecker checker) {
-               boolean hit = false;
-               try
-               {
-                       
tester.getApplication().getComponentPostOnBeforeRenderListeners().add(checker);
-                       tester.startComponentInPage(new 
StatelessLabel("foo").add(new StatefulBehavior()));
-               }
-               catch (StatelessCheckFailureException ex)
-               {
-                       hit = true;
-               }
-               return hit;
+       @Test
+       public void testStatefulMarkupContainerQuietly()
+       {
+               startComponentInPage(checkerQuietly, new 
StatefulMarkupContainer("foo"));
+               StatelessCheckFailureException ex = 
checkerQuietly.getFailureException();
+               assertStatefulMarkupContainer(ex);
+
        }
 
+       private void 
assertStatefulMarkupContainer(StatelessCheckFailureException ex)
+       {
+               assertEquals("'[StatefulMarkupContainer [Component id = foo]]' 
claims to be stateless but isn't. Possible reason: no stateless hint", 
ex.getMessage());
+               assertEquals(StatefulMarkupContainer.class, 
ex.getComponent().getClass());
+       }
 }

Reply via email to