diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..1cce771
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/.project b/.project
new file mode 100644
index 0000000..beff7e3
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ refactor-kata
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/src/main/java/com/digite/kata/refactoring/AmountInterface.java b/src/main/java/com/digite/kata/refactoring/AmountInterface.java
new file mode 100644
index 0000000..0ee87fc
--- /dev/null
+++ b/src/main/java/com/digite/kata/refactoring/AmountInterface.java
@@ -0,0 +1,7 @@
+package com.digite.kata.refactoring;
+
+public interface AmountInterface
+{
+ public int getPriceCode();
+ public double getAmount(int a_rentalDays);
+}
diff --git a/src/main/java/com/digite/kata/refactoring/ChildrenMovie.java b/src/main/java/com/digite/kata/refactoring/ChildrenMovie.java
new file mode 100644
index 0000000..7625409
--- /dev/null
+++ b/src/main/java/com/digite/kata/refactoring/ChildrenMovie.java
@@ -0,0 +1,22 @@
+package com.digite.kata.refactoring;
+
+public class ChildrenMovie implements AmountInterface {
+ @Override
+ public int getPriceCode() {
+ return Movie.CHILDRENS;
+ }
+
+ @Override
+ public double getAmount(int a_rentalDays)
+ {
+ /*
+ * thisAmount += 1.5; if (each.getDaysRented() > 3) thisAmount +=
+ * (each.getDaysRented() - 3) * 1.5;
+ */
+ double w_rentAmount = 1.5;
+ if (a_rentalDays > 3)
+ w_rentAmount += (a_rentalDays - 3) * 1.5;
+ return w_rentAmount;
+ }
+
+}
diff --git a/src/main/java/com/digite/kata/refactoring/JTestMovie.java b/src/main/java/com/digite/kata/refactoring/JTestMovie.java
new file mode 100644
index 0000000..c259c09
--- /dev/null
+++ b/src/main/java/com/digite/kata/refactoring/JTestMovie.java
@@ -0,0 +1,37 @@
+package com.digite.kata.refactoring;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.Test;
+
+public class JTestMovie
+{
+ @Test
+ public void testRegularMovie()
+ {
+ Movie w_movieObj = new Movie("Movie1", 0);
+ w_movieObj.setPriceCode(4);
+ AmountInterface w_regMov = new RegularMovie();
+ double w_amount = w_movieObj.getAmount(w_movieObj, w_regMov);
+ assertEquals(w_amount, 5);
+ }
+
+ @Test
+ public void testChildrenMovie()
+ {
+ Movie w_movieObj = new Movie("Movie2", 2);
+ w_movieObj.setPriceCode(4);
+ AmountInterface w_childMovie = new ChildrenMovie();
+ double w_amount = w_movieObj.getAmount(w_movieObj, w_childMovie);
+ assertEquals(w_amount, 3);
+ }
+
+ @Test
+ public void testNewReleaseMovie()
+ {
+ Movie w_movieObj = new Movie("Movie3", 1);
+ w_movieObj.setPriceCode(4);
+ AmountInterface w_regMov = new NewReleaseMovie();
+ double w_amount = w_movieObj.getAmount(w_movieObj, w_regMov);
+ assertEquals(w_amount, 12);
+ }
+}
diff --git a/src/main/java/com/digite/kata/refactoring/Movie.java b/src/main/java/com/digite/kata/refactoring/Movie.java
index 2eb91d5..2a765df 100644
--- a/src/main/java/com/digite/kata/refactoring/Movie.java
+++ b/src/main/java/com/digite/kata/refactoring/Movie.java
@@ -1,13 +1,13 @@
package com.digite.kata.refactoring;
public class Movie {
- public static final int CHILDRENS = 2;
- public static final int REGULAR = 0;
- public static final int NEW_RELEASE = 1;
- private String _title;
- private int _priceCode;
-
- public Movie(String title, int priceCode) {
+ public static final int CHILDRENS = 2;
+ public static final int NEW_RELEASE = 1;
+ public static final int REGULAR = 0;
+ private String _title;
+ private int _priceCode;
+
+ public Movie(String title, int priceCode) {
_title = title;
_priceCode = priceCode;
}
@@ -23,4 +23,9 @@ public int getPriceCode() {
public void setPriceCode(int priceCode) {
_priceCode = priceCode;
}
-}
\ No newline at end of file
+
+ public double getAmount(Movie a_movie, AmountInterface a_amount) {
+ double w_amount = a_amount.getAmount(a_movie.getPriceCode());
+ return w_amount;
+ }
+}
diff --git a/src/main/java/com/digite/kata/refactoring/NewReleaseMovie.java b/src/main/java/com/digite/kata/refactoring/NewReleaseMovie.java
new file mode 100644
index 0000000..e825457
--- /dev/null
+++ b/src/main/java/com/digite/kata/refactoring/NewReleaseMovie.java
@@ -0,0 +1,17 @@
+package com.digite.kata.refactoring;
+
+public class NewReleaseMovie implements AmountInterface{
+ @Override
+ public int getPriceCode() {
+ return Movie.NEW_RELEASE;
+ }
+
+ @Override
+ public double getAmount(int a_rentalDays)
+ {
+ //thisAmount += each.getDaysRented() * 3;
+ double w_rentAmount = a_rentalDays * 3;
+ return w_rentAmount;
+ }
+
+}
diff --git a/src/main/java/com/digite/kata/refactoring/RegularMovie.java b/src/main/java/com/digite/kata/refactoring/RegularMovie.java
new file mode 100644
index 0000000..66abe52
--- /dev/null
+++ b/src/main/java/com/digite/kata/refactoring/RegularMovie.java
@@ -0,0 +1,18 @@
+package com.digite.kata.refactoring;
+
+public class RegularMovie implements AmountInterface{
+
+ public int getPriceCode() {
+ return Movie.REGULAR;
+ }
+
+ public double getAmount(int a_rentalDays)
+ {
+ /* if (each.getDaysRented() > 2)
+ thisAmount += (each.getDaysRented() - 2) * 1.5;*/
+ double w_rentAmount = 2;
+ if (a_rentalDays > 2)
+ w_rentAmount += (a_rentalDays - 2) * 1.5;
+ return w_rentAmount;
+ }
+}