public void ThrowWhenNullAliasIsAdded()
        {
            var schema = new ConcreteNamedSchema("test");

            Assert.Throws <ArgumentNullException>(() => schema.Aliases.Add(null));
            Assert.Throws <ArgumentNullException>(() => schema.Aliases = new string[] { null });
        }
        public void ThrowWhenNameIsSetToNull()
        {
            var schema = new ConcreteNamedSchema("test");

            Assert.Throws <ArgumentNullException>(() => schema.Name = null);
            Assert.Equal("test", schema.FullName);
        }
        public void ThrowWhenInvalidAliasIsAdded(string full, string space, string name)
        {
            var schema = new ConcreteNamedSchema("test");

            Assert.Throws <InvalidNameException>(() => schema.Aliases.Add(full));
            Assert.Throws <InvalidNameException>(() => schema.Aliases = new[] { full });
        }
        public void GetNameComponents(string full, string space, string name)
        {
            var schema = new ConcreteNamedSchema(full);

            Assert.Equal(full, schema.FullName);
            Assert.Equal(name, schema.Name);
            Assert.Equal(space, schema.Namespace);
        }
        public void SetUnqualifiedName(string full, string space, string name)
        {
            var schema = new ConcreteNamedSchema("test")
            {
                Name = full,
            };

            Assert.Equal(full, schema.FullName);
        }
        public void SetQualifiedName(string full, string space, string name)
        {
            var schema = new ConcreteNamedSchema("test.test")
            {
                Name = full,
            };

            Assert.Equal(space == null ? $"test.{name}" : full, schema.FullName);
        }
        public void SetNamespace(string full, string space, string name)
        {
            var schema = new ConcreteNamedSchema("test")
            {
                Namespace = space,
            };

            Assert.Equal(space == null ? "test" : $"{space}.test", schema.FullName);
        }
        public void IgnoreDuplicateAliases(string full, string space, string name)
        {
            var duplicate = $"{name}_dupe";

            var schema = new ConcreteNamedSchema("test");

            Assert.Empty(schema.Aliases);

            schema.Aliases.Add(duplicate);
            Assert.Equal(new[] { duplicate }, schema.Aliases);

            schema.Aliases.Add(full);
            Assert.Equal(new[] { duplicate, full }, schema.Aliases);

            schema.Aliases.Add(duplicate);
            Assert.Equal(new[] { duplicate, full }, schema.Aliases);

            schema.Aliases = new[] { duplicate, duplicate, duplicate };
            Assert.Equal(new[] { duplicate }, schema.Aliases);
        }
        public void ThrowWhenAliasCollectionIsSetToNull()
        {
            var schema = new ConcreteNamedSchema("test");

            Assert.Throws <ArgumentNullException>(() => schema.Aliases = null);
        }