+ actor #15446 add external predicate to ReceiveBuilder (#24221)

This commit is contained in:
kerr 2018-01-03 17:23:31 +08:00 committed by Konrad `ktoso` Malawski
parent 9ccf71076a
commit 7edf3bfecf
3 changed files with 95 additions and 0 deletions

View file

@ -117,6 +117,21 @@ public class InitializationDocTest extends AbstractJavaTest {
}
}
static class GenericActorWithPredicateAlwaysResponse extends AbstractActor {
private boolean alwaysResponse() {
return true;
}
@Override
public Receive createReceive() {
return receiveBuilder()
.matchUnchecked(GenericMessage.class, this::alwaysResponse, (GenericMessage<String> msg) -> {
getSender().tell(msg.value.toUpperCase(), getSelf());
})
.build();
}
}
@Test
public void testIt() {
@ -158,4 +173,19 @@ public class InitializationDocTest extends AbstractJavaTest {
expectMsgEquals("A");
}};
}
@Test
public void actorShouldAlwaysRespondForEmptyMessage() {
new TestKit(system) {{
ActorRef genericTestActor = system.actorOf(Props.create(GenericActorWithPredicateAlwaysResponse.class), "genericActorWithPredicateAlwaysResponse");
GenericMessage<String> emptyGenericMessage = new GenericMessage<String>("");
GenericMessage<String> nonEmptyGenericMessage = new GenericMessage<String>("a");
genericTestActor.tell(emptyGenericMessage, getRef());
expectMsg("");
genericTestActor.tell(nonEmptyGenericMessage, getRef());
expectMsgEquals("A");
}};
}
}