orientechnologies / OrientDB-NET.binary

C#/.NET binary driver for OrientDB
MIT License
93 stars 59 forks source link

List<Class> error for #52

Closed gohsianghwee closed 9 years ago

gohsianghwee commented 9 years ago

Hi,

I have done some unit test on List and seems like no data is will be able to retrieve. No problem on insert but while retrieve it doesn't get through for the property Child

var employeeListTypeClassName = "EmployeeListType"; var employee = new EmployeeListType(); employee.Id = Guid.NewGuid(); employee.Name = new List(); employee.Name.Add("Andrew"); employee.Name.Add("Jack"); employee.Age = new List(); employee.Age.Add(1); employee.Age.Add(2); employee.BirthDate = new List(); employee.BirthDate.Add(DateTime.Now); employee.BirthDate.Add(DateTime.Now.AddDays(-3)); employee.Childs = new List(); employee.Childs.Add(new EmployeeCommonType() { Id = Guid.NewGuid() }); employee.Childs.Add(new EmployeeCommonType() { Id = Guid.NewGuid() }); employee.FavoriteColor = new List(); employee.FavoriteColor.Add(Color.Red); employee.FavoriteColor.Add(Color.Blue); employee.Height = new List(); employee.Height.Add(323); employee.Height.Add(333); employee.Ids = new List(); employee.Ids.Add(Guid.NewGuid()); employee.Ids.Add(Guid.NewGuid()); employee.IsMarried = new List(); employee.IsMarried.Add(true); employee.IsMarried.Add(false); employee.Salary = new List(); employee.Salary.Add((decimal)1234567890.123456789); employee.Salary.Add((decimal)1234567890.123456799); employee.Tall = new List(); employee.Tall.Add(3233); employee.Tall.Add(3234); employee.YearlyIncome = new List(); employee.YearlyIncome.Add(3233); employee.YearlyIncome.Add(1234);

       // My wrapper for OrientDB insert
        writer.Insert<EmployeeListType>(employee, DatabaseName, employeeListTypeClassName);

      // My wrapper to create connection Pool
        dbProvider.CreateConnectionPool(DatabaseName);

        using (var database = new ODatabase(DatabaseName))
        {

            var result = database.Query<EmployeeListType>("SELECT * FROM " + employeeListTypeClassName + " WHERE Id = '" + employee.Id + "'").SingleOrDefault();

            Assert.AreEqual(employee.Id, result.Id);
            Assert.AreEqual(employee.Ids[0], result.Ids[0]);
            Assert.AreEqual(employee.Ids[1], result.Ids[1]);
            Assert.AreEqual(employee.Name[0], result.Name[0]);
            Assert.AreEqual(employee.Name[1], result.Name[1]);
            Assert.AreEqual(employee.Age[0], result.Age[0]);
            Assert.AreEqual(employee.Age[1], result.Age[1]);
            Assert.AreEqual(employee.Age[0], result.Age[0]);
            Assert.AreEqual(employee.Salary[0], result.Salary[0]);
            Assert.AreEqual(employee.Salary[1], result.Salary[1]);
            Assert.AreEqual(employee.IsMarried[0], result.IsMarried[0]);
            Assert.AreEqual(employee.IsMarried[1], result.IsMarried[1]);

           // Error happen here.
           Assert.AreEqual(employee.Childs[0].Id, result.Childs[0].Id);
            Assert.AreEqual(employee.Childs[1].Id, result.Childs[1].Id);
            Assert.AreEqual(employee.BirthDate[0].ToLongDateString(), result.BirthDate[0].ToLongDateString());
            Assert.AreEqual(employee.BirthDate[1].ToLongDateString(), result.BirthDate[1].ToLongDateString());
            Assert.AreEqual(employee.YearlyIncome[0], result.YearlyIncome[0]);
            Assert.AreEqual(employee.YearlyIncome[1], result.YearlyIncome[1]);
            Assert.AreEqual(employee.FavoriteColor[0], result.FavoriteColor[0]);
            Assert.AreEqual(employee.FavoriteColor[1], result.FavoriteColor[1]);
            Assert.AreEqual(employee.Height[0], result.Height[0]);
            Assert.AreEqual(employee.Height[1], result.Height[1]);
            Assert.AreEqual(employee.Tall[0], result.Tall[0]);
            Assert.AreEqual(employee.Tall[1], result.Tall[1]);

        }
gohsianghwee commented 9 years ago

Sorry forget to put the EmployeeListType class for your reference. public class EmployeeListType { public Guid Id { get; set; }

    public List<Guid> Ids { get; set; }
    public List<string> Name { get; set; }

    public List<int> Age { get; set; }

    public List<decimal> Salary { get; set; }

    public List<bool> IsMarried { get; set; }

    public List<DateTime> BirthDate { get; set; }

    public List<double> YearlyIncome { get; set; }

    public List<short> Height { get; set; }

    public List<long> Tall { get; set; }

    public List<Color> FavoriteColor { get; set; }

    public List<EmployeeCommonType> Childs { get; set; }
}

public class EmployeeCommonType { public Guid Id { get; set; }

    public string Name { get; set; }

    public int Age { get; set; }

    public decimal Salary { get; set; }

    public bool IsMarried { get; set; }

    public DateTime BirthDate { get; set; }

    public double YearlyIncome { get; set; }

    public short Height { get; set; }

    public long Tall { get; set; }

    public Color FavoriteColor { get; set; }
}
gohsianghwee commented 9 years ago

Hi @GoorMoon ,

Thanks and I shall mark it as closed.