public async Task ProfileTest() { var Table = CreateProfileTestData(); var profiles = new List <TransformFunction> { GetProfileReference(true, "BestDataType", "StringColumn"), GetProfileReference(true, "BestDataType", "IntColumn"), GetProfileReference(true, "BestDataType", "DecimalColumn"), GetProfileReference(true, "BestDataType", "DateColumn"), GetProfileReference(true, "Nulls", "NullsBlanksColumn"), GetProfileReference(true, "Blanks", "NullsBlanksColumn"), GetProfileReference(true, "Zeros", "ZerosColumn"), GetProfileReference(true, "MaxLength", "MaxLengthColumn"), GetProfileReference(true, "MaxValue", "MaxValueColumn"), GetProfileReference(true, "DistinctValues", "DistinctValuesColumn"), GetProfileReference(true, "Patterns", "PatternsColumn") }; var transformProfile = new TransformProfile(Table, profiles); //read all records in the tranform profile var count = 0; while (await transformProfile.ReadAsync()) { count++; } Assert.Equal(10, count); //confirm profile hasn't impacted the read. var profileResults = transformProfile.GetProfileResults(); count = 0; var detailCount = 0; while (await profileResults.ReadAsync()) { if ((bool)profileResults["IsSummary"] == true) { switch ((string)profileResults["ColumnName"]) { case "StringColumn": Assert.Equal("String", (string)profileResults["Value"]); break; case "IntColumn": Assert.Equal("Integer", (string)profileResults["Value"]); break; case "DecimalColumn": Assert.Equal("Double", (string)profileResults["Value"]); break; case "DateColumn": Assert.Equal("DateTime", (string)profileResults["Value"]); break; case "NullsBlanksColumn": var value = decimal.Parse(((string)profileResults["Value"]).TrimEnd(new char[] { '%', ' ' })) / 100M; if ((string)profileResults["Profile"] == "Nulls") { Assert.Equal(0.2M, value); } else { Assert.Equal(0.4M, value); } break; case "MaxLengthColumn": Assert.Equal("5", (string)profileResults["Value"]); break; case "MaxValueColumn": Assert.Equal("4.1", (string)profileResults["Value"]); break; case "DistinctValuesColumn": Assert.Equal("3", (string)profileResults["Value"]); break; case "PatternsColumn": // assert failed due to different percentage formatting, so simplified test added. // Assert.Equal("Pattern Count=3, Most common(50.00%): 99999", ((string)profileResults["Value"]).Replace(" %", "%")); Assert.Equal("Pattern Count=3", ((string)profileResults["Value"]).Substring(0, 15)); break; } count++; } else { detailCount++; } } Assert.Equal(11, count); Assert.Equal(25, detailCount); }