public void GivenNoPeers_WhenSyncSelf_ThenGetSameMoney(float money) { MyAccount.Self.Money = (Money)money; MyActor.SyncAll(); Assert.Equal(money, MyAccount.Self.Money); }
public void WhenSyncPeer_ThenUpdateFromConnectedPeersAndWeighBySumOfTheirTrust( float peerMoneyBefore, float[] peerTrusts, int[] peerAssessments, float peerMoneyAfter) { var peers = peerTrusts .Select((pt, i) => _network .CreateRootAccount($"Peer{i}", (byte)(10 + i)) .GetActor(_network, new TransactionFactory())) .ToArray(); int i = 0; var peerToUpdate = peers[0]; foreach (var peer in peers) { Interconnect(MyActor, peer); MyAccount.SetTrust(peer.Account.Id, (SignedWeight)peerTrusts[i]); var peerAssessment = peerAssessments[i]; if (peerAssessment >= 0) { Interconnect(peer, peerToUpdate); peer.Account.SetMoney(peerToUpdate.Account.Id, (Money)peerAssessments[i]); } i++; } MyAccount.SetMoney(peerToUpdate.Account.Id, (Money)peerMoneyBefore); MyActor.SyncAll(); Assert.Equal(peerMoneyAfter, MyAccount.GetMoney(peerToUpdate.Account.Id)); }
public void Given_1_PeerWithFullTrustAndConnectivity_WhenSyncSelf_ThenGetMeanPeerMoney( float myMoneyBefore, float peerAssessment, float myMoneyAfter) { Interconnect(MyActor, OtherActor); OtherAccount.SetMoney(MyId, (Money)peerAssessment); MyAccount.Self.Money = (Money)myMoneyBefore; MyAccount.SetTrust(OtherId, (SignedWeight)1); MyActor.SyncAll(); Assert.Equal(myMoneyAfter, MyAccount.Self.Money); }
public void WhenSync_LearnAboutUnknownArtefactsPossessedByPeers() { Interconnect(OtherActor, ThirdActor); var artefact = ThirdActor.CreateArtefact(Artefact.Name); Interconnect(MyActor, OtherActor, ThirdActor); MyAccount.SetTrust(OtherId, (SignedWeight)1); MyAccount.SetTrust(ThirdId, (SignedWeight)1); MyActor.SyncAll(); Assert.True(MyAccount.KnowsArtefact(artefact.Id)); }
public void GivenMinorityOfPeersBelieveKnownArtefactHasDifferentOwner_WhenSync_ArtefactOwnerIsNotChanged(float otherTrust, float thirdTrust) { Interconnect(MyActor, OtherActor, ThirdActor); var artefact = ThirdActor.CreateArtefact(Artefact.Name); MyAccount.SetTrust(OtherId, (SignedWeight)otherTrust); MyAccount.SetTrust(ThirdId, (SignedWeight)thirdTrust); MyAccount.MoveArtefact(artefact, MyId); MyActor.SyncAll(); Assert.True(MyAccount.Self.HasArtefact(artefact.Id)); Assert.Equal(MyId, MyAccount.GetArtefact(artefact.Id).OwnerId); }
public void GivenMinorityOfPeersBelieveKnownArtefactHasDifferentOwner_WhenSync_TheyLooseTrust(float trustValueBefore) { var trustBefore = (SignedWeight)trustValueBefore; Interconnect(MyActor, OtherActor); var artefact = OtherActor.CreateArtefact(Artefact.Name); MyAccount.SetTrust(OtherId, trustBefore); MyAccount.MoveArtefact(artefact, MyId); MyActor.SyncAll(); var expectedTrust = trustBefore.Decrease(HoldCounterfeitArtefactDistrustFactor); Assert.Equal(expectedTrust, MyAccount.GetTrust(OtherId)); }
public void Given_2_PeersWithFullConnectivity_WhenSyncSelf_ThenGetMeanWeightedByTrustPeerMoney( float myMoneyBefore, float firstPeerTrust, float firstPeerAssessment, float secondPeerTrust, float secondPeerAssessment, float myMoneyAfter) { Interconnect(MyActor, OtherActor, ThirdActor); OtherAccount.SetMoney(MyId, (Money)firstPeerAssessment); ThirdAccount.SetMoney(MyId, (Money)secondPeerAssessment); MyAccount.Self.Money = (Money)myMoneyBefore; MyAccount.SetTrust(OtherId, (SignedWeight)firstPeerTrust); MyAccount.SetTrust(ThirdId, (SignedWeight)secondPeerTrust); MyActor.SyncAll(); Assert.Equal(myMoneyAfter, MyAccount.Self.Money); }