From 869071b607369ef3f32867e2cc2669e22faa901b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Mickevi=C4=8Dius?= Date: Mon, 29 Jun 2015 15:25:57 +0300 Subject: [PATCH] =str #16935 add graph and bidiflow builders to the spec --- .../stream/DslFactoriesConsistencySpec.scala | 38 +++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/akka-stream-tests/src/test/scala/akka/stream/DslFactoriesConsistencySpec.scala b/akka-stream-tests/src/test/scala/akka/stream/DslFactoriesConsistencySpec.scala index 4f336d98fc..75dc0046b6 100644 --- a/akka-stream-tests/src/test/scala/akka/stream/DslFactoriesConsistencySpec.scala +++ b/akka-stream-tests/src/test/scala/akka/stream/DslFactoriesConsistencySpec.scala @@ -22,6 +22,7 @@ class DslFactoriesConsistencySpec extends WordSpec with Matchers { ("apply" → "from") :: ("apply" -> "fromGraph") :: ("apply" -> "fromIterator") :: + ("apply" -> "fromFunctions") :: Nil // format: OFF @@ -49,6 +50,11 @@ class DslFactoriesConsistencySpec extends WordSpec with Matchers { val sFlow = classOf[scaladsl.Flow[_, _, _]] val jFlow = classOf[javadsl.Flow[_, _, _]] + val sRunnableGraph = classOf[scaladsl.RunnableGraph[_]] + val jRunnableGraph = classOf[javadsl.RunnableGraph[_]] + + val graph = classOf[Graph[_, _]] + "Java DSL" must provide { "Source" which { "allows creating the same Sources as Scala DSL" in { @@ -74,6 +80,24 @@ class DslFactoriesConsistencySpec extends WordSpec with Matchers { val jClass = akka.stream.javadsl.Sink.getClass val jFactory = classOf[akka.stream.javadsl.SinkCreate] + runSpec(getSMethods(sClass), getJMethods(jClass) ++ getJMethods(jFactory).map(adaptCreate)) + } + } + "FlowGraph" which { + "allows creating the same FlowGraphs as scala DSL" in { + val sClass = akka.stream.scaladsl.FlowGraph.getClass + val jClass = akka.stream.javadsl.FlowGraph.getClass + val jFactory = classOf[akka.stream.javadsl.GraphCreate] + + runSpec(getSMethods(sClass), getJMethods(jClass) ++ getJMethods(jFactory).map(adaptCreate)) + } + } + "BidiFlow" which { + "allows creating the same BidiFlows as scala DSL" in { + val sClass = akka.stream.scaladsl.BidiFlow.getClass + val jClass = akka.stream.javadsl.BidiFlow.getClass + val jFactory = classOf[akka.stream.javadsl.BidiFlowCreate] + runSpec(getSMethods(sClass), getJMethods(jClass) ++ getJMethods(jFactory).map(adaptCreate)) } } @@ -97,6 +121,9 @@ class DslFactoriesConsistencySpec extends WordSpec with Matchers { Ignore(_ == akka.stream.scaladsl.Source.getClass, _ == "apply", _ == 24, _ ⇒ true), Ignore(_ == akka.stream.scaladsl.Flow.getClass, _ == "apply", _ == 24, _ ⇒ true), Ignore(_ == akka.stream.scaladsl.Sink.getClass, _ == "apply", _ == 24, _ ⇒ true), + Ignore(_ == akka.stream.scaladsl.BidiFlow.getClass, _ == "apply", _ == 24, _ ⇒ true), + Ignore(_ == akka.stream.scaladsl.FlowGraph.getClass, _ == "closed", _ == 24, _ ⇒ true), + Ignore(_ == akka.stream.scaladsl.FlowGraph.getClass, _ == "partial", _ == 24, _ ⇒ true), // all generated methods like scaladsl.Sink$.akka$stream$scaladsl$Sink$$newOnCompleteStage$1 Ignore(_ ⇒ true, _.contains("$"), _ ⇒ true, _ ⇒ true)) @@ -108,9 +135,12 @@ class DslFactoriesConsistencySpec extends WordSpec with Matchers { private val adaptCreate: PartialFunction[Method, Method] = { case m if m.parameterTypes.size > 1 ⇒ - // rename createN => create + // rename + // createN => create + // closedN => closed + // partialN => partial // and adapt java side non curried functions to scala side like - m.copy(name = "create", parameterTypes = m.parameterTypes.dropRight(1) :+ classOf[akka.japi.function.Function[_, _]]) + m.copy(name = m.name.filter(Character.isLetter), parameterTypes = m.parameterTypes.dropRight(1) :+ classOf[akka.japi.function.Function[_, _]]) case m ⇒ m } @@ -196,7 +226,9 @@ class DslFactoriesConsistencySpec extends WordSpec with Matchers { def returnTypeMatch(s: Class[_], j: Class[_]): Boolean = (sSource.isAssignableFrom(s) && jSource.isAssignableFrom(j)) || (sSink.isAssignableFrom(s) && jSink.isAssignableFrom(j)) || - (sFlow.isAssignableFrom(s) && jFlow.isAssignableFrom(j)) + (sFlow.isAssignableFrom(s) && jFlow.isAssignableFrom(j)) || + (sRunnableGraph.isAssignableFrom(s) && jRunnableGraph.isAssignableFrom(j)) || + (graph.isAssignableFrom(s) && graph.isAssignableFrom(j)) def typeMatch(scalaParams: List[Class[_]], javaParams: List[Class[_]]): Boolean = (scalaParams.toList, javaParams.toList) match {