From d7b8abec6446c77de256664a1b1d41de8610bb9f Mon Sep 17 00:00:00 2001 From: Manuel Maxera <95315128+manumafe98@users.noreply.github.com> Date: Wed, 14 Feb 2024 11:08:13 -0300 Subject: [PATCH] Remove redundant analyzer comments for ``hamming`` and ``two-fer`` (#122) * Gradlew.bat update * Removing redundant analyzer comments for hamming exercise * Removing redundant analyzer comments for two fer exercise * Removing tests that there aren't used anymore * Applying suggestions Restoring MustUseStringCharAtOrCodePointAt analyzer functionality Deleting unused usesConditional variable Removing tests/hamming/.meta/src/reference/java/Hamming.java and tests/hamming/.meta/tests.toml * Removing validateNotNull outdated check --- .../exercises/hamming/HammingAnalyzer.java | 21 ------- .../exercises/hamming/HammingWalker.java | 58 ------------------- .../hamming/MustCalculateHammingDistance.java | 18 ------ .../hamming/MustThrowInConstructor.java | 18 ------ .../MustUseConditionalLogicInConstructor.java | 18 ------ .../exercises/hamming/MustUseConstructor.java | 18 ------ .../exercises/twofer/TwoferAnalyzer.java | 6 -- .../exercises/twofer/TwoferWalker.java | 11 ---- .../exercises/twofer/UseConditionalLogic.java | 18 ------ .../hamming/HammingAnalyzerTest.java | 4 -- .../exercises/twofer/TwoferAnalyzerTest.java | 3 - .../DoesNotThrowInConstructor.java.txt | 18 ------ .../NoCalculationOfHammingDistance.java.txt | 30 ---------- .../NoConditionalInConstructor.java.txt | 14 ----- .../exercises/hamming/NoConstructor.java.txt | 15 ----- .../twofer/NoConditionalLogic.java.txt | 8 --- .../exercises/twofer/UsesLambda.java.txt | 11 ---- .../exercises/twofer/UsesLoop.java.txt | 11 ---- .../.meta/src/reference/java/Hamming.java | 26 --------- tests/hamming/.meta/tests.toml | 30 ---------- tests/hamming/.meta/version | 1 - tests/hamming/src/main/java/Hamming.java | 16 ----- 22 files changed, 373 deletions(-) delete mode 100644 src/main/java/analyzer/exercises/hamming/MustCalculateHammingDistance.java delete mode 100644 src/main/java/analyzer/exercises/hamming/MustThrowInConstructor.java delete mode 100644 src/main/java/analyzer/exercises/hamming/MustUseConditionalLogicInConstructor.java delete mode 100644 src/main/java/analyzer/exercises/hamming/MustUseConstructor.java delete mode 100644 src/main/java/analyzer/exercises/twofer/UseConditionalLogic.java delete mode 100644 src/test/resources/analyzer/exercises/hamming/DoesNotThrowInConstructor.java.txt delete mode 100644 src/test/resources/analyzer/exercises/hamming/NoCalculationOfHammingDistance.java.txt delete mode 100644 src/test/resources/analyzer/exercises/hamming/NoConditionalInConstructor.java.txt delete mode 100644 src/test/resources/analyzer/exercises/hamming/NoConstructor.java.txt delete mode 100644 src/test/resources/analyzer/exercises/twofer/NoConditionalLogic.java.txt delete mode 100644 src/test/resources/analyzer/exercises/twofer/UsesLambda.java.txt delete mode 100644 src/test/resources/analyzer/exercises/twofer/UsesLoop.java.txt delete mode 100644 tests/hamming/.meta/src/reference/java/Hamming.java delete mode 100644 tests/hamming/.meta/tests.toml delete mode 100644 tests/hamming/.meta/version diff --git a/src/main/java/analyzer/exercises/hamming/HammingAnalyzer.java b/src/main/java/analyzer/exercises/hamming/HammingAnalyzer.java index 9d75df7a..b14106a8 100644 --- a/src/main/java/analyzer/exercises/hamming/HammingAnalyzer.java +++ b/src/main/java/analyzer/exercises/hamming/HammingAnalyzer.java @@ -22,27 +22,6 @@ public void analyze(Solution solution, Analysis analysis) { solution.getCompilationUnits().forEach(cu -> cu.walk(ClassOrInterfaceDeclaration.class, walker)); - if (!walker.hasConstructor()) { - analysis.addComment(new MustUseConstructor()); - return; - } - - if (!walker.constructorHasIfStatements() && !walker.constructorHasMethodCalls()) { - analysis.addComment(new MustUseConditionalLogicInConstructor()); - return; - } - - if (!walker.constructorThrowsIllegalArgument()) { - analysis.addComment(new MustThrowInConstructor()); - return; - } - - if (!walker.getHammingDistanceMethodMayCalculateDistance() - && !walker.constructorMayCalculateDistance()) { - analysis.addComment(new MustCalculateHammingDistance()); - return; - } - if (walker.usesCharacterLiterals()) { analysis.addComment(new AvoidCharacterLiterals()); return; diff --git a/src/main/java/analyzer/exercises/hamming/HammingWalker.java b/src/main/java/analyzer/exercises/hamming/HammingWalker.java index 70423131..9a1c15d4 100644 --- a/src/main/java/analyzer/exercises/hamming/HammingWalker.java +++ b/src/main/java/analyzer/exercises/hamming/HammingWalker.java @@ -21,8 +21,6 @@ class HammingWalker implements Consumer { private ConstructorDeclaration constructor; private final Map> methods = new HashMap<>(); private final Set methodsCalledByConstructor = new HashSet<>(); - private boolean constructorHasIfStatements; - private boolean constructorThrowsIllegalArgumentDirectly; private boolean constructorMayCalculateDistanceDirectly; private final Set methodsCalledByGetHammingDistance = new HashSet<>(); private boolean getHammingDistanceMayCalculateDistanceDirectly; @@ -62,13 +60,6 @@ private void walkConstructor(ConstructorDeclaration foundConstructor) { } private void walkConstructorStatement(Statement statement) { - if (statement.isIfStmt()) { - constructorHasIfStatements = true; - } - - if (isThrowNewIllegalArgument(statement)) { - constructorThrowsIllegalArgumentDirectly = true; - } if (statementMayCalculateHammingDistance(statement)) { constructorMayCalculateDistanceDirectly = true; @@ -79,21 +70,6 @@ private void walkConstructorStatement(Statement statement) { recursivelyAddMethodsCalled(methodName, methodsCalledByConstructor)); } - private boolean isThrowNewIllegalArgument(Statement statement) { - return statement.findAll(ThrowStmt.class).stream() - .anyMatch(this::isCreatingIllegalArgumentException); - } - - private boolean isCreatingIllegalArgumentException(ThrowStmt throwStmt) { - return throwStmt.getExpression().isObjectCreationExpr() - && throwStmt - .getExpression() - .asObjectCreationExpr() - .getType() - .getNameAsString() - .equals("IllegalArgumentException"); - } - private boolean isMethodCall(Statement statement) { return !statement.findAll(MethodCallExpr.class).isEmpty(); } @@ -160,44 +136,10 @@ private Stream getMethodsCalledBy(BlockStmt body) { .flatMap(this::getMethodCallNames); } - public boolean hasConstructor() { - return constructor != null; - } - - public boolean constructorHasIfStatements() { - return constructorHasIfStatements; - } - public boolean constructorHasMethodCalls() { return !methodsCalledByConstructor.isEmpty(); } - public boolean constructorThrowsIllegalArgument() { - return constructorThrowsIllegalArgumentDirectly - || constructorThrowsIllegarArgumentIndirectly(); - } - - private boolean constructorThrowsIllegarArgumentIndirectly() { - return methodsCalledByConstructor.stream() - .anyMatch(this::methodThrowsIllegalArgumentException); - } - - private boolean methodThrowsIllegalArgumentException(String methodName) { - return methods.getOrDefault(methodName, List.of()).stream() - .anyMatch(this::methodThrowsIllegalArgumentException); - } - - private boolean methodThrowsIllegalArgumentException(MethodDeclaration method) { - return method.getBody() - .map(this::methodBodyThrowsIllegalArgumentException) - .orElse(false); - } - - private boolean methodBodyThrowsIllegalArgumentException(BlockStmt body) { - return body.getStatements().stream() - .anyMatch(this::isThrowNewIllegalArgument); - } - public boolean constructorMayCalculateDistance() { return constructorMayCalculateDistanceDirectly || constructorCallsMethodThatMayCalculateDistance(); diff --git a/src/main/java/analyzer/exercises/hamming/MustCalculateHammingDistance.java b/src/main/java/analyzer/exercises/hamming/MustCalculateHammingDistance.java deleted file mode 100644 index 4c547122..00000000 --- a/src/main/java/analyzer/exercises/hamming/MustCalculateHammingDistance.java +++ /dev/null @@ -1,18 +0,0 @@ -package analyzer.exercises.hamming; - -import analyzer.Comment; - -/** - * @see Markdown Template - */ -class MustCalculateHammingDistance extends Comment { - @Override - public String getKey() { - return "java.hamming.must_calculate_hamming_distance"; - } - - @Override - public Type getType() { - return Type.ACTIONABLE; - } -} diff --git a/src/main/java/analyzer/exercises/hamming/MustThrowInConstructor.java b/src/main/java/analyzer/exercises/hamming/MustThrowInConstructor.java deleted file mode 100644 index 419d48c8..00000000 --- a/src/main/java/analyzer/exercises/hamming/MustThrowInConstructor.java +++ /dev/null @@ -1,18 +0,0 @@ -package analyzer.exercises.hamming; - -import analyzer.Comment; - -/** - * @see Markdown Template - */ -class MustThrowInConstructor extends Comment { - @Override - public String getKey() { - return "java.hamming.must_throw_in_constructor"; - } - - @Override - public Type getType() { - return Type.ESSENTIAL; - } -} diff --git a/src/main/java/analyzer/exercises/hamming/MustUseConditionalLogicInConstructor.java b/src/main/java/analyzer/exercises/hamming/MustUseConditionalLogicInConstructor.java deleted file mode 100644 index 33bd29ab..00000000 --- a/src/main/java/analyzer/exercises/hamming/MustUseConditionalLogicInConstructor.java +++ /dev/null @@ -1,18 +0,0 @@ -package analyzer.exercises.hamming; - -import analyzer.Comment; - -/** - * @see Markdown Template - */ -class MustUseConditionalLogicInConstructor extends Comment { - @Override - public String getKey() { - return "java.hamming.must_use_conditional_logic_in_constructor"; - } - - @Override - public Type getType() { - return Type.ESSENTIAL; - } -} diff --git a/src/main/java/analyzer/exercises/hamming/MustUseConstructor.java b/src/main/java/analyzer/exercises/hamming/MustUseConstructor.java deleted file mode 100644 index 061e5318..00000000 --- a/src/main/java/analyzer/exercises/hamming/MustUseConstructor.java +++ /dev/null @@ -1,18 +0,0 @@ -package analyzer.exercises.hamming; - -import analyzer.Comment; - -/** - * @see Markdown Template - */ -class MustUseConstructor extends Comment { - @Override - public String getKey() { - return "java.hamming.must_use_constructor"; - } - - @Override - public Type getType() { - return Type.ESSENTIAL; - } -} diff --git a/src/main/java/analyzer/exercises/twofer/TwoferAnalyzer.java b/src/main/java/analyzer/exercises/twofer/TwoferAnalyzer.java index b076b144..9f25e9d4 100644 --- a/src/main/java/analyzer/exercises/twofer/TwoferAnalyzer.java +++ b/src/main/java/analyzer/exercises/twofer/TwoferAnalyzer.java @@ -20,12 +20,6 @@ public void analyze(Solution solution, Analysis analysis) { if (walker.hasHardCodedTestCases) { analysis.addComment(new AvoidHardCodedTestCases()); - } else if (walker.usesLambda) { - // could be used later for additional comments? - } else if (walker.usesLoops) { - // could be used later for additional comments? - } else if (!walker.hasMethodCall && !(walker.usesIfStatement || walker.usesConditional)) { - analysis.addComment(new UseConditionalLogic()); } else if (walker.usesFormat) { analysis.addComment(new AvoidStringFormat()); } else if (walker.returnCount > 1) { diff --git a/src/main/java/analyzer/exercises/twofer/TwoferWalker.java b/src/main/java/analyzer/exercises/twofer/TwoferWalker.java index 38536a92..f5c8c943 100644 --- a/src/main/java/analyzer/exercises/twofer/TwoferWalker.java +++ b/src/main/java/analyzer/exercises/twofer/TwoferWalker.java @@ -1,8 +1,6 @@ package analyzer.exercises.twofer; import com.github.javaparser.ast.Node; -import com.github.javaparser.ast.expr.ConditionalExpr; -import com.github.javaparser.ast.expr.LambdaExpr; import com.github.javaparser.ast.expr.MethodCallExpr; import com.github.javaparser.ast.expr.StringLiteralExpr; import com.github.javaparser.ast.stmt.*; @@ -12,10 +10,7 @@ class TwoferWalker implements Consumer { boolean hasHardCodedTestCases; boolean usesIfStatement; - boolean usesConditional; boolean hasMethodCall; - boolean usesLambda; - boolean usesLoops; boolean usesFormat; int returnCount; @@ -27,18 +22,12 @@ public void accept(Node node) { this.returnCount++; } else if (node instanceof IfStmt) { this.usesIfStatement = true; - } else if (node instanceof ConditionalExpr) { - this.usesConditional = true; } else if (node instanceof MethodCallExpr && !this.hasMethodCall) { this.hasMethodCall = true; if (((MethodCallExpr) node).getName().toString().equals("format")) { this.usesFormat = true; } - } else if (node instanceof LambdaExpr) { - this.usesLambda = true; - } else if (node instanceof WhileStmt || node instanceof ForStmt || node instanceof ForEachStmt) { - this.usesLoops = true; } } } \ No newline at end of file diff --git a/src/main/java/analyzer/exercises/twofer/UseConditionalLogic.java b/src/main/java/analyzer/exercises/twofer/UseConditionalLogic.java deleted file mode 100644 index 50a432a9..00000000 --- a/src/main/java/analyzer/exercises/twofer/UseConditionalLogic.java +++ /dev/null @@ -1,18 +0,0 @@ -package analyzer.exercises.twofer; - -import analyzer.Comment; - -/** - * @see Markdown Template - */ -class UseConditionalLogic extends Comment { - @Override - public String getKey() { - return "java.two-fer.use_conditional_logic"; - } - - @Override - public Type getType() { - return Type.ESSENTIAL; - } -} diff --git a/src/test/java/analyzer/exercises/hamming/HammingAnalyzerTest.java b/src/test/java/analyzer/exercises/hamming/HammingAnalyzerTest.java index 48a72b1f..357238f0 100644 --- a/src/test/java/analyzer/exercises/hamming/HammingAnalyzerTest.java +++ b/src/test/java/analyzer/exercises/hamming/HammingAnalyzerTest.java @@ -17,10 +17,6 @@ public class HammingAnalyzerTest { private static Stream testCases() { return Stream.of( - Arguments.of("NoConstructor.java.txt", new Comment[]{new MustUseConstructor()}), - Arguments.of("NoConditionalInConstructor.java.txt", new Comment[]{new MustUseConditionalLogicInConstructor()}), - Arguments.of("DoesNotThrowInConstructor.java.txt", new Comment[]{new MustThrowInConstructor()}), - Arguments.of("NoCalculationOfHammingDistance.java.txt", new Comment[]{new MustCalculateHammingDistance()}), Arguments.of("UsesCharacterLiterals.java.txt", new Comment[]{new AvoidCharacterLiterals()}), Arguments.of("MustUseCharAtOrCodePointAt.java.txt", new Comment[]{new MustUseStringCharAtOrCodePointAt()}), Arguments.of("NestedValidation.java.txt", new Comment[]{new CalculateDistanceInConstructor()}), diff --git a/src/test/java/analyzer/exercises/twofer/TwoferAnalyzerTest.java b/src/test/java/analyzer/exercises/twofer/TwoferAnalyzerTest.java index e0b3fd35..86609226 100644 --- a/src/test/java/analyzer/exercises/twofer/TwoferAnalyzerTest.java +++ b/src/test/java/analyzer/exercises/twofer/TwoferAnalyzerTest.java @@ -16,10 +16,7 @@ public class TwoferAnalyzerTest { private static Stream testCases() { return Stream.of( - Arguments.of("UsesLambda.java.txt", new Comment[0]), - Arguments.of("UsesLoop.java.txt", new Comment[0]), Arguments.of("HardCodedTestCases.java.txt", new Comment[]{new AvoidHardCodedTestCases()}), - Arguments.of("NoConditionalLogic.java.txt", new Comment[]{new UseConditionalLogic()}), Arguments.of("UsesStringFormat.java.txt", new Comment[]{new AvoidStringFormat()}), Arguments.of("UsesMultipleReturns.java.txt", new Comment[]{new UseOneReturn()}), Arguments.of("OptimalNoTernary.java.txt", new Comment[]{new UseTernaryOperator()}), diff --git a/src/test/resources/analyzer/exercises/hamming/DoesNotThrowInConstructor.java.txt b/src/test/resources/analyzer/exercises/hamming/DoesNotThrowInConstructor.java.txt deleted file mode 100644 index 87e1870b..00000000 --- a/src/test/resources/analyzer/exercises/hamming/DoesNotThrowInConstructor.java.txt +++ /dev/null @@ -1,18 +0,0 @@ -import java.util.stream.IntStream; - -/** Constructor must throw IllegalArgumentException. */ -class Hamming { - private final int hammingDistance; - - Hamming(String leftStrand, String rightStrand) { - if (leftStrand.isEmpty()) { - this.hammingDistance = 0; - } else { - this.hammingDistance = 1; - } - } - - int getHammingDistance() { - return hammingDistance; - } -} \ No newline at end of file diff --git a/src/test/resources/analyzer/exercises/hamming/NoCalculationOfHammingDistance.java.txt b/src/test/resources/analyzer/exercises/hamming/NoCalculationOfHammingDistance.java.txt deleted file mode 100644 index 4a62b051..00000000 --- a/src/test/resources/analyzer/exercises/hamming/NoCalculationOfHammingDistance.java.txt +++ /dev/null @@ -1,30 +0,0 @@ -import java.util.stream.IntStream; - -/** Must actually calculate the hamming distance somewhere. */ -class Hamming { - private final int hammingDistance; - - Hamming(String leftStrand, String rightStrand) { - validateStrandsHaveEqualLength(leftStrand, rightStrand); - - hammingDistance = 0; - } - - private void validateStrandsHaveEqualLength() { - if (leftStrand.length() == rightStrand.length()) { - return; - } - if (leftStrand.isEmpty()) { - throw new IllegalArgumentException("left strand must not be empty."); - } - if (rightStrand.isEmpty()) { - throw new IllegalArgumentException("right strand must not be empty."); - } - throw new IllegalArgumentException( - "leftStrand and rightStrand must be of equal length."); - } - - int getHammingDistance() { - return hammingDistance; - } -} \ No newline at end of file diff --git a/src/test/resources/analyzer/exercises/hamming/NoConditionalInConstructor.java.txt b/src/test/resources/analyzer/exercises/hamming/NoConditionalInConstructor.java.txt deleted file mode 100644 index 8d389c12..00000000 --- a/src/test/resources/analyzer/exercises/hamming/NoConditionalInConstructor.java.txt +++ /dev/null @@ -1,14 +0,0 @@ -import java.util.stream.IntStream; - -/** Constructor must have conditional logic. */ -class Hamming { - private final int hammingDistance; - - Hamming(String leftStrand, String rightStrand) { - this.hammingDistance = 0; - } - - int getHammingDistance() { - return hammingDistance; - } -} \ No newline at end of file diff --git a/src/test/resources/analyzer/exercises/hamming/NoConstructor.java.txt b/src/test/resources/analyzer/exercises/hamming/NoConstructor.java.txt deleted file mode 100644 index d38d1bb4..00000000 --- a/src/test/resources/analyzer/exercises/hamming/NoConstructor.java.txt +++ /dev/null @@ -1,15 +0,0 @@ -import java.util.stream.IntStream; - -/** Must use a custom constructor that takes two strings. */ -class Hamming { - private final int hammingDistance; - - /** Not the right type params. */ - Hamming(int hammingDistance) { - this.hammingDistance = hammingDistance; - } - - int getHammingDistance() { - return hammingDistance; - } -} \ No newline at end of file diff --git a/src/test/resources/analyzer/exercises/twofer/NoConditionalLogic.java.txt b/src/test/resources/analyzer/exercises/twofer/NoConditionalLogic.java.txt deleted file mode 100644 index e187582a..00000000 --- a/src/test/resources/analyzer/exercises/twofer/NoConditionalLogic.java.txt +++ /dev/null @@ -1,8 +0,0 @@ -package analyzer.exercises.twofer; - -/** Missing necessary conditional logic. */ -public class Twofer { - public String twofer(String name) { - return "One for you, one for me."; - } -} \ No newline at end of file diff --git a/src/test/resources/analyzer/exercises/twofer/UsesLambda.java.txt b/src/test/resources/analyzer/exercises/twofer/UsesLambda.java.txt deleted file mode 100644 index d66b75fb..00000000 --- a/src/test/resources/analyzer/exercises/twofer/UsesLambda.java.txt +++ /dev/null @@ -1,11 +0,0 @@ -package analyzer.exercises.twofer; - -/** Using lambdas probably deserves a mentor review. */ -public class Twofer { - public String twofer(String name) { - Predicate isNull = s -> s == null; - if (isNull.test(name)) - return "One for you, one for me."; - return "One for " + name + ", one for me."; - } -} \ No newline at end of file diff --git a/src/test/resources/analyzer/exercises/twofer/UsesLoop.java.txt b/src/test/resources/analyzer/exercises/twofer/UsesLoop.java.txt deleted file mode 100644 index 76b9a315..00000000 --- a/src/test/resources/analyzer/exercises/twofer/UsesLoop.java.txt +++ /dev/null @@ -1,11 +0,0 @@ -package analyzer.exercises.twofer; - -/** Using loops deserves mentor review. */ -public class Twofer { - public String twofer(String name) { - for (int i = 0; i < 10; i++) { - // noop - } - return "One for " + name + ", one for me."; - } -} \ No newline at end of file diff --git a/tests/hamming/.meta/src/reference/java/Hamming.java b/tests/hamming/.meta/src/reference/java/Hamming.java deleted file mode 100644 index 7db3984d..00000000 --- a/tests/hamming/.meta/src/reference/java/Hamming.java +++ /dev/null @@ -1,26 +0,0 @@ -import java.util.function.IntPredicate; -import java.util.stream.IntStream; - -class Hamming { - private final int hammingDistance; - - Hamming(String leftStrand, String rightStrand) { - String exceptionMessage = "leftStrand and rightStrand must be of equal length."; - if (leftStrand.length() != rightStrand.length()) { - if (leftStrand.isEmpty()) { - exceptionMessage = "left strand must not be empty."; - } - if (rightStrand.isEmpty()) { - exceptionMessage = "right strand must not be empty."; - } - throw new IllegalArgumentException(exceptionMessage); - } - - IntPredicate areNotEqual = index -> leftStrand.charAt(index) != rightStrand.charAt(index); - hammingDistance = (int) IntStream.range(0, leftStrand.length()).filter(areNotEqual).count(); - } - - int getHammingDistance() { - return hammingDistance; - } -} diff --git a/tests/hamming/.meta/tests.toml b/tests/hamming/.meta/tests.toml deleted file mode 100644 index b2f80f48..00000000 --- a/tests/hamming/.meta/tests.toml +++ /dev/null @@ -1,30 +0,0 @@ -# This is an auto-generated file. Regular comments will be removed when this -# file is regenerated. Regenerating will not touch any manually added keys, -# so comments can be added in a "comment" key. - -[f6dcb64f-03b0-4b60-81b1-3c9dbf47e887] -description = "empty strands" - -[54681314-eee2-439a-9db0-b0636c656156] -description = "single letter identical strands" - -[294479a3-a4c8-478f-8d63-6209815a827b] -description = "single letter different strands" - -[9aed5f34-5693-4344-9b31-40c692fb5592] -description = "long identical strands" - -[cd2273a5-c576-46c8-a52b-dee251c3e6e5] -description = "long different strands" - -[919f8ef0-b767-4d1b-8516-6379d07fcb28] -description = "disallow first strand longer" - -[8a2d4ed0-ead5-4fdd-924d-27c4cf56e60e] -description = "disallow second strand longer" - -[5dce058b-28d4-4ca7-aa64-adfe4e17784c] -description = "disallow left empty strand" - -[38826d4b-16fb-4639-ac3e-ba027dec8b5f] -description = "disallow right empty strand" diff --git a/tests/hamming/.meta/version b/tests/hamming/.meta/version deleted file mode 100644 index 276cbf9e..00000000 --- a/tests/hamming/.meta/version +++ /dev/null @@ -1 +0,0 @@ -2.3.0 diff --git a/tests/hamming/src/main/java/Hamming.java b/tests/hamming/src/main/java/Hamming.java index a3998156..7890e831 100644 --- a/tests/hamming/src/main/java/Hamming.java +++ b/tests/hamming/src/main/java/Hamming.java @@ -12,25 +12,9 @@ class Hamming { private void validate(String leftStrand, String rightStrand) { - validateNotNull(leftStrand, rightStrand); - validateNotOneEmpty(leftStrand, rightStrand); validateSameLength(leftStrand, rightStrand); } - private void validateNotNull(String leftStrand, String rightStrand) { - if (leftStrand == null || rightStrand == null) { - throw new IllegalArgumentException("Either left or right stand is null"); - } - } - - private void validateNotOneEmpty(String leftStrand, String rightStrand) { - if (leftStrand.length() == 0 && rightStrand.length() > 0) { - throw new IllegalArgumentException("left strand must not be empty."); - } else if (rightStrand.length() == 0 && leftStrand.length() > 0) { - throw new IllegalArgumentException("right strand must not be empty."); - } - } - private void validateSameLength(String leftStrand, String rightStrand) { if (leftStrand.length() != rightStrand.length()) { throw new IllegalArgumentException("leftStrand and rightStrand must be of equal length.");