diff --git a/src/main/java/AustralianDollar.java b/src/main/java/AustralianDollar.java new file mode 100644 index 0000000..0c7bdc1 --- /dev/null +++ b/src/main/java/AustralianDollar.java @@ -0,0 +1,6 @@ +public class AustralianDollar extends Currency{ + + public AustralianDollar(double exchangeRate) { + super(exchangeRate, "AU$"); + } +} diff --git a/src/main/java/BritishPound.java b/src/main/java/BritishPound.java new file mode 100644 index 0000000..b43ead6 --- /dev/null +++ b/src/main/java/BritishPound.java @@ -0,0 +1,6 @@ +public class BritishPound extends Currency{ + + public BritishPound(double exchangeRate) { + super(exchangeRate, "\u00A3"); + } +} diff --git a/src/main/java/CanadianDollar.java b/src/main/java/CanadianDollar.java new file mode 100644 index 0000000..ed15cac --- /dev/null +++ b/src/main/java/CanadianDollar.java @@ -0,0 +1,6 @@ +public class CanadianDollar extends Currency{ + + public CanadianDollar(double exchangeRate) { + super(exchangeRate, "CAN$"); + } +} diff --git a/src/main/java/ChineseYuan.java b/src/main/java/ChineseYuan.java new file mode 100644 index 0000000..444fbf5 --- /dev/null +++ b/src/main/java/ChineseYuan.java @@ -0,0 +1,6 @@ +public class ChineseYuan extends Currency { + + public ChineseYuan(double exchangeRate) { + super(exchangeRate, "\u5706"); + } +} diff --git a/src/main/java/Currency.java b/src/main/java/Currency.java new file mode 100644 index 0000000..5f55c2b --- /dev/null +++ b/src/main/java/Currency.java @@ -0,0 +1,57 @@ +public abstract class Currency { + private double exchangeRate; + private String currencySymbol; + + + public Currency(double exchangeRate, String currencySymbol){ + this.exchangeRate = exchangeRate; + this.currencySymbol = currencySymbol; + } + + @Deprecated + public Currency(double exchangeRate){ + this(exchangeRate, null); + } + + protected void changeRate(double newRate){ + this.exchangeRate = newRate; + } + + protected double getRate(){ + return this.exchangeRate; + } + + protected double convertToNewCurrency(double denomination, Currency newCurrency) { + return newCurrency.convertFromDollars(this.convertToDollars(denomination)); + } + + protected double convertFromDollars(double denominationInDollars) { + double workingDollars = multiplyBy100(denominationInDollars); + return divideBy100(Math.round(workingDollars * this.getRate())); + } + + protected double convertToDollars(double denominationInForeignCurrency) { + double workingForeignCurrency = multiplyBy100(denominationInForeignCurrency); + return divideBy100(Math.round(workingForeignCurrency / this.getRate())); + } + + + protected double multiplyBy100(double valueToMultiply) { + double multipliedValue = Math.round(valueToMultiply * 100); + return multipliedValue; + } + + protected double divideBy100(double valueToDivide) { + double dividedValue = valueToDivide / 100; + return dividedValue; + } + + protected String displayWithSymbol (double amount){ + StringBuilder builder = new StringBuilder(); + builder.append(String.format("%4s", this.currencySymbol)).append(" " + amount + "\n"); + return builder.toString(); + } + + + +} diff --git a/src/main/java/DELETEME b/src/main/java/DELETEME deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/Dollar.java b/src/main/java/Dollar.java new file mode 100644 index 0000000..114b91e --- /dev/null +++ b/src/main/java/Dollar.java @@ -0,0 +1,6 @@ +public class Dollar extends Currency { + + public Dollar(double exchangeRate) { + super(exchangeRate, "$"); + } +} diff --git a/src/main/java/Euro.java b/src/main/java/Euro.java new file mode 100644 index 0000000..f5ff639 --- /dev/null +++ b/src/main/java/Euro.java @@ -0,0 +1,6 @@ +public class Euro extends Currency { + + public Euro(double exchangeRate) { + super(exchangeRate, "\u20AC"); + } +} diff --git a/src/main/java/IndianRupee.java b/src/main/java/IndianRupee.java new file mode 100644 index 0000000..d5fcdd6 --- /dev/null +++ b/src/main/java/IndianRupee.java @@ -0,0 +1,6 @@ +public class IndianRupee extends Currency{ + + public IndianRupee(double exchangeRate) { + super(exchangeRate, "\u20A8"); + } +} diff --git a/src/main/java/JapaneseYen.java b/src/main/java/JapaneseYen.java new file mode 100644 index 0000000..a8549fe --- /dev/null +++ b/src/main/java/JapaneseYen.java @@ -0,0 +1,6 @@ +public class JapaneseYen extends Currency { + + public JapaneseYen(double exchangeRate) { + super(exchangeRate, "\u00A5"); + } +} diff --git a/src/main/java/MalaysianRinggit.java b/src/main/java/MalaysianRinggit.java new file mode 100644 index 0000000..5ab71e3 --- /dev/null +++ b/src/main/java/MalaysianRinggit.java @@ -0,0 +1,6 @@ +public class MalaysianRinggit extends Currency{ + + public MalaysianRinggit(double exchangeRate) { + super(exchangeRate, "RM"); + } +} diff --git a/src/main/java/SingaporeDollar.java b/src/main/java/SingaporeDollar.java new file mode 100644 index 0000000..5371e15 --- /dev/null +++ b/src/main/java/SingaporeDollar.java @@ -0,0 +1,6 @@ +public class SingaporeDollar extends Currency { + + public SingaporeDollar(double exchangeRate) { + super(exchangeRate, "S$"); + } +} diff --git a/src/main/java/SwissFranc.java b/src/main/java/SwissFranc.java new file mode 100644 index 0000000..2094aec --- /dev/null +++ b/src/main/java/SwissFranc.java @@ -0,0 +1,6 @@ +public class SwissFranc extends Currency { + + public SwissFranc(double exchangeRate) { + super(exchangeRate, "\u20A3"); + } +} diff --git a/src/test/java/DELETEME b/src/test/java/DELETEME deleted file mode 100644 index e69de29..0000000 diff --git a/src/test/java/TestCurrencies.java b/src/test/java/TestCurrencies.java new file mode 100644 index 0000000..fe1615c --- /dev/null +++ b/src/test/java/TestCurrencies.java @@ -0,0 +1,306 @@ +import org.junit.Assert; +//import org.junit.Before; +import org.junit.Before; +import org.junit.Test; + +public class TestCurrencies { + + Dollar dollar; + AustralianDollar australianDollar; + BritishPound britishPound; + CanadianDollar canadianDollar; + ChineseYuan chineseYuan; + Euro euro; + IndianRupee indianRupee; + JapaneseYen japaneseYen; + MalaysianRinggit malaysianRinggit; + SingaporeDollar singaporeDollar; + SwissFranc swissFranc; + + @Before + public void setUp() { + dollar = new Dollar(1.00); + australianDollar = new AustralianDollar(1.35); + britishPound = new BritishPound(0.82); + canadianDollar = new CanadianDollar(1.32); + chineseYuan = new ChineseYuan(6.92); + euro = new Euro(0.94); + indianRupee = new IndianRupee(68.32); + japaneseYen = new JapaneseYen(115.84); + malaysianRinggit = new MalaysianRinggit(4.47); + singaporeDollar = new SingaporeDollar(1.43); + swissFranc = new SwissFranc(1.01); + } + + @Test + public void testChangeRate(){ + //Given + indianRupee.changeRate(1000); + + //When + double actual = indianRupee.getRate(); + + //Then + double expectedValue = 1000; + System.out.printf(indianRupee.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + + + } + + @Test + public void testMultiplyBy100(){ + //Given + double initialValue = this.indianRupee.getRate(); + + //When + double actual = indianRupee.multiplyBy100(initialValue); + + //Then + double expectedValue = 6832; + System.out.printf(indianRupee.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + + + } + + @Test + public void testDivideBy100(){ + //Given + double initialValue = indianRupee.multiplyBy100(indianRupee.getRate()); + + //When + double actual = indianRupee.divideBy100(initialValue); + + //Then + double expectedValue = 68.32; + System.out.printf(indianRupee.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + } + + @Test + public void testConvertFromDollars(){ + //Given + double initialValue = 1; + + //When + double actual = indianRupee.convertFromDollars(initialValue); + + //Then + double expectedValue = 68.32; + System.out.printf(indianRupee.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + } + + @Test + public void testConvertFromDollarsWithDecimal(){ + //Given + double initialValue = 1.5; + + //When + double actual = indianRupee.convertFromDollars(initialValue); + + //Then + double expectedValue = 102.48; + System.out.printf(indianRupee.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + } + + + @Test + public void testConvertFromDollarsWithDecimal2(){ + //Given + double initialValue = 100.96; + + //When + double actual = australianDollar.convertFromDollars(initialValue); + + //Then + double expectedValue =136.3; + System.out.printf(australianDollar.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + + } + + @Test + public void testConvertToDollars(){ + //Given + double initialValue = 68.32; + + //When + double actual = indianRupee.convertToDollars(initialValue); + + //Then + double expectedValue = 1; + System.out.printf(dollar.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + } + + @Test + public void testConvertToDollarsWithDecimal(){ + //Given + double initialValue = 100.76; + + //When + double actual = chineseYuan.convertToDollars(initialValue); + + //Then + double expectedValue = 14.56; + System.out.printf(chineseYuan.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + } + + @Test + public void testConvertToDollarsWithDecimal2(){ + //Given + double initialValue = 12582.03; + + //When + double actual = canadianDollar.convertToDollars(initialValue); + + //Then + double expectedValue = 9531.84; + System.out.printf(canadianDollar.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + } + + @Test + public void testDollarToEuro(){ + //Given + double initialValue = 100; + + //When + double actual = euro.convertFromDollars(initialValue); + + //Then + double expectedValue =94; + System.out.printf(euro.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + } + + @Test + public void testEuroToDollar(){ + //Given + double initialValue = 100; + + //When + double actual = euro.convertToDollars(initialValue); + + //Then + double expectedValue = 106.38; + System.out.printf(dollar.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + } + + @Test + public void testEuroToBritishPound(){ + //Given + double initialValue = 100; + + //When + double actual = euro.convertToNewCurrency(initialValue, britishPound); + + //Then + double expectedValue = 87.23; + System.out.printf(euro.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + } + + @Test + public void testBritishPoundToIndianRupee(){ + //Given + double initialValue = 100; + + //When + double actual = britishPound.convertToNewCurrency(initialValue, indianRupee); + + //Then + double expectedValue = 8331.62; + System.out.printf(britishPound.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue); + } + + @Test + public void testIndianRupeeToCanadianDollar(){ + //Given + double initialValue = 100; + + //When + double actual = indianRupee.convertToNewCurrency(initialValue, canadianDollar); + + //Then + double expectedValue = 1.93; + System.out.printf(indianRupee.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue);; + } + + @Test + public void testCanadianDollarToSingaporeDollar(){ + //Given + double initialValue = 100; + + //When + double actual = canadianDollar.convertToNewCurrency(initialValue, singaporeDollar); + + //Then + double expectedValue = 108.34; + System.out.printf(canadianDollar.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue);; + } + + @Test + public void testSingaporeDollarToSwissFranc(){ + //Given + double initialValue = 100; + + //When + double actual = singaporeDollar.convertToNewCurrency(initialValue, swissFranc); + + //Then + double expectedValue = 70.63; + System.out.printf(singaporeDollar.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue);; + } + + @Test + public void testSwissFrancToMalaysianRinggit(){ + //Given + double initialValue = 100; + + //When + double actual = swissFranc.convertToNewCurrency(initialValue, malaysianRinggit); + + //Then + double expectedValue = 442.57; + System.out.printf(swissFranc.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue);; + } + + @Test + public void testMalaysianRinggitToJapaneseYen(){ + //Given + double initialValue = 100; + + //When + double actual = malaysianRinggit.convertToNewCurrency(initialValue, japaneseYen); + + //Then + double expectedValue = 2591.34; + System.out.printf(malaysianRinggit.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue);; + } + + @Test + public void testJapaneseYenToChineseYuan(){ + //Given + double initialValue = 100; + + //When + double actual = japaneseYen.convertToNewCurrency(initialValue, chineseYuan); + + //Then + double expectedValue = 5.95; + System.out.printf(japaneseYen.displayWithSymbol(expectedValue)); + Assert.assertTrue(actual == expectedValue);; + } +} diff --git a/target/classes/AustralianDollar.class b/target/classes/AustralianDollar.class new file mode 100644 index 0000000..4179ffd Binary files /dev/null and b/target/classes/AustralianDollar.class differ diff --git a/target/classes/BritishPound.class b/target/classes/BritishPound.class new file mode 100644 index 0000000..53de2f4 Binary files /dev/null and b/target/classes/BritishPound.class differ diff --git a/target/classes/CanadianDollar.class b/target/classes/CanadianDollar.class new file mode 100644 index 0000000..97e2b6c Binary files /dev/null and b/target/classes/CanadianDollar.class differ diff --git a/target/classes/ChineseYuan.class b/target/classes/ChineseYuan.class new file mode 100644 index 0000000..6f70f79 Binary files /dev/null and b/target/classes/ChineseYuan.class differ diff --git a/target/classes/Currency.class b/target/classes/Currency.class new file mode 100644 index 0000000..0adfe7d Binary files /dev/null and b/target/classes/Currency.class differ diff --git a/target/classes/Dollar.class b/target/classes/Dollar.class new file mode 100644 index 0000000..49425b6 Binary files /dev/null and b/target/classes/Dollar.class differ diff --git a/target/classes/Euro.class b/target/classes/Euro.class new file mode 100644 index 0000000..55969ec Binary files /dev/null and b/target/classes/Euro.class differ diff --git a/target/classes/IndianRupee.class b/target/classes/IndianRupee.class new file mode 100644 index 0000000..2ce54f5 Binary files /dev/null and b/target/classes/IndianRupee.class differ diff --git a/target/classes/JapaneseYen.class b/target/classes/JapaneseYen.class new file mode 100644 index 0000000..4c7bc30 Binary files /dev/null and b/target/classes/JapaneseYen.class differ diff --git a/target/classes/MalaysianRinggit.class b/target/classes/MalaysianRinggit.class new file mode 100644 index 0000000..82009c0 Binary files /dev/null and b/target/classes/MalaysianRinggit.class differ diff --git a/target/classes/SingaporeDollar.class b/target/classes/SingaporeDollar.class new file mode 100644 index 0000000..1cc16a4 Binary files /dev/null and b/target/classes/SingaporeDollar.class differ diff --git a/target/classes/SwissFranc.class b/target/classes/SwissFranc.class new file mode 100644 index 0000000..748b053 Binary files /dev/null and b/target/classes/SwissFranc.class differ diff --git a/target/test-classes/TestCurrencies.class b/target/test-classes/TestCurrencies.class new file mode 100644 index 0000000..a0b1dd0 Binary files /dev/null and b/target/test-classes/TestCurrencies.class differ