using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PoweredSoft.DynamicLinq.DynamicType;

namespace PoweredSoft.DynamicLinq.Test
{
    [TestClass]
    public class AnonymousTypeTest
    {
        [TestMethod]
        public void TestEqual()
        {
            var properties = new List<(Type type, string propertyName)>()
            {
                (typeof(int), "Id"),
                (typeof(string), "FirstName"),
                (typeof(string), "LastName")
            };

            var type = DynamicClassFactory.CreateType(properties);
            var instanceA = Activator.CreateInstance(type) as DynamicClass;
            var instanceB = Activator.CreateInstance(type) as DynamicClass;

            instanceA.SetDynamicPropertyValue("Id", 1);
            instanceA.SetDynamicPropertyValue("FirstName", "David");
            instanceA.SetDynamicPropertyValue("LastName", "Lebee");

            instanceB.SetDynamicPropertyValue("Id", 1);
            instanceB.SetDynamicPropertyValue("FirstName", "David");
            instanceB.SetDynamicPropertyValue("LastName", "Lebee");

            Assert.IsTrue(instanceA.Equals(instanceB));
        }
    }
}