@@ -176,6 +176,52 @@ public void TestWriteNode()
176
176
Assert . AreEqual ( sourceNode . Latitude . Value , resultNode . Latitude . Value , .0001f ) ;
177
177
Assert . AreEqual ( sourceNode . Longitude . Value , resultNode . Longitude . Value , .0001f ) ;
178
178
}
179
+
180
+ sourceObjects = new OsmGeo [ ] {
181
+ new Node ( )
182
+ {
183
+ Id = 1 ,
184
+ Latitude = 1f ,
185
+ Longitude = 1f ,
186
+ ChangeSetId = 1092 ,
187
+ TimeStamp = DateTime . UnixEpoch ,
188
+ UserId = 9034 ,
189
+ Version = 12
190
+ } ,
191
+ new Node ( )
192
+ {
193
+ Id = 2 ,
194
+ Latitude = 2f ,
195
+ Longitude = 2f ,
196
+ ChangeSetId = 1093 ,
197
+ TimeStamp = DateTime . Now ,
198
+ UserId = 9035 ,
199
+ Version = 13
200
+ } ,
201
+ new Node ( )
202
+ {
203
+ Id = 3 ,
204
+ Latitude = 3f ,
205
+ Longitude = 3f ,
206
+ ChangeSetId = 1094 ,
207
+ TimeStamp = DateTime . UtcNow ,
208
+ UserId = 9036 ,
209
+ Version = 14
210
+ }
211
+ } ;
212
+
213
+ // build PBF stream target.
214
+ using ( var stream = new MemoryStream ( ) )
215
+ {
216
+ var target = new PBFOsmStreamTarget ( stream ) ;
217
+ target . RegisterSource ( sourceObjects ) ;
218
+ target . Pull ( ) ;
219
+
220
+ stream . Seek ( 0 , SeekOrigin . Begin ) ;
221
+ var resultObjects = new List < OsmGeo > ( new PBFOsmStreamSource ( stream ) ) ;
222
+
223
+ AreEqual ( sourceObjects , resultObjects ) ;
224
+ }
179
225
}
180
226
181
227
/// <summary>
@@ -636,5 +682,62 @@ public void TestReadWriteCompressedRead_ShouldSucceed()
636
682
Assert . AreEqual ( 1715 , new PBFOsmStreamSource ( memoryStream ) . Count ( n => n is Node ) ) ;
637
683
}
638
684
}
685
+
686
+
687
+ /// <summary>
688
+ /// Test helper to test if 2 OsmGeo arrays are equal.
689
+ /// </summary>
690
+ private static void AreEqual ( IEnumerable < OsmGeo > sourceObjects , IEnumerable < OsmGeo > resultObjects )
691
+ {
692
+ Assert . IsNotNull ( resultObjects ) ;
693
+ var sourceArray = sourceObjects . ToArray ( ) ;
694
+ var resultArray = resultObjects . ToArray ( ) ;
695
+ Assert . AreEqual ( sourceArray . Length , resultArray . Length ) ;
696
+ for ( int i = 0 ; i < sourceArray . Length ; i ++ )
697
+ {
698
+ AreEqual ( sourceArray [ i ] , resultArray [ i ] ) ;
699
+ }
700
+ }
701
+
702
+ /// <summary>
703
+ /// Test helper to test if 2 OsmGeos are equal.
704
+ /// </summary>
705
+ private static void AreEqual ( OsmGeo sourceObject , OsmGeo resultObject )
706
+ {
707
+ Assert . AreEqual ( sourceObject . Id , resultObject . Id ) ;
708
+ Assert . AreEqual ( sourceObject . ChangeSetId , resultObject . ChangeSetId ) ;
709
+ Assert . AreEqual ( sourceObject . TimeStamp . Value . Ticks , resultObject . TimeStamp . Value . Ticks , 10000000 ) ;
710
+ Assert . AreEqual ( sourceObject . UserId , resultObject . UserId ) ;
711
+ Assert . AreEqual ( sourceObject . UserName , resultObject . UserName ) ;
712
+ Assert . AreEqual ( sourceObject . Version , resultObject . Version ) ;
713
+ Assert . AreEqual ( sourceObject . Tags ? . Count ?? 0 , resultObject . Tags ? . Count ?? 0 ) ;
714
+ foreach ( var sourceTag in sourceObject . Tags ?? new TagsCollection ( ) )
715
+ {
716
+ Assert . IsTrue ( resultObject . Tags . Contains ( sourceTag ) ) ;
717
+ }
718
+ switch ( sourceObject )
719
+ {
720
+ case Node sourceNode :
721
+ var resultNode = ( Node ) resultObject ;
722
+ Assert . AreEqual ( sourceNode . Latitude . Value , resultNode . Latitude . Value , .0001f ) ;
723
+ Assert . AreEqual ( sourceNode . Longitude . Value , resultNode . Longitude . Value , .0001f ) ;
724
+ break ;
725
+ case Way sourceWay :
726
+ var resultWay = ( Way ) resultObject ;
727
+ Assert . IsTrue ( sourceWay . Nodes . SequenceEqual ( resultWay . Nodes ) ) ;
728
+ break ;
729
+ case Relation sourceRelation :
730
+ var resultRelation = ( Relation ) resultObject ;
731
+ Assert . AreEqual ( sourceRelation . Members . Length , resultRelation . Members . Length ) ;
732
+ for ( int i = 0 ; i < sourceRelation . Members . Length ; i ++ )
733
+ {
734
+ Assert . AreEqual ( sourceRelation . Members [ i ] . Type , resultRelation . Members [ i ] . Type ) ;
735
+ Assert . AreEqual ( sourceRelation . Members [ i ] . Id , resultRelation . Members [ i ] . Id ) ;
736
+ Assert . AreEqual ( sourceRelation . Members [ i ] . Role , resultRelation . Members [ i ] . Role ) ;
737
+ }
738
+ break ;
739
+ }
740
+ }
741
+
639
742
}
640
743
}
0 commit comments