public async Task GrainWithSecondStorageProviderShouldUseCorrectProvider()
        {
            var grain = Cluster.GrainFactory.GetGrain <ITestGrain2>("6");
            var mock  = MockState.Generate();

            await grain.SaveMe(mock);

            var state = await grain.GetTheState();

            Assert.AreEqual(mock, state);
        }
        public async Task ExistingGrainShouldHaveState()
        {
            var grain = Cluster.GrainFactory.GetGrain <ITestGrain>("2");
            var mock  = MockState.Generate();

            await grain.SaveMe(mock);

            await grain.Deactivate();

            var state = await grain.GetTheState();

            Assert.AreEqual(mock, state);
        }
        public async Task MultipleWritesShouldEachUpdateState()
        {
            var grain = Cluster.GrainFactory.GetGrain <ITestGrain>("5");
            var mock  = MockState.Generate();

            await grain.SaveMe(mock);

            await grain.Deactivate();

            var state = await grain.GetTheState();

            Assert.AreEqual(mock, state);

            var mock2 = MockState.Generate();
            await grain.SaveMe(mock2);

            await grain.Deactivate();

            var state2 = await grain.GetTheState();

            Assert.AreEqual(mock2, state2);
        }
        public async Task DeleteStateShouldRemoveState()
        {
            var grain = Cluster.GrainFactory.GetGrain <ITestGrain>("3");
            var mock  = MockState.Generate();

            await grain.SaveMe(mock);

            var state = await grain.GetTheState();

            Assert.AreEqual(mock, state);

            await grain.DeleteState();

            state = await grain.GetTheState();

            Assert.AreEqual(MockState.Empty, state);

            await grain.Deactivate();

            state = await grain.GetTheState();

            Assert.AreEqual(MockState.Empty, state);
        }