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()) { ; } }); }
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)); } }