示例#1
0
    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);
    }
示例#2
0
    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);
    }
示例#3
0
    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);
    }
示例#4
0
    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);
    }
示例#5
0
    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);
    }
示例#6
0
    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);
    }
示例#7
0
 public static LabelViewModel GetLabel(this LabelSelectionViewModel selection, string label)
 {
     return(selection.AllLabelsViewModel.Single(x => x.Value == label));
 }