/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "xml/XmlDom.h" #include #include #include "test/Test.h" namespace aapt { constexpr const char* kXmlPreamble = "\n"; TEST(XmlDomTest, Inflate) { std::stringstream in(kXmlPreamble); in << R"EOF( )EOF"; const Source source = {"test.xml"}; StdErrDiagnostics diag; std::unique_ptr doc = xml::Inflate(&in, &diag, source); ASSERT_NE(doc, nullptr); xml::Namespace* ns = xml::NodeCast(doc->root.get()); ASSERT_NE(ns, nullptr); EXPECT_EQ(ns->namespace_uri, xml::kSchemaAndroid); EXPECT_EQ(ns->namespace_prefix, "android"); } TEST(XmlDomTest, HandleEscapes) { std::unique_ptr doc = test::BuildXmlDom( R"EOF(\\d{5})EOF"); xml::Element* el = xml::FindRootElement(doc->root.get()); ASSERT_NE(nullptr, el); xml::Attribute* attr = el->FindAttribute({}, "pattern"); ASSERT_NE(nullptr, attr); EXPECT_EQ("\\d{5}", attr->value); ASSERT_EQ(1u, el->children.size()); xml::Text* text = xml::NodeCast(el->children[0].get()); ASSERT_NE(nullptr, text); EXPECT_EQ("\\d{5}", text->text); } } // namespace aapt