12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #include "legacy_future.h"
- #include <library/cpp/testing/unittest/registar.h>
- namespace NThreading {
- Y_UNIT_TEST_SUITE(TLegacyFutureTest) {
- int intf() {
- return 17;
- }
- Y_UNIT_TEST(TestIntFunction) {
- TLegacyFuture<int> f((&intf));
- UNIT_ASSERT_VALUES_EQUAL(17, f.Get());
- }
- static int r;
- void voidf() {
- r = 18;
- }
- Y_UNIT_TEST(TestVoidFunction) {
- r = 0;
- TLegacyFuture<> f((&voidf));
- f.Get();
- UNIT_ASSERT_VALUES_EQUAL(18, r);
- }
- struct TSampleClass {
- int mValue;
- TSampleClass(int value)
- : mValue(value)
- {
- }
- int Calc() {
- return mValue + 1;
- }
- };
- Y_UNIT_TEST(TestMethod) {
- TLegacyFuture<int> f11(std::bind(&TSampleClass::Calc, TSampleClass(3)));
- UNIT_ASSERT_VALUES_EQUAL(4, f11.Get());
- TLegacyFuture<int> f12(std::bind(&TSampleClass::Calc, TSampleClass(3)), SystemThreadFactory());
- UNIT_ASSERT_VALUES_EQUAL(4, f12.Get());
- TSampleClass c(5);
- TLegacyFuture<int> f21(std::bind(&TSampleClass::Calc, std::ref(c)));
- UNIT_ASSERT_VALUES_EQUAL(6, f21.Get());
- TLegacyFuture<int> f22(std::bind(&TSampleClass::Calc, std::ref(c)), SystemThreadFactory());
- UNIT_ASSERT_VALUES_EQUAL(6, f22.Get());
- }
- struct TSomeThreadPool: public IThreadFactory {};
- Y_UNIT_TEST(TestFunction) {
- std::function<int()> f((&intf));
- UNIT_ASSERT_VALUES_EQUAL(17, TLegacyFuture<int>(f).Get());
- UNIT_ASSERT_VALUES_EQUAL(17, TLegacyFuture<int>(f, SystemThreadFactory()).Get());
- if (false) {
- TSomeThreadPool* q = nullptr;
- TLegacyFuture<int>(f, q); // just check compiles, do not start
- }
- }
- }
- }
|