1 #include <gtest/gtest.h>
\r
3 #include "../../mock/mock_frame_producer.h"
\r
4 #include "../../mock/mock_frame.h"
\r
6 #include <core/video/video_format.h>
\r
7 #include <core/processor/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 video_format_desc test_format = video_format_desc::format_descs[video_format::pal];
\r
16 TEST(transition_producer, constructor_dest_nullptr)
\r
18 ASSERT_THROW(transition_producer(nullptr, transition_info());
\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());
\r
28 ASSERT_TRUE(producer.get_following_producer() == dest);
\r
31 TEST(transition_producer, null_dest_get_frame)
\r
33 auto source = std::make_shared<mock_frame_producer>();
\r
35 transition_producer producer(nullptr, transition_info());
\r
36 producer.set_leading_producer(source);
\r
38 ASSERT_TRUE(producer.render_frame() == nullptr);
\r
41 TEST(transition_producer, null_source_get_frame_cut)
\r
43 auto dest = std::make_shared<mock_frame_producer>();
\r
45 transition_info info;
\r
46 info.type = transition::cut;
\r
48 transition_producer producer(dest, info);
\r
50 ASSERT_TRUE(producer.render_frame() == nullptr);
\r
53 TEST(transition_producer, initialize)
\r
55 auto dest = std::make_shared<mock_frame_producer>();
\r
57 transition_producer producer(dest, transition_info());
\r
58 producer.initialize(nullptr);
\r
60 ASSERT_TRUE(dest->is_initialized());
\r
63 TEST(transition_producer, duration)
\r
65 auto dest = std::make_shared<mock_frame_producer>();
\r
66 auto source = std::make_shared<mock_frame_producer>();
\r
68 transition_info info;
\r
69 info.type = transition::cut;
\r
72 transition_producer producer(dest, info);
\r
73 producer.set_leading_producer(source);
\r
75 for(int n = 0; n < info.duration; ++n)
\r
77 auto frame = producer.render_frame();
\r
78 ASSERT_TRUE(std::static_pointer_cast<mock_frame>(frame)->tag == source.get());
\r
80 ASSERT_TRUE(producer.render_frame() == nullptr);
\r