public void DoNotUsePrivateFunds() { var selection = new LabelSelectionViewModel(Money.Parse("1.0")); var pockets = new List <Pocket>(); pockets.AddPocket(1.0M, out var pocket1, CoinPocketHelper.PrivateFundsText); pockets.AddPocket(2.0M, out var pocket2, "Dan"); pockets.AddPocket(1.0M, out var pocket3, CoinPocketHelper.SemiPrivateFundsText); selection.Reset(pockets.ToArray()); Assert.Contains(selection.GetLabel("Dan"), selection.LabelsWhiteList); Assert.True(selection.EnoughSelected); var output = selection.GetUsedPockets(); Assert.DoesNotContain(pocket1, output); Assert.Contains(pocket2, output); Assert.DoesNotContain(pocket3, output); }
public void AutoSelectKnownByRecipientPockets() { var selection = new LabelSelectionViewModel(Money.Parse("1.0")); var pockets = new List <Pocket>(); pockets.AddPocket(0.8M, out var pocket1, CoinPocketHelper.PrivateFundsText); pockets.AddPocket(1.1M, out var pocket2, "Dan"); pockets.AddPocket(1.5M, out var pocket3, CoinPocketHelper.UnlabelledFundsText); pockets.AddPocket(1.1M, out var pocket4, "David", "Lucas"); pockets.AddPocket(0.1M, out var pocket5, CoinPocketHelper.SemiPrivateFundsText); selection.Reset(pockets.ToArray()); var output = selection.AutoSelectPockets("David"); Assert.DoesNotContain(pocket1, output); Assert.DoesNotContain(pocket2, output); Assert.DoesNotContain(pocket3, output); Assert.Contains(pocket4, output); Assert.DoesNotContain(pocket5, output); }
public void SetUsedLabelIgnoreCase() { var selection = new LabelSelectionViewModel(Money.Parse("1.0")); var pockets = new List <Pocket>(); pockets.AddPocket(1.0M, out var pocket1, "Dan"); pockets.AddPocket(1.0M, out var pocket2, "Lucas"); selection.Reset(pockets.ToArray()); var output = selection.AutoSelectPockets("Dan"); Assert.Contains(pocket1, output); Assert.DoesNotContain(pocket2, output); var hdpk = LabelTestExtensions.NewKey("dan"); var usedCoin = BitcoinFactory.CreateSmartCoin(hdpk, 1.0M); selection.SetUsedLabel(new[] { usedCoin }, privateThreshold: 10); Assert.Contains(selection.GetLabel("Lucas"), selection.LabelsBlackList); Assert.Contains(selection.GetLabel("Dan"), selection.LabelsWhiteList); }
public void WhiteListSwapsGroupedLabelsInOtherPocketsThatContainTargetLabelExceptThoseAvailableInOtherPockets() { var selection = new LabelSelectionViewModel(Money.Parse("1.0")); var pockets = new List <Pocket>(); pockets.AddPocket(1.0M, out var pocket1, "Target", "Dan"); pockets.AddPocket(1.0M, out var pocket2, "Target"); pockets.AddPocket(1.0M, out var pocket3, "Target", "Roland"); selection.Reset(pockets.ToArray()); selection.SwapLabel(selection.GetLabel("Dan")); Assert.DoesNotContain(selection.GetLabel("Target"), selection.LabelsBlackList); Assert.DoesNotContain(selection.GetLabel("Roland"), selection.LabelsBlackList); Assert.Contains(selection.GetLabel("Dan"), selection.LabelsBlackList); var output = selection.GetUsedPockets(); Assert.DoesNotContain(pocket1, output); Assert.Contains(pocket2, output); Assert.Contains(pocket3, output); }
public void WhiteListHighlightsAllLabelsInOtherPocketsThatContainTargetLabel() { var selection = new LabelSelectionViewModel(Money.Parse("1.0")); var pockets = new List <Pocket>(); pockets.AddPocket(1.0M, out _, "Target", "Dan", "Roland"); pockets.AddPocket(1.0M, out _, "Target"); pockets.AddPocket(1.0M, out _, "David", "Adam", "Lucas"); pockets.AddPocket(1.0M, out _, "Jumar"); selection.Reset(pockets.ToArray()); selection.GetLabel("Target").IsPointerOver = true; Assert.True(selection.GetLabel("Target").IsHighlighted); Assert.True(selection.GetLabel("Dan").IsHighlighted); Assert.True(selection.GetLabel("Roland").IsHighlighted); Assert.False(selection.GetLabel("David").IsHighlighted); Assert.False(selection.GetLabel("Adam").IsHighlighted); Assert.False(selection.GetLabel("Lucas").IsHighlighted); Assert.False(selection.GetLabel("Jumar").IsHighlighted); }
public void SetUsedLabelIncludePrivateAndSemiPrivateFunds() { var selection = new LabelSelectionViewModel(Money.Parse("2.5")); var pockets = new List <Pocket>(); pockets.AddPocket(1.0M, out _, "Dan"); var privateCoins = new[] { BitcoinFactory.CreateSmartCoin(LabelTestExtensions.NewKey(anonymitySet: 999), 0.5m), BitcoinFactory.CreateSmartCoin(LabelTestExtensions.NewKey(anonymitySet: 999), 0.5m), }; var privateCoinsView = new CoinsView(privateCoins.ToArray()); var privatePocket = new Pocket((SmartLabel.Empty, privateCoinsView)); pockets.Add(privatePocket); var semiPrivateCoins = new[] { BitcoinFactory.CreateSmartCoin(LabelTestExtensions.NewKey(anonymitySet: 5), 0.5m), BitcoinFactory.CreateSmartCoin(LabelTestExtensions.NewKey(anonymitySet: 5), 0.5m), }; var semiPrivateCoinsView = new CoinsView(semiPrivateCoins.ToArray()); var semiPrivatePocket = new Pocket((SmartLabel.Empty, semiPrivateCoinsView)); pockets.Add(semiPrivatePocket); selection.Reset(pockets.ToArray()); var output = selection.AutoSelectPockets("Dan"); selection.SetUsedLabel(output.SelectMany(x => x.Coins), privateThreshold: 10); Assert.True(selection.EnoughSelected); }
public static LabelViewModel GetLabel(this LabelSelectionViewModel selection, string label) { return(selection.AllLabelsViewModel.Single(x => x.Value == label)); }