Add receiveN to JavaTestKit. Fixes #3029
This commit is contained in:
parent
44808c17ed
commit
b6c1527cbd
4 changed files with 56 additions and 4 deletions
|
|
@ -206,6 +206,11 @@ public class TestKitDocTest {
|
||||||
final Number j = expectMsgAnyClassOf(Integer.class, Long.class);
|
final Number j = expectMsgAnyClassOf(Integer.class, Long.class);
|
||||||
expectNoMsg();
|
expectNoMsg();
|
||||||
//#test-expect
|
//#test-expect
|
||||||
|
getRef().tell("receveN-1", null);
|
||||||
|
getRef().tell("receveN-2", null);
|
||||||
|
//#test-expect
|
||||||
|
final Object[] two = receiveN(2);
|
||||||
|
//#test-expect
|
||||||
assertEquals("hello", hello);
|
assertEquals("hello", hello);
|
||||||
assertEquals("hello", any);
|
assertEquals("hello", any);
|
||||||
assertEquals(42, i);
|
assertEquals(42, i);
|
||||||
|
|
|
||||||
|
|
@ -235,6 +235,11 @@ obey the innermost enclosing :class:`Within` as detailed :ref:`below
|
||||||
message has been received before calling this method which has not been
|
message has been received before calling this method which has not been
|
||||||
removed from the queue using one of the other methods.
|
removed from the queue using one of the other methods.
|
||||||
|
|
||||||
|
* :meth:`Object[] receiveN(int n, Duration max)`
|
||||||
|
|
||||||
|
``n`` messages must be received within the given time; the received
|
||||||
|
messages are returned.
|
||||||
|
|
||||||
For cases which require more refined conditions there are constructs which take
|
For cases which require more refined conditions there are constructs which take
|
||||||
code blocks:
|
code blocks:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -227,6 +227,14 @@ public class JavaTestKit {
|
||||||
p.expectNoMsg(max);
|
p.expectNoMsg(max);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Object[] receiveN(int n) {
|
||||||
|
return (Object[]) p.receiveN(n).toArray(Util.classTag(Object.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object[] receiveN(int n, FiniteDuration max) {
|
||||||
|
return (Object[]) p.receiveN(n, max).toArray(Util.classTag(Object.class));
|
||||||
|
}
|
||||||
|
|
||||||
public abstract class ReceiveWhile<T> {
|
public abstract class ReceiveWhile<T> {
|
||||||
abstract protected T match(Object msg) throws Exception;
|
abstract protected T match(Object msg) throws Exception;
|
||||||
|
|
||||||
|
|
@ -264,10 +272,6 @@ public class JavaTestKit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object[] receiveN(int n, FiniteDuration max) {
|
|
||||||
return (Object[]) p.receiveN(n, max).toArray(Util.classTag(Object.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract class EventFilter<T> {
|
public abstract class EventFilter<T> {
|
||||||
abstract protected T run();
|
abstract protected T run();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
package akka.testkit
|
||||||
|
|
||||||
|
import language.postfixOps
|
||||||
|
|
||||||
|
import org.scalatest.WordSpec
|
||||||
|
import org.scalatest.matchers.MustMatchers
|
||||||
|
import org.scalatest.{ BeforeAndAfterEach, WordSpec }
|
||||||
|
import akka.actor._
|
||||||
|
import scala.concurrent.{ Future, Await }
|
||||||
|
import scala.concurrent.duration._
|
||||||
|
import akka.pattern.ask
|
||||||
|
|
||||||
|
@org.junit.runner.RunWith(classOf[org.scalatest.junit.JUnitRunner])
|
||||||
|
class JavaTestKitSpec extends AkkaSpec with DefaultTimeout {
|
||||||
|
|
||||||
|
"JavaTestKit" must {
|
||||||
|
|
||||||
|
"be able to receiveN messages" in {
|
||||||
|
new JavaTestKit(system) {
|
||||||
|
val sent = List(1, 2, 3, 4, 5)
|
||||||
|
for (m ← sent) { getRef() ! m }
|
||||||
|
val received = receiveN(sent.size, 5 seconds);
|
||||||
|
sent.toSet must be(received.toSet)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
"be able to receiveN messages with default duration" in {
|
||||||
|
new JavaTestKit(system) {
|
||||||
|
val sent = List(1, 2, 3)
|
||||||
|
for (m ← sent) { getRef() ! m }
|
||||||
|
val received = receiveN(sent.size);
|
||||||
|
sent.toSet must be(received.toSet)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue