148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org/*
248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org *  Copyright 2004 The WebRTC Project Authors. All rights reserved.
348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org *
448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org *  Use of this source code is governed by a BSD-style license
548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org *  that can be found in the LICENSE file in the root of the source
648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org *  tree. An additional intellectual property rights grant can be found
748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org *  in the file PATENTS.  All contributing project authors may
848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org */
1048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
1148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org#include <string>
1248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org#include "webrtc/libjingle/xmllite/qname.h"
1348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org#include "webrtc/base/gunit.h"
1448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
1548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgusing buzz::StaticQName;
1648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgusing buzz::QName;
1748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
1848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgTEST(QNameTest, TestTrivial) {
1948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name("test");
2048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name.LocalPart(), "test");
2148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name.Namespace(), "");
2248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}
2348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
2448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgTEST(QNameTest, TestSplit) {
2548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name("a:test");
2648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name.LocalPart(), "test");
2748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name.Namespace(), "a");
2848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name2("a-very:long:namespace:test-this");
2948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name2.LocalPart(), "test-this");
3048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name2.Namespace(), "a-very:long:namespace");
3148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}
3248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
3348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgTEST(QNameTest, TestMerge) {
3448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name("a", "test");
3548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name.LocalPart(), "test");
3648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name.Namespace(), "a");
3748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name.Merged(), "a:test");
3848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name2("a-very:long:namespace", "test-this");
3948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name2.LocalPart(), "test-this");
4048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name2.Namespace(), "a-very:long:namespace");
4148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(name2.Merged(), "a-very:long:namespace:test-this");
4248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}
4348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
4448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgTEST(QNameTest, TestAssignment) {
4548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name("a", "test");
4648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  // copy constructor
4748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName namecopy(name);
4848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(namecopy.LocalPart(), "test");
4948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(namecopy.Namespace(), "a");
5048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName nameassigned("");
5148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  nameassigned = name;
5248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(nameassigned.LocalPart(), "test");
5348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(nameassigned.Namespace(), "a");
5448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}
5548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
5648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgTEST(QNameTest, TestConstAssignment) {
5748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  StaticQName name = { "a", "test" };
5848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName namecopy(name);
5948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(namecopy.LocalPart(), "test");
6048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(namecopy.Namespace(), "a");
6148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName nameassigned("");
6248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  nameassigned = name;
6348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(nameassigned.LocalPart(), "test");
6448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_EQ(nameassigned.Namespace(), "a");
6548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}
6648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
6748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgTEST(QNameTest, TestEquality) {
6848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name("a-very:long:namespace:test-this");
6948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name2("a-very:long:namespace", "test-this");
7048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name3("a-very:long:namespaxe", "test-this");
7148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_TRUE(name == name2);
7248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_FALSE(name == name3);
7348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}
7448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
7548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgTEST(QNameTest, TestCompare) {
7648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name("a");
7748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name2("nsa", "a");
7848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name3("nsa", "b");
7948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  QName name4("nsb", "b");
8048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
8148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_TRUE(name < name2);
8248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_FALSE(name2 < name);
8348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
8448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_FALSE(name2 < name2);
8548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
8648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_TRUE(name2 < name3);
8748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_FALSE(name3 < name2);
8848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
8948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_TRUE(name3 < name4);
9048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_FALSE(name4 < name3);
9148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}
9248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
9348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgTEST(QNameTest, TestStaticQName) {
9448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  const StaticQName const_name1 = { "namespace", "local-name1" };
9548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  const StaticQName const_name2 = { "namespace", "local-name2" };
9648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  const QName name("namespace", "local-name1");
9748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  const QName name1 = const_name1;
9848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  const QName name2 = const_name2;
9948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
10048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_TRUE(name == const_name1);
10148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_TRUE(const_name1 == name);
10248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_FALSE(name != const_name1);
10348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_FALSE(const_name1 != name);
10448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
10548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_TRUE(name == name1);
10648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_TRUE(name1 == name);
10748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_FALSE(name != name1);
10848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_FALSE(name1 != name);
10948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org
11048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_FALSE(name == name2);
11148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_FALSE(name2 == name);
11248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_TRUE(name != name2);
11348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org  EXPECT_TRUE(name2 != name);
11448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org}
115