public void PrefixAndTail_must_throw_if_tail_is_attempted_to_be_materialized_twice()
{
this.AssertAllStagesStopped(() =>
{
var futureSink = NewHeadSink;
var fut = Source.From(Enumerable.Range(1, 2)).PrefixAndTail(1).RunWith(futureSink, Materializer);
fut.Wait(TimeSpan.FromSeconds(3)).Should().BeTrue();
fut.Result.Item1.ShouldAllBeEquivalentTo(Enumerable.Range(1, 1));
var tail = fut.Result.Item2;
var subscriber1 = TestSubscriber.CreateProbe<int>(this);
tail.To(Sink.FromSubscriber(subscriber1)).Run(Materializer);
var subscriber2 = TestSubscriber.CreateProbe<int>(this);
tail.To(Sink.FromSubscriber(subscriber2)).Run(Materializer);
subscriber2.ExpectSubscriptionAndError()
.Message.Should()
.Be("Substream Source cannot be materialized more than once");
subscriber1.RequestNext(2).ExpectComplete();
}, Materializer);
}