mirror of
https://github.com/slint-ui/slint.git
synced 2025-09-28 04:45:13 +00:00

They are not commonly used so no need to use semi-public api for that and it's really easy to similate with ust two clicks anyway The previous test function were added before there was public way to send events
71 lines
2.2 KiB
C++
71 lines
2.2 KiB
C++
// Copyright © SixtyFPS GmbH <info@slint.dev>
|
|
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-1.1 OR LicenseRef-Slint-commercial
|
|
|
|
#pragma once
|
|
#include "slint.h"
|
|
#include <concepts>
|
|
#include <iostream>
|
|
|
|
namespace slint::testing {
|
|
|
|
inline void init()
|
|
{
|
|
cbindgen_private::slint_testing_init_backend();
|
|
}
|
|
|
|
inline void mock_elapsed_time(int64_t time_in_ms)
|
|
{
|
|
cbindgen_private::slint_mock_elapsed_time(time_in_ms);
|
|
}
|
|
|
|
inline uint64_t get_mocked_time()
|
|
{
|
|
return cbindgen_private::slint_get_mocked_time();
|
|
}
|
|
|
|
template<typename Component>
|
|
inline void send_mouse_click(const Component *component, float x, float y)
|
|
{
|
|
cbindgen_private::slint_send_mouse_click(x, y, &component->window().window_handle());
|
|
}
|
|
|
|
template<typename Component>
|
|
inline void send_keyboard_char(const Component *component, const slint::SharedString &str,
|
|
bool pressed)
|
|
{
|
|
cbindgen_private::slint_send_keyboard_char(&str, pressed, &component->window().window_handle());
|
|
}
|
|
|
|
template<typename Component>
|
|
inline void send_keyboard_string_sequence(const Component *component,
|
|
const slint::SharedString &str)
|
|
{
|
|
cbindgen_private::send_keyboard_string_sequence(&str, &component->window().window_handle());
|
|
}
|
|
|
|
#define assert_eq(A, B) \
|
|
slint::testing::private_api::assert_eq_impl(A, B, #A, #B, __FILE__, __LINE__)
|
|
|
|
namespace private_api {
|
|
template<typename A, std::equality_comparable_with<A> B>
|
|
void assert_eq_impl(const A &a, const B &b, const char *a_str, const char *b_str, const char *file,
|
|
int line)
|
|
{
|
|
bool nok = true;
|
|
if constexpr (std::is_integral_v<A> && std::is_integral_v<B>) {
|
|
// Do a cast to the common type to avoid warning about signed vs. unsigned compare
|
|
using T = std::common_type_t<A, B>;
|
|
nok = T(a) != T(b);
|
|
} else {
|
|
nok = a != b;
|
|
}
|
|
if (nok) {
|
|
std::cerr << file << ":" << line << ": assert_eq FAILED!\n"
|
|
<< a_str << ": " << a << "\n"
|
|
<< b_str << ": " << b << std::endl;
|
|
std::abort();
|
|
}
|
|
}
|
|
}
|
|
|
|
} // namespace slint
|