@@ -150,16 +150,35 @@ public void ShouldMergeNonOverlappingSequences()
150150 var dtfi = CultureInfo . GetCultureInfo ( "en-US" ) . DateTimeFormat ;
151151 int count = 80 ;
152152 var aStartsAt = DateTime . Parse ( "01/15/2019 10:00:00" , dtfi ) ;
153- var a = new Hashes ( GetHashedFingerprints ( count ) , count * 1.48f + 1.48f , aStartsAt ) ;
153+ var a = new Hashes ( GetHashedFingerprints ( count ) , count * 1.48f , aStartsAt ) ;
154154 var bStartsAt = DateTime . Parse ( "01/15/2019 10:02:00" , dtfi ) ;
155- var b = new Hashes ( GetHashedFingerprints ( count ) , count * 1.48f + 1.48f , bStartsAt ) ;
155+ var b = new Hashes ( GetHashedFingerprints ( count ) , count * 1.48f , bStartsAt ) ;
156156
157- Assert . IsTrue ( a . MergeWith ( b , out var c ) ) ;
157+ Assert . IsTrue ( a . MergeWith ( b , out var c , 2 * 1.48f ) ) ;
158158 Assert . AreEqual ( count * 2 , c . Count ) ;
159+
160+ AssertInvariantsForHashes ( c , aStartsAt ) ;
159161 var rangeA = c . GetRange ( aStartsAt , 120 ) ;
160162 AssertHashesAreEqual ( a , rangeA ) ;
163+ AssertInvariantsForHashes ( rangeA , aStartsAt ) ;
161164 var rangeB = c . GetRange ( bStartsAt , 120 ) ;
162165 AssertHashesAreEqual ( b , rangeB ) ;
166+ AssertInvariantsForHashes ( rangeB , bStartsAt ) ;
167+ }
168+
169+ private static void AssertInvariantsForHashes ( Hashes hashes , DateTime startsAt )
170+ {
171+ Assert . AreEqual ( startsAt , hashes . RelativeTo ) ;
172+ var list = hashes . ToList ( ) ;
173+ Assert . AreEqual ( 0 , list . First ( ) . StartsAt ) ;
174+ Assert . AreEqual ( 0 , list . First ( ) . SequenceNumber ) ;
175+ for ( int i = 1 ; i < hashes . Count ; ++ i )
176+ {
177+ Assert . IsTrue ( list [ i ] . StartsAt >= list [ i - 1 ] . StartsAt ) ;
178+ Assert . IsTrue ( list [ i ] . SequenceNumber >= list [ i - 1 ] . SequenceNumber ) ;
179+ }
180+
181+ Assert . AreEqual ( hashes . DurationInSeconds , list . Last ( ) . StartsAt - list . First ( ) . StartsAt + 1.48f , 0.1f ) ;
163182 }
164183
165184 private static void AssertHashesAreEqual ( Hashes a , Hashes b )
0 commit comments