Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

First commit

  • Loading branch information...
commit 7882d5c848c058b65bd6d2901c97143550844a10 0 parents
@wakaleo authored
Showing with 17,631 additions and 0 deletions.
  1. +12 −0 .gitignore
  2. +14 −0 gameoflife-build/pom.xml
  3. +136 −0 gameoflife-build/src/main/resources/checkstyle.xml
  4. +245 −0 gameoflife-build/src/main/resources/pmd-rules.xml
  5. +26 −0 gameoflife-cli/pom.xml
  6. BIN  gameoflife-core/.gradle/0.9-rc-1/taskArtifacts/cache.bin
  7. +1 −0  gameoflife-core/.gradle/0.9-rc-1/taskArtifacts/cache.properties
  8. +56 −0 gameoflife-core/build.gradle
  9. +77 −0 gameoflife-core/build/checkstyle/main.xml
  10. +150 −0 gameoflife-core/build/checkstyle/test.xml
  11. BIN  gameoflife-core/build/classes/main/com/wakaleo/gameoflife/domain/Cell.class
  12. BIN  gameoflife-core/build/classes/main/com/wakaleo/gameoflife/domain/Grid.class
  13. BIN  gameoflife-core/build/classes/main/com/wakaleo/gameoflife/domain/GridReader.class
  14. BIN  gameoflife-core/build/classes/main/com/wakaleo/gameoflife/domain/GridWriter.class
  15. BIN  gameoflife-core/build/classes/main/com/wakaleo/gameoflife/domain/Universe.class
  16. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouCreateACell.class
  17. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouCreateAGrid.class
  18. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouCreateANewUniverse.class
  19. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouPlayTheGameOfLife.class
  20. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouPrintAGrid.class
  21. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouReadAGridFromAString.class
  22. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/hamcrest/HasSizeMatcher.class
  23. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/hamcrest/MyMatchers.class
  24. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/hamcrest/WhenIUseMyCustomHamcrestMatchers.class
  25. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/test/categories/IntegrationTests.class
  26. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/test/categories/RegressionTests.class
  27. BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/test/categories/SlowTests.class
  28. +58 −0 gameoflife-core/build/cpd.xml
  29. BIN  gameoflife-core/build/libs/gameoflife-core.jar
  30. +290 −0 gameoflife-core/build/pmd.xml
  31. +169 −0 gameoflife-core/build/reports/tests/all-tests.html
  32. +33 −0 gameoflife-core/build/reports/tests/allclasses-frame.html
  33. +22 −0 gameoflife-core/build/reports/tests/alltests-errors.html
  34. +22 −0 gameoflife-core/build/reports/tests/alltests-fails.html
  35. +88 −0 gameoflife-core/build/reports/tests/com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html
  36. +118 −0 gameoflife-core/build/reports/tests/com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html
  37. +103 −0 gameoflife-core/build/reports/tests/com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html
  38. +82 −0 gameoflife-core/build/reports/tests/com/wakaleo/gameoflife/domain/3_WhenYouPlayTheGameOfLife.html
  39. +79 −0 gameoflife-core/build/reports/tests/com/wakaleo/gameoflife/domain/4_WhenYouPrintAGrid.html
  40. +91 −0 gameoflife-core/build/reports/tests/com/wakaleo/gameoflife/domain/5_WhenYouReadAGridFromAString.html
  41. +39 −0 gameoflife-core/build/reports/tests/com/wakaleo/gameoflife/domain/package-frame.html
  42. +42 −0 gameoflife-core/build/reports/tests/com/wakaleo/gameoflife/domain/package-summary.html
  43. +76 −0 gameoflife-core/build/reports/tests/com/wakaleo/gameoflife/hamcrest/6_WhenIUseMyCustomHamcrestMatchers.html
  44. +24 −0 gameoflife-core/build/reports/tests/com/wakaleo/gameoflife/hamcrest/package-frame.html
  45. +27 −0 gameoflife-core/build/reports/tests/com/wakaleo/gameoflife/hamcrest/package-summary.html
  46. +19 −0 gameoflife-core/build/reports/tests/index.html
  47. +21 −0 gameoflife-core/build/reports/tests/overview-frame.html
  48. +44 −0 gameoflife-core/build/reports/tests/overview-summary.html
  49. +48 −0 gameoflife-core/build/reports/tests/stylesheet.css
  50. +12 −0 gameoflife-core/build/test-results/TEST-com.wakaleo.gameoflife.domain.WhenYouCreateACell.xml
  51. +22 −0 gameoflife-core/build/test-results/TEST-com.wakaleo.gameoflife.domain.WhenYouCreateAGrid.xml
  52. +17 −0 gameoflife-core/build/test-results/TEST-com.wakaleo.gameoflife.domain.WhenYouCreateANewUniverse.xml
  53. +10 −0 gameoflife-core/build/test-results/TEST-com.wakaleo.gameoflife.domain.WhenYouPlayTheGameOfLife.xml
  54. +9 −0 gameoflife-core/build/test-results/TEST-com.wakaleo.gameoflife.domain.WhenYouPrintAGrid.xml
  55. +13 −0 gameoflife-core/build/test-results/TEST-com.wakaleo.gameoflife.domain.WhenYouReadAGridFromAString.xml
  56. +8 −0 gameoflife-core/build/test-results/TEST-com.wakaleo.gameoflife.hamcrest.WhenIUseMyCustomHamcrestMatchers.xml
  57. +157 −0 gameoflife-core/build/test-results/TESTS-TestSuites.xml
  58. +2 −0  gameoflife-core/build/tmp/jar/MANIFEST.MF
  59. +245 −0 gameoflife-core/conf/pmd-rules.xml
  60. +136 −0 gameoflife-core/config/checkstyle/checkstyle.xml
  61. +79 −0 gameoflife-core/pom.xml
  62. +3 −0  gameoflife-core/src/main/java/META-INF/MANIFEST.MF
  63. +31 −0 gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/Cell.java
  64. +152 −0 gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/Grid.java
  65. +36 −0 gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/GridReader.java
  66. +15 −0 gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/GridWriter.java
  67. +88 −0 gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/Universe.java
  68. +28 −0 gameoflife-core/src/test/easyb/com/wakaleo/gameoflife/domain/AdditionByExample.story
  69. +44 −0 gameoflife-core/src/test/easyb/com/wakaleo/gameoflife/domain/UniverseSpawnsNextGeneration.story
  70. +30 −0 gameoflife-core/src/test/easyb/com/wakaleo/gameoflife/domain/UniverseSpawnsNextGenerationByExample.story
  71. +25 −0 gameoflife-core/src/test/easyb/com/wakaleo/gameoflife/domain/UniverseSpawnsNextGenerationRepeatedly.story
  72. +44 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouCreateACell.java
  73. +166 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouCreateAGrid.java
  74. +143 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouCreateANewUniverse.java
  75. +101 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouPlayTheGameOfLife.java
  76. +84 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouPrintAGrid.java
  77. +133 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouReadAGridFromAString.java
  78. +21 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/hamcrest/HasSizeMatcher.java
  79. +13 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/hamcrest/MyMatchers.java
  80. +27 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/hamcrest/WhenIUseMyCustomHamcrestMatchers.java
  81. +5 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/test/categories/IntegrationTests.java
  82. +5 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/test/categories/RegressionTests.java
  83. +5 −0 gameoflife-core/src/test/java/com/wakaleo/gameoflife/test/categories/SlowTests.java
  84. +69 −0 gameoflife-deploy/pom.xml
  85. +14 −0 gameoflife-web/.springBeans
  86. +23 −0 gameoflife-web/build.xml
  87. +4 −0 gameoflife-web/dostuff.groovy
  88. +2 −0  gameoflife-web/infinitest.filters
  89. +260 −0 gameoflife-web/pom.xml
  90. +105 −0 gameoflife-web/src/main/java/com/wakaleo/gameoflife/web/controllers/GameController.java
  91. +24 −0 gameoflife-web/src/main/java/com/wakaleo/gameoflife/web/controllers/HomePageController.java
  92. +1 −0  gameoflife-web/src/main/resources/system.properties
  93. +3 −0  gameoflife-web/src/main/webapp/META-INF/MANIFEST.MF
  94. +23 −0 gameoflife-web/src/main/webapp/WEB-INF/gameoflife-servlet.xml
  95. +123 −0 gameoflife-web/src/main/webapp/WEB-INF/jsp/game/edit.jsp
  96. +129 −0 gameoflife-web/src/main/webapp/WEB-INF/jsp/game/show.jsp
  97. +109 −0 gameoflife-web/src/main/webapp/WEB-INF/jsp/home.jsp
  98. +23 −0 gameoflife-web/src/main/webapp/WEB-INF/web.xml
  99. +1 −0  gameoflife-web/src/main/webapp/index.jsp
  100. +26 −0 gameoflife-web/src/test/easyb/DisplayingTheApplicationVersion.story
  101. +66 −0 gameoflife-web/src/test/easyb/InitializeNewUniverse.story
  102. +65 −0 gameoflife-web/src/test/easyb/NewGeneration.story
  103. +150 −0 gameoflife-web/src/test/easyb/PlayingTheGameOfLife.story
  104. +23 −0 gameoflife-web/src/test/easyb/SmokeTests.story
  105. +49 −0 gameoflife-web/src/test/java/com/wakaleo/gameoflife/web/controllers/WhenCreatingANewGame.java
  106. +26 −0 gameoflife-web/src/test/java/com/wakaleo/gameoflife/web/controllers/WhenDisplayingTheHomePage.java
  107. +89 −0 gameoflife-web/src/test/java/com/wakaleo/gameoflife/web/webtests/WhenTheUserEntersAnInitialGrid.java
  108. +22 −0 gameoflife-web/src/test/java/com/wakaleo/gameoflife/web/webtests/WhenTheUserGoesToTheHomePage.java
  109. +144 −0 ...oflife-web/src/test/java/com/wakaleo/gameoflife/web/webtests/WhenTheUserSpawnsTheNextGenerationOfCells.java
  110. +24 −0 gameoflife-web/src/test/java/com/wakaleo/gameoflife/web/webtests/pages/EnterGridPage.java
  111. +21 −0 gameoflife-web/src/test/java/com/wakaleo/gameoflife/web/webtests/pages/HomePage.java
  112. +22 −0 gameoflife-web/src/test/java/com/wakaleo/gameoflife/web/webtests/pages/ShowGridPage.java
  113. +70 −0 gameoflife-web/src/test/java/com/wakaleo/gameoflife/web/webtests/pages/WebPage.java
  114. +37 −0 gameoflife-web/src/test/java/org/wakaleo/web/webtests/pages/BasePage.java
  115. +18 −0 gameoflife-web/src/test/java/org/wakaleo/web/webtests/pages/EnterGridPage.java
  116. +23 −0 gameoflife-web/src/test/java/org/wakaleo/web/webtests/pages/HomePage.java
  117. +12 −0 gameoflife-web/src/test/java/org/wakaleo/web/webtests/pages/ShowGridPage.java
  118. +1,379 −0 gameoflife-web/src/test/jmeter/gameoflife-100-users.jmx
  119. +1,379 −0 gameoflife-web/src/test/jmeter/gameoflife-1000-users.jmx
  120. +1,379 −0 gameoflife-web/src/test/jmeter/gameoflife-200-users.jmx
  121. +1,379 −0 gameoflife-web/src/test/jmeter/gameoflife-500-users.jmx
  122. +1,384 −0 gameoflife-web/src/test/jmeter/gameoflife.jmx
  123. +1,646 −0 gameoflife-web/tools/jmeter/LICENSE
  124. +43 −0 gameoflife-web/tools/jmeter/NOTICE
  125. +149 −0 gameoflife-web/tools/jmeter/README
  126. BIN  gameoflife-web/tools/jmeter/bin/ApacheJMeter.jar
  127. +43 −0 gameoflife-web/tools/jmeter/bin/BeanShellAssertion.bshrc
  128. +64 −0 gameoflife-web/tools/jmeter/bin/BeanShellFunction.bshrc
  129. +47 −0 gameoflife-web/tools/jmeter/bin/BeanShellListeners.bshrc
  130. +61 −0 gameoflife-web/tools/jmeter/bin/BeanShellSampler.bshrc
  131. +383 −0 gameoflife-web/tools/jmeter/bin/examples/CSVSample.jmx
  132. +4 −0 gameoflife-web/tools/jmeter/bin/examples/CSVSample_actions.csv
  133. +2 −0  gameoflife-web/tools/jmeter/bin/examples/CSVSample_user.csv
  134. +45 −0 gameoflife-web/tools/jmeter/bin/httpclient.parameters
  135. +90 −0 gameoflife-web/tools/jmeter/bin/jmeter
  136. +59 −0 gameoflife-web/tools/jmeter/bin/jmeter-n-r.cmd
  137. +59 −0 gameoflife-web/tools/jmeter/bin/jmeter-n.cmd
  138. +80 −0 gameoflife-web/tools/jmeter/bin/jmeter-report
  139. +64 −0 gameoflife-web/tools/jmeter/bin/jmeter-report.bat
  140. +32 −0 gameoflife-web/tools/jmeter/bin/jmeter-server
  141. +103 −0 gameoflife-web/tools/jmeter/bin/jmeter-server.bat
  142. +58 −0 gameoflife-web/tools/jmeter/bin/jmeter-t.cmd
  143. +112 −0 gameoflife-web/tools/jmeter/bin/jmeter.bat
  144. +728 −0 gameoflife-web/tools/jmeter/bin/jmeter.properties
  145. +31 −0 gameoflife-web/tools/jmeter/bin/jmeter.sh
  146. +26 −0 gameoflife-web/tools/jmeter/bin/jmeterw.cmd
  147. +38 −0 gameoflife-web/tools/jmeter/bin/log4j.conf
  148. +142 −0 gameoflife-web/tools/jmeter/bin/logkit.xml
  149. +26 −0 gameoflife-web/tools/jmeter/bin/mirror-server.cmd
  150. +22 −0 gameoflife-web/tools/jmeter/bin/mirror-server.sh
  151. +317 −0 gameoflife-web/tools/jmeter/bin/saveservice.properties
  152. +21 −0 gameoflife-web/tools/jmeter/bin/shutdown.cmd
  153. +22 −0 gameoflife-web/tools/jmeter/bin/shutdown.sh
  154. +21 −0 gameoflife-web/tools/jmeter/bin/stoptest.cmd
  155. +22 −0 gameoflife-web/tools/jmeter/bin/stoptest.sh
  156. +64 −0 gameoflife-web/tools/jmeter/bin/system.properties
  157. +78 −0 gameoflife-web/tools/jmeter/bin/upgrade.properties
  158. +23 −0 gameoflife-web/tools/jmeter/bin/user.properties
  159. +23 −0 gameoflife-web/tools/jmeter/bin/users.dtd
  160. +62 −0 gameoflife-web/tools/jmeter/bin/users.xml
Sorry, we could not display the entire diff because too many files (1,528) changed.
12 .gitignore
@@ -0,0 +1,12 @@
+.DS_Store
+.project
+.settings
+target
+.idea
+.classpath
+.checkstyle
+.pmd
+*.log
+*.log.*
+*.iml
+*.versionsBackup
14 gameoflife-build/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>gameoflife</artifactId>
+ <groupId>com.wakaleo.gameoflife</groupId>
+ <version>0.0.66-SNAPSHOT</version>
+ </parent>
+ <groupId>com.wakaleo.gameoflife</groupId>
+ <artifactId>gameoflife-build</artifactId>
+ <packaging>jar</packaging>
+ <version>0.0.66-SNAPSHOT</version>
+ <name>gameoflife-build</name>
+</project>
136 gameoflife-build/src/main/resources/checkstyle.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+
+<!--
+ This configuration file was written by the eclipse-cs plugin configuration editor
+-->
+<!--
+ Checkstyle-Configuration: Game Of Life Checkst
+ Description:
+Slightly modified version of Sun Checks that better matches the default code formatter setting of Eclipse.
+-->
+<module name="Checker">
+ <property name="severity" value="warning"/>
+ <module name="TreeWalker">
+ <property name="tabWidth" value="4"/>
+ <module name="JavadocMethod">
+ <property name="scope" value="public"/>
+ <property name="allowUndeclaredRTE" value="true"/>
+ <property name="allowThrowsTagsForSubclasses" value="true"/>
+ <property name="allowMissingParamTags" value="true"/>
+ <property name="allowMissingThrowsTags" value="true"/>
+ <property name="allowMissingReturnTag" value="true"/>
+ <property name="allowMissingJavadoc" value="true"/>
+ <property name="allowMissingPropertyJavadoc" value="true"/>
+ <property name="logLoadErrors" value="true"/>
+ <property name="suppressLoadErrors" value="true"/>
+ </module>
+ <module name="JavadocType"/>
+ <module name="JavadocVariable"/>
+ <module name="JavadocStyle">
+ <property name="scope" value="public"/>
+ </module>
+ <module name="ConstantName"/>
+ <module name="LocalFinalVariableName"/>
+ <module name="LocalVariableName"/>
+ <module name="MemberName"/>
+ <module name="MethodName"/>
+ <module name="PackageName"/>
+ <module name="ParameterName"/>
+ <module name="StaticVariableName"/>
+ <module name="TypeName"/>
+ <module name="AvoidStarImport"/>
+ <module name="IllegalImport"/>
+ <module name="RedundantImport"/>
+ <module name="UnusedImports"/>
+ <module name="LineLength"/>
+ <module name="MethodLength">
+ <property name="max" value="25"/>
+ </module>
+ <module name="ParameterNumber"/>
+ <module name="EmptyForIteratorPad"/>
+ <module name="MethodParamPad"/>
+ <module name="NoWhitespaceAfter">
+ <property name="severity" value="ignore"/>
+ <property name="tokens" value="BNOT,DEC,DOT,INC,LNOT,UNARY_MINUS,UNARY_PLUS"/>
+ <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+ </module>
+ <module name="NoWhitespaceBefore">
+ <property name="severity" value="ignore"/>
+ <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+ </module>
+ <module name="OperatorWrap"/>
+ <module name="ParenPad"/>
+ <module name="TypecastParenPad">
+ <property name="severity" value="ignore"/>
+ <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+ </module>
+ <module name="WhitespaceAfter">
+ <property name="severity" value="ignore"/>
+ <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+ </module>
+ <module name="WhitespaceAround">
+ <property name="severity" value="ignore"/>
+ <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+ </module>
+ <module name="ModifierOrder"/>
+ <module name="RedundantModifier"/>
+ <module name="AvoidNestedBlocks"/>
+ <module name="EmptyBlock"/>
+ <module name="LeftCurly"/>
+ <module name="NeedBraces"/>
+ <module name="RightCurly"/>
+ <module name="AvoidInlineConditionals"/>
+ <module name="DoubleCheckedLocking"/>
+ <module name="EmptyStatement"/>
+ <module name="EqualsHashCode"/>
+ <module name="HiddenField"/>
+ <module name="IllegalInstantiation"/>
+ <module name="InnerAssignment"/>
+ <module name="MagicNumber"/>
+ <module name="MissingSwitchDefault"/>
+ <module name="RedundantThrows">
+ <property name="logLoadErrors" value="true"/>
+ <property name="suppressLoadErrors" value="true"/>
+ </module>
+ <module name="SimplifyBooleanExpression"/>
+ <module name="SimplifyBooleanReturn"/>
+ <module name="DesignForExtension">
+ <property name="severity" value="ignore"/>
+ <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+ </module>
+ <module name="FinalClass"/>
+ <module name="HideUtilityClassConstructor"/>
+ <module name="InterfaceIsType"/>
+ <module name="VisibilityModifier"/>
+ <module name="ArrayTypeStyle"/>
+ <module name="FinalParameters"/>
+ <module name="TodoComment"/>
+ <module name="UpperEll"/>
+ <module name="MissingDeprecated"/>
+ <module name="MissingOverride"/>
+ <module name="SuppressWarnings"/>
+ <module name="CyclomaticComplexity">
+ <property name="max" value="7"/>
+ </module>
+ <module name="ClassFanOutComplexity">
+ <property name="max" value="10"/>
+ </module>
+ </module>
+ <module name="JavadocPackage"/>
+ <module name="NewlineAtEndOfFile">
+ <property name="severity" value="ignore"/>
+ <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+ </module>
+ <module name="Translation"/>
+ <module name="FileLength">
+ <property name="max" value="500"/>
+ </module>
+ <module name="FileTabCharacter"/>
+ <module name="RegexpSingleline">
+ <property name="severity" value="ignore"/>
+ <property name="format" value="\s+$"/>
+ <property name="message" value="Line has trailing spaces."/>
+ <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+ </module>
+</module>
245 gameoflife-build/src/main/resources/pmd-rules.xml
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<ruleset xmlns="http://pmd.sf.net/ruleset/1.0.0" name="pmd-rules" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
+ <description>Game Of Life PMD rule set</description>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling"/>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable"/>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports"/>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException"/>
+ <rule ref="rulesets/braces.xml/IfStmtsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/WhileLoopsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/IfElseStmtsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/ForLoopsMustUseBraces"/>
+ <rule ref="rulesets/design.xml/UseSingleton"/>
+ <rule ref="rulesets/design.xml/SimplifyBooleanReturns"/>
+ <rule ref="rulesets/design.xml/SimplifyBooleanExpressions"/>
+ <rule ref="rulesets/design.xml/SwitchStmtsShouldHaveDefault"/>
+ <rule ref="rulesets/design.xml/AvoidDeeplyNestedIfStmts"/>
+ <rule ref="rulesets/design.xml/AvoidReassigningParameters"/>
+ <rule ref="rulesets/design.xml/SwitchDensity"/>
+ <rule ref="rulesets/design.xml/ConstructorCallsOverridableMethod"/>
+ <rule ref="rulesets/design.xml/AccessorClassGeneration"/>
+ <rule ref="rulesets/design.xml/FinalFieldCouldBeStatic"/>
+ <rule ref="rulesets/design.xml/CloseResource"/>
+ <rule ref="rulesets/design.xml/NonStaticInitializer"/>
+ <rule ref="rulesets/design.xml/DefaultLabelNotLastInSwitchStmt"/>
+ <rule ref="rulesets/design.xml/NonCaseLabelInSwitchStatement"/>
+ <rule ref="rulesets/design.xml/OptimizableToArrayCall"/>
+ <rule ref="rulesets/design.xml/BadComparison"/>
+ <rule ref="rulesets/design.xml/EqualsNull"/>
+ <rule ref="rulesets/design.xml/ConfusingTernary"/>
+ <rule ref="rulesets/design.xml/InstantiationToGetClass"/>
+ <rule ref="rulesets/design.xml/IdempotentOperations"/>
+ <rule ref="rulesets/design.xml/SimpleDateFormatNeedsLocale"/>
+ <rule ref="rulesets/design.xml/ImmutableField"/>
+ <rule ref="rulesets/design.xml/UseLocaleWithCaseConversions"/>
+ <rule ref="rulesets/design.xml/AvoidProtectedFieldInFinalClass"/>
+ <rule ref="rulesets/design.xml/AssignmentToNonFinalStatic"/>
+ <rule ref="rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass"/>
+ <rule ref="rulesets/design.xml/AvoidSynchronizedAtMethodLevel"/>
+ <rule ref="rulesets/design.xml/MissingBreakInSwitch"/>
+ <rule ref="rulesets/design.xml/UseNotifyAllInsteadOfNotify"/>
+ <rule ref="rulesets/design.xml/AvoidInstanceofChecksInCatchClause"/>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAbstractMethod"/>
+ <rule ref="rulesets/design.xml/SimplifyConditional"/>
+ <rule ref="rulesets/design.xml/CompareObjectsWithEquals"/>
+ <rule ref="rulesets/design.xml/PositionLiteralsFirstInComparisons"/>
+ <rule ref="rulesets/design.xml/UnnecessaryLocalBeforeReturn"/>
+ <rule ref="rulesets/design.xml/NonThreadSafeSingleton"/>
+ <rule ref="rulesets/design.xml/UncommentedEmptyMethod"/>
+ <rule ref="rulesets/design.xml/UncommentedEmptyConstructor"/>
+ <rule ref="rulesets/design.xml/AvoidConstantsInterface"/>
+ <rule ref="rulesets/design.xml/UnsynchronizedStaticDateFormatter"/>
+ <rule ref="rulesets/design.xml/PreserveStackTrace"/>
+ <rule ref="rulesets/design.xml/UseCollectionIsEmpty"/>
+ <rule ref="rulesets/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal"/>
+ <rule ref="rulesets/design.xml/EmptyMethodInAbstractClassShouldBeAbstract"/>
+ <rule ref="rulesets/design.xml/SingularField"/>
+ <rule ref="rulesets/design.xml/ReturnEmptyArrayRatherThanNull"/>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAnyMethod"/>
+ <rule ref="rulesets/design.xml/TooFewBranchesForASwitchStatement"/>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingThrowable"/>
+ <rule ref="rulesets/strictexception.xml/SignatureDeclareThrowsException"/>
+ <rule ref="rulesets/strictexception.xml/ExceptionAsFlowControl"/>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingNPE"/>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes"/>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingNullPointerException"/>
+ <rule ref="rulesets/strictexception.xml/AvoidRethrowingException"/>
+ <rule ref="rulesets/strictexception.xml/DoNotExtendJavaLangError"/>
+ <rule ref="rulesets/strictexception.xml/DoNotThrowExceptionInFinally"/>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingNewInstanceOfSameException"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateField"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedFormalParameter"/>
+ <rule ref="rulesets/logging-java.xml/MoreThanOneLogger"/>
+ <rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal"/>
+ <rule ref="rulesets/logging-java.xml/SystemPrintln"/>
+ <rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace"/>
+ <rule ref="rulesets/strings.xml/AvoidDuplicateLiterals"/>
+ <rule ref="rulesets/strings.xml/StringInstantiation"/>
+ <rule ref="rulesets/strings.xml/StringToString"/>
+ <rule ref="rulesets/strings.xml/InefficientStringBuffering"/>
+ <rule ref="rulesets/strings.xml/UnnecessaryCaseChange"/>
+ <rule ref="rulesets/strings.xml/UseStringBufferLength"/>
+ <rule ref="rulesets/strings.xml/AppendCharacterWithChar"/>
+ <rule ref="rulesets/strings.xml/ConsecutiveLiteralAppends"/>
+ <rule ref="rulesets/strings.xml/UseIndexOfChar"/>
+ <rule ref="rulesets/strings.xml/InefficientEmptyStringCheck"/>
+ <rule ref="rulesets/strings.xml/InsufficientStringBufferDeclaration"/>
+ <rule ref="rulesets/strings.xml/UselessStringValueOf"/>
+ <rule ref="rulesets/strings.xml/StringBufferInstantiationWithChar"/>
+ <rule ref="rulesets/strings.xml/UseEqualsToCompareStrings"/>
+ <rule ref="rulesets/strings.xml/AvoidStringBufferField"/>
+ <rule ref="rulesets/migrating.xml/ReplaceVectorWithList"/>
+ <rule ref="rulesets/migrating.xml/ReplaceHashtableWithMap"/>
+ <rule ref="rulesets/migrating.xml/ReplaceEnumerationWithIterator"/>
+ <rule ref="rulesets/migrating.xml/AvoidEnumAsIdentifier"/>
+ <rule ref="rulesets/migrating.xml/AvoidAssertAsIdentifier"/>
+ <rule ref="rulesets/migrating.xml/IntegerInstantiation"/>
+ <rule ref="rulesets/migrating.xml/ByteInstantiation"/>
+ <rule ref="rulesets/migrating.xml/ShortInstantiation"/>
+ <rule ref="rulesets/migrating.xml/LongInstantiation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseBeforeAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseAfterAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseTestAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4SuitesShouldUseSuiteAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnitUseExpected"/>
+ <rule ref="rulesets/j2ee.xml/UseProperClassLoader"/>
+ <rule ref="rulesets/j2ee.xml/MDBAndSessionBeanNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/RemoteSessionInterfaceNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/LocalInterfaceSessionNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/LocalHomeNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/RemoteInterfaceNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/DoNotCallSystemExit"/>
+ <rule ref="rulesets/j2ee.xml/StaticEJBFieldShouldBeFinal"/>
+ <rule ref="rulesets/j2ee.xml/DoNotUseThreads"/>
+ <rule ref="rulesets/optimizations.xml/LocalVariableCouldBeFinal"/>
+ <rule ref="rulesets/optimizations.xml/MethodArgumentCouldBeFinal"/>
+ <rule ref="rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops"/>
+ <rule ref="rulesets/optimizations.xml/UseArrayListInsteadOfVector"/>
+ <rule ref="rulesets/optimizations.xml/SimplifyStartsWith"/>
+ <rule ref="rulesets/optimizations.xml/UseStringBufferForStringAppends"/>
+ <rule ref="rulesets/optimizations.xml/UseArraysAsList"/>
+ <rule ref="rulesets/optimizations.xml/AvoidArrayLoops"/>
+ <rule ref="rulesets/optimizations.xml/UnnecessaryWrapperObjectCreation"/>
+ <rule ref="rulesets/optimizations.xml/AddEmptyString"/>
+ <rule ref="rulesets/basic.xml/EmptyCatchBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyIfStmt"/>
+ <rule ref="rulesets/basic.xml/EmptyWhileStmt"/>
+ <rule ref="rulesets/basic.xml/EmptyTryBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyFinallyBlock"/>
+ <rule ref="rulesets/basic.xml/EmptySwitchStatements"/>
+ <rule ref="rulesets/basic.xml/JumbledIncrementer"/>
+ <rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary"/>
+ <rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode"/>
+ <rule ref="rulesets/basic.xml/DoubleCheckedLocking"/>
+ <rule ref="rulesets/basic.xml/ReturnFromFinallyBlock"/>
+ <rule ref="rulesets/basic.xml/EmptySynchronizedBlock"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryReturn"/>
+ <rule ref="rulesets/basic.xml/EmptyStaticInitializer"/>
+ <rule ref="rulesets/basic.xml/UnconditionalIfStatement"/>
+ <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop"/>
+ <rule ref="rulesets/basic.xml/BooleanInstantiation"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryFinalModifier"/>
+ <rule ref="rulesets/basic.xml/CollapsibleIfStatements"/>
+ <rule ref="rulesets/basic.xml/UselessOverridingMethod"/>
+ <rule ref="rulesets/basic.xml/ClassCastExceptionWithToArray"/>
+ <rule ref="rulesets/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor"/>
+ <rule ref="rulesets/basic.xml/UselessOperationOnImmutable"/>
+ <rule ref="rulesets/basic.xml/MisplacedNullCheck"/>
+ <rule ref="rulesets/basic.xml/UnusedNullCheckInEquals"/>
+ <rule ref="rulesets/basic.xml/AvoidThreadGroup"/>
+ <rule ref="rulesets/basic.xml/BrokenNullCheck"/>
+ <rule ref="rulesets/basic.xml/BigIntegerInstantiation"/>
+ <rule ref="rulesets/basic.xml/AvoidUsingOctalValues"/>
+ <rule ref="rulesets/basic.xml/AvoidUsingHardCodedIP"/>
+ <rule ref="rulesets/basic.xml/CheckResultSet"/>
+ <rule ref="rulesets/basic.xml/AvoidMultipleUnaryOperators"/>
+ <rule ref="rulesets/basic.xml/EmptyInitializer"/>
+ <rule ref="rulesets/sunsecure.xml/MethodReturnsInternalArray"/>
+ <rule ref="rulesets/sunsecure.xml/ArrayIsStoredDirectly"/>
+ <rule ref="rulesets/coupling.xml/CouplingBetweenObjects"/>
+ <rule ref="rulesets/coupling.xml/ExcessiveImports"/>
+ <rule ref="rulesets/coupling.xml/LooseCoupling"/>
+ <rule ref="rulesets/imports.xml/DuplicateImports"/>
+ <rule ref="rulesets/imports.xml/DontImportJavaLang"/>
+ <rule ref="rulesets/imports.xml/UnusedImports"/>
+ <rule ref="rulesets/imports.xml/ImportFromSamePackage"/>
+ <rule ref="rulesets/imports.xml/TooManyStaticImports"/>
+ <rule ref="rulesets/junit.xml/JUnitStaticSuite"/>
+ <rule ref="rulesets/junit.xml/JUnitSpelling"/>
+ <rule ref="rulesets/junit.xml/JUnitAssertionsShouldIncludeMessage"/>
+ <rule ref="rulesets/junit.xml/JUnitTestsShouldIncludeAssert"/>
+ <rule ref="rulesets/junit.xml/TestClassWithoutTestCases"/>
+ <rule ref="rulesets/junit.xml/UnnecessaryBooleanAssertion"/>
+ <rule ref="rulesets/junit.xml/UseAssertEqualsInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/UseAssertSameInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/UseAssertNullInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/SimplifyBooleanAssertion"/>
+ <rule ref="rulesets/controversial.xml/UnnecessaryConstructor"/>
+ <rule ref="rulesets/controversial.xml/NullAssignment"/>
+ <rule ref="rulesets/controversial.xml/OnlyOneReturn"/>
+ <rule ref="rulesets/controversial.xml/UnusedModifier"/>
+ <rule ref="rulesets/controversial.xml/AssignmentInOperand"/>
+ <rule ref="rulesets/controversial.xml/AtLeastOneConstructor"/>
+ <rule ref="rulesets/controversial.xml/DontImportSun"/>
+ <rule ref="rulesets/controversial.xml/SuspiciousOctalEscape"/>
+ <rule ref="rulesets/controversial.xml/CallSuperInConstructor"/>
+ <rule ref="rulesets/controversial.xml/UnnecessaryParentheses"/>
+ <rule ref="rulesets/controversial.xml/DefaultPackage"/>
+ <rule ref="rulesets/controversial.xml/BooleanInversion"/>
+ <rule ref="rulesets/controversial.xml/DataflowAnomalyAnalysis"/>
+ <rule ref="rulesets/controversial.xml/AvoidFinalLocalVariable"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingShortType"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingVolatile"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingNativeCode"/>
+ <rule ref="rulesets/controversial.xml/AvoidAccessibilityAlteration"/>
+ <rule ref="rulesets/controversial.xml/DoNotCallGarbageCollectionExplicitly"/>
+ <rule ref="rulesets/naming.xml/ShortVariable"/>
+ <rule ref="rulesets/naming.xml/LongVariable"/>
+ <rule ref="rulesets/naming.xml/ShortMethodName"/>
+ <rule ref="rulesets/naming.xml/VariableNamingConventions"/>
+ <rule ref="rulesets/naming.xml/MethodNamingConventions"/>
+ <rule ref="rulesets/naming.xml/ClassNamingConventions"/>
+ <rule ref="rulesets/naming.xml/AbstractNaming"/>
+ <rule ref="rulesets/naming.xml/AvoidDollarSigns"/>
+ <rule ref="rulesets/naming.xml/MethodWithSameNameAsEnclosingClass"/>
+ <rule ref="rulesets/naming.xml/SuspiciousHashcodeMethodName"/>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName"/>
+ <rule ref="rulesets/naming.xml/SuspiciousEqualsMethodName"/>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingTypeName"/>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingMethodName"/>
+ <rule ref="rulesets/naming.xml/NoPackage"/>
+ <rule ref="rulesets/naming.xml/PackageCase"/>
+ <rule ref="rulesets/naming.xml/MisleadingVariableName"/>
+ <rule ref="rulesets/naming.xml/BooleanGetMethodName"/>
+ <rule ref="rulesets/codesize.xml/NPathComplexity"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveMethodLength"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveClassLength"/>
+ <rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>
+ <rule ref="rulesets/codesize.xml/ExcessivePublicCount"/>
+ <rule ref="rulesets/codesize.xml/TooManyFields"/>
+ <rule ref="rulesets/codesize.xml/NcssMethodCount"/>
+ <rule ref="rulesets/codesize.xml/NcssTypeCount"/>
+ <rule ref="rulesets/codesize.xml/NcssConstructorCount"/>
+ <rule ref="rulesets/codesize.xml/TooManyMethods"/>
+ <rule ref="rulesets/finalizers.xml/EmptyFinalizer"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeOverloaded"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeShouldBeProtected"/>
+ <rule ref="rulesets/finalizers.xml/AvoidCallingFinalize"/>
+ <rule ref="rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging"/>
+ <rule ref="rulesets/logging-jakarta-commons.xml/ProperLogger"/>
+ <rule ref="rulesets/javabeans.xml/BeanMembersShouldSerialize"/>
+ <rule ref="rulesets/javabeans.xml/MissingSerialVersionUID"/>
+ <rule ref="rulesets/clone.xml/ProperCloneImplementation"/>
+ <rule ref="rulesets/clone.xml/CloneThrowsCloneNotSupportedException"/>
+ <rule ref="rulesets/clone.xml/CloneMethodMustImplementCloneable"/>
+ <rule ref="rulesets/logging-java.xml/MoreThanOneLogger"/>
+ <rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal"/>
+ <rule ref="rulesets/logging-java.xml/SystemPrintln"/>
+ <rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace"/>
+</ruleset>
26 gameoflife-cli/pom.xml
@@ -0,0 +1,26 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>gameoflife</artifactId>
+ <groupId>com.wakaleo.gameoflife</groupId>
+ <version>0.0.66-SNAPSHOT</version>
+ </parent>
+ <artifactId>gameoflife-cli</artifactId>
+ <packaging>jar</packaging>
+
+ <name>gameoflife-cli</name>
+ <url>http://maven.apache.org</url>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.wakaleo.gameoflife</groupId>
+ <artifactId>gameoflife-core</artifactId>
+ <version>0.0.66-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
BIN  gameoflife-core/.gradle/0.9-rc-1/taskArtifacts/cache.bin
Binary file not shown
1  gameoflife-core/.gradle/0.9-rc-1/taskArtifacts/cache.properties
@@ -0,0 +1 @@
+#Sat Dec 04 06:41:20 GMT 2010
56 gameoflife-core/build.gradle
@@ -0,0 +1,56 @@
+apply plugin: 'java'
+apply plugin: 'code-quality'
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ testCompile(
+ [group: 'junit', name: 'junit', version: '4.8.1'],
+ [group: 'org.hamcrest', name: 'hamcrest-all', version: '1.1']
+ )
+}
+
+configurations {
+ [pmd, findbugs]
+}
+
+dependencies {
+ pmd 'pmd:pmd:4.2.5'
+ findbugs 'com.google.code.findbugs:findbugs:1.3.9'
+}
+
+task pmd << {
+ println 'Running PMD static code analysis'
+ ant {
+ taskdef(name:'pmd', classname:'net.sourceforge.pmd.ant.PMDTask',
+ classpath: configurations.pmd.asPath)
+
+ taskdef(name:'cpd', classname:'net.sourceforge.pmd.cpd.CPDTask',
+ classpath: configurations.pmd.asPath)
+
+ pmd(shortFilenames:'true', failonruleviolation:'false',
+ rulesetfiles:'conf/pmd-rules.xml') {
+ formatter(type:'xml', toFile:'build/pmd.xml')
+ fileset(dir: "src/main/java") {
+ include(name: '**/*.java')
+ }
+ fileset(dir: "src/test/java") {
+ include(name: '**/*.java')
+ }
+ }
+
+ cpd(minimumTokenCount:'50', format: 'xml',
+ ignoreIdentifiers: 'true',
+ outputFile:'build/cpd.xml') {
+ fileset(dir: "src/main/java") {
+ include(name: '**/*.java')
+ }
+ fileset(dir: "src/test/java") {
+ include(name: '**/*.java')
+ }
+ }
+ }
+}
+
77 gameoflife-core/build/checkstyle/main.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<checkstyle version="5.1">
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/Cell.java">
+<error line="0" severity="warning" message="Missing package-info.java file." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocPackageCheck"/>
+<error line="3" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="4" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="4" column="21" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="6" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="8" column="18" severity="warning" message="Parameter symbol should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="8" column="25" severity="warning" message="&apos;symbol&apos; hides a field." source="com.puppycrawl.tools.checkstyle.checks.coding.HiddenFieldCheck"/>
+<error line="17" column="28" severity="warning" message="Parameter symbol should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/Grid.java">
+<error line="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="7" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="8" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="10" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="13" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="14" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="16" column="17" severity="warning" message="Parameter gridContents should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="21" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="24" column="17" severity="warning" message="Parameter rows should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="24" column="27" severity="warning" message="Parameter columns should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="28" column="41" severity="warning" message="Parameter rows should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="28" column="51" severity="warning" message="Parameter columns should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="38" column="40" severity="warning" message="Parameter gridContents should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="47" column="36" severity="warning" message="Parameter x should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="47" column="43" severity="warning" message="Parameter y should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="52" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="59" column="43" severity="warning" message="Parameter x should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="59" column="50" severity="warning" message="Parameter y should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="63" column="43" severity="warning" message="Avoid inline conditionals." source="com.puppycrawl.tools.checkstyle.checks.coding.AvoidInlineConditionalsCheck"/>
+<error line="66" column="42" severity="warning" message="Parameter x should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="66" column="49" severity="warning" message="Parameter y should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="81" column="39" severity="warning" message="Parameter x should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="81" column="46" severity="warning" message="Parameter y should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="81" column="53" severity="warning" message="Parameter centerX should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="81" column="66" severity="warning" message="Parameter centerY should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="85" column="27" severity="warning" message="Parameter x should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="85" column="34" severity="warning" message="Parameter y should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="97" column="27" severity="warning" message="Parameter x should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="97" column="34" severity="warning" message="Parameter y should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="97" column="41" severity="warning" message="Parameter cell should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/GridReader.java">
+<error line="6" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="8" column="30" severity="warning" message="Parameter gridContents should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="18" column="35" severity="warning" message="Parameter row should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="22" column="9" severity="warning" message="File contains tab characters (this is the first instance)." source="com.puppycrawl.tools.checkstyle.checks.whitespace.FileTabCharacterCheck"/>
+<error line="31" column="36" severity="warning" message="Parameter gridContents should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/GridWriter.java">
+<error line="3" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="5" column="35" severity="warning" message="Parameter gridContents should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="8" column="17" severity="warning" message="&apos;(&apos; is followed by whitespace." source="com.puppycrawl.tools.checkstyle.checks.whitespace.ParenPadCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/Universe.java">
+<error line="7" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="12" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="14" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="20" column="21" severity="warning" message="Parameter rows should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="20" column="31" severity="warning" message="Parameter columns should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="24" column="21" severity="warning" message="Parameter initialGridContents should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="25" column="1" severity="warning" message="File contains tab characters (this is the first instance)." source="com.puppycrawl.tools.checkstyle.checks.whitespace.FileTabCharacterCheck"/>
+<error line="28" column="37" severity="warning" message="Parameter gridContents should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="36" column="5" severity="warning" message="Method length is 31 lines (max allowed is 25)." source="com.puppycrawl.tools.checkstyle.checks.sizes.MethodLengthCheck"/>
+<error line="45" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="48" column="69" severity="warning" message="&apos;3&apos; is a magic number." source="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck"/>
+<error line="54" column="43" severity="warning" message="&apos;3&apos; is a magic number." source="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck"/>
+<error line="76" column="31" severity="warning" message="Parameter row should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="76" column="40" severity="warning" message="Parameter column should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="80" column="27" severity="warning" message="Parameter row should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="80" column="36" severity="warning" message="Parameter column should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="84" column="31" severity="warning" message="Parameter row should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="84" column="40" severity="warning" message="Parameter column should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+</file>
+</checkstyle>
150 gameoflife-core/build/checkstyle/test.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<checkstyle version="5.1">
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouCreateACell.java">
+<error line="0" severity="warning" message="Missing package-info.java file." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocPackageCheck"/>
+<error line="10" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouCreateAGrid.java">
+<error line="5" column="1" severity="warning" message="Redundant import from the same package - com.wakaleo.gameoflife.domain.Grid." source="com.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheck"/>
+<error line="11" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="13" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="76" column="55" severity="warning" message="&apos;3&apos; is a magic number." source="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck"/>
+<error line="80" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="85" column="55" severity="warning" message="&apos;8&apos; is a magic number." source="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck"/>
+<error line="91" column="39" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="92" column="39" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="97" column="55" severity="warning" message="&apos;8&apos; is a magic number." source="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck"/>
+<error line="124" column="40" severity="warning" message="&apos;3&apos; is a magic number." source="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck"/>
+<error line="151" column="40" severity="warning" message="&apos;3&apos; is a magic number." source="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck"/>
+<error line="152" column="43" severity="warning" message="&apos;3&apos; is a magic number." source="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck"/>
+<error line="156" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="156" column="17" severity="warning" message="Name &apos;ModifyingTheGridContentsAsAnArrayShouldNotModifyTheOriginalContents&apos; must match pattern &apos;^[a-z][a-zA-Z0-9]*$&apos;." source="com.puppycrawl.tools.checkstyle.checks.naming.MethodNameCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouCreateANewUniverse.java">
+<error line="4" column="8" severity="warning" message="Unused import - org.junit.Ignore." source="com.puppycrawl.tools.checkstyle.checks.imports.UnusedImportsCheck"/>
+<error line="6" column="1" severity="warning" message="Redundant import from the same package - com.wakaleo.gameoflife.domain.Universe." source="com.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheck"/>
+<error line="14" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="16" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="39" column="5" severity="warning" message="File contains tab characters (this is the first instance)." source="com.puppycrawl.tools.checkstyle.checks.whitespace.FileTabCharacterCheck"/>
+<error line="39" column="45" severity="warning" message="&apos;4&apos; is a magic number." source="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck"/>
+<error line="39" column="47" severity="warning" message="&apos;5&apos; is a magic number." source="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck"/>
+<error line="46" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="59" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouPlayTheGameOfLife.java">
+<error line="5" column="1" severity="warning" message="Redundant import from the same package - com.wakaleo.gameoflife.domain.Universe." source="com.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheck"/>
+<error line="12" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="16" column="38" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="17" column="38" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="20" column="43" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="21" column="43" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="32" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="33" column="38" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="34" column="38" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="37" column="43" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="38" column="43" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="49" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="50" column="38" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="51" column="38" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="54" column="43" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="55" column="43" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="67" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="68" column="38" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="69" column="38" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="72" column="43" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="73" column="43" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouPrintAGrid.java">
+<error line="7" column="8" severity="warning" message="Unused import - org.junit.Ignore." source="com.puppycrawl.tools.checkstyle.checks.imports.UnusedImportsCheck"/>
+<error line="10" column="1" severity="warning" message="Redundant import from the same package - com.wakaleo.gameoflife.domain.Cell." source="com.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheck"/>
+<error line="11" column="1" severity="warning" message="Redundant import from the same package - com.wakaleo.gameoflife.domain.GridWriter." source="com.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheck"/>
+<error line="13" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="23" column="46" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="24" column="46" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="40" column="46" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="41" column="46" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="49" column="5" severity="warning" message="Method length is 33 lines (max allowed is 25)." source="com.puppycrawl.tools.checkstyle.checks.sizes.MethodLengthCheck"/>
+<error line="52" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="53" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="54" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="55" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="56" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="57" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="58" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="59" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="60" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="61" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="62" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="63" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="66" column="55" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="67" column="55" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="68" column="55" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="69" column="55" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="70" column="55" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="71" column="55" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="72" column="55" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="73" column="55" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="74" column="55" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="75" column="55" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="76" column="55" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouReadAGridFromAString.java">
+<error line="9" column="1" severity="warning" message="Redundant import from the same package - com.wakaleo.gameoflife.domain.Cell." source="com.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheck"/>
+<error line="10" column="1" severity="warning" message="Redundant import from the same package - com.wakaleo.gameoflife.domain.GridReader." source="com.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheck"/>
+<error line="12" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="40" column="39" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="41" column="39" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="58" column="39" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="59" column="39" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="76" column="39" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="77" column="39" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="93" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="94" column="40" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="95" column="40" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="112" column="42" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="113" column="42" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="114" column="42" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="115" column="42" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="116" column="42" severity="warning" message="&apos;+&apos; should be on a new line." source="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck"/>
+<error line="120" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="121" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="122" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="123" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="124" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="125" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/hamcrest/HasSizeMatcher.java">
+<error line="0" severity="warning" message="Missing package-info.java file." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocPackageCheck"/>
+<error line="7" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="7" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="8" column="5" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck"/>
+<error line="10" column="27" severity="warning" message="Parameter expectedSize should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="10" column="31" severity="warning" message="&apos;expectedSize&apos; hides a field." source="com.puppycrawl.tools.checkstyle.checks.coding.HiddenFieldCheck"/>
+<error line="14" column="34" severity="warning" message="Parameter collection should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="18" column="28" severity="warning" message="Parameter description should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="19" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/hamcrest/MyMatchers.java">
+<error line="7" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="7" column="1" severity="warning" message="Utility classes should not have a public or default constructor." source="com.puppycrawl.tools.checkstyle.checks.design.HideUtilityClassConstructorCheck"/>
+<error line="8" column="1" severity="warning" message="File contains tab characters (this is the first instance)." source="com.puppycrawl.tools.checkstyle.checks.whitespace.FileTabCharacterCheck"/>
+<error line="10" severity="warning" message="Line is longer than 80 characters." source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
+<error line="10" column="65" severity="warning" message="&apos;(&apos; is followed by whitespace." source="com.puppycrawl.tools.checkstyle.checks.whitespace.ParenPadCheck"/>
+<error line="10" column="66" severity="warning" message="Parameter expectedSize should be final." source="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck"/>
+<error line="10" column="82" severity="warning" message="&apos;)&apos; is preceded with whitespace." source="com.puppycrawl.tools.checkstyle.checks.whitespace.ParenPadCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/hamcrest/WhenIUseMyCustomHamcrestMatchers.java">
+<error line="11" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+<error line="13" column="1" severity="warning" message="File contains tab characters (this is the first instance)." source="com.puppycrawl.tools.checkstyle.checks.whitespace.FileTabCharacterCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/test/categories/IntegrationTests.java">
+<error line="0" severity="warning" message="Missing package-info.java file." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocPackageCheck"/>
+<error line="3" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/test/categories/RegressionTests.java">
+<error line="3" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+</file>
+<file name="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/test/categories/SlowTests.java">
+<error line="3" severity="warning" message="Missing a Javadoc comment." source="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"/>
+</file>
+</checkstyle>
BIN  gameoflife-core/build/classes/main/com/wakaleo/gameoflife/domain/Cell.class
Binary file not shown
BIN  gameoflife-core/build/classes/main/com/wakaleo/gameoflife/domain/Grid.class
Binary file not shown
BIN  gameoflife-core/build/classes/main/com/wakaleo/gameoflife/domain/GridReader.class
Binary file not shown
BIN  gameoflife-core/build/classes/main/com/wakaleo/gameoflife/domain/GridWriter.class
Binary file not shown
BIN  gameoflife-core/build/classes/main/com/wakaleo/gameoflife/domain/Universe.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouCreateACell.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouCreateAGrid.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouCreateANewUniverse.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouPlayTheGameOfLife.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouPrintAGrid.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/domain/WhenYouReadAGridFromAString.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/hamcrest/HasSizeMatcher.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/hamcrest/MyMatchers.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/hamcrest/WhenIUseMyCustomHamcrestMatchers.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/test/categories/IntegrationTests.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/test/categories/RegressionTests.class
Binary file not shown
BIN  gameoflife-core/build/classes/test/com/wakaleo/gameoflife/test/categories/SlowTests.class
Binary file not shown
58 gameoflife-core/build/cpd.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<pmd-cpd>
+<duplication lines="6" tokens="156">
+<file line="52" path="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouPrintAGrid.java"/>
+<file line="58" path="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouPrintAGrid.java"/>
+<codefragment>
+<![CDATA[
+ {LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL,LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL},
+ {DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL,DEAD_CELL, LIVE_CELL, DEAD_CELL,DEAD_CELL, LIVE_CELL, DEAD_CELL},
+ {DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL},
+ {LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL,LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL},
+ {DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL,DEAD_CELL, LIVE_CELL, DEAD_CELL,DEAD_CELL, LIVE_CELL, DEAD_CELL},
+ {DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL, DEAD_CELL, LIVE_CELL, DEAD_CELL},
+]]>
+</codefragment>
+</duplication>
+<duplication lines="9" tokens="72">
+<file line="101" path="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/Grid.java"/>
+<file line="111" path="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/main/java/com/wakaleo/gameoflife/domain/Grid.java"/>
+<codefragment>
+<![CDATA[
+ private Cell[][] getSimilarContents() {
+ Cell[][] contentCopy = new Cell[getHeight()][getWidth()];
+ for (int row = 0; row < getHeight(); row++) {
+ for (int column = 0; column < getWidth(); column++) {
+ contentCopy[row][column] = cells[row][column];
+ }
+ }
+ return contentCopy;
+ }
+]]>
+</codefragment>
+</duplication>
+<duplication lines="16" tokens="66">
+<file line="41" path="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouReadAGridFromAString.java"/>
+<file line="59" path="/Users/johnsmart/Projects/Demos/hudson-demo/gameoflife/gameoflife-core/src/test/java/com/wakaleo/gameoflife/domain/WhenYouReadAGridFromAString.java"/>
+<codefragment>
+<![CDATA[
+ ".Z.\n" +
+ "...";
+
+ Cell[][] expectedCells = {
+ {DEAD_CELL, DEAD_CELL, DEAD_CELL},
+ {DEAD_CELL, DEAD_CELL, DEAD_CELL},
+ {DEAD_CELL, DEAD_CELL, DEAD_CELL}
+ };
+
+ GridReader gridReader = new GridReader();
+ Cell[][] loadedCells = gridReader.loadFrom(gridContents);
+
+ assertThat(loadedCells, is(expectedCells));
+ }
+
+ @Test
+]]>
+</codefragment>
+</duplication>
+</pmd-cpd>
BIN  gameoflife-core/build/libs/gameoflife-core.jar
Binary file not shown
290 gameoflife-core/build/pmd.xml
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pmd version="4.2.5" timestamp="2010-12-04T17:53:21.538">
+<file name="com/wakaleo/gameoflife/domain/Universe.java">
+<violation beginline="3" endline="3" begincolumn="1" endcolumn="51" rule="UnusedImports" ruleset="Type Resolution Rules" package="com.wakaleo.gameoflife.domain" externalInfoUrl="http://pmd.sourceforge.net/rules/typeresolution.html#UnusedImports" priority="4">
+Avoid unused imports such as 'com.wakaleo.gameoflife.domain.Cell'
+</violation>
+<violation beginline="14" endline="14" begincolumn="18" endcolumn="35" rule="LongVariable" ruleset="Naming Rules" package="com.wakaleo.gameoflife.domain" class="Universe" variable="currentGridContent" externalInfoUrl="http://pmd.sourceforge.net/rules/naming.html#LongVariable" priority="3">
+Avoid excessively long variable names like currentGridContent
+</violation>
+<violation beginline="14" endline="14" begincolumn="18" endcolumn="35" rule="BeanMembersShouldSerialize" ruleset="JavaBean Rules" package="com.wakaleo.gameoflife.domain" class="Universe" variable="currentGridContent" externalInfoUrl="http://pmd.sourceforge.net/rules/javabeans.html#BeanMembersShouldSerialize" priority="3">
+Found non-transient, non-static member. Please mark as transient or provide accessors.
+</violation>
+<violation beginline="20" endline="20" begincolumn="31" endcolumn="41" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'columns' is not assigned and could be declared final
+</violation>
+<violation beginline="20" endline="20" begincolumn="21" endcolumn="28" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'rows' is not assigned and could be declared final
+</violation>
+<violation beginline="24" endline="24" begincolumn="28" endcolumn="46" rule="LongVariable" ruleset="Naming Rules" package="com.wakaleo.gameoflife.domain" class="Universe" variable="initialGridContents" externalInfoUrl="http://pmd.sourceforge.net/rules/naming.html#LongVariable" priority="3">
+Avoid excessively long variable names like initialGridContents
+</violation>
+<violation beginline="24" endline="24" begincolumn="21" endcolumn="46" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'initialGridContents' is not assigned and could be declared final
+</violation>
+<violation beginline="28" endline="28" begincolumn="41" endcolumn="59" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="seededWith" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'gridContents' is not assigned and could be declared final
+</violation>
+<violation beginline="38" endline="38" begincolumn="22" endcolumn="42" rule="LongVariable" ruleset="Naming Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="createNextGeneration" variable="nextGenerationContent" externalInfoUrl="http://pmd.sourceforge.net/rules/naming.html#LongVariable" priority="3">
+Avoid excessively long variable names like nextGenerationContent
+</violation>
+<violation beginline="38" endline="38" begincolumn="9" endcolumn="63" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="createNextGeneration" variable="nextGenerationContent" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'nextGenerationContent' could be declared final
+</violation>
+<violation beginline="40" endline="40" begincolumn="9" endcolumn="50" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="createNextGeneration" variable="maxRow" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'maxRow' could be declared final
+</violation>
+<violation beginline="41" endline="66" begincolumn="13" endcolumn="54" rule="DataflowAnomalyAnalysis" ruleset="Controversial Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="createNextGeneration" variable="maxColumn" externalInfoUrl="http://pmd.sourceforge.net/rules/controversial.html#DataflowAnomalyAnalysis" priority="5">
+Found 'DU'-anomaly for variable 'maxColumn' (lines '41'-'66').
+</violation>
+<violation beginline="41" endline="41" begincolumn="9" endcolumn="54" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="createNextGeneration" variable="maxColumn" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'maxColumn' could be declared final
+</violation>
+<violation beginline="44" endline="44" begincolumn="17" endcolumn="69" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="createNextGeneration" variable="currentCell" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'currentCell' could be declared final
+</violation>
+<violation beginline="45" endline="45" begincolumn="17" endcolumn="80" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="createNextGeneration" variable="neighbourCount" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'neighbourCount' could be declared final
+</violation>
+<violation beginline="46" endline="49" begincolumn="25" endcolumn="44" rule="DataflowAnomalyAnalysis" ruleset="Controversial Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="createNextGeneration" variable="nextCell" externalInfoUrl="http://pmd.sourceforge.net/rules/controversial.html#DataflowAnomalyAnalysis" priority="5">
+Found 'DD'-anomaly for variable 'nextCell' (lines '46'-'49').
+</violation>
+<violation beginline="46" endline="51" begincolumn="25" endcolumn="44" rule="DataflowAnomalyAnalysis" ruleset="Controversial Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="createNextGeneration" variable="nextCell" externalInfoUrl="http://pmd.sourceforge.net/rules/controversial.html#DataflowAnomalyAnalysis" priority="5">
+Found 'DD'-anomaly for variable 'nextCell' (lines '46'-'51').
+</violation>
+<violation beginline="46" endline="55" begincolumn="25" endcolumn="44" rule="DataflowAnomalyAnalysis" ruleset="Controversial Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="createNextGeneration" variable="nextCell" externalInfoUrl="http://pmd.sourceforge.net/rules/controversial.html#DataflowAnomalyAnalysis" priority="5">
+Found 'DD'-anomaly for variable 'nextCell' (lines '46'-'55').
+</violation>
+<violation beginline="46" endline="57" begincolumn="25" endcolumn="44" rule="DataflowAnomalyAnalysis" ruleset="Controversial Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="createNextGeneration" variable="nextCell" externalInfoUrl="http://pmd.sourceforge.net/rules/controversial.html#DataflowAnomalyAnalysis" priority="5">
+Found 'DD'-anomaly for variable 'nextCell' (lines '46'-'57').
+</violation>
+<violation beginline="76" endline="76" begincolumn="40" endcolumn="49" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="setLiveCellAt" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'column' is not assigned and could be declared final
+</violation>
+<violation beginline="76" endline="76" begincolumn="31" endcolumn="37" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="setLiveCellAt" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'row' is not assigned and could be declared final
+</violation>
+<violation beginline="80" endline="80" begincolumn="36" endcolumn="45" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="getCellAt" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'column' is not assigned and could be declared final
+</violation>
+<violation beginline="80" endline="80" begincolumn="27" endcolumn="33" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="getCellAt" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'row' is not assigned and could be declared final
+</violation>
+<violation beginline="84" endline="84" begincolumn="44" endcolumn="53" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="setDeadCellAt" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'column' is not assigned and could be declared final
+</violation>
+<violation beginline="84" endline="84" begincolumn="35" endcolumn="41" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="Universe" method="setDeadCellAt" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'row' is not assigned and could be declared final
+</violation>
+</file>
+<file name="com/wakaleo/gameoflife/domain/WhenYouPrintAGrid.java">
+<violation beginline="5" endline="5" begincolumn="1" endcolumn="51" rule="UnusedImports" ruleset="Type Resolution Rules" package="com.wakaleo.gameoflife.domain" externalInfoUrl="http://pmd.sourceforge.net/rules/typeresolution.html#UnusedImports" priority="4">
+Avoid unused imports such as 'com.wakaleo.gameoflife.domain.Cell'
+</violation>
+<violation beginline="7" endline="7" begincolumn="1" endcolumn="24" rule="UnusedImports" ruleset="Type Resolution Rules" package="com.wakaleo.gameoflife.domain" externalInfoUrl="http://pmd.sourceforge.net/rules/typeresolution.html#UnusedImports" priority="4">
+Avoid unused imports such as 'org.junit.Ignore'
+</violation>
+<violation beginline="7" endline="7" begincolumn="1" endcolumn="24" rule="UnusedImports" ruleset="Import Statement Rules" package="com.wakaleo.gameoflife.domain" externalInfoUrl="http://pmd.sourceforge.net/rules/imports.html#UnusedImports" priority="4">
+Avoid unused imports such as 'org.junit.Ignore'
+</violation>
+<violation beginline="10" endline="10" begincolumn="1" endcolumn="42" rule="ImportFromSamePackage" ruleset="Import Statement Rules" package="com.wakaleo.gameoflife.domain" externalInfoUrl="http://pmd.sourceforge.net/rules/imports.html#ImportFromSamePackage" priority="3">
+No need to import a type that lives in the same package
+</violation>
+<violation beginline="11" endline="11" begincolumn="1" endcolumn="48" rule="ImportFromSamePackage" ruleset="Import Statement Rules" package="com.wakaleo.gameoflife.domain" externalInfoUrl="http://pmd.sourceforge.net/rules/imports.html#ImportFromSamePackage" priority="3">
+No need to import a type that lives in the same package
+</violation>
+<violation beginline="17" endline="21" begincolumn="9" endcolumn="9" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadAGridOfCellsFromAString" variable="gridContents" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridContents' could be declared final
+</violation>
+<violation beginline="23" endline="23" begincolumn="16" endcolumn="34" rule="LongVariable" ruleset="Naming Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadAGridOfCellsFromAString" variable="expectedPrintedGrid" externalInfoUrl="http://pmd.sourceforge.net/rules/naming.html#LongVariable" priority="3">
+Avoid excessively long variable names like expectedPrintedGrid
+</violation>
+<violation beginline="23" endline="25" begincolumn="9" endcolumn="44" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadAGridOfCellsFromAString" variable="expectedPrintedGrid" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'expectedPrintedGrid' could be declared final
+</violation>
+<violation beginline="27" endline="27" begincolumn="9" endcolumn="48" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadAGridOfCellsFromAString" variable="gridWriter" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridWriter' could be declared final
+</violation>
+<violation beginline="28" endline="28" begincolumn="9" endcolumn="69" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadAGridOfCellsFromAString" variable="printedGrid" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'printedGrid' could be declared final
+</violation>
+<violation beginline="34" endline="38" begincolumn="9" endcolumn="9" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadAStringGridContainingLiveAndDeadCells" variable="gridContents" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridContents' could be declared final
+</violation>
+<violation beginline="40" endline="40" begincolumn="16" endcolumn="34" rule="LongVariable" ruleset="Naming Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadAStringGridContainingLiveAndDeadCells" variable="expectedPrintedGrid" externalInfoUrl="http://pmd.sourceforge.net/rules/naming.html#LongVariable" priority="3">
+Avoid excessively long variable names like expectedPrintedGrid
+</violation>
+<violation beginline="40" endline="42" begincolumn="9" endcolumn="44" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadAStringGridContainingLiveAndDeadCells" variable="expectedPrintedGrid" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'expectedPrintedGrid' could be declared final
+</violation>
+<violation beginline="44" endline="44" begincolumn="9" endcolumn="48" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadAStringGridContainingLiveAndDeadCells" variable="gridWriter" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridWriter' could be declared final
+</violation>
+<violation beginline="45" endline="45" begincolumn="9" endcolumn="69" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadAStringGridContainingLiveAndDeadCells" variable="printedGrid" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'printedGrid' could be declared final
+</violation>
+<violation beginline="51" endline="64" begincolumn="9" endcolumn="9" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadALargeStringGridContainingLiveAndDeadCells" variable="gridContents" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridContents' could be declared final
+</violation>
+<violation beginline="66" endline="66" begincolumn="16" endcolumn="34" rule="LongVariable" ruleset="Naming Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadALargeStringGridContainingLiveAndDeadCells" variable="expectedPrintedGrid" externalInfoUrl="http://pmd.sourceforge.net/rules/naming.html#LongVariable" priority="3">
+Avoid excessively long variable names like expectedPrintedGrid
+</violation>
+<violation beginline="66" endline="77" begincolumn="9" endcolumn="53" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadALargeStringGridContainingLiveAndDeadCells" variable="expectedPrintedGrid" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'expectedPrintedGrid' could be declared final
+</violation>
+<violation beginline="66" endline="66" begincolumn="38" endcolumn="53" rule="AvoidDuplicateLiterals" ruleset="String and StringBuffer Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadALargeStringGridContainingLiveAndDeadCells" externalInfoUrl="http://pmd.sourceforge.net/rules/strings.html#AvoidDuplicateLiterals" priority="3">
+The String literal &quot;*..*..*..*..\n&quot; appears 4 times in this file; the first occurrence is on line 66
+</violation>
+<violation beginline="67" endline="67" begincolumn="38" endcolumn="53" rule="AvoidDuplicateLiterals" ruleset="String and StringBuffer Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadALargeStringGridContainingLiveAndDeadCells" externalInfoUrl="http://pmd.sourceforge.net/rules/strings.html#AvoidDuplicateLiterals" priority="3">
+The String literal &quot;.*..*..*..*.\n&quot; appears 8 times in this file; the first occurrence is on line 67
+</violation>
+<violation beginline="79" endline="79" begincolumn="9" endcolumn="48" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadALargeStringGridContainingLiveAndDeadCells" variable="gridWriter" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridWriter' could be declared final
+</violation>
+<violation beginline="80" endline="80" begincolumn="9" endcolumn="69" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouPrintAGrid" method="shouldBeAbleToReadALargeStringGridContainingLiveAndDeadCells" variable="printedGrid" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'printedGrid' could be declared final
+</violation>
+</file>
+<file name="com/wakaleo/gameoflife/domain/WhenYouReadAGridFromAString.java">
+<violation beginline="5" endline="5" begincolumn="1" endcolumn="51" rule="UnusedImports" ruleset="Type Resolution Rules" package="com.wakaleo.gameoflife.domain" externalInfoUrl="http://pmd.sourceforge.net/rules/typeresolution.html#UnusedImports" priority="4">
+Avoid unused imports such as 'com.wakaleo.gameoflife.domain.Cell'
+</violation>
+<violation beginline="9" endline="9" begincolumn="1" endcolumn="42" rule="ImportFromSamePackage" ruleset="Import Statement Rules" package="com.wakaleo.gameoflife.domain" externalInfoUrl="http://pmd.sourceforge.net/rules/imports.html#ImportFromSamePackage" priority="3">
+No need to import a type that lives in the same package
+</violation>
+<violation beginline="10" endline="10" begincolumn="1" endcolumn="48" rule="ImportFromSamePackage" ruleset="Import Statement Rules" package="com.wakaleo.gameoflife.domain" externalInfoUrl="http://pmd.sourceforge.net/rules/imports.html#ImportFromSamePackage" priority="3">
+No need to import a type that lives in the same package
+</violation>
+<violation beginline="16" endline="16" begincolumn="9" endcolumn="32" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAnEmptyGridOfCellsFromAnEmptyString" variable="gridContents" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridContents' could be declared final
+</violation>
+<violation beginline="18" endline="18" begincolumn="9" endcolumn="37" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAnEmptyGridOfCellsFromAnEmptyString" variable="expectedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'expectedCells' could be declared final
+</violation>
+<violation beginline="20" endline="20" begincolumn="9" endcolumn="48" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAnEmptyGridOfCellsFromAnEmptyString" variable="gridReader" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridReader' could be declared final
+</violation>
+<violation beginline="21" endline="21" begincolumn="9" endcolumn="64" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAnEmptyGridOfCellsFromAnEmptyString" variable="loadedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'loadedCells' could be declared final
+</violation>
+<violation beginline="28" endline="28" begincolumn="9" endcolumn="33" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridContainingASingleCellFromAString" variable="gridContents" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridContents' could be declared final
+</violation>
+<violation beginline="30" endline="30" begincolumn="9" endcolumn="46" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridContainingASingleCellFromAString" variable="expectedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'expectedCells' could be declared final
+</violation>
+<violation beginline="32" endline="32" begincolumn="9" endcolumn="48" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridContainingASingleCellFromAString" variable="gridReader" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridReader' could be declared final
+</violation>
+<violation beginline="33" endline="33" begincolumn="9" endcolumn="64" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridContainingASingleCellFromAString" variable="loadedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'loadedCells' could be declared final
+</violation>
+<violation beginline="40" endline="42" begincolumn="9" endcolumn="35" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridOfCellsFromAString" variable="gridContents" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridContents' could be declared final
+</violation>
+<violation beginline="44" endline="48" begincolumn="9" endcolumn="9" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridOfCellsFromAString" variable="expectedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'expectedCells' could be declared final
+</violation>
+<violation beginline="50" endline="50" begincolumn="9" endcolumn="48" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridOfCellsFromAString" variable="gridReader" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridReader' could be declared final
+</violation>
+<violation beginline="51" endline="51" begincolumn="9" endcolumn="64" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridOfCellsFromAString" variable="loadedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'loadedCells' could be declared final
+</violation>
+<violation beginline="58" endline="60" begincolumn="9" endcolumn="35" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldRefuseIllegalCellCharacters" variable="gridContents" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridContents' could be declared final
+</violation>
+<violation beginline="62" endline="66" begincolumn="9" endcolumn="9" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldRefuseIllegalCellCharacters" variable="expectedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'expectedCells' could be declared final
+</violation>
+<violation beginline="68" endline="68" begincolumn="9" endcolumn="48" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldRefuseIllegalCellCharacters" variable="gridReader" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridReader' could be declared final
+</violation>
+<violation beginline="69" endline="69" begincolumn="9" endcolumn="64" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldRefuseIllegalCellCharacters" variable="loadedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'loadedCells' could be declared final
+</violation>
+<violation beginline="76" endline="78" begincolumn="9" endcolumn="35" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridContainingLiveAndDeadCells" variable="gridContents" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridContents' could be declared final
+</violation>
+<violation beginline="80" endline="84" begincolumn="9" endcolumn="9" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridContainingLiveAndDeadCells" variable="expectedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'expectedCells' could be declared final
+</violation>
+<violation beginline="86" endline="86" begincolumn="9" endcolumn="48" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridContainingLiveAndDeadCells" variable="gridReader" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridReader' could be declared final
+</violation>
+<violation beginline="87" endline="87" begincolumn="9" endcolumn="64" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAGridContainingLiveAndDeadCells" variable="loadedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'loadedCells' could be declared final
+</violation>
+<violation beginline="94" endline="96" begincolumn="9" endcolumn="36" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAnAsymetricalGridContainingLiveAndDeadCells" variable="gridContents" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridContents' could be declared final
+</violation>
+<violation beginline="98" endline="102" begincolumn="9" endcolumn="9" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAnAsymetricalGridContainingLiveAndDeadCells" variable="expectedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'expectedCells' could be declared final
+</violation>
+<violation beginline="104" endline="104" begincolumn="9" endcolumn="48" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAnAsymetricalGridContainingLiveAndDeadCells" variable="gridReader" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridReader' could be declared final
+</violation>
+<violation beginline="105" endline="105" begincolumn="9" endcolumn="64" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadAnAsymetricalGridContainingLiveAndDeadCells" variable="loadedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'loadedCells' could be declared final
+</violation>
+<violation beginline="112" endline="117" begincolumn="9" endcolumn="38" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadALargerGrid" variable="gridContents" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridContents' could be declared final
+</violation>
+<violation beginline="119" endline="126" begincolumn="9" endcolumn="9" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadALargerGrid" variable="expectedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'expectedCells' could be declared final
+</violation>
+<violation beginline="128" endline="128" begincolumn="9" endcolumn="48" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadALargerGrid" variable="gridReader" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'gridReader' could be declared final
+</violation>
+<violation beginline="129" endline="129" begincolumn="9" endcolumn="64" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.domain" class="WhenYouReadAGridFromAString" method="shouldBeAbleToReadALargerGrid" variable="loadedCells" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'loadedCells' could be declared final
+</violation>
+</file>
+<file name="com/wakaleo/gameoflife/hamcrest/HasSizeMatcher.java">
+<violation beginline="8" endline="8" begincolumn="17" endcolumn="28" rule="BeanMembersShouldSerialize" ruleset="JavaBean Rules" package="com.wakaleo.gameoflife.hamcrest" class="HasSizeMatcher" variable="expectedSize" externalInfoUrl="http://pmd.sourceforge.net/rules/javabeans.html#BeanMembersShouldSerialize" priority="3">
+Found non-transient, non-static member. Please mark as transient or provide accessors.
+</violation>
+<violation beginline="8" endline="8" begincolumn="17" endcolumn="28" rule="ImmutableField" ruleset="Design Rules" package="com.wakaleo.gameoflife.hamcrest" class="HasSizeMatcher" variable="expectedSize" externalInfoUrl="http://pmd.sourceforge.net/rules/design.html#ImmutableField" priority="3">
+Private field 'expectedSize' could be made final; it is only initialized in the declaration or constructor.
+</violation>
+<violation beginline="10" endline="12" begincolumn="12" endcolumn="5" rule="CallSuperInConstructor" ruleset="Controversial Rules" package="com.wakaleo.gameoflife.hamcrest" class="HasSizeMatcher" externalInfoUrl="http://pmd.sourceforge.net/rules/controversial.html#CallSuperInConstructor" priority="3">
+It is a good practice to call super() in a constructor
+</violation>
+<violation beginline="10" endline="10" begincolumn="27" endcolumn="42" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.hamcrest" class="HasSizeMatcher" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'expectedSize' is not assigned and could be declared final
+</violation>
+<violation beginline="14" endline="14" begincolumn="34" endcolumn="72" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.hamcrest" class="HasSizeMatcher" method="matchesSafely" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'collection' is not assigned and could be declared final
+</violation>
+<violation beginline="18" endline="18" begincolumn="28" endcolumn="50" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.hamcrest" class="HasSizeMatcher" method="describeTo" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'description' is not assigned and could be declared final
+</violation>
+</file>
+<file name="com/wakaleo/gameoflife/hamcrest/MyMatchers.java">
+<violation beginline="7" endline="13" begincolumn="25" endcolumn="1" rule="UseSingleton" ruleset="Design Rules" package="com.wakaleo.gameoflife.hamcrest" class="MyMatchers" externalInfoUrl="http://pmd.sourceforge.net/rules/design.html#UseSingleton" priority="3">
+All methods are static. Consider using Singleton instead. Alternatively, you could add a private constructor or make the class abstract to silence this warning.
+</violation>
+<violation beginline="10" endline="10" begincolumn="66" endcolumn="81" rule="MethodArgumentCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.hamcrest" class="MyMatchers" method="hasSize" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#MethodArgumentCouldBeFinal" priority="3">
+Parameter 'expectedSize' is not assigned and could be declared final
+</violation>
+</file>
+<file name="com/wakaleo/gameoflife/hamcrest/WhenIUseMyCustomHamcrestMatchers.java">
+<violation beginline="9" endline="9" begincolumn="1" endcolumn="38" rule="UnusedImports" ruleset="Type Resolution Rules" package="com.wakaleo.gameoflife.hamcrest" externalInfoUrl="http://pmd.sourceforge.net/rules/typeresolution.html#UnusedImports" priority="4">
+Avoid unused imports such as 'org.hamcrest.Matchers'
+</violation>
+<violation beginline="15" endline="15" begincolumn="17" endcolumn="60" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.hamcrest" class="WhenIUseMyCustomHamcrestMatchers" method="thehasSizeMatcherShouldMatchACollectionWithExpectedSize" variable="items" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'items' could be declared final
+</violation>
+<violation beginline="22" endline="22" begincolumn="17" endcolumn="60" rule="LocalVariableCouldBeFinal" ruleset="Optimization Rules" package="com.wakaleo.gameoflife.hamcrest" class="WhenIUseMyCustomHamcrestMatchers" method="weCanUseCustomMatchersWithOtherMatchers" variable="items" externalInfoUrl="http://pmd.sourceforge.net/rules/optimizations.html#LocalVariableCouldBeFinal" priority="3">
+Local variable 'items' could be declared final
+</violation>
+</file>
+<error filename="com/wakaleo/gameoflife/domain/Cell.java" msg="Error while processing com/wakaleo/gameoflife/domain/Cell.java"/>
+<error filename="com/wakaleo/gameoflife/domain/Grid.java" msg="Error while processing com/wakaleo/gameoflife/domain/Grid.java"/>
+<error filename="com/wakaleo/gameoflife/domain/GridReader.java" msg="Error while processing com/wakaleo/gameoflife/domain/GridReader.java"/>
+<error filename="com/wakaleo/gameoflife/domain/GridWriter.java" msg="Error while processing com/wakaleo/gameoflife/domain/GridWriter.java"/>
+<error filename="com/wakaleo/gameoflife/domain/WhenYouCreateACell.java" msg="Error while processing com/wakaleo/gameoflife/domain/WhenYouCreateACell.java"/>
+<error filename="com/wakaleo/gameoflife/domain/WhenYouCreateAGrid.java" msg="Error while processing com/wakaleo/gameoflife/domain/WhenYouCreateAGrid.java"/>
+<error filename="com/wakaleo/gameoflife/domain/WhenYouCreateANewUniverse.java" msg="Error while processing com/wakaleo/gameoflife/domain/WhenYouCreateANewUniverse.java"/>
+<error filename="com/wakaleo/gameoflife/domain/WhenYouPlayTheGameOfLife.java" msg="Error while processing com/wakaleo/gameoflife/domain/WhenYouPlayTheGameOfLife.java"/>
+</pmd>
169 gameoflife-core/build/reports/tests/all-tests.html
@@ -0,0 +1,169 @@
+<html xmlns:lxslt="http://xml.apache.org/xslt" xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils">
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Unit Test Results: All Tests</title>
+<link rel="stylesheet" type="text/css" title="Style" href="stylesheet.css">
+</head>
+<body onload="open('allclasses-frame.html','classListFrame')">
+<h1>Unit Test Results.</h1>
+<table width="100%">
+<tr>
+<td align="left"></td><td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://ant.apache.org/">Ant</a>.</td>
+</tr>
+</table>
+<hr size="1">
+<h2>All Tests</h2>
+<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+<tr valign="top">
+<th>Class</th><th>Name</th><th>Status</th><th width="80%">Type</th><th nowrap>Time(s)</th>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html">WhenYouCreateACell</a></td><td><a name="aLiveCellShouldBeRepresentedByAnAsterisk"></a><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html#aLiveCellShouldBeRepresentedByAnAsterisk">aLiveCellShouldBeRepresentedByAnAsterisk</a></td><td>Success</td><td></td><td>0.009</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html">WhenYouCreateACell</a></td><td><a name="aDeadCellShouldBeRepresentedByADot"></a><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html#aDeadCellShouldBeRepresentedByADot">aDeadCellShouldBeRepresentedByADot</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html">WhenYouCreateACell</a></td><td><a name="aLiveCellShouldBePrintedAsAnAsterisk"></a><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html#aLiveCellShouldBePrintedAsAnAsterisk">aLiveCellShouldBePrintedAsAnAsterisk</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html">WhenYouCreateACell</a></td><td><a name="aDeadCellShouldBePrintedAsADot"></a><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html#aDeadCellShouldBePrintedAsADot">aDeadCellShouldBePrintedAsADot</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html">WhenYouCreateACell</a></td><td><a name="aDeadCellSymbolShouldBeADot"></a><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html#aDeadCellSymbolShouldBeADot">aDeadCellSymbolShouldBeADot</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html">WhenYouCreateACell</a></td><td><a name="aLiveCellSymbolShouldBeAnAsterisk"></a><a href="com/wakaleo/gameoflife/domain/0_WhenYouCreateACell.html#aLiveCellSymbolShouldBeAnAsterisk">aLiveCellSymbolShouldBeAnAsterisk</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="aNewGridShouldBeEmpty"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#aNewGridShouldBeEmpty">aNewGridShouldBeEmpty</a></td><td>Success</td><td></td><td>0.002</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToSeedAGridWithAString"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToSeedAGridWithAString">shouldBeAbleToSeedAGridWithAString</a></td><td>Success</td><td></td><td>0.001</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToSeedAGridWithANonEmptyString"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToSeedAGridWithANonEmptyString">shouldBeAbleToSeedAGridWithANonEmptyString</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToCountLiveNeighboursOfACell"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToCountLiveNeighboursOfACell">shouldBeAbleToCountLiveNeighboursOfACell</a></td><td>Success</td><td></td><td>0.001</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToCountLiveNeighboursOfACellOnBoundaries"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToCountLiveNeighboursOfACellOnBoundaries">shouldBeAbleToCountLiveNeighboursOfACellOnBoundaries</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToCountLiveNeighboursOfACellInTheMiddleOfTheGrid"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToCountLiveNeighboursOfACellInTheMiddleOfTheGrid">shouldBeAbleToCountLiveNeighboursOfACellInTheMiddleOfTheGrid</a></td><td>Success</td><td></td><td>0.001</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToCountLiveNeighboursOfACellOnAnotherLine"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToCountLiveNeighboursOfACellOnAnotherLine">shouldBeAbleToCountLiveNeighboursOfACellOnAnotherLine</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToCountLiveNeighboursOfACellOnDiagonalsAndStraightLines"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToCountLiveNeighboursOfACellOnDiagonalsAndStraightLines">shouldBeAbleToCountLiveNeighboursOfACellOnDiagonalsAndStraightLines</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldNotCountTheTargetCellAsANeighbour"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldNotCountTheTargetCellAsANeighbour">shouldNotCountTheTargetCellAsANeighbour</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToReadTheStateOfALivingCell"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToReadTheStateOfALivingCell">shouldBeAbleToReadTheStateOfALivingCell</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToReadTheStateOfADeadCell"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToReadTheStateOfADeadCell">shouldBeAbleToReadTheStateOfADeadCell</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToReadTheWidthOfTheGrid"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToReadTheWidthOfTheGrid">shouldBeAbleToReadTheWidthOfTheGrid</a></td><td>Success</td><td></td><td>0.001</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToReadTheHeightOfTheGrid"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToReadTheHeightOfTheGrid">shouldBeAbleToReadTheHeightOfTheGrid</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="shouldBeAbleToObtainTheGridContentsAsAnArray"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#shouldBeAbleToObtainTheGridContentsAsAnArray">shouldBeAbleToObtainTheGridContentsAsAnArray</a></td><td>Success</td><td></td><td>0.001</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="theGridContentsAsAnArrayShouldBeTheCorrectSize"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#theGridContentsAsAnArrayShouldBeTheCorrectSize">theGridContentsAsAnArrayShouldBeTheCorrectSize</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html">WhenYouCreateAGrid</a></td><td><a name="ModifyingTheGridContentsAsAnArrayShouldNotModifyTheOriginalContents"></a><a href="com/wakaleo/gameoflife/domain/1_WhenYouCreateAGrid.html#ModifyingTheGridContentsAsAnArrayShouldNotModifyTheOriginalContents">ModifyingTheGridContentsAsAnArrayShouldNotModifyTheOriginalContents</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html">WhenYouCreateANewUniverse</a></td><td><a name="aNewUniverseShouldContainOnlyDeadCells"></a><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html#aNewUniverseShouldContainOnlyDeadCells">aNewUniverseShouldContainOnlyDeadCells</a></td><td>Success</td><td></td><td>0.001</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html">WhenYouCreateANewUniverse</a></td><td><a name="aUniverseSeededWithAnEmpyGridContentWillContainAnEmptyGrid"></a><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html#aUniverseSeededWithAnEmpyGridContentWillContainAnEmptyGrid">aUniverseSeededWithAnEmpyGridContentWillContainAnEmptyGrid</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html">WhenYouCreateANewUniverse</a></td><td><a name="aUniverseCanBeInitializedWithAnyDimension"></a><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html#aUniverseCanBeInitializedWithAnyDimension">aUniverseCanBeInitializedWithAnyDimension</a></td><td>Success</td><td></td><td>0.001</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html">WhenYouCreateANewUniverse</a></td><td><a name="aUniverseSeededWithAGridContainingASingleLiveCellContentWillSpawnAnEmptyGrid"></a><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html#aUniverseSeededWithAGridContainingASingleLiveCellContentWillSpawnAnEmptyGrid">aUniverseSeededWithAGridContainingASingleLiveCellContentWillSpawnAnEmptyGrid</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html">WhenYouCreateANewUniverse</a></td><td><a name="aUniverseSeededWithAGridWithLivingCellsContentWillContainThatGrid"></a><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html#aUniverseSeededWithAGridWithLivingCellsContentWillContainThatGrid">aUniverseSeededWithAGridWithLivingCellsContentWillContainThatGrid</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html">WhenYouCreateANewUniverse</a></td><td><a name="aUniverseSpawnsANewGridInTheNextGeneration"></a><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html#aUniverseSpawnsANewGridInTheNextGeneration">aUniverseSpawnsANewGridInTheNextGeneration</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html">WhenYouCreateANewUniverse</a></td><td><a name="aUserCanAssignALiveCellAtAGivenPointInTheGrid"></a><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html#aUserCanAssignALiveCellAtAGivenPointInTheGrid">aUserCanAssignALiveCellAtAGivenPointInTheGrid</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html">WhenYouCreateANewUniverse</a></td><td><a name="aUserCanAssignADeadCellAtAGivenPointInTheGrid"></a><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html#aUserCanAssignADeadCellAtAGivenPointInTheGrid">aUserCanAssignADeadCellAtAGivenPointInTheGrid</a></td><td>Success</td><td></td><td>0.001</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html">WhenYouCreateANewUniverse</a></td><td><a name="aUserCanReadALiveCellValueAtAGivenPointInTheGrid"></a><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html#aUserCanReadALiveCellValueAtAGivenPointInTheGrid">aUserCanReadALiveCellValueAtAGivenPointInTheGrid</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html">WhenYouCreateANewUniverse</a></td><td><a name="aUserCanReadADeadCellValueAtAGivenPointInTheGrid"></a><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html#aUserCanReadADeadCellValueAtAGivenPointInTheGrid">aUserCanReadADeadCellValueAtAGivenPointInTheGrid</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html">WhenYouCreateANewUniverse</a></td><td><a name="aUserCanObtainTheGridContentsAsAnArrayOfCells"></a><a href="com/wakaleo/gameoflife/domain/2_WhenYouCreateANewUniverse.html#aUserCanObtainTheGridContentsAsAnArrayOfCells">aUserCanObtainTheGridContentsAsAnArrayOfCells</a></td><td>Success</td><td></td><td>0.002</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/3_WhenYouPlayTheGameOfLife.html">WhenYouPlayTheGameOfLife</a></td><td><a name="aDeadCellWithNoNeighboursShouldRemainDeadInTheNextGeneration"></a><a href="com/wakaleo/gameoflife/domain/3_WhenYouPlayTheGameOfLife.html#aDeadCellWithNoNeighboursShouldRemainDeadInTheNextGeneration">aDeadCellWithNoNeighboursShouldRemainDeadInTheNextGeneration</a></td><td>Success</td><td></td><td>0.001</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/3_WhenYouPlayTheGameOfLife.html">WhenYouPlayTheGameOfLife</a></td><td><a name="aDeadCellWithOneLiveNeighbourShouldRemainDeadInTheNextGeneration"></a><a href="com/wakaleo/gameoflife/domain/3_WhenYouPlayTheGameOfLife.html#aDeadCellWithOneLiveNeighbourShouldRemainDeadInTheNextGeneration">aDeadCellWithOneLiveNeighbourShouldRemainDeadInTheNextGeneration</a></td><td>Success</td><td></td><td>0.001</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/3_WhenYouPlayTheGameOfLife.html">WhenYouPlayTheGameOfLife</a></td><td><a name="liveCellaWith2or3iveNeighbourShouldRemainAliveInTheNextGeneration"></a><a href="com/wakaleo/gameoflife/domain/3_WhenYouPlayTheGameOfLife.html#liveCellaWith2or3iveNeighbourShouldRemainAliveInTheNextGeneration">liveCellaWith2or3iveNeighbourShouldRemainAliveInTheNextGeneration</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/3_WhenYouPlayTheGameOfLife.html">WhenYouPlayTheGameOfLife</a></td><td><a name="aLiveCellWithExactlyTwoLiveNeighbourShouldRemainAliveInTheNextGeneration"></a><a href="com/wakaleo/gameoflife/domain/3_WhenYouPlayTheGameOfLife.html#aLiveCellWithExactlyTwoLiveNeighbourShouldRemainAliveInTheNextGeneration">aLiveCellWithExactlyTwoLiveNeighbourShouldRemainAliveInTheNextGeneration</a></td><td>Success</td><td></td><td>0.007</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/4_WhenYouPrintAGrid.html">WhenYouPrintAGrid</a></td><td><a name="shouldBeAbleToReadAGridOfCellsFromAString"></a><a href="com/wakaleo/gameoflife/domain/4_WhenYouPrintAGrid.html#shouldBeAbleToReadAGridOfCellsFromAString">shouldBeAbleToReadAGridOfCellsFromAString</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/4_WhenYouPrintAGrid.html">WhenYouPrintAGrid</a></td><td><a name="shouldBeAbleToReadAStringGridContainingLiveAndDeadCells"></a><a href="com/wakaleo/gameoflife/domain/4_WhenYouPrintAGrid.html#shouldBeAbleToReadAStringGridContainingLiveAndDeadCells">shouldBeAbleToReadAStringGridContainingLiveAndDeadCells</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/4_WhenYouPrintAGrid.html">WhenYouPrintAGrid</a></td><td><a name="shouldBeAbleToReadALargeStringGridContainingLiveAndDeadCells"></a><a href="com/wakaleo/gameoflife/domain/4_WhenYouPrintAGrid.html#shouldBeAbleToReadALargeStringGridContainingLiveAndDeadCells">shouldBeAbleToReadALargeStringGridContainingLiveAndDeadCells</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/5_WhenYouReadAGridFromAString.html">WhenYouReadAGridFromAString</a></td><td><a name="shouldBeAbleToReadAGridOfCellsFromAString"></a><a href="com/wakaleo/gameoflife/domain/5_WhenYouReadAGridFromAString.html#shouldBeAbleToReadAGridOfCellsFromAString">shouldBeAbleToReadAGridOfCellsFromAString</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><a href="com/wakaleo/gameoflife/domain/5_WhenYouReadAGridFromAString.html">WhenYouReadAGridFromAString</a></td><td><a name="shouldBeAbleToReadAnEmptyGridOfCellsFromAnEmptyString"></a><a href="com/wakaleo/gameoflife/domain/5_WhenYouReadAGridFromAString.html#shouldBeAbleToReadAnEmptyGridOfCellsFromAnEmptyString">shouldBeAbleToReadAnEmptyGridOfCellsFromAnEmptyString</a></td><td>Success</td><td></td><td>0.000</td>
+</tr>
+<tr valign="top" class="TableRowColor">
+<td><