                            this->gdf_aggregation_column.get(), 
                            this->gdf_groupby_output.get(),
                            this->gdf_agg_output.get());
-
-  ASSERT_EQ(expected_values.size(), this->gdf_groupby_output->size) << "Size of GDF Group By output does not match reference solution";
-  ASSERT_EQ(expected_values.size(), this->gdf_agg_output->size) << "Size of GDF Aggregation output does not match reference solution";
-
-  size_t i{0};
-  typename TestFixture::key_type * p_gdf_groupby_output = static_cast<typename TestFixture::key_type*>(this->gdf_groupby_output->data);
-  typename TestFixture::agg_output_type * p_gdf_aggregation_output = static_cast<typename TestFixture::agg_output_type*>(this->gdf_agg_output->data);
-  for(auto const & expected : expected_values)
-  {
-    if(std::is_floating_point<typename TestFixture::value_type>::value)
-    {
-      EXPECT_FLOAT_EQ(expected.first, p_gdf_groupby_output[i]);
-      EXPECT_FLOAT_EQ(expected.second, p_gdf_aggregation_output[i]);
-    }
-    else
-    {
-      EXPECT_EQ(expected.first, p_gdf_groupby_output[i]);
-      EXPECT_EQ(expected.second, p_gdf_aggregation_output[i]);
-    }
-    ++i;
-  }
+  
+  this->verify_gdf_result(expected_values, 
+                          this->gdf_groupby_output.get(),
+                          this->gdf_agg_output.get());
+
 }
 

    EXPECT_EQ(error, GDF_SUCCESS) << "GDF GroupBy Failed!\n";

    return error;
  }

};

  auto expected_values = this->compute_reference_solution(this->groupby_column, 
                                                          this->aggregation_column);

  // Create gdf_columns with same data as the reference input
  this->gdf_groupby_column = create_gdf_column(this->groupby_column);
  this->gdf_aggregation_column = create_gdf_column(this->aggregation_column);

