public async Task  RunDoubleColumnSort()
        {
            var source        = Helpers.CreateUnSortedTestData();
            var transformSort = new TransformSort(source, new List <Sort> {
                new Sort("GroupColumn"), new Sort("IntColumn")
            });

            Assert.Equal(6, transformSort.FieldCount);

            Assert.True(await transformSort.ReadAsync());
            Assert.True((int)transformSort["IntColumn"] == 2);
            Assert.True(await transformSort.ReadAsync());
            Assert.True((int)transformSort["IntColumn"] == 4);
            Assert.True(await transformSort.ReadAsync());
            Assert.True((int)transformSort["IntColumn"] == 6);
            Assert.True(await transformSort.ReadAsync());
            Assert.True((int)transformSort["IntColumn"] == 8);
            Assert.True(await transformSort.ReadAsync());
            Assert.True((int)transformSort["IntColumn"] == 10);
            Assert.True(await transformSort.ReadAsync());
            Assert.True((int)transformSort["IntColumn"] == 1);
            Assert.True(await transformSort.ReadAsync());
            Assert.True((int)transformSort["IntColumn"] == 3);
            Assert.True(await transformSort.ReadAsync());
            Assert.True((int)transformSort["IntColumn"] == 5);
            Assert.True(await transformSort.ReadAsync());
            Assert.True((int)transformSort["IntColumn"] == 7);
            Assert.True(await transformSort.ReadAsync());
            Assert.True((int)transformSort["IntColumn"] == 9);
        }
        public async Task JoinPreSortFirstFilter()
        {
            var source         = Helpers.CreateSortedTestData();
            var sortedJoinData = new TransformSort(Helpers.CreateDuplicatesJoinData(), new List <Sort>()
            {
                new Sort("StringColumn")
            });
            var transformJoin = new TransformJoin(source, sortedJoinData, new List <JoinPair>()
            {
                new JoinPair(new TableColumn("StringColumn"), new TableColumn("StringColumn"))
            }, null, Transform.EDuplicateStrategy.First, new TableColumn("LookupValue", ETypeCode.String, "Join"), "Join");

            Assert.Equal(9, transformJoin.FieldCount);

            await transformJoin.Open(1, null, CancellationToken.None);

            Assert.True(transformJoin.JoinAlgorithm == TransformJoin.EJoinAlgorithm.Sorted);

            var pos = 0;

            while (await transformJoin.ReadAsync())
            {
                pos++;
                if (pos < 10)
                {
                    Assert.Equal("lookup" + pos, transformJoin["LookupValue"]);
                }
                else
                {
                    Assert.Null(transformJoin["LookupValue"]); //test the last join which is not found.
                }
            }
            Assert.Equal(10, pos);
        }
        public async Task RunSingleColumnSort(string column, Sort.EDirection direction, string checkColumn)
        {
            var source        = Helpers.CreateUnSortedTestData();
            var transformSort = new TransformSort(source, new List <Sort> {
                new Sort(column, direction)
            });
            var sortCount = 1;

            Assert.Equal(6, transformSort.FieldCount);

            while (await transformSort.ReadAsync())
            {
                Assert.Equal(sortCount, transformSort[checkColumn]);
                sortCount++;
            }
        }
        public async Task SortLargeTable()
        {
            var source        = Helpers.CreateLargeTable(100000);
            var transformSort = new TransformSort(source, new List <Sort> {
                new Sort("random", Sort.EDirection.Ascending)
            });

            transformSort.SetInTransform(source);

            var previousValue = "";

            while (await transformSort.ReadAsync())
            {
                var value = (string)transformSort["random"];
                Assert.True(String.Compare(previousValue, value) <= 0);
            }
        }
        public async Task JoinSortedPreFilter()
        {
            var source         = Helpers.CreateSortedTestData();
            var sortedJoinData = new TransformSort(Helpers.CreateDuplicatesJoinData(), new List <Sort>()
            {
                new Sort("StringColumn")
            });
            var conditions = new List <TransformFunction>
            {
                //create a condition to filter only when IsValid == true;
                new TransformFunction(
                    new Func <bool, bool>((isValid) => isValid),
                    new TableColumn[] { new TableColumn("IsValid", ETypeCode.Boolean, "Join") },
                    null,
                    null)
            };

            var transformJoin = new TransformJoin(source, sortedJoinData, new List <JoinPair>()
            {
                new JoinPair(new TableColumn("StringColumn"), new TableColumn("StringColumn"))
            }, conditions, Transform.EDuplicateStrategy.Abend, null, "Join");

            Assert.Equal(9, transformJoin.FieldCount);

            await transformJoin.Open(1, null, CancellationToken.None);

            Assert.True(transformJoin.JoinAlgorithm == TransformJoin.EJoinAlgorithm.Sorted);

            var pos = 0;

            while (await transformJoin.ReadAsync())
            {
                pos++;
                if (pos < 10)
                {
                    Assert.Equal("lookup" + pos, transformJoin["LookupValue"]);
                }
                else
                {
                    Assert.Null(transformJoin["LookupValue"]); //test the last join which is not found.
                }
            }
            Assert.Equal(10, pos);
        }
        public async Task JoinSortedDuplicate()
        {
            var source         = Helpers.CreateSortedTestData();
            var sortedJoinData = new TransformSort(Helpers.CreateDuplicatesJoinData(), new List <Sort>()
            {
                new Sort("StringColumn")
            });
            var transformJoin = new TransformJoin(source, sortedJoinData, new List <JoinPair>()
            {
                new JoinPair(new TableColumn("StringColumn"), new TableColumn("StringColumn"))
            }, null, Transform.EDuplicateStrategy.Abend, null, "Join");

            Assert.Equal(9, transformJoin.FieldCount);

            await transformJoin.Open(1, null, CancellationToken.None);

            await Assert.ThrowsAsync <TransformException>(async() => { while (await transformJoin.ReadAsync())
                                                                       {
                                                                           ;
                                                                       }
                                                          });
        }
示例#7
0
 public override int Compare(GameObject lhs, GameObject rhs)
 {
     if (lhs == rhs)
     {
         return(0);
     }
     else if (lhs.IsFolder() && !rhs.IsFolder())
     {
         return(-1);
     }
     else if (!lhs.IsFolder() && rhs.IsFolder())
     {
         return(1);
     }
     else
     {
         if (defSort == null)
         {
             defSort = new TransformSort();
         }
         return(defSort.Compare(lhs, rhs));
     }
 }