Ejemplo n.º 1
0
        public void ShinkerProperties()
        {
            var config    = Configuration.QuickThrowOnFailure;
            var sut       = new Concurrent <int, int, int>(() => 1, 3);
            var generator = Arb.From(sut.Generator(new Collection <ConcurrentCommand.Command <int, int> > {
                new IntSutIdentity()
            }), sut.Shrinker);

            Prop.ForAll(generator, testCase =>
            {
                var uniqeClients = MakeClientsUniqe(testCase);
                var shrunken     = sut.Shrinker(uniqeClients).ToList();
                var flatClients  = Flatten(uniqeClients);
                return(AllShunkenClientsElementOfOriginal(shrunken, flatClients)
                       .And(OnlyOneElementOfOriginalNotInShrunken(shrunken, flatClients)));
            }).Check(config);
        }
Ejemplo n.º 2
0
        public void GeneratorProducesCommandsFromTheCorrectNumberOfClients()
        {
            Prop.ForAll(Arb.Default.PositiveInt(), clients =>
            {
                var clientsVal = clients.Item;
                var sut        = new Concurrent <int, int, int>(() => 1, clientsVal);
                var generator  = sut.Generator(new Collection <ConcurrentCommand.Command <int, int> > {
                    new IntSutIdentity()
                }).ToArbitrary();
                return(Prop.ForAll(generator,
                                   gens =>
                {
                    var clients = gens
                                  .SelectMany(gen => gen.Select(i => i))
                                  .GroupBy(i => i.Client);

                    return (clients.All(gr => gr.Key >= 0 && gr.Key < clientsVal) && clients.Any())
                    .ToProperty()
                    .Label($"Maximum number of clients:{clientsVal} actual number of client found in commands:{clients.Count()}");
                }
                                   ));
            }).QuickCheckThrowOnFailure();
        }