public void ResultsProperty_WhenProviderHasCompletedRefreshing_HasCorrectGroupsAndItemsData()
        {
            List <Order> orders = new List <Order>();

            orders.Add(new Order()
            {
                Product = "Mouse pad", Quantity = 10, Net = 40
            });
            orders.Add(new Order()
            {
                Product = "Mouse pad", Quantity = 5, Net = 20
            });
            orders.Add(new Order()
            {
                Product = "Copy holder", Quantity = 10, Net = 50
            });
            orders.Add(new Order()
            {
                Product = "Copy holder", Quantity = 5, Net = 25
            });
            orders.Add(new Order()
            {
                Product = "Copy holder", Quantity = 2, Net = 10
            });

            using (this.provider.DeferRefresh())
            {
                this.provider.ItemsSource = orders;
                this.provider.GroupDescriptions.Add(new PropertyGroupDescription()
                {
                    PropertyName = "Product"
                });
            }

            this.provider.BlockUntilRefreshCompletes();
            var results = ((IDataProvider)this.provider).Results;

            var group1 = new Group("Copy holder");

            group1.SetItems(orders.OfType <object>().Skip(2).ToList());

            var group2 = new Group("Mouse pad");

            group2.SetItems(orders.OfType <object>().Take(2).ToList());

            List <Group> items = new List <Group>()
            {
                group1, group2
            };
            Group expectedRowGroup = new Group("Grand Total");

            expectedRowGroup.SetGroups(items);

            bool equal = GroupTestsHelper.AreGroupsAndItemsEqual(expectedRowGroup, results.Root.RowGroup);

            Assert.IsTrue(equal);
        }