Home | History | Annotate | Download | only in xmllite
      1 /*
      2  *  Copyright 2004 The WebRTC Project Authors. All rights reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #include <string>
     12 #include "webrtc/libjingle/xmllite/qname.h"
     13 #include "webrtc/base/gunit.h"
     14 
     15 using buzz::StaticQName;
     16 using buzz::QName;
     17 
     18 TEST(QNameTest, TestTrivial) {
     19   QName name("test");
     20   EXPECT_EQ(name.LocalPart(), "test");
     21   EXPECT_EQ(name.Namespace(), "");
     22 }
     23 
     24 TEST(QNameTest, TestSplit) {
     25   QName name("a:test");
     26   EXPECT_EQ(name.LocalPart(), "test");
     27   EXPECT_EQ(name.Namespace(), "a");
     28   QName name2("a-very:long:namespace:test-this");
     29   EXPECT_EQ(name2.LocalPart(), "test-this");
     30   EXPECT_EQ(name2.Namespace(), "a-very:long:namespace");
     31 }
     32 
     33 TEST(QNameTest, TestMerge) {
     34   QName name("a", "test");
     35   EXPECT_EQ(name.LocalPart(), "test");
     36   EXPECT_EQ(name.Namespace(), "a");
     37   EXPECT_EQ(name.Merged(), "a:test");
     38   QName name2("a-very:long:namespace", "test-this");
     39   EXPECT_EQ(name2.LocalPart(), "test-this");
     40   EXPECT_EQ(name2.Namespace(), "a-very:long:namespace");
     41   EXPECT_EQ(name2.Merged(), "a-very:long:namespace:test-this");
     42 }
     43 
     44 TEST(QNameTest, TestAssignment) {
     45   QName name("a", "test");
     46   // copy constructor
     47   QName namecopy(name);
     48   EXPECT_EQ(namecopy.LocalPart(), "test");
     49   EXPECT_EQ(namecopy.Namespace(), "a");
     50   QName nameassigned("");
     51   nameassigned = name;
     52   EXPECT_EQ(nameassigned.LocalPart(), "test");
     53   EXPECT_EQ(nameassigned.Namespace(), "a");
     54 }
     55 
     56 TEST(QNameTest, TestConstAssignment) {
     57   StaticQName name = { "a", "test" };
     58   QName namecopy(name);
     59   EXPECT_EQ(namecopy.LocalPart(), "test");
     60   EXPECT_EQ(namecopy.Namespace(), "a");
     61   QName nameassigned("");
     62   nameassigned = name;
     63   EXPECT_EQ(nameassigned.LocalPart(), "test");
     64   EXPECT_EQ(nameassigned.Namespace(), "a");
     65 }
     66 
     67 TEST(QNameTest, TestEquality) {
     68   QName name("a-very:long:namespace:test-this");
     69   QName name2("a-very:long:namespace", "test-this");
     70   QName name3("a-very:long:namespaxe", "test-this");
     71   EXPECT_TRUE(name == name2);
     72   EXPECT_FALSE(name == name3);
     73 }
     74 
     75 TEST(QNameTest, TestCompare) {
     76   QName name("a");
     77   QName name2("nsa", "a");
     78   QName name3("nsa", "b");
     79   QName name4("nsb", "b");
     80 
     81   EXPECT_TRUE(name < name2);
     82   EXPECT_FALSE(name2 < name);
     83 
     84   EXPECT_FALSE(name2 < name2);
     85 
     86   EXPECT_TRUE(name2 < name3);
     87   EXPECT_FALSE(name3 < name2);
     88 
     89   EXPECT_TRUE(name3 < name4);
     90   EXPECT_FALSE(name4 < name3);
     91 }
     92 
     93 TEST(QNameTest, TestStaticQName) {
     94   const StaticQName const_name1 = { "namespace", "local-name1" };
     95   const StaticQName const_name2 = { "namespace", "local-name2" };
     96   const QName name("namespace", "local-name1");
     97   const QName name1 = const_name1;
     98   const QName name2 = const_name2;
     99 
    100   EXPECT_TRUE(name == const_name1);
    101   EXPECT_TRUE(const_name1 == name);
    102   EXPECT_FALSE(name != const_name1);
    103   EXPECT_FALSE(const_name1 != name);
    104 
    105   EXPECT_TRUE(name == name1);
    106   EXPECT_TRUE(name1 == name);
    107   EXPECT_FALSE(name != name1);
    108   EXPECT_FALSE(name1 != name);
    109 
    110   EXPECT_FALSE(name == name2);
    111   EXPECT_FALSE(name2 == name);
    112   EXPECT_TRUE(name != name2);
    113   EXPECT_TRUE(name2 != name);
    114 }
    115