public void DotNetQualifiedTypeName_Clone_NullFullNamespace()
        {
            //arrange
            DotNetQualifiedTypeName a = DotNetQualifiedTypeName.FromVisualStudioXml("MyType");
            //act
            DotNetQualifiedTypeName result = a.Clone();

            //assert
            Assert.AreEqual(a, result);
        }
        public void DotNetQualifiedTypeName_Clone_ManySegments()
        {
            //arrange
            DotNetQualifiedTypeName a = DotNetQualifiedTypeName.FromVisualStudioXml("A.B.C.MyType");
            //act
            DotNetQualifiedTypeName result = a.Clone();

            //assert
            Assert.AreEqual(a, result);
        }
        public void DotNetSettings_DefaultQualifiedNameConverter_GenericTypeParameter()
        {
            //arrange
            DotNetQualifiedTypeName qualifiedName = DotNetQualifiedTypeName.FromVisualStudioXml("A.B{System.Int32}.C{System.String,D,System.Byte}");
            //act
            string fullName = qualifiedName.FullName;

            //assert
            Assert.AreEqual("A.B<int>.C<string,D,byte>", fullName);
        }
        public void DotNetSettings_DefaultQualifiedNameConverter_AliasesType()
        {
            //arrange
            DotNetQualifiedTypeName qualifiedName = DotNetQualifiedTypeName.FromVisualStudioXml("System.Int32");
            //act
            string fullName = qualifiedName.FullName;

            //assert
            Assert.AreEqual("int", fullName);
        }
        public void DotNetReferenceMethodGeneric_GetLocalized_GenericType_NotLocal()
        {
            //arrange
            DotNetReferenceMethodGeneric a = DotNetReferenceMethodGeneric.FromVisualStudioXml("``0");
            DotNetQualifiedTypeName      b = DotNetQualifiedTypeName.FromVisualStudioXml("A.B.C");
            //act
            DotNetReferenceMethodGeneric result = a.GetLocalized(b);

            //assert
            Assert.AreEqual(a, result);
        }
        public void DotNetQualifiedTypeName_Clone_GenericType()
        {
            //arrange
            DotNetQualifiedTypeName a = DotNetQualifiedTypeName.FromVisualStudioXml("A.B.C.MyType{System.Int32}");
            //act
            DotNetQualifiedTypeName result = a.Clone();

            //assert
            Assert.AreEqual(a, result);
            Assert.AreEqual("System.Int32", result.GenericTypeParameters[0].ToString());
        }
        public void DotNetQualifiedTypeName_GetLocalized_GenericType_LocalizeParameter()
        {
            //arrange
            DotNetQualifiedTypeName a = DotNetQualifiedTypeName.FromVisualStudioXml("A.B.C.MyType{A.B.C.OtherType}");
            DotNetQualifiedTypeName b = DotNetQualifiedTypeName.FromVisualStudioXml("A.B.C");
            //act
            DotNetQualifiedTypeName result = a.GetLocalized(b);

            //assert
            Assert.AreEqual("MyType<OtherType>", result.FullName);
            Assert.AreEqual("OtherType", result.GenericTypeParameters[0].ToString());
        }
        public void DotNetQualifiedTypeName_FromXml_SimpleExternalType()
        {
            //arrange
            string input                 = "System.Xml.Linq.XDocument";
            string expectedLocalName     = "XDocument";
            string expectedQualifiedName = "System.Xml.Linq.XDocument";
            //act
            DotNetQualifiedTypeName result = DotNetQualifiedTypeName.FromVisualStudioXml(input);

            //assert
            Assert.AreEqual(expectedLocalName, result.LocalName);
            Assert.AreEqual(expectedQualifiedName, result.FullName);
        }
        public void DotNetQualifiedTypeName_FromXml_SimpleIntenalType()
        {
            //arrange
            string input                 = "A.B.MyType";
            string expectedLocalName     = "MyType";
            string expectedQualifiedName = "A.B.MyType";
            //act
            DotNetQualifiedTypeName result = DotNetQualifiedTypeName.FromVisualStudioXml(input);

            //assert
            Assert.AreEqual(expectedLocalName, result.LocalName);
            Assert.AreEqual(expectedQualifiedName, result.FullName);
        }
        public void DotNetQualifiedTypeName_GetLocalized_GenericType_NotLocal()
        {
            //arrange
            DotNetQualifiedTypeName a = DotNetQualifiedTypeName.FromVisualStudioXml("A.B.C.MyType{System.Int32}");
            DotNetQualifiedTypeName b = DotNetQualifiedTypeName.FromVisualStudioXml("D.E");
            //act
            DotNetQualifiedTypeName result = a.GetLocalized(b);

            //assert
            Assert.AreEqual(a, result);
            Assert.AreEqual("System.Int32", result.GenericTypeParameters[0].ToString());
            Assert.AreEqual("A.B.C.MyType<System.Int32>", result.FullName);
        }
        public void DotNetQualifiedTypeName_FromXml_NestedSpecifiedMethodGeneric()
        {
            //arrange
            string input                 = "System.Collections.Generic.List{Test.MyType{``1}}";
            string expectedLocalName     = "List<Test.MyType<B>>";
            string expectedQualifiedName = "System.Collections.Generic.List<Test.MyType<B>>";
            //act
            DotNetQualifiedTypeName result = DotNetQualifiedTypeName.FromVisualStudioXml(input);

            //assert
            Assert.AreEqual(expectedLocalName, result.LocalName);
            Assert.AreEqual(expectedQualifiedName, result.FullName);
        }
        public void DotNetQualifiedTypeName_FromXml_OtherNestedSpecifiedGeneric()
        {
            //arrange
            string input                 = "Namespace.TypeA{System.Int32}.TypeB{System.String,TypeD}";
            string expectedLocalName     = "TypeB<System.String,TypeD>";
            string expectedQualifiedName = "Namespace.TypeA<System.Int32>.TypeB<System.String,TypeD>";
            //act
            DotNetQualifiedTypeName result = DotNetQualifiedTypeName.FromVisualStudioXml(input);

            //assert
            Assert.AreEqual(expectedLocalName, result.LocalName);
            Assert.AreEqual(expectedQualifiedName, result.FullName);
        }
        public void DotNetQualifiedTypeName_FromXml_SpecifiedGeneric()
        {
            //arrange
            string input                 = "System.Collections.Generic.List{System.Integer}";
            string expectedLocalName     = "List<System.Integer>";
            string expectedQualifiedName = "System.Collections.Generic.List<System.Integer>";
            //act
            DotNetQualifiedTypeName result = DotNetQualifiedTypeName.FromVisualStudioXml(input);

            //assert
            Assert.AreEqual(expectedLocalName, result.LocalName);
            Assert.AreEqual(expectedQualifiedName, result.FullName);
        }
        public void DotNetQualifiedTypeName_FromXml_MethodGeneric()
        {
            //arrange
            string input                 = "``0";
            string expectedLocalName     = "A";
            string expectedQualifiedName = "A";
            //act
            DotNetQualifiedTypeName result = DotNetQualifiedTypeName.FromVisualStudioXml(input);

            //assert
            Assert.IsTrue(result is DotNetReferenceMethodGeneric);
            Assert.AreEqual(expectedLocalName, result.LocalName);
            Assert.AreEqual(expectedQualifiedName, result.FullName);
        }