Commit 7ca950e
Changed files (2)
src/Q3/CreditCard.java
@@ -12,6 +12,16 @@ public class CreditCard {
public CreditCard(String num) {
this.ccNumber = num;
this.company = this.identifyCompany(num);
+ String reversed = new StringBuilder(num).reverse().toString();
+ for (int i = 0; i < reversed.length(); i++) {
+ if (!Character.isDigit(reversed.charAt(i))) break;
+
+ int digit = Character.getNumericValue(reversed.charAt(i));
+ if ((i + 1) % 2 == 0) {
+ } else {
+ this.oddSum += digit;
+ }
+ }
}
public int getEvenSum() {
@@ -35,7 +45,7 @@ public class CreditCard {
}
public boolean isValid() {
- return this.validateCompany() && this.validateLength();
+ return this.validateCompany() && this.validateLength() && this.validateNumber();
}
public boolean isDivisibleBy10() {
src/Q3/CreditCardTest.java
@@ -16,11 +16,6 @@ public class CreditCardTest extends TestCase {
return new TestSuite(CreditCardTest.class);
}
- public void testTruthy() {
- assertEquals(true, true);
- assertTrue(true);
- }
-
public void test_getCompany() {
assertEquals(CreateSUT("4111111111111111").getCompany(), "Visa");
assertEquals(CreateSUT("5555555555554444").getCompany(), "MasterCard");
@@ -42,16 +37,19 @@ public class CreditCardTest extends TestCase {
assertFalse(CreateSUT("hello").validateNumber());
}
- // public void test_getEvenSum() {
- // assertEquals(CreateSUT("4388576018402626").getEvenSum(), 0);
- // }
+ public void test_isValid() {
+ assertFalse(CreateSUT("49927398717").isValid());
+ assertFalse(CreateSUT("1234567812345678").isValid());
+ assertTrue(CreateSUT("4111111111111111").isValid());
+ assertTrue(CreateSUT("5555555555554444").isValid());
+ assertTrue(CreateSUT("378282246310005").isValid());
+ assertTrue(CreateSUT("6011111111111117").isValid());
+ }
- // public void test_isValid() {
- // assertTrue(CreateSUT("49927398716").isValid());
- // assertFalse(CreateSUT("49927398717").isValid());
- // assertFalse(CreateSUT("1234567812345678").isValid());
- // assertTrue(CreateSUT("1234567812345670").isValid());
- // }
+ public void test_getOddSum() {
+ assertEquals(42, CreateSUT("49927398716").getOddSum());
+ assertEquals(38, CreateSUT("4388576018402626").getOddSum());
+ }
private CreditCard CreateSUT(String number) {
return new CreditCard(number);