Commit ac9703f

mo <mo.khan@gmail.com>
2019-06-10 01:09:39
test getCompany
1 parent 8de5104
src/Q3/CreditCard.java
@@ -9,7 +9,25 @@ public class CreditCard {
   private String ccNumber;
   private String company;
 
-  public CreditCard(String num) {}
+  public CreditCard(String num) {
+    this.ccNumber = num;
+    if (validateCompany()) {
+      switch (num.charAt(0)) {
+        case '3':
+          this.company = "American Express";
+          break;
+        case '4':
+          this.company = "Visa";
+          break;
+        case '5':
+          this.company = "MasterCard";
+          break;
+        case '6':
+          this.company = "Discover";
+          break;
+      }
+    }
+  }
 
   public int getEvenSum() {
     return evenSum;
@@ -31,16 +49,19 @@ public class CreditCard {
     return this.company;
   }
 
-  public boolean isDivisibleBy10() {
+  public boolean isValid() {
     return false;
   }
 
-  public boolean isValid() {
+  public boolean isDivisibleBy10() {
     return false;
   }
 
   public boolean validateCompany() {
-    return false;
+    return this.ccNumber.startsWith("4")
+        || this.ccNumber.startsWith("5")
+        || this.ccNumber.startsWith("37")
+        || this.ccNumber.startsWith("6");
   }
 
   public boolean validateLength() {
src/Q3/CreditCardTest.java
@@ -6,6 +6,8 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 public class CreditCardTest extends TestCase {
+  private CreditCard subject;
+
   public CreditCardTest(String testName) {
     super(testName);
   }
@@ -18,4 +20,30 @@ public class CreditCardTest extends TestCase {
     assertEquals(true, true);
     assertTrue(true);
   }
+
+  // 4 for Visa cards
+  // 5 for Master cards,
+  // 37 for American Express cards,
+  // 6 for Discover cards.
+  public void test_getCompany() {
+    assertEquals(CreateSUT("4111111111111111").getCompany(), "Visa");
+    assertEquals(CreateSUT("5555555555554444").getCompany(), "MasterCard");
+    assertEquals(CreateSUT("378282246310005").getCompany(), "American Express");
+    assertEquals(CreateSUT("6011111111111117").getCompany(), "Discover");
+  }
+
+  // public void test_isValid() {
+  // assertTrue(CreateSUT("49927398716").isValid());
+  // assertFalse(CreateSUT("49927398717").isValid());
+  // assertFalse(CreateSUT("1234567812345678").isValid());
+  // assertTrue(CreateSUT("1234567812345670").isValid());
+  // }
+
+  private CreditCard CreateSUT(String number) {
+    return new CreditCard(number);
+  }
+
+  private CreditCard CreateSUT() {
+    return new CreditCard("1234567812345670");
+  }
 }