public void BlackListHighlightsDealWithMultipleOverlapsCorrectly() { 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("Target")); Assert.Contains(selection.GetLabel("Target"), selection.LabelsBlackList); Assert.Contains(selection.GetLabel("Roland"), selection.LabelsBlackList); Assert.Contains(selection.GetLabel("Dan"), selection.LabelsBlackList); selection.GetLabel("Dan").IsPointerOver = true; Assert.True(selection.GetLabel("Dan").IsHighlighted); Assert.False(selection.GetLabel("Roland").IsHighlighted); Assert.True(selection.GetLabel("Target").IsHighlighted); var output = selection.GetUsedPockets(); Assert.DoesNotContain(pocket1, output); Assert.DoesNotContain(pocket2, output); Assert.DoesNotContain(pocket3, output); }
public void StillIncludePrivateFundsAfterSwap() { var selection = new LabelSelectionViewModel(Money.Parse("1.0")); var pockets = new List <Pocket>(); var privateCoin = LabelTestExtensions.CreateCoin(0.8m, "", 999); var privatePocket = new Pocket((CoinPocketHelper.PrivateFundsText, new CoinsView(new[] { privateCoin }))); pockets.Add(privatePocket); pockets.AddPocket(0.2M, out var pocket2, "Dan"); pockets.AddPocket(0.1M, out var pocket3, "Lucas"); selection.Reset(pockets.ToArray()); var usedCoins = new List <SmartCoin> { privateCoin }; usedCoins.AddRange(pocket2.Coins); selection.SetUsedLabel(usedCoins, 10); var output = selection.GetUsedPockets(); Assert.Contains(privatePocket, output); Assert.Contains(pocket2, output); Assert.DoesNotContain(pocket3, output); Assert.True(selection.EnoughSelected); selection.SwapLabel(selection.GetLabel("Lucas")); selection.SwapLabel(selection.GetLabel("Lucas")); Assert.True(selection.EnoughSelected); }
public PrivacyControlViewModel(Wallet wallet, TransactionInfo transactionInfo, IEnumerable <SmartCoin>?usedCoins, bool isSilent, Money?targetAmount = null) { _wallet = wallet; _isSilent = isSilent; _usedCoins = usedCoins; LabelSelection = new LabelSelectionViewModel(targetAmount ?? transactionInfo.Amount); SetupCancel(enableCancel: false, enableCancelOnEscape: true, enableCancelOnPressed: false); EnableBack = true; NextCommand = ReactiveCommand.Create(() => Complete(LabelSelection.GetUsedPockets()), LabelSelection.WhenAnyValue(x => x.EnoughSelected)); }
public void IncludePrivateFunds() { var selection = new LabelSelectionViewModel(Money.Parse("2.5")); var pockets = new List <Pocket>(); pockets.AddPocket(1.0M, out var pocket1, CoinPocketHelper.PrivateFundsText); pockets.AddPocket(2.0M, out var pocket2, "Dan"); selection.Reset(pockets.ToArray()); Assert.True(selection.EnoughSelected); var output = selection.GetUsedPockets(); Assert.Contains(pocket1, output); Assert.Contains(pocket2, output); }
public void OutPutMatchesWhiteListScenario1() { var selection = new LabelSelectionViewModel(Money.Parse("1.0")); var pockets = new List <Pocket>(); pockets.AddPocket(1.0M, out var pocket1, "Target", "Dan", "Roland"); pockets.AddPocket(1.0M, out var pocket2, "Dan"); selection.Reset(pockets.ToArray()); selection.SwapLabel(selection.GetLabel("Dan")); var output = selection.GetUsedPockets(); Assert.DoesNotContain(pocket1, output); Assert.DoesNotContain(pocket2, output); }
public void AllWhitelistPocketsAreOutput() { var selection = new LabelSelectionViewModel(Money.Parse("1.0")); var pockets = new List <Pocket>(); pockets.AddPocket(1.0M, out var pocket1, "Target", "Dan", "Roland"); pockets.AddPocket(1.0M, out var pocket2, "Target"); pockets.AddPocket(1.0M, out var pocket3, "David", "Adam", "Lucas"); pockets.AddPocket(1.0M, out var pocket4, "Jumar"); selection.Reset(pockets.ToArray()); var output = selection.GetUsedPockets(); Assert.Contains(pocket1, output); Assert.Contains(pocket2, output); Assert.Contains(pocket3, output); Assert.Contains(pocket4, output); }
public void UseOnlyPrivateFunds() { 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"); selection.Reset(pockets.ToArray()); selection.SwapLabel(selection.GetLabel("Dan")); Assert.Contains(selection.GetLabel("Dan"), selection.LabelsBlackList); Assert.True(selection.EnoughSelected); var output = selection.GetUsedPockets(); Assert.DoesNotContain(pocket2, output); Assert.Contains(pocket1, output); }
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); }