resp;
+ resp = new ResponseEntity<>("Example "
+ + "Hello, World!\n" + expression + " = "
+ + ans
+ + "
", HttpStatus.OK);
+ return resp;
+ }
+
+ @RequestMapping(value = "/put/{name}", method = RequestMethod.PUT)
+ public ResponseEntity put(@RequestParam(value = "args", defaultValue = "x") List vars,
+ @PathVariable String name, @RequestBody String body) {
+ System.out.println("PUT");
+ String expression = body;
+ String ans = "ans2";
+ try {
+ ans = Double.toString(calculator.calculate(expression));
+ } catch (ParsingException ex) {
+ ans = "(Error:can't calculate)";
+ }
+ System.out.println(expression);
+ System.out.println(ans);
+ ResponseEntity resp =
+ new ResponseEntity<>("" + expression + " = "
+ + ans + "", HttpStatus.CREATED);
+ //new ResponseEntity<>(new ExampleEntity(name, vars, body), HttpStatus.CREATED);
+ return resp;
+ }
+}
+
+// curl -v -X PUT localhost:8080/put/myfunc?args=a,b,v -H "Content-Type: text/plain" -d "test string"
+// curl -v -X PUT localhost:8080/put/myfunc?args=a -H "Content-Type: text/plain" -d "test string"
diff --git a/homework-g595-popovkin/src/test/java/ru/mipt/java2016/homework/g595/popovkin/task1/LocalCalculatorTestsMy.java b/homework-g595-popovkin/src/test/java/ru/mipt/java2016/homework/g595/popovkin/task1/LocalCalculatorTestsMy.java
new file mode 100644
index 000000000..3a89f5132
--- /dev/null
+++ b/homework-g595-popovkin/src/test/java/ru/mipt/java2016/homework/g595/popovkin/task1/LocalCalculatorTestsMy.java
@@ -0,0 +1,15 @@
+package ru.mipt.java2016.homework.g595.popovkin.task1;
+
+import ru.mipt.java2016.homework.base.task1.Calculator;
+import ru.mipt.java2016.homework.tests.task1.AbstractCalculatorTest;
+
+/**
+ * @author Andrey A. Popovkin
+ * @since 10.10.16
+ */
+public class LocalCalculatorTestsMy extends MyTests {
+ @Override
+ protected Calculator calc() {
+ return new MyCalculator();
+ }
+}
diff --git a/homework-g595-popovkin/src/test/java/ru/mipt/java2016/homework/g595/popovkin/task1/MyTests.java b/homework-g595-popovkin/src/test/java/ru/mipt/java2016/homework/g595/popovkin/task1/MyTests.java
new file mode 100644
index 000000000..ad34803ea
--- /dev/null
+++ b/homework-g595-popovkin/src/test/java/ru/mipt/java2016/homework/g595/popovkin/task1/MyTests.java
@@ -0,0 +1,36 @@
+package ru.mipt.java2016.homework.g595.popovkin.task1;
+
+import org.junit.Assert;
+import org.junit.Test;
+import ru.mipt.java2016.homework.base.task1.Calculator;
+import ru.mipt.java2016.homework.base.task1.ParsingException;
+
+public abstract class MyTests {
+
+ protected abstract Calculator calc();
+
+ protected void test(String expression, double expected) throws ParsingException {
+ String errorMessage = String.format("Bad result for expression '%s', %.2f expected", expression, expected);
+ double actual = calc().calculate(expression);
+ Assert.assertEquals(errorMessage, expected, actual, 1e-6);
+ }
+
+ protected void tryFail(String expression) throws ParsingException {
+ calc().calculate(expression);
+ }
+
+ @Test
+ public void functionTests() throws ParsingException {
+ test("sqrt(25)", 5.0);
+ test("sqrt(cos(0) * 25)", 5.0);
+ test("5 + 6", 11.0);
+ test("cos(0) * 24", 24);
+ test("cos(0) * 24 + log(2, 2)", 25);
+ test("sqrt(cos(0) * 24 + log(2, 2))", 5);
+ }
+
+ @Test(expected = ParsingException.class)
+ public void trashTest() throws ParsingException {
+ tryFail("solve");
+ }
+}
\ No newline at end of file