@@ -176,6 +176,52 @@ public void TestWriteNode()
176176                Assert . AreEqual ( sourceNode . Latitude . Value ,  resultNode . Latitude . Value ,  .0001f ) ; 
177177                Assert . AreEqual ( sourceNode . Longitude . Value ,  resultNode . Longitude . Value ,  .0001f ) ; 
178178            } 
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+             } 
179225        } 
180226
181227        /// <summary> 
@@ -636,5 +682,62 @@ public void TestReadWriteCompressedRead_ShouldSucceed()
636682                Assert . AreEqual ( 1715 ,  new  PBFOsmStreamSource ( memoryStream ) . Count ( n =>  n  is  Node ) ) ; 
637683            } 
638684        } 
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+ 
639742    } 
640743} 
0 commit comments