public void SimpleDequeues() { var queue = ImmutableQueue <int> .Empty .Enqueue(1) .Enqueue(2) .Enqueue(3); var r1 = Transactional.Dequeue <ImmutableQueue <int>, int>(ref queue); r1.Should().Be(1); var r2 = Transactional.Dequeue <ImmutableQueue <int>, int>(ref queue); r2.Should().Be(2); var r3 = Transactional.Dequeue <ImmutableQueue <int>, int>(ref queue); r3.Should().Be(3); Action r4 = () => Transactional.Dequeue <ImmutableQueue <int>, int>(ref queue); r4.ShouldThrow <InvalidOperationException>(); }