void TestRoundTripLongColumn <T>(IEnumerable <T> testElements, int columnId, IEnumerable <long?> expectedResults) { var memStream = new MemoryStream(); using (var writer = new OrcWriter <T>(memStream, new WriterConfiguration())) //Use the default configuration { writer.AddRows(testElements); } memStream.Seek(0, SeekOrigin.Begin); var dataFile = new DataFileHelper(memStream); var stream = dataFile.GetStream(); var fileTail = new FileTail(stream); var expectedEnumerator = expectedResults.GetEnumerator(); foreach (var stripe in fileTail.Stripes) { var stripeStreamCollection = stripe.GetStripeStreamCollection(); var longReader = new LongReader(stripeStreamCollection, (uint)columnId); var resultEnumerator = longReader.Read().GetEnumerator(); ulong count = 0; while (resultEnumerator.MoveNext()) { Assert.True(expectedEnumerator.MoveNext()); Assert.Equal(expectedEnumerator.Current, resultEnumerator.Current); count++; } Assert.Equal(stripe.NumRows, count); } Assert.False(expectedEnumerator.MoveNext()); //We should have used all expected results }
void TestRoundTrip <T>(List <T> expected) where T : new() { var memStream = new MemoryStream(); using (var writer = new OrcWriter <T>(memStream, new WriterConfiguration())) //Use the default configuration { writer.AddRows(expected); } memStream.Seek(0, SeekOrigin.Begin); var reader = new OrcReader <T>(memStream); var actual = reader.Read().ToList(); Assert.Equal(expected.Count, actual.Count); for (int i = 0; i < expected.Count; i++) { Assert.Equal(expected[i], actual[i]); } }
public static void Main(string[] args) { var baseTime = new DateTime(2017, 3, 16, 0, 0, 0, DateTimeKind.Utc); var rand = new Random(123); var testElements = new List <TestClass>(); for (int i = 0; i < 80000; i++) { var random = rand.Next(); var set = i / 10000; var randomInRange = (random % 10000) + set * 10000 - 40000; var dec = (DateTime.Now - DateTime.Today).Ticks / (decimal)TimeSpan.TicksPerSecond; var timestamp = baseTime.AddTicks(random); var element = new TestClass { Random = random, RandomInRange = randomInRange, Incrementing = i, SetNumber = set, Double = (double)i / (set + 1), Float = (float)i / (set + 1), Dec = dec, Timestamp = timestamp, Str = $"Random={random}, RandomInRange={randomInRange}, Incrementing={i}, SetNumber={set}, Dec={dec}, Timestamp={timestamp:MM/dd/yyyy hh:mm:ss.fffffff}", DictionaryStr = $"SetNumber={set}" }; testElements.Add(element); } var serializationConfiguration = new SerializationConfiguration() .ConfigureType <TestClass>() .ConfigureProperty(x => x.Dec, x => { x.DecimalPrecision = 14; x.DecimalScale = 9; }) .Build(); using (var fileStream = new FileStream("test.orc", FileMode.Create, FileAccess.Write)) using (var writer = new OrcWriter <TestClass>(fileStream, new WriterConfiguration(), serializationConfiguration)) //Use the default configuration { writer.AddRows(testElements); } } }