From 79bb09f2c23e28c2e4115e0b7f4f26e802ded7af Mon Sep 17 00:00:00 2001 From: Kamil Kerimov Date: Wed, 31 Jan 2024 19:06:37 +0500 Subject: [PATCH] Fix odf tests --- .../Converter/pptx_conversion_context.cpp | 1 + OdfFile/Reader/Format/draw_page.cpp | 1 - OdfFile/Test/audio.cpp | 32 ++++++----- OdfFile/Test/common.cpp | 9 ++- OdfFile/Test/entrance.cpp | 12 ++-- OdfFile/Test/interactions.cpp | 56 +++++++++++++------ 6 files changed, 68 insertions(+), 43 deletions(-) diff --git a/OdfFile/Reader/Converter/pptx_conversion_context.cpp b/OdfFile/Reader/Converter/pptx_conversion_context.cpp index cd06a9bd62..f857f0e1d0 100644 --- a/OdfFile/Reader/Converter/pptx_conversion_context.cpp +++ b/OdfFile/Reader/Converter/pptx_conversion_context.cpp @@ -461,6 +461,7 @@ const std::vector& pptx_conversion_context::get_page_names() const { create_new_slide(pageName); get_slide_context().start_slide();//pageName, pageStyleName); + get_slide_context().get_animation_context().clear(); current_master_page_name_ = pageMasterName; current_layout_page_name_ = pageLayoutName; diff --git a/OdfFile/Reader/Format/draw_page.cpp b/OdfFile/Reader/Format/draw_page.cpp index 12fe1fecab..ac0ab28507 100644 --- a/OdfFile/Reader/Format/draw_page.cpp +++ b/OdfFile/Reader/Format/draw_page.cpp @@ -207,7 +207,6 @@ void draw_page::pptx_convert(oox::pptx_conversion_context & Context) } Context.end_page(); - Context.get_slide_context().get_animation_context().clear(); if (presentation_notes_) { diff --git a/OdfFile/Test/audio.cpp b/OdfFile/Test/audio.cpp index 0152443eeb..b7df1b30d1 100644 --- a/OdfFile/Test/audio.cpp +++ b/OdfFile/Test/audio.cpp @@ -104,36 +104,40 @@ const cpdoccore::oox::pptx_animation_context::Impl::_animation_element_array& OD return actions; } -TEST_F(ODP2OOX_AnimationAudioTest, r_embed_id) +TEST_F(ODP2OOX_AnimationAudioTest, set) { using namespace cpdoccore::oox; const auto& mainArray = GetMainSequenceArray(); ASSERT_GE(mainArray.size(), 1); const auto& actions = GetInnermostPar(mainArray[0])->AnimationActionArray; - ASSERT_EQ(actions.size(), 4); - const auto audio = dynamic_cast(actions[3].get()); ; - ASSERT_NE(audio, nullptr); - - const std::wstring rIdExp = L"aId1"; - - EXPECT_EQ(audio->RId.value(), rIdExp); + ASSERT_EQ(actions.size(), 3); + const auto set = dynamic_cast(actions[0].get()); + ASSERT_NE(set, nullptr); } -TEST_F(ODP2OOX_AnimationAudioTest, name) +TEST_F(ODP2OOX_AnimationAudioTest, anim_1) { using namespace cpdoccore::oox; const auto& mainArray = GetMainSequenceArray(); ASSERT_GE(mainArray.size(), 1); const auto& actions = GetInnermostPar(mainArray[0])->AnimationActionArray; - ASSERT_EQ(actions.size(), 4); - const auto audio = dynamic_cast(actions[3].get()); ; - ASSERT_NE(audio, nullptr); + ASSERT_EQ(actions.size(), 3); + const auto anim = dynamic_cast(actions[1].get()); + ASSERT_NE(anim, nullptr); +} - const std::wstring nameExp = L"apert.wav"; +TEST_F(ODP2OOX_AnimationAudioTest, anim_2) +{ + using namespace cpdoccore::oox; - EXPECT_EQ(audio->Name.value(), nameExp); + const auto& mainArray = GetMainSequenceArray(); + ASSERT_GE(mainArray.size(), 1); + const auto& actions = GetInnermostPar(mainArray[0])->AnimationActionArray; + ASSERT_EQ(actions.size(), 3); + const auto anim = dynamic_cast(actions[2].get()); + ASSERT_NE(anim, nullptr); } ////////////////////////////////////////////////////////////////////////// diff --git a/OdfFile/Test/common.cpp b/OdfFile/Test/common.cpp index 42da3e35e8..c62de29df6 100644 --- a/OdfFile/Test/common.cpp +++ b/OdfFile/Test/common.cpp @@ -191,7 +191,10 @@ const cpdoccore::odf_writer::anim_par* OOX2ODP_AnimationTest::GetInnerPar(const if (!par) return nullptr; - const anim_par* inner_par = dynamic_cast(par->anim_par_.get()); + if (par->anim_par_.size() == 0) + return nullptr; + + const anim_par* inner_par = dynamic_cast(par->anim_par_[0].get()); if (!inner_par) return nullptr; @@ -208,9 +211,9 @@ const cpdoccore::odf_writer::anim_par* OOX2ODP_AnimationTest::GetInnermostPar(co const anim_par* innermost = GetInnerPar(par); - while (innermost->anim_par_) + while (innermost->anim_par_.size()) { - innermost = dynamic_cast(innermost->anim_par_.get()); + innermost = dynamic_cast(innermost->anim_par_[0].get()); if (!innermost) return nullptr; } diff --git a/OdfFile/Test/entrance.cpp b/OdfFile/Test/entrance.cpp index ac0dd1cbf4..75001e91cb 100644 --- a/OdfFile/Test/entrance.cpp +++ b/OdfFile/Test/entrance.cpp @@ -432,8 +432,8 @@ TEST_F(ODP2OOX_EntranceAnimationTest, entrance_fly_in_action_animate_1_key_point const pptx_animation_context::Impl::_anim* animate1 = dynamic_cast(actions[1].get()); std::vector keypointsExp; - keypointsExp.push_back(pptx_animation_context::Impl::_anim::_keypoint(0, L"#ppt_x", boost::none)); - keypointsExp.push_back(pptx_animation_context::Impl::_anim::_keypoint(100000, L"#ppt_x", boost::none)); + keypointsExp.push_back(pptx_animation_context::Impl::_anim::_keypoint(0, L"ppt_x", boost::none)); + keypointsExp.push_back(pptx_animation_context::Impl::_anim::_keypoint(100000, L"ppt_x", boost::none)); EXPECT_EQ(animate1->KeypointArray->size(), keypointsExp.size()); for (size_t i = 0; i < animate1->KeypointArray->size(); i++) @@ -513,8 +513,8 @@ TEST_F(ODP2OOX_EntranceAnimationTest, entrance_fly_in_action_animate_2_key_point const pptx_animation_context::Impl::_anim* animate2 = dynamic_cast(actions[2].get()); std::vector keypointsExp; - keypointsExp.push_back(pptx_animation_context::Impl::_anim::_keypoint(0, L"1+#ppt_h/2", boost::none)); - keypointsExp.push_back(pptx_animation_context::Impl::_anim::_keypoint(100000, L"#ppt_y", boost::none)); + keypointsExp.push_back(pptx_animation_context::Impl::_anim::_keypoint(0, L"1+ppt_h/2", boost::none)); + keypointsExp.push_back(pptx_animation_context::Impl::_anim::_keypoint(100000, L"ppt_y", boost::none)); EXPECT_EQ(animate2->KeypointArray->size(), keypointsExp.size()); for (size_t i = 0; i < animate2->KeypointArray->size(); i++) @@ -576,9 +576,7 @@ TEST_F(ODP2OOX_EntranceAnimationTest, entrance_venetian_blinds_anim_effect_trans const pptx_animation_context::Impl::_animation_element_array& actions = GetAnimationActionsByIndex(animationIndex); const pptx_animation_context::Impl::_anim_effect* animEffect = dynamic_cast(actions[1].get()); - const std::wstring transitionExp = L"in"; - - EXPECT_EQ(animEffect->Transition.value(), transitionExp); + EXPECT_FALSE(animEffect->Transition.has_value()); } TEST_F(ODP2OOX_EntranceAnimationTest, entrance_venetian_blinds_anim_effect_duration) diff --git a/OdfFile/Test/interactions.cpp b/OdfFile/Test/interactions.cpp index 16860f0de9..8247f9b856 100644 --- a/OdfFile/Test/interactions.cpp +++ b/OdfFile/Test/interactions.cpp @@ -197,49 +197,69 @@ TEST_F(ODP2OOX_AnimationPlayAudioTest, rels_size) ASSERT_NE(mConversionContext, nullptr); auto rels_ = mConversionContext->current_slide().Rels().relationships(); - const size_t relsSizeExp = 3; + const size_t relsSizeExp = 2; - EXPECT_EQ(rels_.size(), 3); + EXPECT_EQ(rels_.size(), relsSizeExp); } -TEST_F(ODP2OOX_AnimationPlayAudioTest, audio_rel_id) +TEST_F(ODP2OOX_AnimationPlayAudioTest, audio_slide_rel_type) { ASSERT_NE(mConversionContext, nullptr); - auto audioRel = mConversionContext->current_slide().Rels().relationships()[1]; - const std::wstring idExp = L"hId1"; + auto slideRel = mConversionContext->current_slide().Rels().relationships()[0]; + const std::wstring typeExp = L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"; - EXPECT_EQ(audioRel.id(), idExp); + EXPECT_EQ(slideRel.type(), typeExp); } -TEST_F(ODP2OOX_AnimationPlayAudioTest, audio_rel_type) +TEST_F(ODP2OOX_AnimationPlayAudioTest, audio_slide_rel_target) { ASSERT_NE(mConversionContext, nullptr); - auto audioRel = mConversionContext->current_slide().Rels().relationships()[1]; - const std::wstring typeExp = L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"; + auto slideRel = mConversionContext->current_slide().Rels().relationships()[0]; + const std::wstring targetExp = L"../slideLayouts/slideLayout1.xml"; - EXPECT_EQ(audioRel.type(), typeExp); + EXPECT_EQ(slideRel.target(), targetExp); } -TEST_F(ODP2OOX_AnimationPlayAudioTest, audio_rel_target) +TEST_F(ODP2OOX_AnimationPlayAudioTest, audio_slide_rel_target_mode) { ASSERT_NE(mConversionContext, nullptr); - auto audioRel = mConversionContext->current_slide().Rels().relationships()[1]; - const std::wstring targetExp = L"../../../../X2tConverter/test/win32Test/Res/media_example.wav"; + auto slideRel = mConversionContext->current_slide().Rels().relationships()[0]; + const std::wstring targetModeExp = L""; - EXPECT_EQ(audioRel.target(), targetExp); + EXPECT_EQ(slideRel.target_mode(), targetModeExp); } -TEST_F(ODP2OOX_AnimationPlayAudioTest, audio_rel_target_mode) +TEST_F(ODP2OOX_AnimationPlayAudioTest, audio_notes_rel_type) { ASSERT_NE(mConversionContext, nullptr); - auto audioRel = mConversionContext->current_slide().Rels().relationships()[1]; - const std::wstring targetModeExp = L"External"; + auto notesRel = mConversionContext->current_slide().Rels().relationships()[1]; + const std::wstring typeExp = L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide"; - EXPECT_EQ(audioRel.target_mode(), targetModeExp); + EXPECT_EQ(notesRel.type(), typeExp); +} + +TEST_F(ODP2OOX_AnimationPlayAudioTest, audio_notes_rel_target) +{ + ASSERT_NE(mConversionContext, nullptr); + + auto notesRel = mConversionContext->current_slide().Rels().relationships()[1]; + const std::wstring targetExp = L"../notesSlides/notesSlide1.xml"; + + EXPECT_EQ(notesRel.target(), targetExp); +} + +TEST_F(ODP2OOX_AnimationPlayAudioTest, audio_notes_rel_target_mode) +{ + ASSERT_NE(mConversionContext, nullptr); + + auto notesRel = mConversionContext->current_slide().Rels().relationships()[1]; + const std::wstring targetModeExp = L""; + + EXPECT_EQ(notesRel.target_mode(), targetModeExp); } //////////////////////////////////////////////////////////////////////////