Esempio n. 1
0
        public void BuildMany_WithoutNullParentKeys_Successful()
        {
            var item1 = new TreeItem(1, -1);
            var item2 = new TreeItem(2, 1);

            var result = ReadOnlyTree <int, TreeItem> .BuildAllTrees(new[] { item1, item2 }, item => item.Id, item => item.ParentId.Value).Single();

            AssertExtension.AreObjectsValuesEqual(item1, result.Item);
        }
Esempio n. 2
0
        public void BuildMany_Successful()
        {
            var testData = CreateTestData();

            var result = ReadOnlyTree <int?, TreeItem> .BuildAllTrees(testData.SetupList, item => item.Id, item => item.ParentId).ToList();

            Assert.AreEqual(testData.ExpectedParents.Count, result.Count);
            for (int i = 0; i < result.Count; i++)
            {
                AssertExtension.AreObjectsValuesEqual(testData.ExpectedParents[i], result[i].Item);
            }
        }
Esempio n. 3
0
        public void Traverse_Successful()
        {
            var testData = CreateTestData();
            var trees    = ReadOnlyTree <int?, TreeItem> .BuildAllTrees(testData.SetupList, item => item.Id, item => item.ParentId).ToList();

            var result = trees.SelectMany(tree => tree.Traverse()).ToList();

            Assert.AreEqual(testData.ExpectedTraversalList.Count, result.Count);
            for (int i = 0; i < result.Count; i++)
            {
                AssertExtension.AreObjectsValuesEqual(testData.ExpectedTraversalList[i], result[i]);
            }
        }
Esempio n. 4
0
        public void BuildMany_WithDuplicateKeys_IgnoresDuplicates()
        {
            var item1 = new TreeItem(1, -1);
            var item2 = new TreeItem(2, 1);
            var item3 = new TreeItem(2, -1);

            var result = ReadOnlyTree <int?, TreeItem>
                         .BuildAllTrees(new[] { item1, item2, item3 }, item => item.Id, item => item.ParentId)
                         .ToList();

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(item1, result[0].Item);
        }
Esempio n. 5
0
        public void BuildMany_WithCycles_RemovesCyclesFromResult()
        {
            var item1 = new TreeItem(1, 2);
            var item2 = new TreeItem(2, 1);
            var item3 = new TreeItem(3, null);

            var result = ReadOnlyTree <int?, TreeItem> .BuildAllTrees(new[] { item1, item2, item3 }, item => item.Id, item => item.ParentId)
                         .SelectMany(t => t.Traverse())
                         .ToList();

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(item3, result[0]);
        }