From f97482ebd4058bf101b5d186f55743893c33c0a3 Mon Sep 17 00:00:00 2001 From: cry-inc Date: Sun, 3 Sep 2023 12:32:03 +0200 Subject: [PATCH] Added test for iterator size hint --- tests/reader_tests.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tests/reader_tests.rs b/tests/reader_tests.rs index 0eca7b3..50957fb 100644 --- a/tests/reader_tests.rs +++ b/tests/reader_tests.rs @@ -1,4 +1,4 @@ -use e57::{CartesianCoordinate, E57Reader, RawValues, RecordName, RecordValue}; +use e57::{CartesianCoordinate, E57Reader, Point, RawValues, RecordName, RecordValue, Result}; use std::fs::File; #[test] @@ -211,3 +211,25 @@ fn simple_iterator() { } assert_eq!(counter, pc.records); } + +#[test] +fn iterator_size_hint() { + let file = "testdata/tinyCartesianFloatRgb.e57"; + let mut reader = E57Reader::from_file(file).unwrap(); + let pcs = reader.pointclouds(); + let pc = pcs.first().unwrap(); + let mut iter = reader.pointcloud_simple(pc).unwrap(); + + // Hint at the beginning returns all points + let hint = iter.size_hint(); + assert_eq!(hint, (2090, Some(2090))); + + // Hint is correctly updated after we consumed one point + iter.next().unwrap().unwrap(); + let hint = iter.size_hint(); + assert_eq!(hint, (2089, Some(2089))); + + // Reading everything returns the predicted point count + let points: Result> = iter.collect(); + assert_eq!(points.unwrap().len(), 2089); +}