﻿using System;
using CupWorks.Inject.Test.Helper;
using NUnit.Framework;

namespace CupWorks.Inject.Test
{
    [TestFixture]
    internal class InitializeAttributeTest
    {
        [Test]
        public void Initialize()
        {
            InitializeAttribute attribute = new InitializeAttribute();
            Assert.True(attribute.Type == null);
            Assert.True(attribute.Value == null);

            attribute = new InitializeAttribute(typeof(TestObject));
            Assert.True(attribute.Type == typeof(TestObject));
            Assert.True(attribute.Value == null);

            attribute = new InitializeAttribute("String");
            Assert.True(attribute.Type == null);
            Assert.True((string)attribute.Value == "String");
        }

        [Test]
        public void Usage()
        {
            AttributeUsageAttribute usageAttribute =
                Attribute.GetCustomAttribute(typeof(InitializeAttribute), typeof(AttributeUsageAttribute)) 
                as AttributeUsageAttribute;
            Assert.NotNull(usageAttribute);
            Assert.False(usageAttribute.AllowMultiple);
            Assert.True(usageAttribute.Inherited);
            Assert.True(usageAttribute.ValidOn == AttributeTargets.Property);
        }
    }
}
