From beaea719467e6de4ba75fad43ed2500a7b7b41fd Mon Sep 17 00:00:00 2001 From: Rintaro Kuroiwa Date: Wed, 5 Feb 2014 10:55:37 -0800 Subject: [PATCH] Add tests that check the 'id' attributes. Change-Id: I487ec7c658fd5a3a8bae03800e23b37cc44066f4 --- mpd/base/mpd_builder_unittest.cc | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/mpd/base/mpd_builder_unittest.cc b/mpd/base/mpd_builder_unittest.cc index 6317882ce3..b3f8d80d1a 100644 --- a/mpd/base/mpd_builder_unittest.cc +++ b/mpd/base/mpd_builder_unittest.cc @@ -6,12 +6,59 @@ #include "base/file_util.h" #include "base/logging.h" +#include "base/strings/string_number_conversions.h" #include "mpd/base/mpd_builder.h" #include "mpd/test/mpd_builder_test_helper.h" #include "testing/gtest/include/gtest/gtest.h" +#include "third_party/libxml/src/include/libxml/xmlstring.h" namespace dash_packager { +namespace { +// Get 'id' attribute from |node|, convert it to std::string and convert it to a +// number. +void ExpectXmlElementIdEqual(xmlNodePtr node, uint32 id) { + const char kId[] = "id"; + xml::ScopedXmlPtr::type id_attribute_xml_str( + xmlGetProp(node, BAD_CAST kId)); + ASSERT_TRUE(id_attribute_xml_str); + + unsigned id_attribute_unsigned = 0; + std::string id_attribute_str = + reinterpret_cast(id_attribute_xml_str.get()); + ASSERT_TRUE(base::StringToUint(id_attribute_str, &id_attribute_unsigned)); + + ASSERT_EQ(id, id_attribute_unsigned); +} + +// Using template to support both AdaptationSet and Representation. +template +void CheckIdEqual(uint32 expected_id, T* node) { + ASSERT_EQ(expected_id, node->id()); + + // Also check if the XML generated by libxml2 has the correct id attribute. + xml::ScopedXmlPtr::type node_xml(node->GetXml()); + ASSERT_NO_FATAL_FAILURE(ExpectXmlElementIdEqual(node_xml.get(), expected_id)); +} +} // namespace + +TEST(AdaptationSetTest, CheckId) { + base::AtomicSequenceNumber sequence_counter; + const uint32 kAdaptationSetId = 42; + + AdaptationSet adaptation_set(kAdaptationSetId, &sequence_counter); + ASSERT_NO_FATAL_FAILURE(CheckIdEqual(kAdaptationSetId, &adaptation_set)); +} + +TEST(RepresentationTest, CheckId) { + const MediaInfo video_media_info = GetTestMediaInfo(kFileNameVideoMediaInfo1); + const uint32 kRepresentationId = 1; + + Representation representation(video_media_info, kRepresentationId); + EXPECT_TRUE(representation.Init()); + ASSERT_NO_FATAL_FAILURE(CheckIdEqual(kRepresentationId, &representation)); +} + class StaticMpdBuilderTest : public ::testing::Test { public: StaticMpdBuilderTest() : mpd_(MpdBuilder::kStatic) {}