diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar
index 55e12312..9803f9fc 100644
Binary files a/diylc/diylc-library/lib/diylc-core.jar and b/diylc/diylc-library/lib/diylc-core.jar differ
diff --git a/diylc/diylc-swing/.classpath b/diylc/diylc-swing/.classpath
index e7dc1029..77c36058 100644
--- a/diylc/diylc-swing/.classpath
+++ b/diylc/diylc-swing/.classpath
@@ -1,21 +1,22 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar
index 55e12312..9803f9fc 100644
Binary files a/diylc/diylc-swing/lib/diylc-core.jar and b/diylc/diylc-swing/lib/diylc-core.jar differ
diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar
index cd226066..33ab2867 100644
Binary files a/diylc/diylc-swing/library/main.jar and b/diylc/diylc-swing/library/main.jar differ
diff --git a/diylc/diylc-swing/test/org/diylc/MockView.java b/diylc/diylc-swing/test/org/diylc/MockView.java
new file mode 100644
index 00000000..69659768
--- /dev/null
+++ b/diylc/diylc-swing/test/org/diylc/MockView.java
@@ -0,0 +1,37 @@
+package org.diylc;
+
+import java.io.File;
+import java.util.List;
+import java.util.Set;
+
+import org.diylc.common.PropertyWrapper;
+import org.diylc.core.IView;
+
+public class MockView implements IView {
+
+ @Override
+ public void showMessage(String message, String title, int messageType) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public int showConfirmDialog(String message, String title, int optionType, int messageType) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public boolean editProperties(List properties,
+ Set defaultedProperties) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public File promptFileSave() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/diylc/diylc-swing/test/org/diylc/PresenterTests.java b/diylc/diylc-swing/test/org/diylc/PresenterTests.java
new file mode 100644
index 00000000..f9bad25c
--- /dev/null
+++ b/diylc/diylc-swing/test/org/diylc/PresenterTests.java
@@ -0,0 +1,27 @@
+package org.diylc;
+
+import java.awt.Point;
+
+import org.junit.Test;
+
+import junit.framework.Assert;
+
+public class PresenterTests extends TestBase {
+
+ @Test
+ public void testComponentLoad() {
+ Assert.assertTrue(presenter.getComponentTypes() != null && presenter.getComponentTypes().size() > 0);
+ }
+
+ @Test
+ public void testTwoClickAdd() {
+ instantiateTwoClick("Passive", "Resistor", new Point(1000, 1000), new Point(1200, 1000));
+ Assert.assertEquals(1, presenter.getCurrentProject().getComponents().size());
+ }
+
+ @Test
+ public void testOneClickAdd() {
+ instantiateOneClick("Connectivity", "Solder Pad", new Point(1000, 1000));
+ Assert.assertEquals(1, presenter.getCurrentProject().getComponents().size());
+ }
+}
diff --git a/diylc/diylc-swing/test/org/diylc/TestBase.java b/diylc/diylc-swing/test/org/diylc/TestBase.java
new file mode 100644
index 00000000..160c1e1f
--- /dev/null
+++ b/diylc/diylc-swing/test/org/diylc/TestBase.java
@@ -0,0 +1,39 @@
+package org.diylc;
+
+import java.awt.Point;
+import java.awt.event.MouseEvent;
+import java.util.List;
+import java.util.Map;
+
+import org.diylc.appframework.miscutils.ConfigurationManager;
+import org.diylc.common.ComponentType;
+import org.diylc.core.IView;
+import org.diylc.presenter.Presenter;
+
+public class TestBase {
+
+ protected Presenter presenter;
+ protected IView view;
+
+ public TestBase() {
+ ConfigurationManager.initialize("diylc-test");
+ view = new MockView();
+ presenter = new Presenter(view);
+ }
+
+ protected void instantiateOneClick(String category, String name, Point point1) {
+ Map> componentTypes = presenter.getComponentTypes();
+ ComponentType resistorType = componentTypes.get(category).stream().filter(x -> x.getName().equals(name)).findFirst().get();
+ presenter.setNewComponentTypeSlot(resistorType, null, false);
+ presenter.mouseClicked(point1, MouseEvent.BUTTON1, false, false, false, 1);
+ }
+
+ protected void instantiateTwoClick(String category, String name, Point point1, Point point2) {
+ Map> componentTypes = presenter.getComponentTypes();
+ ComponentType resistorType = componentTypes.get(category).stream().filter(x -> x.getName().equals(name)).findFirst().get();
+ presenter.setNewComponentTypeSlot(resistorType, null, false);
+ presenter.mouseClicked(point1, MouseEvent.BUTTON1, false, false, false, 1);
+ presenter.mouseMoved(point2, false, false, false);
+ presenter.mouseClicked(point2, MouseEvent.BUTTON1, false, false, false, 1);
+ }
+}