public async Task Test_SuspendAsync_Throws_If_SuspendCoreSync_Returns_Null_State()
 {
     Obj = new TestSyncReActivatablObject();
     await Assert.ThrowsAsync <InvalidReturnValueException>(async() =>
     {
         await ReObj.GetStateAsync();
     });
 }
        public async Task Test_Resumed_Emits_Most_Recent_State_For_Additional_Subscriptions()
        {
            var obj   = new TestSyncReActivatablObject();
            var first = new TestState();
            List <TestState> resumedStates = new List <TestState>(2);
            Action           subscribe     = () => obj.Resumed.Subscribe(state => resumedStates.Add(state));
            await obj.ResumeAsync(first);

            subscribe();
            subscribe();
            subscribe();

            Assert.Collection(resumedStates,
                              s => s.Should().Be(first),
                              s => s.Should().Be(first),
                              s => s.Should().Be(first));
        }
        public async Task Test_Resumed_Emits_State_After_ResumeCoreAsync_Is_Called()
        {
            var obj    = new TestSyncReActivatablObject();
            var first  = new TestState();
            var second = new TestState();
            List <TestState> resumedStates = new List <TestState>(2);

            obj.Resumed.Subscribe(state => resumedStates.Add(state));

            await obj.ResumeAsync(first);

            await obj.ResumeAsync(second);

            Assert.Collection(resumedStates,
                              s => s.Should().Be(first),
                              s => s.Should().Be(second));
        }