diff --git a/pom.xml b/pom.xml index 6a3c0f8..99e15e2 100644 --- a/pom.xml +++ b/pom.xml @@ -10,6 +10,13 @@ war + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + org.springframework spring-webmvc @@ -43,11 +50,11 @@ jsf-impl 2.2.12 - - - - - + + javax.servlet + jstl + 1.2 + diff --git a/src/main/java/pp/ua/fame/DAO/TaskDaoImp.java b/src/main/java/pp/ua/fame/DAO/TaskDaoImp.java deleted file mode 100644 index 7228b96..0000000 --- a/src/main/java/pp/ua/fame/DAO/TaskDaoImp.java +++ /dev/null @@ -1,38 +0,0 @@ -package pp.ua.fame.DAO; - -import pp.ua.fame.persistence.Task; - -import javax.persistence.EntityManager; - -public class TaskDaoImp implements TaskDao{ - private EntityManager em; - - public TaskDaoImp(EntityManager em) { - this.em = em; - } - - @Override - public Task getTask(long id) { - return em.find(Task.class, id); - } - - @Override - public void addTask(String description, String source) { - - } - - @Override - public void deleteTask(long id) { - - } - - @Override - public void addTest(String test, String answer) { - - } - - @Override - public void deleteTest(long id) { - - } -} diff --git a/src/main/java/pp/ua/fame/config/SpringConfig.java b/src/main/java/pp/ua/fame/config/SpringConfig.java new file mode 100644 index 0000000..ef740e8 --- /dev/null +++ b/src/main/java/pp/ua/fame/config/SpringConfig.java @@ -0,0 +1,36 @@ +package pp.ua.fame.config; + +import jdk.nashorn.api.scripting.NashornScriptEngineFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; + +import javax.persistence.EntityManager; +import javax.persistence.Persistence; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; + +@Configuration +@ComponentScan(basePackages = "pp.ua.fame") +public class SpringConfig { + @Bean + public EntityManager entityManager(){ + return Persistence.createEntityManagerFactory("TesterDB").createEntityManager(); + } + + public ScriptEngine nashorn(){ + return new NashornScriptEngineFactory().getScriptEngine("--no-java"); + } + + public ScriptEngine rhino(){ + return new ScriptEngineManager().getEngineByName("rhino"); + } + + @Bean + @Scope("prototype") + public ScriptEngine scriptEngine(){ + return nashorn(); + } + +} diff --git a/src/main/java/pp/ua/fame/controllers/SpringController.java b/src/main/java/pp/ua/fame/controllers/SpringController.java index ce96af7..ca39f5b 100644 --- a/src/main/java/pp/ua/fame/controllers/SpringController.java +++ b/src/main/java/pp/ua/fame/controllers/SpringController.java @@ -1,15 +1,28 @@ package pp.ua.fame.controllers; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import pp.ua.fame.dao.impl.TaskDaoImp; +import pp.ua.fame.model.Task; + +import javax.servlet.http.HttpServletRequest; @Controller public class SpringController { + + @Autowired + private TaskDaoImp taskDao; + @RequestMapping(value = "/main/{id}", method = RequestMethod.GET) - public String Task(ModelMap model, @PathVariable("id") Integer id){ - return "/main.xhtml?id="+id; + public String Task(@PathVariable("id") Integer id, HttpServletRequest req){ + Task task = taskDao.getTask(id); + if (task == null) { + return ("404page.xhtml"); + } + req.setAttribute("task", task); + return "/main.xhtml"; } } diff --git a/src/main/java/pp/ua/fame/DAO/TaskDao.java b/src/main/java/pp/ua/fame/dao/TaskDao.java similarity index 78% rename from src/main/java/pp/ua/fame/DAO/TaskDao.java rename to src/main/java/pp/ua/fame/dao/TaskDao.java index f95d97b..64eb05d 100644 --- a/src/main/java/pp/ua/fame/DAO/TaskDao.java +++ b/src/main/java/pp/ua/fame/dao/TaskDao.java @@ -1,6 +1,6 @@ -package pp.ua.fame.DAO; +package pp.ua.fame.dao; -import pp.ua.fame.persistence.Task; +import pp.ua.fame.model.Task; public interface TaskDao { Task getTask(long id); diff --git a/src/main/java/pp/ua/fame/dao/impl/TaskDaoImp.java b/src/main/java/pp/ua/fame/dao/impl/TaskDaoImp.java new file mode 100644 index 0000000..3843930 --- /dev/null +++ b/src/main/java/pp/ua/fame/dao/impl/TaskDaoImp.java @@ -0,0 +1,40 @@ +package pp.ua.fame.dao.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import pp.ua.fame.dao.TaskDao; +import pp.ua.fame.model.Task; +import sun.reflect.generics.reflectiveObjects.NotImplementedException; + +import javax.persistence.EntityManager; + +@Component() +public class TaskDaoImp implements TaskDao { + @Autowired + private EntityManager entityManager; + + @Override + public Task getTask(long id) { + return entityManager.find(Task.class, id); + } + + @Override + public void addTask(String description, String source) { + throw new NotImplementedException(); + } + + @Override + public void deleteTask(long id) { + throw new NotImplementedException(); + } + + @Override + public void addTest(String test, String answer) { + throw new NotImplementedException(); + } + + @Override + public void deleteTest(long id) { + throw new NotImplementedException(); + } +} diff --git a/src/main/java/pp/ua/fame/exceptions/TesterException.java b/src/main/java/pp/ua/fame/exception/TesterException.java similarity index 92% rename from src/main/java/pp/ua/fame/exceptions/TesterException.java rename to src/main/java/pp/ua/fame/exception/TesterException.java index 0a2dbcb..3355a16 100644 --- a/src/main/java/pp/ua/fame/exceptions/TesterException.java +++ b/src/main/java/pp/ua/fame/exception/TesterException.java @@ -1,4 +1,4 @@ -package pp.ua.fame.exceptions; +package pp.ua.fame.exception; public class TesterException extends Exception { public TesterException() { diff --git a/src/main/java/pp/ua/fame/exceptions/TimeoutException.java b/src/main/java/pp/ua/fame/exception/TimeoutException.java similarity index 92% rename from src/main/java/pp/ua/fame/exceptions/TimeoutException.java rename to src/main/java/pp/ua/fame/exception/TimeoutException.java index 290a685..5744bf4 100644 --- a/src/main/java/pp/ua/fame/exceptions/TimeoutException.java +++ b/src/main/java/pp/ua/fame/exception/TimeoutException.java @@ -1,4 +1,4 @@ -package pp.ua.fame.exceptions; +package pp.ua.fame.exception; public class TimeoutException extends TesterException { public TimeoutException() { diff --git a/src/main/java/pp/ua/fame/exceptions/TypeMismatchException.java b/src/main/java/pp/ua/fame/exception/TypeMismatchException.java similarity index 92% rename from src/main/java/pp/ua/fame/exceptions/TypeMismatchException.java rename to src/main/java/pp/ua/fame/exception/TypeMismatchException.java index ac4f517..079ea6a 100644 --- a/src/main/java/pp/ua/fame/exceptions/TypeMismatchException.java +++ b/src/main/java/pp/ua/fame/exception/TypeMismatchException.java @@ -1,4 +1,4 @@ -package pp.ua.fame.exceptions; +package pp.ua.fame.exception; public class TypeMismatchException extends TesterException{ public TypeMismatchException() { diff --git a/src/main/java/pp/ua/fame/JSRuner/JS.java b/src/main/java/pp/ua/fame/jsRuner/Js.java similarity index 51% rename from src/main/java/pp/ua/fame/JSRuner/JS.java rename to src/main/java/pp/ua/fame/jsRuner/Js.java index e11fa6e..aa63133 100644 --- a/src/main/java/pp/ua/fame/JSRuner/JS.java +++ b/src/main/java/pp/ua/fame/jsRuner/Js.java @@ -1,49 +1,44 @@ -package pp.ua.fame.JSRuner; +package pp.ua.fame.jsRuner; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; -import pp.ua.fame.exceptions.TimeoutException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import pp.ua.fame.exception.TimeoutException; -import javax.faces.context.FacesContext; import javax.script.ScriptEngine; import javax.script.ScriptException; +import java.io.ByteArrayOutputStream; +import java.io.OutputStreamWriter; -enum Status{CREATE, RUN, ERROR, FINISH, TIMEOUT} -public class JS { +@Component() +@Scope("prototype") +public class Js { - private final int TIMEOUT = 5000; - - private Status status; + private static final int TIMEOUT = 5000; + @Autowired private ScriptEngine engine; + private Status status = Status.CREATE; + private String source; private ScriptException ex; - Result result; + private Result result; - private static ApplicationContext appContext; - - public JS(String source) { - if (appContext == null) { - FacesContext ctx = FacesContext.getCurrentInstance(); - String configLocation = - ctx.getExternalContext().getInitParameter("contextConfigLocation"); - appContext = new ClassPathXmlApplicationContext(configLocation); - } - engine = (ScriptEngine)appContext.getBean("nashorn"); -// engine.getContext().setWriter(new OutputStreamWriter(System.err)); + public Js(String source) { this.source = source; - status = Status.CREATE; } public Result eval() throws ScriptException, TimeoutException { status = Status.RUN; Thread calculatingThread = new Thread(() ->{ try { - result = new Result(engine.eval(source)); + ByteArrayOutputStream myConsole = new ByteArrayOutputStream(); + engine.getContext().setWriter(new OutputStreamWriter(myConsole)); + result = new Result(engine.eval(source), new String(myConsole.toByteArray())); status = Status.FINISH; } catch (ScriptException e) { ex = e; diff --git a/src/main/java/pp/ua/fame/JSRuner/Result.java b/src/main/java/pp/ua/fame/jsRuner/Result.java similarity index 83% rename from src/main/java/pp/ua/fame/JSRuner/Result.java rename to src/main/java/pp/ua/fame/jsRuner/Result.java index e5900ee..0b657f4 100644 --- a/src/main/java/pp/ua/fame/JSRuner/Result.java +++ b/src/main/java/pp/ua/fame/jsRuner/Result.java @@ -1,17 +1,28 @@ -package pp.ua.fame.JSRuner; +package pp.ua.fame.jsRuner; import jdk.nashorn.api.scripting.ScriptObjectMirror; -import pp.ua.fame.exceptions.TypeMismatchException; +import pp.ua.fame.exception.TypeMismatchException; import java.util.Map; public class Result { private Object result; + private String console; + public Result(Object result) { this.result = result; } + public Result(Object result, String console) { + this.result = result; + this.console = console; + } + + public String getConsole() { + return console; + } + public boolean isNull(){ return result == null; } @@ -53,36 +64,41 @@ public boolean isFunction(){ public ScriptObjectMirror getScriptObject() throws TypeMismatchException { if (isScriptObject()){ return (ScriptObjectMirror) result; - } else + } else { throw new TypeMismatchException("Result is not ScriptObject"); + } } public Double getNumber() throws TypeMismatchException { if (isNumber()){ return (Double.valueOf(result.toString())); - } else + } else { throw new TypeMismatchException("Result is not Number"); + } } public String getString() throws TypeMismatchException { if (isString()){ return (String) result; - } else + } else { throw new TypeMismatchException("Result is not String"); + } } public Boolean getBoolean() throws TypeMismatchException { if (isBoolean()){ return (Boolean) result; - } else + } else { throw new TypeMismatchException("Result is not Boolean"); + } } public Map getArray() throws TypeMismatchException { if (isArray()){ return (Map)result; - } else + } else { throw new TypeMismatchException("Result is not Array"); + } } public Object getObject(){ diff --git a/src/main/java/pp/ua/fame/jsRuner/Status.java b/src/main/java/pp/ua/fame/jsRuner/Status.java new file mode 100644 index 0000000..64ace56 --- /dev/null +++ b/src/main/java/pp/ua/fame/jsRuner/Status.java @@ -0,0 +1,5 @@ +package pp.ua.fame.jsRuner; + +public enum Status{ + CREATE, RUN, ERROR, FINISH, TIMEOUT +} diff --git a/src/main/java/pp/ua/fame/managedBean/TestMb.java b/src/main/java/pp/ua/fame/managedBean/TestMb.java new file mode 100644 index 0000000..b6e7511 --- /dev/null +++ b/src/main/java/pp/ua/fame/managedBean/TestMb.java @@ -0,0 +1,98 @@ +package pp.ua.fame.managedBean; + +import org.springframework.context.ApplicationContext; +import org.springframework.web.jsf.FacesContextUtils; +import pp.ua.fame.exception.TimeoutException; +import pp.ua.fame.exception.TypeMismatchException; +import pp.ua.fame.jsRuner.Js; +import pp.ua.fame.jsRuner.Result; +import pp.ua.fame.model.Task; +import pp.ua.fame.model.Test; + +import javax.faces.bean.ManagedBean; +import javax.faces.context.FacesContext; +import javax.script.ScriptException; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; + +@ManagedBean +@javax.faces.bean.ViewScoped +public class TestMb { + + private String source; + private Object result; + + private String resultColor; + private String console =""; + private Task task; + + public Task getTask() throws IOException { + if (task == null){ + HttpServletRequest req = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); + task = (Task) req.getAttribute("task"); + } + return task; + } + + public void setTask(Task task) { + this.task = task; + } + + public String getSource() throws IOException { + if (source == null){ + source = getTask().getSkeleton(); + } + return source; + } + + public String getConsole() { + return console; + } + + public void setConsole(String console) { + this.console = console; + } + + public String getResultColor() { + return resultColor; + } + + public void setResultColor(String resultColor) { + this.resultColor = resultColor; + } + + public void setSource(String source) { + this.source = source; + } + + public String getResult() { + return "Result: " + result; + } + + public void calculateResult(){ + result = "OK"; + resultColor = "red"; + tryBlock:try { + for (Test test: task.getTests()) { + ApplicationContext appContext = FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance()); + Js js = (Js) appContext.getBean("js", source + test.getTest()); + Result result = js.eval(); //TODO change variables names; + console += result.getConsole(); + Double answer = result.getNumber(); + System.out.println(console); + if (!test.getAnswer().equals(answer.toString())){ + this.result = "Fail on " + test.getTest(); //TODO on fail throw exception + resultColor = "red"; + break tryBlock; + } + } + resultColor = "green"; + } catch (ScriptException e) { + result = "Error: "+ e.getMessage(); + } catch (TimeoutException e) { + result = "Error: Timeout"; + } catch (TypeMismatchException e) { + result = "Wrong returned type"; + } + } +} diff --git a/src/main/java/pp/ua/fame/persistence/Task.java b/src/main/java/pp/ua/fame/model/Task.java similarity index 93% rename from src/main/java/pp/ua/fame/persistence/Task.java rename to src/main/java/pp/ua/fame/model/Task.java index 6dd8813..5ad1642 100644 --- a/src/main/java/pp/ua/fame/persistence/Task.java +++ b/src/main/java/pp/ua/fame/model/Task.java @@ -1,10 +1,10 @@ -package pp.ua.fame.persistence; +package pp.ua.fame.model; import javax.persistence.*; import java.util.List; @Entity -@Table(name = "task") +//@Table(name = "task") public class Task { @Id diff --git a/src/main/java/pp/ua/fame/persistence/Test.java b/src/main/java/pp/ua/fame/model/Test.java similarity index 92% rename from src/main/java/pp/ua/fame/persistence/Test.java rename to src/main/java/pp/ua/fame/model/Test.java index 9b3f41b..3edf171 100644 --- a/src/main/java/pp/ua/fame/persistence/Test.java +++ b/src/main/java/pp/ua/fame/model/Test.java @@ -1,9 +1,9 @@ -package pp.ua.fame.persistence; +package pp.ua.fame.model; import javax.persistence.*; @Entity -@Table(name = "test") + //TODO Check table public class Test { @Id diff --git a/src/main/java/pp/ua/fame/models/TestModel.java b/src/main/java/pp/ua/fame/models/TestModel.java deleted file mode 100644 index d7eb42c..0000000 --- a/src/main/java/pp/ua/fame/models/TestModel.java +++ /dev/null @@ -1,107 +0,0 @@ -package pp.ua.fame.models; - -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; -import pp.ua.fame.DAO.TaskDao; -import pp.ua.fame.JSRuner.JS; -import pp.ua.fame.exceptions.TimeoutException; -import pp.ua.fame.exceptions.TypeMismatchException; -import pp.ua.fame.persistence.Task; -import pp.ua.fame.persistence.Test; - -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.ExternalContext; -import javax.faces.context.FacesContext; -import javax.script.ScriptException; -import java.io.IOException; - -@ManagedBean(name="test") -@ViewScoped -public class TestModel { - private static ApplicationContext appContext; - - private String source; - private Object result; - - private String resultColor; - - private Task task; - - private static TaskDao taskDao; - - public TestModel() { - if (appContext == null) { - FacesContext ctx = FacesContext.getCurrentInstance(); - String configLocation = - ctx.getExternalContext().getInitParameter("contextConfigLocation"); - appContext = new ClassPathXmlApplicationContext(configLocation); - } - taskDao = (TaskDao)appContext.getBean("taskDao"); - } - - public Task getTask() throws IOException { - if (task == null){ - ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); - int id = Integer.valueOf(externalContext.getRequestParameterMap().get("id")); -// int id = 1; - System.out.println(id); - task = taskDao.getTask(id); - if (task == null) - externalContext.dispatch("404page.xhtml"); - } - return task; - } - - public void setTask(Task taskDAO) { - this.task = taskDAO; - } - - public String getSource() throws IOException { - if (source == null){ - source = getTask().getSkeleton(); - } - return source; - } - - - public String getResultColor() { - return resultColor; - } - - public void setResultColor(String resultColor) { - this.resultColor = resultColor; - } - - public void setSource(String source) { - this.source = source; - } - - public String getResult() { - return "Result: " + result; - } - - public void calculateResult(){ - result = "OK"; - resultColor = "green"; - try { - for (Test test: task.getTests()) { - Object answer = new JS(source + test.getTest()).eval().getNumber(); - if (!test.getAnswer().equals(answer.toString())){ - result = "Fail on " + test.getTest(); - resultColor = "red"; - break; - } - } - } catch (ScriptException e) { - result = "Error: "+ e.getMessage(); - resultColor = "red"; - } catch (TimeoutException e) { - result = "Error: Timeout"; - resultColor = "red"; - } catch (TypeMismatchException e) { - resultColor = "red"; - result = "Wrong returned type"; - } - } -} diff --git a/src/main/resources/META-INF/faces-config.xml b/src/main/resources/META-INF/faces-config.xml new file mode 100644 index 0000000..a936e22 --- /dev/null +++ b/src/main/resources/META-INF/faces-config.xml @@ -0,0 +1,10 @@ + + + + org.springframework.web.jsf.el.SpringBeanFacesELResolver + + + \ No newline at end of file diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index 2c557c8..33c6f81 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -8,7 +8,7 @@ - + diff --git a/src/main/resources/Spring-config.xml b/src/main/resources/Spring-config.xml deleted file mode 100644 index 259b40e..0000000 --- a/src/main/resources/Spring-config.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/Springervlet-servlet.xml b/src/main/webapp/WEB-INF/SpringServlet-servlet.xml similarity index 87% rename from src/main/webapp/WEB-INF/Springervlet-servlet.xml rename to src/main/webapp/WEB-INF/SpringServlet-servlet.xml index 0d4c607..d9a9d8f 100644 --- a/src/main/webapp/WEB-INF/Springervlet-servlet.xml +++ b/src/main/webapp/WEB-INF/SpringServlet-servlet.xml @@ -10,7 +10,9 @@ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> - + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 5134d73..1c32c7a 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -4,47 +4,36 @@ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> - - - - - - - - - - Springervlet + SpringServlet org.springframework.web.servlet.DispatcherServlet 1 - Springervlet + SpringServlet / - main.htm?di=1 + /main/1 contextConfigLocation - Spring-config.xml - - - javax.faces.CONFIG_FILES - /faces-config.xml + /WEB-INF/SpringServlet-servlet.xml + + org.springframework.web.context.ContextLoaderListener + + + 404 /404page.xhtml - - - - + \ No newline at end of file diff --git a/src/main/webapp/main.xhtml b/src/main/webapp/main.xhtml index 3d72636..7447e21 100644 --- a/src/main/webapp/main.xhtml +++ b/src/main/webapp/main.xhtml @@ -16,16 +16,18 @@ #{id} - +
-
#{test.source}
- +
#{testMb.source}
+ - +
- + +
+
diff --git a/src/test/java/Tests.java b/src/test/java/Tests.java deleted file mode 100644 index 9226886..0000000 --- a/src/test/java/Tests.java +++ /dev/null @@ -1,114 +0,0 @@ -import org.junit.Test; -import pp.ua.fame.JSRuner.JS; -import pp.ua.fame.JSRuner.Result; -import pp.ua.fame.exceptions.TimeoutException; -import pp.ua.fame.exceptions.TypeMismatchException; - -import javax.script.ScriptException; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class Tests { - @Test - public void test() throws ScriptException, TypeMismatchException, TimeoutException { - JS test = new JS("x=3; x = 3+3+x; x*= 4; x;"); - Result result = test.eval(); - - assertEquals(result.getNumber(),(Double) 36.0); - - - System.out.println(result); - } - - @Test - public void treadSafeTest() throws InterruptedException { - class MyTread implements Runnable{ - private JS test; - private Double answer; - - public MyTread(JS test, Double answer) { - this.test = test; - this.answer = answer; - } - - @Override - public void run() { - for (int i = 0; i < 1000000; i++){ - try { - Result result = test.eval(); - assertEquals (result.getNumber(), answer); - } catch (ScriptException | TypeMismatchException e) { - e.printStackTrace(); - } catch (TimeoutException e) { - e.printStackTrace(); - } - } - } - } - - JS test1 = new JS("x=2; x = 2+2+x; x*= 3; x;"); - JS test2 = new JS("x=3; x = 3+3+x; x*= 4; x;"); - Thread thread1 = new Thread(new MyTread(test1, 18.0)); - Thread thread2 = new Thread(new MyTread(test2, 36.0)); - thread1.start(); - thread2.start(); - thread1.join(); - thread2.join(); - - } - - - @Test - public void isTest() throws ScriptException, TimeoutException { - JS string = new JS("'String'"); - JS boolTrue = new JS("true"); - JS boolfalse = new JS("false"); - JS Null = new JS("null"); - JS undefined = new JS("undefined"); - JS numberInt = new JS("2"); - JS numberDouble = new JS("2.3"); - JS array = new JS("[2, 3, 4]"); - JS object = new JS("function x(){this.x = this}; new x"); - Result stringResult = string.eval(); - Result boolTrueResult = boolTrue.eval(); - Result boolfalseResult = boolfalse.eval(); - Result NullResult = Null.eval(); - Result undefinedResult = undefined.eval(); - Result numberIntResult = numberInt.eval(); - Result numberDoubleResult = numberDouble.eval(); - Result arrayResult = array.eval(); - - assertTrue(stringResult.isString()); - assertTrue(boolTrueResult.isBoolean()); - assertTrue(boolfalseResult.isBoolean()); - assertTrue(NullResult.isNull()); - assertTrue(undefinedResult.isNull()); - assertTrue(numberIntResult.isNumber()); - assertTrue(numberDoubleResult.isNumber()); - assertTrue(arrayResult.isArray()); - } - - @Test - public void taskTest(){ - int x = -2147483648; -// Task taskDAO = new TestMock(); -// String source = "function sum(array, from){\n" + -// "\tif (isNaN(from)) from = 0;\n" + -// "\tif (from >= array.length) return 0;\n" + -// "\treturn array[from] + sum(array, from + 1);\n" + -// "}"; -// -// for (pp.ua.fame.persistence.Test test: taskDAO.getTests()) { -// -// try { -// Object answer = new JS(source + test.getTest()).eval().getNumber(); -// assertEquals(test.getAnswer(),answer); -// } catch (ScriptException | TimeoutException e) { -// System.err.println(e.getMessage()); -// } catch (TypeMismatchException e) { -// e.printStackTrace(); -// } -// } - } -}