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();
-// }
-// }
- }
-}