This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch NLPCRAFT-16
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git


The following commit(s) were added to refs/heads/NLPCRAFT-16 by this push:
     new 938919f  WIP.
938919f is described below

commit 938919f5a60fa3195c36cc8efc1d86535e1e29ed
Author: Sergey Kamov <[email protected]>
AuthorDate: Mon Mar 16 21:29:24 2020 +0300

    WIP.
---
 .../mgrs/nlp/enrichers/NCEnricherBaseSpec.scala    |  19 +-
 .../mgrs/nlp/enrichers/NCEnrichersTestBeans.scala  | 258 ++++++++++++++++-----
 .../nlp/enrichers/limit/NCEnricherLimitSpec.scala  |   6 +-
 3 files changed, 214 insertions(+), 69 deletions(-)

diff --git 
a/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/NCEnricherBaseSpec.scala
 
b/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/NCEnricherBaseSpec.scala
index cb8319e..0103ae3 100644
--- 
a/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/NCEnricherBaseSpec.scala
+++ 
b/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/NCEnricherBaseSpec.scala
@@ -19,6 +19,7 @@ package org.apache.nlpcraft.probe.mgrs.nlp.enrichers
 
 import org.apache.nlpcraft.model.tools.test.{NCTestClient, NCTestClientBuilder}
 import org.apache.nlpcraft.probe.embedded.NCEmbeddedProbe
+
 import org.junit.jupiter.api.Assertions.assertTrue
 import org.junit.jupiter.api.{AfterEach, BeforeEach}
 import org.scalatest.Assertions
@@ -31,9 +32,9 @@ class NCEnricherBaseSpec {
 
     @BeforeEach
     private[enrichers] def setUp(): Unit = {
-        NCEmbeddedProbe.start(classOf[NCEnricherTestModel])
+        //NCEmbeddedProbe.start(classOf[NCEnricherTestModel])
 
-        client = new NCTestClientBuilder().newBuilder.build
+        client = new 
NCTestClientBuilder().newBuilder.setResponseLog(false).build
 
         client.open(NCEnricherTestModel.ID)
     }
@@ -50,15 +51,15 @@ class NCEnricherBaseSpec {
     private[enrichers] def checkExists(txt: String, expToks: NCTestToken*): 
Unit = {
         val res = client.ask(txt)
 
-        assertTrue(res.isOk, s"Result is not successful, error: 
${res.getResultError.get()}")
-        assertTrue(res.getResult.isPresent, s"Result is not successful, error: 
${res.getResultError.get()}")
+        assertTrue(res.isOk, s"Result is not successful, result: $res")
+        assertTrue(res.getResult.isPresent, s"Result is not successful, 
result: $res")
 
         val sens = NCTestSentence.deserialize(res.getResult.get())
         val expSen = NCTestSentence(expToks)
 
         assertTrue(
             sens.exists(_ == expSen),
-            s"Required sentence not found [request=$txt, expected=$expSen, 
found=${sens.mkString("\n")}]"
+            s"Required sentence not found [request=$txt, \nexpected=\n$expSen, 
\nfound=\n${sens.mkString("\n")}\n]"
         )
     }
 
@@ -71,8 +72,8 @@ class NCEnricherBaseSpec {
     private[enrichers] def checkAll(txt: String, expToks: 
Seq[Seq[NCTestToken]]): Unit = {
         val res = client.ask(txt)
 
-        assertTrue(res.isOk, s"Result is not successful, error: 
${res.getResultError.get()}")
-        assertTrue(res.getResult.isPresent, s"Result is not successful, error: 
${res.getResultError.get()}")
+        assertTrue(res.isOk, s"Result is not successful, result: $res")
+        assertTrue(res.getResult.isPresent, s"Result is not successful, 
result: $res")
 
         val expSens = expToks.map(NCTestSentence(_))
         val sens = NCTestSentence.deserialize(res.getResult.get())
@@ -85,7 +86,7 @@ class NCEnricherBaseSpec {
         for (expSen ← expSens)
             require(
                 sens.exists(_ == expSen),
-                s"Required sentence not found [request=$txt, expected=$expSen, 
found=${sens.mkString("\n")}]"
+                s"Required sentence not found [request=$txt, 
\nexpected=\n$expSen, \nfound=\n${sens.mkString("\n")}\n]"
             )
     }
 
@@ -115,6 +116,6 @@ class NCEnricherBaseSpec {
             Assertions.fail(s"Failed ${errs.size} tests. See errors list 
above.")
         }
         else
-            println("All tests passed")
+            println(s"All tests passed: ${tests.size}")
     }
 }
diff --git 
a/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/NCEnrichersTestBeans.scala
 
b/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/NCEnrichersTestBeans.scala
index fa24df6..08ff8e7 100644
--- 
a/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/NCEnrichersTestBeans.scala
+++ 
b/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/NCEnrichersTestBeans.scala
@@ -19,200 +19,344 @@ package org.apache.nlpcraft.probe.mgrs.nlp.enrichers
 
 import java.io.{ByteArrayInputStream, ByteArrayOutputStream, 
ObjectInputStream, ObjectOutputStream}
 import java.nio.charset.StandardCharsets.UTF_8
-import java.util.Base64
+import java.util.{Base64, Optional}
 
 import org.apache.nlpcraft.model.NCToken
 import resource.managed
 
+import scala.compat.java8.OptionConverters._
+import scala.collection.JavaConverters._
+
 /**
   * Tests infrastructure beans.
   */
 
 sealed trait NCTestToken {
     def id: String
-    def origText: String
+    def text: String
     def isStop: Boolean = false
 }
 
 // Simplified set of tokens data. Added only fields for validation.
 
 // Server enrichers.
-case class NCTestNlpToken(origText: String, override val isStop: Boolean) 
extends NCTestToken {
+case class NCTestNlpToken(text: String, override val isStop: Boolean) extends 
NCTestToken {
+    require(text != null)
+
     override def id: String = "nlpcraft:nlp"
+    override def toString: String = s"nlp[text=$text, isStop=$isStop]"
 }
 
 // Skip non-deteministric properties verification.
-case class NCTestDateToken(origText: String) extends NCTestToken {
+case class NCTestDateToken(text: String) extends NCTestToken {
+    require(text != null)
+
     override def id: String = "nlpcraft:date"
+    override def toString: String = s"date[text=$text, isStop=$isStop]"
 }
 
-case class NCTestCoordinateToken(origText: String, latitude: Double, 
longitude: Double) extends NCTestToken {
+case class NCTestCoordinateToken(text: String, latitude: Double, longitude: 
Double) extends NCTestToken {
+    require(text != null)
+
     override def id: String = "nlpcraft:coordinate"
+    override def toString: String = s"coordinate[text=$text, 
latitude=$longitude, latitude=$longitude]"
 }
 
-case class NCTestNumericToken(origText: String, from: Double, to: Double) 
extends NCTestToken {
+case class NCTestNumericToken(text: String, from: Double, to: Double) extends 
NCTestToken {
+    require(text != null)
+
     override def id: String = "nlpcraft:num"
+    override def toString: String = s"num[text=$text, from=$from, to=$to]"
 }
 
-case class NCTestCityToken(origText: String, city: String) extends NCTestToken 
{
+case class NCTestCityToken(text: String, city: String) extends NCTestToken {
+    require(text != null)
+    require(city != null)
+
     override def id: String = "nlpcraft:city"
+
+    override def toString: String = s"city[text=$text, city=$city]"
 }
 
-case class NCTestCountryToken(origText: String, country: String) extends 
NCTestToken {
+case class NCTestCountryToken(text: String, country: String) extends 
NCTestToken {
+    require(text != null)
+    require(country != null)
+
     override def id: String = "nlpcraft:country"
+    override def toString: String = s"country[text=$text, country=$country]"
 }
 
-case class NCTestRegionToken(origText: String, region: String) extends 
NCTestToken {
+case class NCTestRegionToken(text: String, region: String) extends NCTestToken 
{
+    require(text != null)
+    require(region != null)
+
     override def id: String = "nlpcraft:region"
+    override def toString: String = s"region[text=$region, city=$region]"
 }
 
-case class NCTestContinentToken(origText: String, continent: String) extends 
NCTestToken {
+case class NCTestContinentToken(text: String, continent: String) extends 
NCTestToken {
+    require(text != null)
+    require(continent != null)
+
     override def id: String = "nlpcraft:continent"
+    override def toString: String = s"continent[text=$text, 
continent=$continent]"
 }
 
-case class NCTestSubcontinentToken(origText: String, city: String) extends 
NCTestToken {
+case class NCTestSubcontinentToken(text: String, subcontinent: String) extends 
NCTestToken {
+    require(text != null)
+    require(subcontinent != null)
+
     override def id: String = "nlpcraft:subcontinent"
+    override def toString: String = s"subcontinent[text=$text, 
subcontinent=$subcontinent]"
 }
 
-case class NCTestMetroToken(origText: String, metro: String) extends 
NCTestToken {
+case class NCTestMetroToken(text: String, metro: String) extends NCTestToken {
+    require(text != null)
+    require(metro != null)
+
     override def id: String = "nlpcraft:metro"
+    override def toString: String = s"metro[text=$text, metro=$metro]"
 }
 
 // Probe enrichers.
 case class NCTestSortToken(
-    origText: String,
+    text: String,
     subjNotes: Seq[String],
     subjIndexes: Seq[Int],
     byNotes: Option[Seq[String]] = None,
     byIndexes: Option[Seq[Int]] = None,
     asc: Option[Boolean] = None
 ) extends NCTestToken {
+    require(text != null)
+    require(subjNotes != null)
+    require(subjNotes.nonEmpty)
+    require(subjIndexes != null)
+    require(subjIndexes.nonEmpty)
+    require(byNotes != null)
+    require(byNotes.isEmpty || byNotes.get.nonEmpty)
+    require(byIndexes != null)
+    require(byIndexes.isEmpty || byIndexes.get.nonEmpty)
+    require(asc != null)
+
     override def id: String = "nlpcraft:sort"
+    override def toString: String = {
+        var s = s"sort" +
+            s"[text=$text" +
+            s", subjNotes=[${subjNotes.mkString(",")}]" +
+            s", subjIndexes=[${subjIndexes.mkString(",")}]"
+
+        if (byNotes.isDefined)
+            s = s"$s" +
+                s", byNotes=[${byNotes.get.mkString(",")}]" +
+                s", byIndexes=[${byIndexes.get.mkString(",")}]"
+
+        if (asc.isDefined)
+            s = s"$s, asc=$asc"
+
+        s = s"$s]"
+
+        s
+    }
 }
 
 object NCTestSortToken {
     def apply(
-        origText: String,
+        text: String,
         subjNotes: Seq[String],
         subjIndexes: Seq[Int],
         asc: Boolean
-    ): NCTestSortToken = new NCTestSortToken(origText, subjNotes, subjIndexes, 
None, None, Some(asc))
+    ): NCTestSortToken = new NCTestSortToken(text, subjNotes, subjIndexes, 
None, None, Some(asc))
 
     def apply(
-        origText: String,
+        text: String,
         subjNote: String,
         subjIndex: Int,
         asc: Boolean
-    ): NCTestSortToken = new NCTestSortToken(origText, Seq(subjNote), 
Seq(subjIndex), None, None, Some(asc))
+    ): NCTestSortToken = new NCTestSortToken(text, Seq(subjNote), 
Seq(subjIndex), None, None, Some(asc))
 
     def apply(
-        origText: String,
+        text: String,
         subjNote: String,
         subjIndex: Int
-    ): NCTestSortToken = new NCTestSortToken(origText, Seq(subjNote), 
Seq(subjIndex), None, None, None)
+    ): NCTestSortToken = new NCTestSortToken(text, Seq(subjNote), 
Seq(subjIndex), None, None, None)
 
     def apply(
-        origText: String,
+        text: String,
         subjNotes: Seq[String],
         subjIndexes: Seq[Int],
         byNotes: Seq[String],
         byIndexes: Seq[Int]
-    ): NCTestSortToken = new NCTestSortToken(origText, subjNotes, subjIndexes, 
Some(byNotes), Some(byIndexes), None)
+    ): NCTestSortToken = new NCTestSortToken(text, subjNotes, subjIndexes, 
Some(byNotes), Some(byIndexes), None)
 
     def apply(
-        origText: String,
+        text: String,
         subjNote: String,
         subjIndex: Int,
         byNote: String,
         byIndex: Int): NCTestSortToken =
-        new NCTestSortToken(origText, Seq(subjNote), Seq(subjIndex), 
Some(Seq(byNote)), Some(Seq(byIndex)), None)
+        new NCTestSortToken(text, Seq(subjNote), Seq(subjIndex), 
Some(Seq(byNote)), Some(Seq(byIndex)), None)
 
     def apply(
-        origText: String,
+        text: String,
         subjNote: String,
         subjIndex: Int,
         byNote: String,
         byIndex: Int,
         asc: Boolean): NCTestSortToken =
-        new NCTestSortToken(origText, Seq(subjNote), Seq(subjIndex), 
Some(Seq(byNote)), Some(Seq(byIndex)), Some(asc))
+        new NCTestSortToken(text, Seq(subjNote), Seq(subjIndex), 
Some(Seq(byNote)), Some(Seq(byIndex)), Some(asc))
 }
 
-case class NCTestRelationToken(origText: String, `type`: String, indexes: 
Seq[Int], note: String) extends NCTestToken {
+case class NCTestRelationToken(text: String, `type`: String, indexes: 
Seq[Int], note: String) extends NCTestToken {
+    require(text != null)
+    require(`type` != null)
+    require(indexes != null)
+    require(indexes.nonEmpty)
+    require(note != null)
+
     override def id: String = "nlpcraft:relation"
+    override def toString: String =
+        s"relation" +
+            s"[text=$text" +
+            s", type=${`type`}" +
+            s", indexes=[${indexes.mkString(",")}]" +
+            s", note=$note]"
 }
 
-case class NCTestAggregationToken(origText: String, `type`: String, indexes: 
Seq[Int], note: String) extends NCTestToken {
+case class NCTestAggregationToken(text: String, `type`: String, indexes: 
Seq[Int], note: String) extends NCTestToken {
+    require(text != null)
+    require(`type` != null)
+    require(indexes != null)
+    require(indexes.nonEmpty)
+    require(note != null)
+
     override def id: String = "nlpcraft:aggregation"
+    override def toString: String =
+        s"aggregation" +
+            s"[text=$text" +
+            s", type=${`type`}" +
+            s", indexes=[${indexes.mkString(",")}]" +
+            s", note=$note]"
 }
 
 case class NCTestLimitToken(
-    origText: String,
+    text: String,
     limit: Double,
     indexes: Seq[Int],
     note: String,
     asc: Option[Boolean] = None
 ) extends NCTestToken {
+    require(text != null)
+    require(indexes != null)
+    require(indexes.nonEmpty)
+    require(note != null)
+    require(asc != null)
+
     override def id: String = "nlpcraft:limit"
+    override def toString: String = {
+        var s = s"limit" +
+            s"[text=$text" +
+            s", limit=$limit" +
+            s", indexes=[${indexes.mkString(",")}]" +
+            s", note=$note]"
+
+        if (asc.isDefined)
+            s = s"$s, asc=$asc"
+
+        s = s"$s]"
+
+        s
+    }
 }
 
-case class NCTestUserToken(origText: String, id: String) extends NCTestToken
+case class NCTestUserToken(text: String, id: String) extends NCTestToken {
+    require(text != null)
+    require(id != null)
+    override def toString: String = s"user [text=$text, id=$id]"}
 
 // Token and sentence beans and utilities.
 
 object NCTestToken {
     def apply(t: NCToken): NCTestToken = {
         val txt = t.getOriginalText
+        val id = t.getId
 
-        t.getId match {
+        id match {
             case "nlpcraft:nlp" ⇒ NCTestNlpToken(txt, t.isStopWord)
             case "nlpcraft:coordinate" ⇒
-                NCTestCoordinateToken(txt, latitude = t.meta("latitude"), 
longitude = t.meta("longitude"))
-            case "nlpcraft:num" ⇒ NCTestNumericToken(txt, from = 
t.meta("from"), to = t.meta("to"))
+                NCTestCoordinateToken(
+                    txt,
+                    latitude = t.meta("nlpcraft:coordinate:latitude"),
+                    longitude = t.meta("nlpcraft:coordinate:longitude")
+                )
+            case "nlpcraft:num" ⇒ NCTestNumericToken(
+                txt,
+                from = t.meta("nlpcraft:num:from"),
+                to = t.meta("nlpcraft:num:to")
+            )
             case "nlpcraft:date" ⇒ NCTestDateToken(txt)
-            case "nlpcraft:city" ⇒ NCTestCityToken(txt, city = t.meta("city"))
-            case "nlpcraft:region" ⇒ NCTestRegionToken(txt, region = 
t.meta("region"))
-            case "nlpcraft:country" ⇒ NCTestCountryToken(txt, country = 
t.meta("country"))
-            case "nlpcraft:subcontinent" ⇒ NCTestSubcontinentToken(txt, city = 
t.meta("subcontinent"))
-            case "nlpcraft:continent" ⇒ NCTestContinentToken(txt, continent = 
t.meta("continent"))
-            case "nlpcraft:metro" ⇒ NCTestMetroToken(txt, metro = 
t.meta("metro"))
+            case "nlpcraft:city" ⇒ NCTestCityToken(txt, city = 
t.meta("nlpcraft:city:city"))
+            case "nlpcraft:region" ⇒ NCTestRegionToken(txt, region = 
t.meta("nlpcraft:region:region"))
+            case "nlpcraft:country" ⇒ NCTestCountryToken(txt, country = 
t.meta("nlpcraft:country:country"))
+            case "nlpcraft:subcontinent" ⇒
+                NCTestSubcontinentToken(txt, subcontinent = 
t.meta("nlpcraft:subcontinent:subcontinent"))
+            case "nlpcraft:continent" ⇒
+                NCTestContinentToken(txt, continent = 
t.meta("nlpcraft:continent:continent"))
+            case "nlpcraft:metro" ⇒ NCTestMetroToken(txt, metro = 
t.meta("nlpcraft:metro:metro"))
 
             case "nlpcraft:sort" ⇒
-                val subjNotes: Seq[String] = t.meta("subjnotes")
-                val subjIndexes: Seq[Int] = t.meta("subjindexes")
-                val byNotes: Option[Seq[String]] = t.meta("bynotes")
-                val byIndexes: Option[Seq[Int]] = t.meta("byindexes")
-                val asc: Option[Boolean] = t.meta("asc")
-
-                NCTestSortToken(txt, subjNotes, subjIndexes, byNotes, 
byIndexes, asc)
+                val subjNotes: java.util.List[String] = 
t.meta("nlpcraft:sort:subjnotes")
+                val subjIndexes: java.util.List[Int] = 
t.meta("nlpcraft:sort:subjindexes")
+                val byNotes: Optional[java.util.List[String]] = 
t.metaOpt("nlpcraft:sort:bynotes")
+                val byIndexes: Optional[java.util.List[Int]] = 
t.metaOpt("nlpcraft:sort:byindexes")
+                val asc: Optional[Boolean] = t.metaOpt("nlpcraft:sort:asc")
+
+                def toOpt[T](lOpt: Optional[java.util.List[T]]): 
Option[Seq[T]] =
+                    lOpt.asScala match {
+                        case Some(l) ⇒ Some(l.asScala)
+                        case None ⇒ None
+                    }
+
+                NCTestSortToken(txt, subjNotes.asScala, subjIndexes.asScala, 
toOpt(byNotes), toOpt(byIndexes), asc.asScala)
             case "nlpcraft:relation" ⇒
+                val indexes: java.util.List[Int] = 
t.meta("nlpcraft:relation:indexes")
+
                 NCTestRelationToken(
                     txt,
-                    `type` = t.meta("type"),
-                    indexes = t.meta("indexes"),
-                    note = t.meta("note")
+                    `type` = t.meta("nlpcraft:relation:type"),
+                    indexes = indexes.asScala,
+                    note = t.meta("nlpcraft:relation:note")
                 )
             case "nlpcraft:aggregation" ⇒
+                val indexes: java.util.List[Int] = 
t.meta("nlpcraft:aggregation:indexes")
+
                 NCTestAggregationToken(
                     txt,
-                    `type` = t.meta("type"),
-                    indexes = t.meta("indexes"),
-                    note = t.meta("note")
+                    `type` = t.meta("nlpcraft:aggregation:type"),
+                    indexes = indexes.asScala,
+                    note = t.meta("nlpcraft:aggregation:note")
                 )
 
             case "nlpcraft:limit" ⇒
+                val indexes: java.util.List[Int] = 
t.meta("nlpcraft:limit:indexes")
+                val asc: Optional[Boolean] = t.metaOpt("nlpcraft:sort:asc")
+
                 NCTestLimitToken(
                     txt,
-                    limit = t.meta("limit"),
-                    asc = t.meta("asc"),
-                    indexes = t.meta("indexes"),
-                    note = t.meta("note")
+                    limit = t.meta("nlpcraft:limit:limit"),
+                    indexes = indexes.asScala,
+                    note = t.meta("nlpcraft:limit:note"),
+                    asc.asScala
                 )
 
-            case _ ⇒ throw new AssertionError(s"Unsupported token: ${t.getId}")
+            case _ ⇒
+                if (t.isUserDefined)
+                    NCTestUserToken(txt, id)
+                else
+                    throw new AssertionError(s"Unsupported token: $id")
         }
     }
 
-    def apply(origText: String, isStop: Boolean): NCTestToken = 
NCTestNlpToken(origText, isStop)
+    def apply(text: String, isStop: Boolean): NCTestToken = 
NCTestNlpToken(text, isStop)
 }
 
 case class NCTestSentence(tokens: Seq[NCTestToken]) {
diff --git 
a/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCEnricherLimitSpec.scala
 
b/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCEnricherLimitSpec.scala
index 1e87143..ac5468d 100644
--- 
a/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCEnricherLimitSpec.scala
+++ 
b/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCEnricherLimitSpec.scala
@@ -17,7 +17,7 @@
 
 package org.apache.nlpcraft.probe.mgrs.nlp.enrichers.limit
 
-import org.apache.nlpcraft.probe.mgrs.nlp.enrichers.{NCEnricherBaseSpec, 
NCTestLimitToken, NCTestUserToken}
+import org.apache.nlpcraft.probe.mgrs.nlp.enrichers.{NCEnricherBaseSpec, 
NCTestLimitToken ⇒ limit, NCTestUserToken ⇒ user}
 import org.junit.jupiter.api.Test
 
 /**
@@ -32,8 +32,8 @@ class NCEnricherLimitSpec extends NCEnricherBaseSpec {
     def test(): Unit = {
         checkExists(
             "top 5 A",
-            NCTestLimitToken("top 5", limit = 5, indexes = Seq(1), note = "A", 
asc = Some(true)),
-            NCTestUserToken("A", "A")
+            limit("top 5", limit = 5, indexes = Seq(1), note = "A", asc = 
Some(true)),
+            user("A", "A")
         )
     }
 }

Reply via email to