 
 }
 
-TYPED_TEST(GDFGroupByTest, AllKeysSame)
+// TODO Update so that all the keys are guaranteed to be unique
+TYPED_TEST(GDFGroupByTest, AllKeysDifferent)
 {
   const int num_keys = 1;
   const int num_values_per_key = 1<<14;

    ASSERT_EQ(expected_values.size(), gdf_groupby_output->size) << "Size of GDF Group By output does not match reference solution";
    ASSERT_EQ(expected_values.size(), gdf_agg_output->size) << "Size of GDF Aggregation output does not match reference solution";

    size_t i{0};
    key_type * p_gdf_groupby_output = static_cast<key_type*>(gdf_groupby_output->data);
    agg_output_type * p_gdf_aggregation_output = static_cast<agg_output_type*>(gdf_agg_output->data);
    for(auto const & expected : expected_values)
    {
      if(std::is_floating_point<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;
    }
  }



}

TYPED_TEST(GDFGroupByTest, WarpKeysSame)
{
  const int num_keys = 1<<12;
  const int num_values_per_key = 32;
  // Note: If the maximum possible value for the aggregation column is large, it is very likely
  // you'll overflow an int when doing SUM or AVG
  const int max_key = 1000;
