             // operation on the new value and the operation's identity value and store the result
             const value_type new_value = op(current_value, aggregation_operation::IDENTITY);
 
-            std::cout << "key: " << current_key << " insert value: " << current_value << " new value: " << new_value << std::endl;
+            if(print)
+              std::cout << "key: " << current_key << " insert value: " << current_value << " new value: " << new_value << std::endl;
 
             expected_values.insert(std::make_pair(current_key,new_value)); 
 

  this->compute_gdf_result(this->gdf_groupby_column.get(), 
                           this->gdf_aggregation_column.get(), 
                           this->gdf_groupby_output.get(),
                           this->gdf_agg_output.get(),
                           true);

  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";

  GDFGroupByTest() 
  {
    // Use constant seed so the psuedo-random order is the same each time
    std::srand(0);
  }

  ~GDFGroupByTest() {} 
