Merge pull request #8 from sampottinger/runtime_structural_refactor

Consolidate logic for runtime path generation into a single class.
This commit is contained in:
A Samuel Pottinger
2019-10-07 07:41:18 -07:00
committed by GitHub
29 changed files with 774 additions and 1228 deletions

View File

@@ -18,14 +18,13 @@ along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime.strategy;
package processing.mode.java.pdex.util;
import org.junit.Before;
import org.junit.Test;
import processing.app.Sketch;
import processing.mode.java.JavaMode;
import processing.mode.java.pdex.ImportStatement;
import processing.mode.java.pdex.util.runtime.RuntimePathUtilTest;
import java.io.IOException;
import java.util.ArrayList;
@@ -36,29 +35,30 @@ import static org.junit.Assert.*;
public class CachedRuntimePathFactoryTest {
private CachedRuntimePathFactory cachedRuntimePathFactory;
private RuntimePathBuilder.CachedRuntimePathFactory cachedRuntimePathFactory;
private JavaMode testMode;
private List<ImportStatement> testImports;
private Sketch testSketch;
@Before
public void setUp() throws Exception {
cachedRuntimePathFactory = new CachedRuntimePathFactory(new RuntimePathFactoryStrategy() {
cachedRuntimePathFactory = new RuntimePathBuilder.CachedRuntimePathFactory(
new RuntimePathBuilder.RuntimePathFactoryStrategy() {
private int calls = 0;
private int calls = 0;
@Override
public List<String> buildClasspath(JavaMode mode, List<ImportStatement> imports,
Sketch sketch) {
@Override
public List<String> buildClasspath(JavaMode mode, List<ImportStatement> imports,
Sketch sketch) {
String retVal = String.format("Test%d", calls);
calls++;
String retVal = String.format("Test%d", calls);
calls++;
List<String> retList = new ArrayList<>();
retList.add(retVal);
return retList;
}
});
List<String> retList = new ArrayList<>();
retList.add(retVal);
return retList;
}
}
);
testMode = RuntimePathFactoryTestUtil.createTestJavaMode();
testImports = RuntimePathFactoryTestUtil.createTestImports();
@@ -97,4 +97,4 @@ public class CachedRuntimePathFactoryTest {
assertEquals("Test1", classpath.get(0));
}
}
}

View File

@@ -18,23 +18,23 @@ along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime.strategy;
package processing.mode.java.pdex.util;
import org.junit.Before;
import org.junit.Test;
import processing.app.Sketch;
import processing.mode.java.JavaMode;
import processing.mode.java.pdex.ImportStatement;
import processing.mode.java.pdex.util.RuntimePathFactoryTestUtil;
import java.io.File;
import java.io.IOException;
import java.util.List;
import static org.junit.Assert.*;
public class CodeFolderRuntimePathFactoryTest {
private CodeFolderRuntimePathFactory factory;
private RuntimePathBuilder.RuntimePathFactoryStrategy factory;
private JavaMode testMode;
private List<ImportStatement> testImports;
private Sketch testSketch;
@@ -43,7 +43,8 @@ public class CodeFolderRuntimePathFactoryTest {
@Before
public void setUp() throws Exception {
factory = new CodeFolderRuntimePathFactory();
RuntimePathBuilder builder = new RuntimePathBuilder();
factory = builder::buildCodeFolderPath;
testMode = RuntimePathFactoryTestUtil.createTestJavaMode();
testImports = RuntimePathFactoryTestUtil.createTestImports();
testSketch = RuntimePathFactoryTestUtil.createTestSketch();

View File

@@ -18,22 +18,22 @@ along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime.strategy;
package processing.mode.java.pdex.util;
import org.junit.Before;
import org.junit.Test;
import processing.app.Sketch;
import processing.mode.java.JavaMode;
import processing.mode.java.pdex.ImportStatement;
import processing.mode.java.pdex.util.RuntimePathFactoryTestUtil;
import java.io.IOException;
import java.util.List;
import static org.junit.Assert.*;
public class CoreLibraryRuntimePathFactoryTest {
private CoreLibraryRuntimePathFactory factory;
private RuntimePathBuilder.RuntimePathFactoryStrategy factory;
private JavaMode testMode;
private List<ImportStatement> testImports;
private Sketch testSketch;
@@ -41,7 +41,8 @@ public class CoreLibraryRuntimePathFactoryTest {
@Before
public void setUp() throws Exception {
factory = new CoreLibraryRuntimePathFactory();
RuntimePathBuilder builder = new RuntimePathBuilder();
factory = builder::buildCoreLibraryPath;
testMode = RuntimePathFactoryTestUtil.createTestJavaMode();
testImports = RuntimePathFactoryTestUtil.createTestImports();
testSketch = RuntimePathFactoryTestUtil.createTestSketch();

View File

@@ -18,14 +18,13 @@ along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime.strategy;
package processing.mode.java.pdex.util;
import org.junit.Before;
import org.junit.Test;
import processing.app.Sketch;
import processing.mode.java.JavaMode;
import processing.mode.java.pdex.ImportStatement;
import processing.mode.java.pdex.util.runtime.RuntimeConst;
import java.util.List;
@@ -34,7 +33,7 @@ import static org.junit.Assert.*;
public class JavaFxRuntimePathFactoryTest {
private JavaFxRuntimePathFactory factory;
private RuntimePathBuilder.RuntimePathFactoryStrategy factory;
private JavaMode testMode;
private List<ImportStatement> testImports;
private Sketch testSketch;
@@ -42,7 +41,8 @@ public class JavaFxRuntimePathFactoryTest {
@Before
public void setUp() throws Exception {
factory = new JavaFxRuntimePathFactory();
RuntimePathBuilder builder = new RuntimePathBuilder();
factory = builder::buildJavaFxRuntimePath;
testMode = RuntimePathFactoryTestUtil.createTestJavaMode();
testImports = RuntimePathFactoryTestUtil.createTestImports();
testSketch = RuntimePathFactoryTestUtil.createTestSketch();
@@ -52,7 +52,7 @@ public class JavaFxRuntimePathFactoryTest {
@Test
public void testBuildClasspathSize() {
assertEquals(RuntimeConst.JAVA_FX_JARS.length, classpath.size());
assertEquals(RuntimePathBuilder.JAVA_FX_JARS.length, classpath.size());
}
@Test

View File

@@ -18,16 +18,14 @@ along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime.strategy;
package processing.mode.java.pdex.util;
import org.junit.Before;
import org.junit.Test;
import processing.app.Sketch;
import processing.mode.java.JavaMode;
import processing.mode.java.pdex.ImportStatement;
import processing.mode.java.pdex.util.runtime.RuntimeConst;
import java.io.IOException;
import java.util.List;
import static org.junit.Assert.*;
@@ -35,7 +33,7 @@ import static org.junit.Assert.*;
public class JavaRuntimePathFactoryTest {
private JavaRuntimePathFactory factory;
private RuntimePathBuilder.RuntimePathFactoryStrategy factory;
private JavaMode testMode;
private List<ImportStatement> testImports;
private Sketch testSketch;
@@ -44,7 +42,8 @@ public class JavaRuntimePathFactoryTest {
@Before
public void setUp() throws Exception {
factory = new JavaRuntimePathFactory();
RuntimePathBuilder builder = new RuntimePathBuilder();
factory = builder::buildJavaRuntimePath;
testMode = RuntimePathFactoryTestUtil.createTestJavaMode();
testImports = RuntimePathFactoryTestUtil.createTestImports();
testSketch = RuntimePathFactoryTestUtil.createTestSketch();
@@ -54,7 +53,7 @@ public class JavaRuntimePathFactoryTest {
@Test
public void testBuildClasspathSize() {
assertEquals(RuntimeConst.STANDARD_MODULES.length, classpath.size());
assertEquals(RuntimePathBuilder.STANDARD_MODULES.length, classpath.size());
}
@Test

View File

@@ -18,7 +18,7 @@ along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime.strategy;
package processing.mode.java.pdex.util;
import org.junit.Before;
import org.junit.Test;
@@ -26,14 +26,13 @@ import processing.app.Sketch;
import processing.mode.java.JavaMode;
import processing.mode.java.pdex.ImportStatement;
import java.io.IOException;
import java.util.List;
import static org.junit.Assert.*;
public class LibrarySearchRuntimePathFactoryTest {
private LibrarySearchRuntimePathFactory factory;
private RuntimePathBuilder.RuntimePathFactoryStrategy factory;
private JavaMode testMode;
private List<ImportStatement> testImports;
private Sketch testSketch;
@@ -42,7 +41,8 @@ public class LibrarySearchRuntimePathFactoryTest {
@Before
public void setUp() throws Exception {
factory = new LibrarySearchRuntimePathFactory();
RuntimePathBuilder builder = new RuntimePathBuilder();
factory = builder::buildLibrarySearchPath;
testMode = RuntimePathFactoryTestUtil.createTestJavaMode();
testImports = RuntimePathFactoryTestUtil.createTestImports();
testSketch = RuntimePathFactoryTestUtil.createTestSketch();

View File

@@ -18,7 +18,7 @@ along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime.strategy;
package processing.mode.java.pdex.util;
import org.junit.Before;
import org.junit.Test;
@@ -26,7 +26,6 @@ import processing.app.Sketch;
import processing.mode.java.JavaMode;
import processing.mode.java.pdex.ImportStatement;
import java.io.IOException;
import java.util.List;
import static org.junit.Assert.*;
@@ -34,7 +33,7 @@ import static org.junit.Assert.*;
public class LibrarySketchRuntimePathFactoryTest {
private LibrarySketchRuntimePathFactory factory;
private RuntimePathBuilder.RuntimePathFactoryStrategy factory;
private JavaMode testMode;
private List<ImportStatement> testImports;
private Sketch testSketch;
@@ -42,7 +41,8 @@ public class LibrarySketchRuntimePathFactoryTest {
@Before
public void setUp() throws Exception {
factory = new LibrarySketchRuntimePathFactory();
RuntimePathBuilder builder = new RuntimePathBuilder();
factory = builder::buildLibrarySketchPath;
testMode = RuntimePathFactoryTestUtil.createTestJavaMode();
testImports = RuntimePathFactoryTestUtil.createTestImports();
testSketch = RuntimePathFactoryTestUtil.createTestSketch();

View File

@@ -18,7 +18,7 @@ along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime.strategy;
package processing.mode.java.pdex.util;
import org.junit.Before;
import org.junit.Test;
@@ -30,9 +30,10 @@ import java.util.List;
import static org.junit.Assert.*;
public class ModeSearchRuntimePathFactoryTest {
private ModeSearchRuntimePathFactory factory;
private RuntimePathBuilder.RuntimePathFactoryStrategy factory;
private JavaMode testMode;
private List<ImportStatement> testImports;
private Sketch testSketch;
@@ -40,7 +41,8 @@ public class ModeSearchRuntimePathFactoryTest {
@Before
public void setUp() throws Exception {
factory = new ModeSearchRuntimePathFactory();
RuntimePathBuilder builder = new RuntimePathBuilder();
factory = builder::buildModeSearchPath;
testMode = RuntimePathFactoryTestUtil.createTestJavaMode();
testImports = RuntimePathFactoryTestUtil.createTestImports();
testSketch = RuntimePathFactoryTestUtil.createTestSketch();

View File

@@ -18,7 +18,7 @@ along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime.strategy;
package processing.mode.java.pdex.util;
import org.junit.Before;
import org.junit.Test;
@@ -30,9 +30,10 @@ import java.util.List;
import static org.junit.Assert.*;
public class ModeSketchRuntimePathFactoryTest {
private ModeSketchRuntimePathFactory factory;
private RuntimePathBuilder.RuntimePathFactoryStrategy factory;
private JavaMode testMode;
private List<ImportStatement> testImports;
private Sketch testSketch;
@@ -40,7 +41,8 @@ public class ModeSketchRuntimePathFactoryTest {
@Before
public void setUp() throws Exception {
factory = new ModeSketchRuntimePathFactory();
RuntimePathBuilder builder = new RuntimePathBuilder();
factory = builder::buildModeSketchPath;
testMode = RuntimePathFactoryTestUtil.createTestJavaMode();
testImports = RuntimePathFactoryTestUtil.createTestImports();
testSketch = RuntimePathFactoryTestUtil.createTestSketch();

View File

@@ -18,7 +18,7 @@ along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime;
package processing.mode.java.pdex.util;
import org.junit.Before;
import org.junit.Test;
@@ -26,10 +26,12 @@ import processing.app.Sketch;
import processing.mode.java.JavaMode;
import processing.mode.java.pdex.ImportStatement;
import processing.mode.java.pdex.PreprocessedSketch;
import processing.mode.java.pdex.util.runtime.strategy.RuntimePathFactoryTestUtil;
import processing.mode.java.pdex.util.RuntimePathFactoryTestUtil;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import java.util.StringJoiner;
import static org.junit.Assert.*;
@@ -124,4 +126,31 @@ public class RuntimePathBuilderTest {
assertTrue(count > 0);
}
}
@Test
public void sanitizeClassPath() {
StringJoiner testStrJoiner = new StringJoiner(File.pathSeparator);
testStrJoiner.add("test1");
testStrJoiner.add("");
testStrJoiner.add("test2");
List<String> classPath = builder.sanitizeClassPath(testStrJoiner.toString());
assertEquals(2, classPath.size());
assertEquals("test1", classPath.get(0));
assertEquals("test2", classPath.get(1));
}
@Test
public void sanitizeClassPathNoDuplicate() {
StringJoiner testStrJoiner = new StringJoiner(File.pathSeparator);
testStrJoiner.add("test1");
testStrJoiner.add("");
testStrJoiner.add("test2");
testStrJoiner.add("test2");
List<String> classPath = builder.sanitizeClassPath(testStrJoiner.toString());
assertEquals(2, classPath.size());
assertEquals("test1", classPath.get(0));
assertEquals("test2", classPath.get(1));
}
}

View File

@@ -18,7 +18,7 @@ along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime.strategy;
package processing.mode.java.pdex.util;
import org.mockito.Mockito;
import processing.app.Library;

View File

@@ -1,61 +0,0 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
/*
Part of the Processing project - http://processing.org
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime;
import org.junit.Test;
import java.io.File;
import java.util.List;
import java.util.StringJoiner;
import static org.junit.Assert.*;
public class RuntimePathUtilTest {
@Test
public void sanitizeClassPath() {
StringJoiner testStrJoiner = new StringJoiner(File.pathSeparator);
testStrJoiner.add("test1");
testStrJoiner.add("");
testStrJoiner.add("test2");
List<String> classPath = RuntimePathUtil.sanitizeClassPath(testStrJoiner.toString());
assertEquals(2, classPath.size());
assertEquals("test1", classPath.get(0));
assertEquals("test2", classPath.get(1));
}
@Test
public void sanitizeClassPathNoDuplicate() {
StringJoiner testStrJoiner = new StringJoiner(File.pathSeparator);
testStrJoiner.add("test1");
testStrJoiner.add("");
testStrJoiner.add("test2");
testStrJoiner.add("test2");
List<String> classPath = RuntimePathUtil.sanitizeClassPath(testStrJoiner.toString());
assertEquals(2, classPath.size());
assertEquals("test1", classPath.get(0));
assertEquals("test2", classPath.get(1));
}
}

View File

@@ -1,76 +0,0 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
/*
Part of the Processing project - http://processing.org
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.mode.java.pdex.util.runtime.strategy;
import org.junit.Before;
import org.junit.Test;
import processing.app.Sketch;
import processing.mode.java.JavaMode;
import processing.mode.java.pdex.ImportStatement;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.*;
public class RuntimePathFactoryStrategyCollectionTest {
private RuntimePathFactoryStrategyCollection factory;
private JavaMode testMode;
private List<ImportStatement> testImports;
private Sketch testSketch;
private List<String> classpath;
@Before
public void setUp() throws Exception {
List<RuntimePathFactoryStrategy> innerFactories = new ArrayList<>();
innerFactories.add(createInnerFactory("test1"));
innerFactories.add(createInnerFactory("test2"));
factory = new RuntimePathFactoryStrategyCollection(innerFactories);
testMode = RuntimePathFactoryTestUtil.createTestJavaMode();
testImports = RuntimePathFactoryTestUtil.createTestImports();
testSketch = RuntimePathFactoryTestUtil.createTestSketch();
classpath = factory.buildClasspath(testMode, testImports, testSketch);
}
private RuntimePathFactoryStrategy createInnerFactory(String retStr) {
return (mode, imports, sketch) -> {
List<String> retList = new ArrayList<>();
retList.add(retStr);
return retList;
};
}
@Test
public void testBuildClasspathLength() {
assertEquals(2, classpath.size());
}
@Test
public void testBuildClasspathContent() {
assertEquals("test1", classpath.get(0));
assertEquals("test2", classpath.get(1));
}
}