This is an automated email from the ASF dual-hosted git repository.
sergeykamov pushed a commit to branch NLPCRAFT-491
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
The following commit(s) were added to refs/heads/NLPCRAFT-491 by this push:
new 4898cbc8 WIP.
4898cbc8 is described below
commit 4898cbc899a8f4a86443b48b1148dbb108a3595d
Author: Sergey Kamov <[email protected]>
AuthorDate: Thu Apr 7 19:48:45 2022 +0300
WIP.
---
.../examples/pizzeria/PizzeriaModelSpec.scala | 42 +++++++++++++---------
1 file changed, 25 insertions(+), 17 deletions(-)
diff --git
a/nlpcraft-examples/pizzeria/src/test/java/org/apache/nlpcraft/examples/pizzeria/PizzeriaModelSpec.scala
b/nlpcraft-examples/pizzeria/src/test/java/org/apache/nlpcraft/examples/pizzeria/PizzeriaModelSpec.scala
index 4e3b22cf..d899e4cc 100644
---
a/nlpcraft-examples/pizzeria/src/test/java/org/apache/nlpcraft/examples/pizzeria/PizzeriaModelSpec.scala
+++
b/nlpcraft-examples/pizzeria/src/test/java/org/apache/nlpcraft/examples/pizzeria/PizzeriaModelSpec.scala
@@ -28,17 +28,18 @@ import scala.collection.mutable
*
*/
class PizzeriaModelSpec:
- private class TestWrapper extends PizzeriaModel:
+ private class ModelTestWrapper extends PizzeriaModel:
private var o: PizzeriaOrder = _
override def doExecute(im: NCIntentMatch, o: PizzeriaOrder): NCResult =
val res = super.doExecute(im, o)
this.o = o
res
def getLastExecutedOrder: PizzeriaOrder = o
+ def clearLastExecutedOrder(): Unit = o = null
- case class Builder(state: State):
+ class Builder:
private val o = new PizzeriaOrder
- o.setState(state)
+ o.setState(NO_DIALOG)
def withPizza(name: String, size: String, qty: Int): Builder =
o.add(Seq(Pizza(name, Some(size), Some(qty))), Seq.empty)
this
@@ -47,7 +48,7 @@ class PizzeriaModelSpec:
this
def build: PizzeriaOrder = o
- private val mdl = new TestWrapper()
+ private val mdl = new ModelTestWrapper()
private val client = new NCModelClient(mdl)
private val msgs = mutable.ArrayBuffer.empty[mutable.ArrayBuffer[String]]
@@ -67,9 +68,7 @@ class PizzeriaModelSpec:
require(errs.isEmpty)
- private def dialog(reqs: String*): Unit = dialog(None, reqs*)
- private def dialog(expResOrder: PizzeriaOrder, reqs: String*): Unit =
dialog(Option(expResOrder), reqs*)
- private def dialog(expResOrderOpt: Option[PizzeriaOrder], reqs: String*):
Unit =
+ private def dialog(exp: PizzeriaOrder, reqs: String*): Unit =
val testMsgs = mutable.ArrayBuffer.empty[String]
msgs += testMsgs
@@ -77,6 +76,8 @@ class PizzeriaModelSpec:
for ((txt, idx) <- reqs.zipWithIndex)
try
+ mdl.clearLastExecutedOrder()
+
val resp = client.ask(txt, null, "userId")
testMsgs += s">> Request: $txt"
@@ -88,15 +89,12 @@ class PizzeriaModelSpec:
errs += testNum -> new Exception(s"Unexpected result for
test:$testNum [expected:\n$expType, type=${resp.getType}]")
if idx == reqs.size - 1 then
- expResOrderOpt match
- case Some(expResOrder) =>
- val lastOrder = mdl.getLastExecutedOrder
- def s(o: PizzeriaOrder) = if o == null then null
else s"Order [state=${o.getState}, desc=${o.getDescription}]"
- val s1 = s(expResOrder)
- val s2 = s(lastOrder)
- if s1 != s2 then
- errs += testNum -> new Exception(s"Unexpected
result for test (excepted/real):$testNum\n$s1\n$s2")
- case None => // No-op.
+ val lastOrder = mdl.getLastExecutedOrder
+ def s(o: PizzeriaOrder) = if o == null then null else
s"Order [state=${o.getState}, desc=${o.getDescription}]"
+ val s1 = s(exp)
+ val s2 = s(lastOrder)
+ if s1 != s2 then
+ errs += testNum -> new Exception(s"Unexpected result
for test (excepted/real):$testNum\n$s1\n$s2")
catch
case e: Exception => errs += testNum -> new Exception(s"Error
during test [num=$testNum]", e)
@@ -111,12 +109,18 @@ class PizzeriaModelSpec:
@Test
def test(): Unit =
dialog(
+ new Builder().withDrink("tea", 1).build,
"One tea",
"yes",
"yes"
)
dialog(
+ new Builder().
+ withPizza("carbonara", "large", 1).
+ withPizza("marinara", "small", 1).
+ withDrink("tea", 1).
+ build,
"I want to order carbonara, marinara and tea",
"large size please",
"smallest",
@@ -125,12 +129,14 @@ class PizzeriaModelSpec:
)
dialog(
+ new Builder().withPizza("carbonara", "small", 2).build,
"carbonara two small",
"yes",
"yes"
)
dialog(
+ new Builder().withPizza("carbonara", "small", 1).build,
"carbonara",
"small",
"yes",
@@ -138,11 +144,13 @@ class PizzeriaModelSpec:
)
dialog(
+ null,
"marinara",
"stop"
)
+
dialog(
- Builder(NO_DIALOG).
+ new Builder().
withPizza("margherita", "small", 2).
withPizza("marinara", "small", 3).
withDrink("tea", 1).