Solved Scatter bug
							parent
							
								
									0d2558cbb5
								
							
						
					
					
						commit
						c33bb7a89a
					
				|  | @ -46,8 +46,6 @@ Scatter::Scatter(const GaussianFactorGraph& gfg, | |||
|     } | ||||
|   } | ||||
| 
 | ||||
|   iterator first = end(); // remember position
 | ||||
| 
 | ||||
|   // Now, find dimensions of variables and/or extend
 | ||||
|   BOOST_FOREACH (const GaussianFactor::shared_ptr& factor, gfg) { | ||||
|     if (!factor) continue; | ||||
|  | @ -68,11 +66,13 @@ Scatter::Scatter(const GaussianFactorGraph& gfg, | |||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // To keep the same behavior as before, sort the keys after the ordering
 | ||||
|   iterator first = begin(); | ||||
|   if (ordering) first += ordering->size(); | ||||
|   if (first != end()) std::sort(first, end()); | ||||
| 
 | ||||
|   // Filter out keys with zero dimensions (if ordering had more keys)
 | ||||
|   erase(std::remove_if(begin(), end(), SlotEntry::Zero), end()); | ||||
| 
 | ||||
|   // To keep the same behavior as before, sort the keys after the ordering
 | ||||
|   if (first != end()) std::sort(begin(), end()); | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
|  |  | |||
|  | @ -51,8 +51,8 @@ TEST(HessianFactor, CombineAndEliminate) { | |||
| 
 | ||||
|   Scatter scatter(gfg); | ||||
|   EXPECT_LONGS_EQUAL(2, scatter.size()); | ||||
|   EXPECT(assert_equal(X(1), scatter.at(0).key)); | ||||
|   EXPECT(assert_equal(X(0), scatter.at(1).key)); | ||||
|   EXPECT(assert_equal(X(0), scatter.at(0).key)); | ||||
|   EXPECT(assert_equal(X(1), scatter.at(1).key)); | ||||
|   EXPECT_LONGS_EQUAL(n, scatter.at(0).dimension); | ||||
|   EXPECT_LONGS_EQUAL(n, scatter.at(1).dimension); | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue