本文整理汇总了Scala中akka.stream.testkit.TestSubscriber类的典型用法代码示例。如果您正苦于以下问题:Scala TestSubscriber类的具体用法?Scala TestSubscriber怎么用?Scala TestSubscriber使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TestSubscriber类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。
示例1: PartitionValidatedSpec
//设置package包名称以及导入依赖的类
package eu.svez.akka.stream.cats
import akka.NotUsed
import akka.stream.SinkShape
import akka.stream.scaladsl.{GraphDSL, Sink, Source}
import akka.stream.testkit.TestSubscriber
import cats.implicits._
import eu.svez.akka.stream.cats.Stages._
class PartitionValidatedSpec extends StageSpec {
"PartitionValidated" should "partition a flow of Validation[E, A] in two flows of E and A" in new Test {
val src = Source(List(
1.valid[String],
2.valid[String],
"BOOM!".invalid[Int],
3.valid[String],
"BOOM 2!".invalid[Int]
))
src.runWith(testSink)
successProbe.request(3)
failureProbe.request(2)
successProbe.expectNext(1)
successProbe.expectNext(2)
successProbe.expectNext(3)
failureProbe.expectNext("BOOM!")
failureProbe.expectNext("BOOM 2!")
successProbe.expectComplete()
failureProbe.expectComplete()
}
trait Test {
val failureProbe = TestSubscriber.probe[String]()
val successProbe = TestSubscriber.probe[Int]()
val testSink = Sink.fromGraph(GraphDSL.create() { implicit builder: GraphDSL.Builder[NotUsed] =>
import GraphDSL.Implicits._
val valStage = builder.add(PartitionValidated[String, Int]())
valStage.invalid ~> Sink.fromSubscriber(failureProbe)
valStage.valid ~> Sink.fromSubscriber(successProbe)
SinkShape(valStage.in)
})
}
}
示例2: PartitionEitherSpec
//设置package包名称以及导入依赖的类
package eu.svez.akka.stream
import akka.NotUsed
import akka.stream.SinkShape
import akka.stream.scaladsl.{GraphDSL, Sink, Source}
import akka.stream.testkit.TestSubscriber
import Stages._
class PartitionEitherSpec extends StageSpec {
"PartitionEither" should "partition a flow of Either[A, B] into two flows of A and B" in new Test {
val src = Source(List(
Right(1),
Right(2),
Left("One"),
Right(3),
Left("Two")
))
src.runWith(testSink)
rightProbe.request(4)
leftProbe.request(3)
rightProbe.expectNext(1)
rightProbe.expectNext(2)
rightProbe.expectNext(3)
leftProbe.expectNext("One")
leftProbe.expectNext("Two")
rightProbe.expectComplete()
leftProbe.expectComplete()
}
trait Test {
val leftProbe = TestSubscriber.probe[String]()
val rightProbe = TestSubscriber.probe[Int]()
val testSink = Sink.fromGraph(GraphDSL.create() { implicit builder: GraphDSL.Builder[NotUsed] =>
import GraphDSL.Implicits._
val eitherStage = builder.add(PartitionEither[String, Int]())
eitherStage.left ~> Sink.fromSubscriber(leftProbe)
eitherStage.right ~> Sink.fromSubscriber(rightProbe)
SinkShape(eitherStage.in)
})
}
}
示例3: PartitionValidatedNelSpec
//设置package包名称以及导入依赖的类
package eu.svez.akka.stream.cats
import akka.NotUsed
import akka.stream.SinkShape
import akka.stream.scaladsl.{GraphDSL, Sink, Source}
import akka.stream.testkit.TestSubscriber
import cats.data.NonEmptyList
import cats.implicits._
import eu.svez.akka.stream.cats.Stages._
class PartitionValidatedNelSpec extends StageSpec {
"PartitionValidatedNel" should "partition a flow of Validation[E, A] in two flows of E and A" in new Test {
val src = Source(List(
1.valid[NonEmptyList[String]],
2.valid[NonEmptyList[String]],
NonEmptyList.of("BOOM!", "KABOOM!").invalid[Int],
3.valid[NonEmptyList[String]],
NonEmptyList.of("BOOM 2!").invalid[Int]
))
src.runWith(testSink)
successProbe.request(3)
failureProbe.request(3)
successProbe.expectNext(1)
successProbe.expectNext(2)
successProbe.expectNext(3)
failureProbe.expectNext("BOOM!")
failureProbe.expectNext("KABOOM!")
failureProbe.expectNext("BOOM 2!")
successProbe.expectComplete()
failureProbe.expectComplete()
}
trait Test {
val failureProbe = TestSubscriber.probe[String]()
val successProbe = TestSubscriber.probe[Int]()
val testSink = Sink.fromGraph(GraphDSL.create() { implicit builder: GraphDSL.Builder[NotUsed] =>
import GraphDSL.Implicits._
val valStage = builder.add(PartitionValidatedNel[String, Int]())
valStage.invalid ~> Sink.fromSubscriber(failureProbe)
valStage.valid ~> Sink.fromSubscriber(successProbe)
SinkShape(valStage.in)
})
}
}
示例4: PartitionIorSpec
//设置package包名称以及导入依赖的类
package eu.svez.akka.stream.cats
import akka.NotUsed
import akka.stream.SinkShape
import akka.stream.scaladsl.{GraphDSL, Sink, Source}
import akka.stream.testkit.TestSubscriber
import cats.data.Ior
import eu.svez.akka.stream.cats.Stages._
class PartitionIorSpec extends StageSpec {
"PartitionIor" should "partition a flow of Ior[A, B] into two flows of A and B" in new Test {
val src = Source(List(
Ior.Right(1),
Ior.Right(2),
Ior.Left("One"),
Ior.Right(3),
Ior.Left("Two"),
Ior.Both("Three", 4)
))
src.runWith(testSink)
rightProbe.request(4)
leftProbe.request(3)
rightProbe.expectNext(1)
rightProbe.expectNext(2)
rightProbe.expectNext(3)
rightProbe.expectNext(4)
leftProbe.expectNext("One")
leftProbe.expectNext("Two")
leftProbe.expectNext("Three")
rightProbe.expectComplete()
leftProbe.expectComplete()
}
trait Test {
val leftProbe = TestSubscriber.probe[String]()
val rightProbe = TestSubscriber.probe[Int]()
val testSink = Sink.fromGraph(GraphDSL.create() { implicit builder: GraphDSL.Builder[NotUsed] =>
import GraphDSL.Implicits._
val iorStage = builder.add(PartitionIor[String, Int]())
iorStage.left ~> Sink.fromSubscriber(leftProbe)
iorStage.right ~> Sink.fromSubscriber(rightProbe)
SinkShape(iorStage.in)
})
}
}
示例5: PartitionTrySpec
//设置package包名称以及导入依赖的类
package eu.svez.akka.stream
import akka.NotUsed
import akka.stream.SinkShape
import akka.stream.scaladsl.{GraphDSL, Sink, Source}
import akka.stream.testkit.TestSubscriber
import eu.svez.akka.stream.Stages._
import scala.util.{Failure, Success}
class PartitionTrySpec extends StageSpec {
"PartitionTry" should "partition a flow of Try[T] into two flows of Throwable and T" in new Test {
val src = Source(List(
Success(1),
Success(2),
Failure(new IllegalArgumentException("error 1")),
Success(3),
Failure(new ArrayIndexOutOfBoundsException("error 2"))
))
src.runWith(testSink)
successProbe.request(4)
failureProbe.request(3)
successProbe.expectNext(1)
successProbe.expectNext(2)
successProbe.expectNext(3)
val t1 = failureProbe.expectNext()
t1 shouldBe an[IllegalArgumentException]
t1 should have message "error 1"
val t2 = failureProbe.expectNext()
t2 shouldBe an[ArrayIndexOutOfBoundsException]
t2 should have message "error 2"
successProbe.expectComplete()
failureProbe.expectComplete()
}
trait Test {
val failureProbe = TestSubscriber.probe[Throwable]()
val successProbe = TestSubscriber.probe[Int]()
val testSink = Sink.fromGraph(GraphDSL.create() { implicit builder: GraphDSL.Builder[NotUsed] =>
import GraphDSL.Implicits._
val tryStage = builder.add(PartitionTry[Int]())
tryStage.failure ~> Sink.fromSubscriber(failureProbe)
tryStage.success ~> Sink.fromSubscriber(successProbe)
SinkShape(tryStage.in)
})
}
}