99use MongoDB \Operation \Find ;
1010use MongoDB \Operation \MapReduce ;
1111use MongoDB \Tests \CommandObserver ;
12+ use function is_object ;
1213use function iterator_to_array ;
14+ use function usort ;
1315use function version_compare ;
1416
1517class MapReduceFunctionalTest extends FunctionalTestCase
@@ -237,7 +239,7 @@ public function testTypeMapOptionWithInlineResults(array $typeMap = null, array
237239 $ operation = new MapReduce ($ this ->getDatabaseName (), $ this ->getCollectionName (), $ map , $ reduce , $ out , ['typeMap ' => $ typeMap ]);
238240 $ results = iterator_to_array ($ operation ->execute ($ this ->getPrimaryServer ()));
239241
240- $ this ->assertEquals ($ expectedDocuments , $ results );
242+ $ this ->assertEquals ($ this -> sortResults ( $ expectedDocuments) , $ this -> sortResults ( $ results) );
241243 }
242244
243245 public function provideTypeMapOptionsAndExpectedDocuments ()
@@ -284,12 +286,12 @@ public function testTypeMapOptionWithOutputCollection(array $typeMap = null, arr
284286 $ operation = new MapReduce ($ this ->getDatabaseName (), $ this ->getCollectionName (), $ map , $ reduce , $ out , ['typeMap ' => $ typeMap ]);
285287 $ results = iterator_to_array ($ operation ->execute ($ this ->getPrimaryServer ()));
286288
287- $ this ->assertEquals ($ expectedDocuments , $ results );
289+ $ this ->assertEquals ($ this -> sortResults ( $ expectedDocuments) , $ this -> sortResults ( $ results) );
288290
289291 $ operation = new Find ($ this ->getDatabaseName (), $ out , [], ['typeMap ' => $ typeMap ]);
290292 $ cursor = $ operation ->execute ($ this ->getPrimaryServer ());
291293
292- $ this ->assertEquals ($ expectedDocuments, iterator_to_array ($ cursor ));
294+ $ this ->assertEquals ($ this -> sortResults ( $ expectedDocuments), $ this -> sortResults ( iterator_to_array ($ cursor) ));
293295
294296 $ operation = new DropCollection ($ this ->getDatabaseName (), $ out );
295297 $ operation ->execute ($ this ->getPrimaryServer ());
@@ -313,4 +315,19 @@ private function createFixtures($n)
313315
314316 $ this ->assertEquals ($ n * 2 , $ result ->getInsertedCount ());
315317 }
318+
319+ private function sortResults (array $ results ) : array
320+ {
321+ $ sortFunction = static function ($ resultA , $ resultB ) : int {
322+ $ idA = is_object ($ resultA ) ? $ resultA ->_id : $ resultA ['_id ' ];
323+ $ idB = is_object ($ resultB ) ? $ resultB ->_id : $ resultB ['_id ' ];
324+
325+ return $ idA <=> $ idB ;
326+ };
327+
328+ $ sortedResults = $ results ;
329+ usort ($ sortedResults , $ sortFunction );
330+
331+ return $ sortedResults ;
332+ }
316333}
0 commit comments