mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-19 21:00:55 +08:00
Merge remote-tracking branch 'origin/fix/odf-tests' into develop
This commit is contained in:
@ -461,6 +461,7 @@ const std::vector<std::wstring>& 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;
|
||||
|
||||
@ -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_)
|
||||
{
|
||||
|
||||
@ -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<pptx_animation_context::Impl::_audio*>(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<pptx_animation_context::Impl::_set*>(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<pptx_animation_context::Impl::_audio*>(actions[3].get()); ;
|
||||
ASSERT_NE(audio, nullptr);
|
||||
ASSERT_EQ(actions.size(), 3);
|
||||
const auto anim = dynamic_cast<pptx_animation_context::Impl::_anim*>(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<pptx_animation_context::Impl::_anim*>(actions[2].get());
|
||||
ASSERT_NE(anim, nullptr);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -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<anim_par*>(par->anim_par_.get());
|
||||
if (par->anim_par_.size() == 0)
|
||||
return nullptr;
|
||||
|
||||
const anim_par* inner_par = dynamic_cast<anim_par*>(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<anim_par*>(innermost->anim_par_.get());
|
||||
innermost = dynamic_cast<anim_par*>(innermost->anim_par_[0].get());
|
||||
if (!innermost)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@ -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<pptx_animation_context::Impl::_anim*>(actions[1].get());
|
||||
std::vector<pptx_animation_context::Impl::_anim::_keypoint> 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<pptx_animation_context::Impl::_anim*>(actions[2].get());
|
||||
std::vector<pptx_animation_context::Impl::_anim::_keypoint> 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<pptx_animation_context::Impl::_anim_effect*>(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)
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user