   const int num_keys = 1;
   const int num_values_per_key = 1<<12;
   auto input = this->create_input(num_keys, num_values_per_key, 10, 10);
-  this->compute_reference_solution();
+  auto expected_values = this->compute_reference_solution();
   this->build_aggregation_table_device(input);
-  this->verify_aggregation_table();
+  this->verify_aggregation_table(expected_values);
   unsigned int result_size = this->extract_groupby_result_device();
-  this->verify_groupby_result(result_size);
+  this->verify_groupby_result(expected_values);
 
   // The size of the result should be equal to the number of unique keys
   auto begin = this->d_groupby_column.begin();


  }

  void verify_aggregation_table(){

    for(auto const &expected : this->expected_values)
    {
      key_type test_key = expected.first;


  const int num_keys = 1<<12;
  const int num_values_per_key = 32;
  auto input = this->create_input(num_keys, num_values_per_key, 1000, 1000);
  auto expected_values = this->compute_reference_solution();
  this->build_aggregation_table_device(input);
  this->verify_aggregation_table(expected_values);
  unsigned int result_size = this->extract_groupby_result_device();
  this->verify_groupby_result(expected_values);

  // The size of the result should be equal to the number of unique keys
  auto begin = this->d_groupby_column.begin();
