[Bf-blender-cvs] [7e480b67438] temp-inplace-priority-queue: add more tests

Jacques Lucke noreply at git.blender.org
Tue Dec 15 23:03:41 CET 2020


Commit: 7e480b67438cd847b4bacb8a5c3d230730454ce1
Author: Jacques Lucke
Date:   Tue Dec 15 22:07:39 2020 +0100
Branches: temp-inplace-priority-queue
https://developer.blender.org/rB7e480b67438cd847b4bacb8a5c3d230730454ce1

add more tests

===================================================================

M	source/blender/blenlib/tests/BLI_inplace_priority_queue_test.cc

===================================================================

diff --git a/source/blender/blenlib/tests/BLI_inplace_priority_queue_test.cc b/source/blender/blenlib/tests/BLI_inplace_priority_queue_test.cc
index 78dab20f235..f7988f03383 100644
--- a/source/blender/blenlib/tests/BLI_inplace_priority_queue_test.cc
+++ b/source/blender/blenlib/tests/BLI_inplace_priority_queue_test.cc
@@ -3,32 +3,68 @@
 #include "testing/testing.h"
 
 #include "BLI_inplace_priority_queue.hh"
+#include "BLI_rand.hh"
 
 namespace blender::tests {
 
 TEST(inplace_priority_queue, BuildSmall)
 {
-  Array<float> data = {1, 5, 2, 8, 5, 6, 5, 4, 3, 6, 7, 3};
-  InplacePriorityQueue<float> priority_queue{data};
+  Array<int> values = {1, 5, 2, 8, 5, 6, 5, 4, 3, 6, 7, 3};
+  InplacePriorityQueue<int> priority_queue{values};
   priority_queue.build();
 
-  data[1] = 30;
-  priority_queue.priority_changed(1);
-  data[1] = 7.5f;
-  priority_queue.priority_changed(1);
+  EXPECT_EQ(values[priority_queue.peek()], 8);
+  EXPECT_EQ(values[priority_queue.pop()], 8);
+  EXPECT_EQ(values[priority_queue.peek()], 7);
+  EXPECT_EQ(values[priority_queue.pop()], 7);
+  EXPECT_EQ(values[priority_queue.pop()], 6);
+  EXPECT_EQ(values[priority_queue.pop()], 6);
+  EXPECT_EQ(values[priority_queue.pop()], 5);
+}
 
-  Vector<float> sorted_data;
+TEST(inplace_priority_queue, DecreasePriority)
+{
+  Array<int> values = {5, 2, 7, 4};
+  InplacePriorityQueue<int> priority_queue(values);
+  priority_queue.build();
 
-  while (!priority_queue.is_empty()) {
-    sorted_data.append(data[priority_queue.pop()]);
-  }
+  EXPECT_EQ(values[priority_queue.peek()], 7);
+  values[2] = 0;
+  EXPECT_EQ(values[priority_queue.peek()], 0);
+  priority_queue.priority_decreased(2);
+  EXPECT_EQ(values[priority_queue.peek()], 5);
+}
+
+TEST(inplace_priority_queue, IncreasePriority)
+{
+  Array<int> values = {5, 2, 7, 4};
+  InplacePriorityQueue<int> priority_queue(values);
+  priority_queue.build();
+
+  EXPECT_EQ(values[priority_queue.peek()], 7);
+  values[1] = 10;
+  EXPECT_EQ(values[priority_queue.peek()], 7);
+  priority_queue.priority_increased(1);
+  EXPECT_EQ(values[priority_queue.peek()], 10);
+}
 
-  for (float v : sorted_data) {
-    std::cout << v << ", ";
+TEST(inplace_priority_queue, PopAll)
+{
+  RandomNumberGenerator rng;
+  Vector<int> values;
+  for (int i = 0; i < 1000; i++) {
+    values.append(rng.get_int32() % 1000);
   }
-  std::cout << "\n";
 
-  std::cout << priority_queue.all_to_dot() << "\n";
+  InplacePriorityQueue<int> priority_queue(values);
+  priority_queue.build();
+
+  int last_value = 1000;
+  while (!priority_queue.is_empty()) {
+    const int value = values[priority_queue.pop()];
+    EXPECT_LE(value, last_value);
+    last_value = value;
+  }
 }
 
 }  // namespace blender::tests



More information about the Bf-blender-cvs mailing list