Skip to content

Commit

Permalink
Merge pull request #85 from Dmitry-Me/equalitycomparison
Browse files Browse the repository at this point in the history
Comparison for equality was heavily duplicated.
  • Loading branch information
joezeng committed Aug 14, 2013
2 parents dbd2994 + 9d51bcc commit 7a796ee
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 10 deletions.
@@ -1,7 +1,6 @@
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.ThreeWayIntegerComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.ThreeWayIntegerComparisonResult;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.IntegerForEqualityComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator.FirstIsSmallerThanSecondDoubleComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator.FirstIsLargerThanSecondDoubleComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters.DoubleToIntConverter;
Expand All @@ -12,9 +11,9 @@ public class IntegerDivider {
public static final int INTEGER_DIVIDE_ZERO_VALUE = 0;

public static int divide(int nFirstInteger, int nSecondInteger){
ThreeWayIntegerComparisonResult denominatorEqualsZeroResult =
ThreeWayIntegerComparator.Compare(nSecondInteger, INTEGER_DIVIDE_ZERO_VALUE);
if(denominatorEqualsZeroResult == ThreeWayIntegerComparisonResult.FirstEqualsSecond){
boolean denominatorEqualsZero =
IntegerForEqualityComparator.areTwoIntegersEqual(nSecondInteger, INTEGER_DIVIDE_ZERO_VALUE);
if (denominatorEqualsZero) {
throw new ArithmeticException("An attempt was made to divide by zero.");
}else{
double dbFirstNumber = IntToDoubleConverter.Convert(nFirstInteger);
Expand Down
@@ -1,14 +1,15 @@
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.ThreeWayIntegerComparisonResult;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.ThreeWayIntegerComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.IntegerForEqualityComparator;

public class NumberIsMultipleOfAnotherNumberVerifier {
public static boolean numberIsMultipleOfAnotherNumber(int nFirstNumber, int nSecondNumber) {
try{
ThreeWayIntegerComparisonResult validationResult =
ThreeWayIntegerComparator.Compare((IntegerDivider.divide(nFirstNumber, nSecondNumber)) * nSecondNumber, nFirstNumber);
if (validationResult == ThreeWayIntegerComparisonResult.FirstEqualsSecond) {
int nDivideFirstIntegerBySecondIntegerResult =
(IntegerDivider.divide(nFirstNumber, nSecondNumber));
int nMultiplyDivisionResultBySecondIntegerResult =
nDivideFirstIntegerBySecondIntegerResult * nSecondNumber;
if (IntegerForEqualityComparator.areTwoIntegersEqual(nMultiplyDivisionResultBySecondIntegerResult, nFirstNumber)) {
return true;
} else {
return false;
Expand Down
@@ -0,0 +1,13 @@
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;

public class IntegerForEqualityComparator {
public static boolean areTwoIntegersEqual(int nFirstInteger, int nSecondInteger) {
ThreeWayIntegerComparisonResult comparisonResult =
ThreeWayIntegerComparator.Compare(nFirstInteger, nSecondInteger);
if (comparisonResult == ThreeWayIntegerComparisonResult.FirstEqualsSecond) {

This comment has been minimized.

Copy link
@sheepdreamofandroids

sheepdreamofandroids Jul 28, 2020

What if the result of this comparison is neither true nor false?

This comment has been minimized.

Copy link
@joezeng

joezeng Jul 28, 2020

Author Contributor

That's what the catch-all "else" clause at the end is for. "Neither true nor false" is treated as false, since we want to be strict about our equality comparisons.

This comment has been minimized.

Copy link
@sheepdreamofandroids

sheepdreamofandroids Aug 10, 2020

I'm not talking about the value of comparisonResult but about the result of the == operator.
I think you need to wrap this in:

try {
  ...
} catch(MyLogicIsBetterThanYourLogicThreeWayBooleanValueErrorExceptionError e) {
  log.error("Alternate universe detected.", e);
  return maybe;
}
return true;
} else {
return false;
}
}
}

0 comments on commit 7a796ee

Please sign in to comment.