File: tpool_test.cpp

package info (click to toggle)
swayimg 4.6-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,764 kB
  • sloc: ansic: 13,338; cpp: 2,470; makefile: 9
file content (38 lines) | stat: -rw-r--r-- 739 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// SPDX-License-Identifier: MIT
// Copyright (C) 2025 Artem Senichev <artemsen@gmail.com>

extern "C" {
#include "tpool.h"
}

#include <gtest/gtest.h>

static size_t worker_value = 42;
static void worker(void* data)
{
    worker_value = data ? *reinterpret_cast<size_t*>(data) : 4242;
}

static size_t deleter_value = 24;
static void deleter(void* data)
{
    deleter_value = data ? *reinterpret_cast<size_t*>(data) : 2424;
}

TEST(ThreadPool, Test)
{
    tpool_init();

    EXPECT_GE(tpool_threads(), static_cast<size_t>(1));

    size_t data = 1234567890;
    tpool_add_task(&worker, &deleter, &data);

    tpool_wait();
    tpool_cancel();

    EXPECT_EQ(worker_value, data);
    EXPECT_EQ(deleter_value, data);

    tpool_destroy();
}