getStudents() {
+ return this.students;
+ }
+}
diff --git a/data-mapper/src/test/java/com/iluwatar/datamapper/AppTest.java b/data-mapper/src/test/java/com/iluwatar/datamapper/AppTest.java
index 6e415bccb..d3ad2dcb3 100644
--- a/data-mapper/src/test/java/com/iluwatar/datamapper/AppTest.java
+++ b/data-mapper/src/test/java/com/iluwatar/datamapper/AppTest.java
@@ -1,5 +1,6 @@
/**
- * The MIT License Copyright (c) 2014 Ilkka Seppälä
+ * The MIT License Copyright (c) 2016 Amit Dixit
+ *
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
* associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -18,82 +19,17 @@
*/
package com.iluwatar.datamapper;
-import java.util.Optional;
-import java.util.UUID;
-
-import org.apache.log4j.Logger;
+import com.iluwatar.datamapper.App;
+import org.junit.Test;
/**
- * The Data Mapper (DM) is a layer of software that separates the in-memory objects from the
- * database. Its responsibility is to transfer data between the two and also to isolate them from
- * each other. With Data Mapper the in-memory objects needn't know even that there's a database
- * present; they need no SQL interface code, and certainly no knowledge of the database schema. (The
- * database schema is always ignorant of the objects that use it.) Since it's a form of Mapper ,
- * Data Mapper itself is even unknown to the domain layer.
- *
- * The below example demonstrates basic CRUD operations: select, add, update, and delete.
- *
+ * Tests that Data-Mapper example runs without errors.
*/
-public final class App {
+public final class AppTest {
- private static Logger log = Logger.getLogger(App.class);
-
-
- private static final String DB_TYPE_ORACLE = "Oracle";
- private static final String DB_TYPE_MYSQL = "MySQL";
-
-
- /**
- * Program entry point.
- *
- * @param args command line args.
- */
- public static final void main(final String... args) {
-
- if (log.isInfoEnabled() & args.length > 0) {
- log.debug("App.main(), db type: " + args[0]);
- }
-
- StudentDataMapper mapper = null;
-
- /* Check the desired db type from runtime arguments */
- if (DB_TYPE_ORACLE.equalsIgnoreCase(args[0])) {
-
- /* Create new data mapper for mysql */
- mapper = new StudentMySQLDataMapper();
-
- } else if (DB_TYPE_MYSQL.equalsIgnoreCase(args[0])) {
-
- /* Create new data mapper for oracle */
- mapper = new StudentMySQLDataMapper();
- } else {
-
- /* Don't couple any Data Mapper to java.sql.SQLException */
- throw new DataMapperException("Following data source(" + args[0] + ") is not supported");
- }
-
- /* Create new student */
- Student student = new Student(UUID.randomUUID(), 1, "Adam", 'A');
-
- /* Add student in respectibe db */
- mapper.insert(student);
-
- /* Find this student */
- final Optional studentToBeFound = mapper.find(student.getGuId());
-
- if (log.isDebugEnabled()) {
- log.debug("App.main(), db find returned : " + studentToBeFound);
- }
-
- /* Update existing student object */
- student = new Student(student.getGuId(), 1, "AdamUpdated", 'A');
-
- /* Update student in respectibe db */
- mapper.update(student);
-
- /* Delete student in db */
- mapper.delete(student);
+ @Test
+ public void test() {
+ final String[] args = {};
+ App.main(args);
}
-
- private App() {}
}
diff --git a/data-mapper/src/test/java/com/iluwatar/datamapper/DataMapperTest.java b/data-mapper/src/test/java/com/iluwatar/datamapper/DataMapperTest.java
new file mode 100644
index 000000000..f77097df8
--- /dev/null
+++ b/data-mapper/src/test/java/com/iluwatar/datamapper/DataMapperTest.java
@@ -0,0 +1,108 @@
+/**
+ * The MIT License Copyright (c) 2016 Amit Dixit
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+ * associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+package com.iluwatar.datamapper;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import com.iluwatar.datamapper.Student;
+import com.iluwatar.datamapper.StudentDataMapper;
+import com.iluwatar.datamapper.StudentFirstDataMapper;
+import com.iluwatar.datamapper.StudentSecondDataMapper;
+
+/**
+ * The Data Mapper (DM) is a layer of software that separates the in-memory objects from the
+ * database. Its responsibility is to transfer data between the two and also to isolate them from
+ * each other. With Data Mapper the in-memory objects needn't know even that there's a database
+ * present; they need no SQL interface code, and certainly no knowledge of the database schema. (The
+ * database schema is always ignorant of the objects that use it.) Since it's a form of Mapper ,
+ * Data Mapper itself is even unknown to the domain layer.
+ *
+ */
+public class DataMapperTest {
+
+ /**
+ * This test verify that first data mapper is able to perform all CRUD operations on Student
+ */
+ @Test
+ public void testFirstDataMapper() {
+
+ /* Create new data mapper of first type */
+ final StudentDataMapper mapper = new StudentFirstDataMapper();
+
+ /* Create new student */
+ Student student = new Student(1, "Adam", 'A');
+
+ /* Add student in respectibe db */
+ mapper.insert(student);
+
+ /* Check if student is added in db */
+ assertEquals(student.getStudentId(), mapper.find(student.getStudentId()).get().getStudentId());
+
+ /* Update existing student object */
+ student = new Student(student.getStudentId(), "AdamUpdated", 'A');
+
+ /* Update student in respectibe db */
+ mapper.update(student);
+
+ /* Check if student is updated in db */
+ assertEquals(mapper.find(student.getStudentId()).get().getName(), "AdamUpdated");
+
+ /* Delete student in db */
+ mapper.delete(student);
+
+ /* Result should be false */
+ assertEquals(false, mapper.find(student.getStudentId()).isPresent());
+ }
+
+ /**
+ * This test verify that second data mapper is able to perform all CRUD operations on Student
+ */
+ @Test
+ public void testSecondDataMapper() {
+
+ /* Create new data mapper of second type */
+ final StudentDataMapper mapper = new StudentSecondDataMapper();
+
+ /* Create new student */
+ Student student = new Student(1, "Adam", 'A');
+
+ /* Add student in respectibe db */
+ mapper.insert(student);
+
+ /* Check if student is added in db */
+ assertEquals(student.getStudentId(), mapper.find(student.getStudentId()).get().getStudentId());
+
+ /* Update existing student object */
+ student = new Student(student.getStudentId(), "AdamUpdated", 'A');
+
+ /* Update student in respectibe db */
+ mapper.update(student);
+
+ /* Check if student is updated in db */
+ assertEquals(mapper.find(student.getStudentId()).get().getName(), "AdamUpdated");
+
+ /* Delete student in db */
+ mapper.delete(student);
+
+ /* Result should be false */
+ assertEquals(false, mapper.find(student.getStudentId()).isPresent());
+ }
+}