diff options
Diffstat (limited to 'source/blender/blenlib/tests')
-rw-r--r-- | source/blender/blenlib/tests/BLI_listbase_test.cc | 8 | ||||
-rw-r--r-- | source/blender/blenlib/tests/BLI_task_test.cc | 14 |
2 files changed, 22 insertions, 0 deletions
diff --git a/source/blender/blenlib/tests/BLI_listbase_test.cc b/source/blender/blenlib/tests/BLI_listbase_test.cc index 9e4d7c7dd36..88f597cdf67 100644 --- a/source/blender/blenlib/tests/BLI_listbase_test.cc +++ b/source/blender/blenlib/tests/BLI_listbase_test.cc @@ -80,18 +80,26 @@ TEST(listbase, FindLinkOrIndex) EXPECT_EQ(BLI_rfindlink(&lb, 0), (void *)nullptr); EXPECT_EQ(BLI_rfindlink(&lb, 1), (void *)nullptr); EXPECT_EQ(BLI_findindex(&lb, link1), -1); + EXPECT_EQ(BLI_findlinkfrom((Link *)lb.first, -1), (void *)nullptr); + EXPECT_EQ(BLI_findlinkfrom((Link *)lb.first, 0), (void *)nullptr); + EXPECT_EQ(BLI_findlinkfrom((Link *)lb.first, 1), (void *)nullptr); /* One link */ BLI_addtail(&lb, link1); EXPECT_EQ(BLI_findlink(&lb, 0), link1); EXPECT_EQ(BLI_rfindlink(&lb, 0), link1); EXPECT_EQ(BLI_findindex(&lb, link1), 0); + EXPECT_EQ(BLI_findlinkfrom((Link *)lb.first, 0), link1); /* Two links */ BLI_addtail(&lb, link2); EXPECT_EQ(BLI_findlink(&lb, 1), link2); EXPECT_EQ(BLI_rfindlink(&lb, 0), link2); EXPECT_EQ(BLI_findindex(&lb, link2), 1); + EXPECT_EQ(BLI_findlinkfrom((Link *)lb.first, 1), link2); + + /* After end of list */ + EXPECT_EQ(BLI_findlinkfrom((Link *)lb.first, 2), (void *)nullptr); BLI_freelistN(&lb); } diff --git a/source/blender/blenlib/tests/BLI_task_test.cc b/source/blender/blenlib/tests/BLI_task_test.cc index 3bb6f6f753c..1ed732c1f18 100644 --- a/source/blender/blenlib/tests/BLI_task_test.cc +++ b/source/blender/blenlib/tests/BLI_task_test.cc @@ -1,6 +1,7 @@ /* Apache License, Version 2.0 */ #include "testing/testing.h" +#include <atomic> #include <cstring> #include "atomic_ops.h" @@ -12,6 +13,7 @@ #include "BLI_listbase.h" #include "BLI_mempool.h" #include "BLI_task.h" +#include "BLI_task.hh" #define NUM_ITEMS 10000 @@ -280,3 +282,15 @@ TEST(task, ListBaseIter) MEM_freeN(items_buffer); BLI_threadapi_exit(); } + +TEST(task, ParallelInvoke) +{ + std::atomic<int> counter = 0; + blender::threading::parallel_invoke([&]() { counter++; }, + [&]() { counter++; }, + [&]() { counter++; }, + [&]() { counter++; }, + [&]() { counter++; }, + [&]() { counter++; }); + EXPECT_EQ(counter, 6); +} |