public async Task FactoryProbeWithMultipleNewProbes_FakeItEasy() { var firstUnknownGrain = A.Fake <IUnknownGrain>(); var secondUnknownGrain = A.Fake <IUnknownGrain>(); var probeQueue = new Queue <IUnknownGrain>(new[] { firstUnknownGrain, secondUnknownGrain }); Silo.AddProbe <IUnknownGrain>(identity => { var nextProbe = probeQueue.Dequeue(); A.CallTo(() => nextProbe.WhatsMyId()) .Returns(identity.PrimaryKeyString); return(nextProbe); }); var grain = await Silo.CreateGrainAsync <UnknownGrainResolver>("1"); await grain.CreateAndPingMultiple(); var resolvedIds = await grain.GetResolvedUnknownGrainIdsAsync(); resolvedIds[0].Should().Be("unknownGrainOne"); resolvedIds[1].Should().Be("unknownGrainTwo"); }
public async Task FactoryProbeWithMultipleNewProbes_Moq() { // useful for when a grain needs to create other grains whose identities are not known beforehand // and probes for the new grains need to return certain values var firstUnknownGrain = new Mock <IUnknownGrain>(); var secondUnknownGrain = new Mock <IUnknownGrain>(); var probeQueue = new Queue <Mock <IUnknownGrain> >(new [] { firstUnknownGrain, secondUnknownGrain }); Silo.AddProbe <IUnknownGrain>(identity => { var nextProbe = probeQueue.Dequeue(); nextProbe.Setup(probe => probe.WhatsMyId()) .ReturnsAsync(identity.PrimaryKeyString); return(nextProbe); }); var grain = await Silo.CreateGrainAsync <UnknownGrainResolver>("1"); await grain.CreateAndPingMultiple(); var resolvedIds = await grain.GetResolvedUnknownGrainIdsAsync(); resolvedIds[0].Should().Be("unknownGrainOne"); resolvedIds[1].Should().Be("unknownGrainTwo"); }
public async Task StringKeyProbe() { var probe = Silo.AddProbe <IStringKeyGrain>("ABC"); var key = await probe.Object.GetKey(); probe.Should().NotBeNull(); key.Should().BeNull(); }
public async Task GuidKeyProbe() { var probe = Silo.AddProbe <IGuidKeyGrain>(Guid.NewGuid()); var key = await probe.Object.GetKey(); probe.Should().NotBeNull(); key.Should().Be(Guid.Empty); }
public async Task IntKeyProbe() { var probe = Silo.AddProbe <IIntegerKeyGrain>(2); var key = await probe.Object.GetKey(); probe.Should().NotBeNull(); key.Should().Be(0); }
public async Task IntCompoundKeyProbe() { var probe = Silo.AddProbe <IIntegerCompoundKeyGrain>(2, keyExtension: "Test"); var key = await probe.Object.GetKey(); probe.Should().NotBeNull(); key.Item1.Should().Be(0); key.Item2.Should().BeNull(); }
public async Task GuidCompoundKeyProbe() { var probe = Silo.AddProbe <IGuidCompoundKeyGrain>(Guid.NewGuid(), keyExtension: "Test"); var key = await probe.Object.GetKey(); probe.Should().NotBeNull(); key.Item1.Should().Be(Guid.Empty); key.Item2.Should().BeNull(); }
public async Task SetupProbe() { IPing grain = await Silo.CreateGrainAsync <PingGrain>(1); var pong = Silo.AddProbe <IPong>(22); await grain.Ping(); pong.Verify(p => p.Pong(), Times.Once); }
public async Task SetupCompoundProbe() { IPing grain = await Silo.CreateGrainAsync <PingGrain>(1); var pong = Silo.AddProbe <IPongCompound>(44, keyExtension: "Test"); await grain.PingCompound(); pong.Verify(p => p.Pong(), Times.Once); }
public async Task InvalidProbeType() { IPing grain = await Silo.CreateGrainAsync <PingGrain>(1); //This correct id, but a different grain type var pong = Silo.AddProbe <IPong2>(22); grain.Invoking(p => p.Ping()).Should().NotThrow(); pong.Verify(p => p.Pong2(), Times.Never); }
public async Task InvalidProbe() { IPing grain = await Silo.CreateGrainAsync <PingGrain>(1); //This uses the wrong id for the IPong since this is hard coded within PingGrain var pong = Silo.AddProbe <IPong>(0); grain.Invoking(p => p.Ping()).Should().NotThrow(); pong.Verify(p => p.Pong(), Times.Never); }
private TestKitSilo BuildSut(Guid gameId) { var mockStreamProvider = new Mock <IPlayerSeatStreamProvider> (); mockStreamProvider.SetupGet(x => x.Name).Returns("Default"); Silo.AddServiceProbe(mockStreamProvider); var game = Silo.AddProbe <IGame> (gameId); game.Setup(x => x.GetBoardState()).Returns(new Common.BoardState("fen", "orig", "new", "eTag").ToTask()); return(Silo); }
public void InvalidProbe() { IPing grain = Silo.CreateGrain <PingGrain>(1); //This uses the wrong id for the IPong since this is hard coded within PingGrain var pong = Silo.AddProbe <IPong>(0); grain.Invoking(p => p.Ping()).ShouldThrowExactly <Exception>(); pong.Verify(p => p.Pong(), Times.Never); }
public async Task InvalidProbeType() { IPing grain = await Silo.CreateGrainAsync <PingGrain>(1); //This uses the correct id, but the wrong grain type var pong = Silo.AddProbe <IPong2>(22); await grain.Invoking(p => p.Ping()).Should().ThrowExactlyAsync <Exception>(); pong.Verify(p => p.Pong2(), Times.Never); }
public void InvalidProbeType() { IPing grain = Silo.CreateGrain <PingGrain>(1); //This uses the correct id, but the wrong grain type var pong = Silo.AddProbe <IPong2>(22); grain.Invoking(p => p.Ping()).ShouldThrowExactly <Exception>(); pong.Verify(p => p.Pong2(), Times.Never); }
public async Task FactoryProbe() { var pong = new Mock <IPong>(); Silo.AddProbe <IPong>(identity => pong); var grain = await Silo.CreateGrainAsync <PingGrain>(1); await grain.Ping(); pong.Verify(p => p.Pong(), Times.Once); }
public async Task ProbeWithClassPrefix() { Silo.AddProbe <IDevice>("Android", "TestGrains.DeviceAndroidGrain"); Silo.AddProbe <IDevice>("IOS", "TestGrains.DeviceIosGrain"); var managerGrain = this.Silo.CreateGrain <DeviceManagerGrain>(0); var iosGrain = await managerGrain.GetDeviceGrain("IOS"); var androidGrain = await managerGrain.GetDeviceGrain("Android"); (await iosGrain.GetDeviceType()).Should().Equals("IOS"); (await iosGrain.GetDeviceType()).Should().Equals("Android"); }
private TestKitSilo BuildSut(Guid gameId) { var mockStreamProvider = new Mock <IPlayerMoveStreamProvider> (); mockStreamProvider.SetupGet(x => x.Name).Returns("Default"); Silo.AddServiceProbe(mockStreamProvider); var game = Silo.AddProbe <IGame> (gameId); var boardState = new Common.BoardState(fen, orig, @new, eTag); game.Setup(x => x.GetBoardState()).ReturnsAsync(boardState); game.Setup(x => x.ApplyValidatedMove(It.IsAny <IPlayerMove> ())).ReturnsAsync(boardState); game.Setup(x => x.IsValidMove(It.IsAny <IPlayerMove> ())).ReturnsAsync(true); return(Silo); }
public async Task ProbeWithClassPrefix() { var androidMock = Silo.AddProbe <IDevice>("Android", "TestGrains.DeviceAndroidGrain"); var iosMock = Silo.AddProbe <IDevice>("IOS", "TestGrains.DeviceIosGrain"); var managerGrain = await this.Silo.CreateGrainAsync <DeviceManagerGrain>(0); var androidGrain = await managerGrain.GetDeviceGrain("Android"); var iosGrain = await managerGrain.GetDeviceGrain("IOS"); androidGrain.Should().BeSameAs(androidMock.Object); iosGrain.Should().BeSameAs(iosMock.Object); }
private (TestKitSilo sut, Mock <IGame> game, IBoard board) BuildSut(Guid gameId) { var mockStreamProvider = new Mock <IPlayerMoveStreamProvider> (); mockStreamProvider.SetupGet(x => x.Name).Returns("Default"); Silo.AddServiceProbe(mockStreamProvider); var game = Silo.AddProbe <IGame> (gameId); game.Setup(x => x.IsValidMove(It.IsAny <IPlayerMove>())).Returns(Task.FromResult(true)); var board = Silo.CreateGrain <Board> (id: gameId); return(Silo, game, board); }
public async Task ProbeWithClassPrefix2() { var androidMock = Silo.AddProbe <IDevice>("Android", "TestGrains.DeviceAndroidGrain"); androidMock.Setup(o => o.GetDeviceType()).ReturnsAsync("Linux"); var iosMock = Silo.AddProbe <IDevice>("IOS", "TestGrains.DeviceIosGrain"); iosMock.Setup(o => o.GetDeviceType()).ReturnsAsync("BSD"); var managerGrain = await this.Silo.CreateGrainAsync <DeviceManagerGrain>(0); var androidType = await managerGrain.GetDeviceType("Android"); var iosType = await managerGrain.GetDeviceType("IOS"); androidType.Should().Be("Linux"); iosType.Should().Be("BSD"); }