1 #include <gtest/gtest.h>
\r
3 #include "../../mock/mock_frame_producer.h"
\r
4 #include "../../mock/mock_frame.h"
\r
6 #include <core/frame/frame_format.h>
\r
7 #include <core/frame/gpu_frame.h>
\r
8 #include <core/producer/transition/transition_producer.h>
\r
9 #include <common/exception/exceptions.h>
\r
11 using namespace caspar;
\r
12 using namespace caspar::core;
\r
14 frame_format_desc test_format = frame_format_desc::format_descs[frame_format::pal];
\r
16 TEST(transition_producer, constructor_dest_nullptr)
\r
18 ASSERT_THROW(transition_producer(nullptr, transition_info(), test_format);
\r
22 TEST(transition_producer, get_following_producer)
\r
24 auto dest = std::make_shared<mock_frame_producer>();
\r
26 transition_producer producer(dest, transition_info(), test_format);
\r
28 ASSERT_TRUE(producer.get_following_producer() == dest);
\r
31 TEST(transition_producer, get_frame_format_desc)
\r
33 auto dest = std::make_shared<mock_frame_producer>();
\r
35 transition_producer producer(dest, transition_info(), test_format);
\r
37 ASSERT_TRUE(producer.get_frame_format_desc() == test_format);
\r
40 TEST(transition_producer, null_dest_get_frame)
\r
42 auto source = std::make_shared<mock_frame_producer>();
\r
44 transition_producer producer(nullptr, transition_info(), test_format);
\r
45 producer.set_leading_producer(source);
\r
47 ASSERT_TRUE(producer.get_frame() == nullptr);
\r
50 TEST(transition_producer, null_source_get_frame_cut)
\r
52 auto dest = std::make_shared<mock_frame_producer>();
\r
54 transition_info info;
\r
55 info.type = transition_type::cut;
\r
57 transition_producer producer(dest, info, test_format);
\r
59 ASSERT_TRUE(producer.get_frame() == nullptr);
\r
62 TEST(transition_producer, initialize)
\r
64 auto dest = std::make_shared<mock_frame_producer>();
\r
66 transition_producer producer(dest, transition_info(), test_format);
\r
67 producer.initialize(nullptr);
\r
69 ASSERT_TRUE(dest->is_initialized());
\r
72 TEST(transition_producer, duration)
\r
74 auto dest = std::make_shared<mock_frame_producer>();
\r
75 auto source = std::make_shared<mock_frame_producer>();
\r
77 transition_info info;
\r
78 info.type = transition_type::cut;
\r
81 transition_producer producer(dest, info, test_format);
\r
82 producer.set_leading_producer(source);
\r
84 for(int n = 0; n < info.duration; ++n)
\r
86 auto frame = producer.get_frame();
\r
87 ASSERT_TRUE(std::static_pointer_cast<mock_frame>(frame)->tag == source.get());
\r
89 ASSERT_TRUE(producer.get_frame() == nullptr);
\r