Hi,
I have encountered an error for Dictionary type. Here's the code
[Test]
public void GIVEN___EmployeeDictionaryType_class_with_common_data_type___WHEN___write_to_orientdb___THEN___should_be_able_to_read()
{
var employeeClassName = "EmployeeDictionaryType";
var employee = new EmployeeDictionaryType();
employee.Id = Guid.NewGuid();
employee.Name = new Dictionary<string, string>();
employee.Name.Add("Andrew", "Andrew");
employee.Name.Add("Jack", "Jack");
employee.Age = new Dictionary<int, int>();
employee.Age.Add(1, 2);
employee.Age.Add(2, 4);
employee.BirthDate = new Dictionary<DateTime, DateTime>();
employee.BirthDate.Add(DateTime.Now, DateTime.Now.AddDays(1));
employee.BirthDate.Add(DateTime.Now.AddDays(-3), DateTime.Now.AddDays(-2));
employee.Childs = new Dictionary<int, EmployeeCommonType>();
employee.Childs.Add(1, new EmployeeCommonType() { Id = Guid.NewGuid() });
employee.Childs.Add(2, new EmployeeCommonType() { Id = Guid.NewGuid() });
employee.FavoriteColor = new Dictionary<Color, Color>();
employee.FavoriteColor.Add(Color.Red, Color.Red);
employee.FavoriteColor.Add(Color.Blue, Color.Blue);
employee.Height = new Dictionary<short, short>();
employee.Height.Add(1, 323);
employee.Height.Add(2, 333);
employee.Ids = new Dictionary<Guid, Guid>();
employee.Ids.Add(Guid.NewGuid(), Guid.NewGuid());
employee.Ids.Add(Guid.NewGuid(), Guid.NewGuid());
employee.IsMarried = new Dictionary<bool, bool>();
employee.IsMarried.Add(true, true);
employee.IsMarried.Add(false, false);
employee.Salary = new Dictionary<decimal, decimal>();
employee.Salary.Add((decimal)1, (decimal)1234567890.123456789);
employee.Salary.Add((decimal)2, (decimal)1234567890.123456799);
employee.Tall = new Dictionary<long, long>();
employee.Tall.Add(1, 3233);
employee.Tall.Add(2, 3234);
employee.YearlyIncome = new Dictionary<double, double>();
employee.YearlyIncome.Add(2, 3233);
employee.YearlyIncome.Add(4, 1234);
//writer.Insert<EmployeeDictionaryType>(employee, DatabaseName, employeeClassName);
//dbProvider.CreateConnectionPool(DatabaseName);
using (var database = new ODatabase(DatabaseName))
{
database.Insert(employee)
.Into(employeeClassName)
.Run();
var result = database.Query<EmployeeDictionaryType>("SELECT * FROM " + employeeClassName + " WHERE Id = '" + employee.Id + "'").SingleOrDefault();
Assert.AreEqual(employee.Id, result.Id);
Assert.AreEqual(employee.Ids.ToList()[0].Key, result.Ids.ToList()[0].Key);
Assert.AreEqual(employee.Ids.ToList()[1].Key, result.Ids.ToList()[1].Key);
Assert.AreEqual(employee.Ids.ToList()[0].Value, result.Ids.ToList()[0].Value);
Assert.AreEqual(employee.Ids.ToList()[1].Value, result.Ids.ToList()[1].Value);
Assert.AreEqual(employee.Name.ToList()[0].Key, result.Name.ToList()[0].Key);
Assert.AreEqual(employee.Name.ToList()[1].Key, result.Name.ToList()[1].Key);
Assert.AreEqual(employee.Name.ToList()[0].Value, result.Name.ToList()[0].Value);
Assert.AreEqual(employee.Name.ToList()[1].Value, result.Name.ToList()[1].Value);
Assert.AreEqual(employee.Age.ToList()[0].Key, result.Age.ToList()[0].Key);
Assert.AreEqual(employee.Age.ToList()[1].Key, result.Age.ToList()[1].Key);
Assert.AreEqual(employee.Age.ToList()[0].Value, result.Age.ToList()[0].Value);
Assert.AreEqual(employee.Age.ToList()[1].Value, result.Age.ToList()[1].Value);
Assert.AreEqual(employee.Salary.ToList()[0].Key, result.Salary.ToList()[0].Key);
Assert.AreEqual(employee.Salary.ToList()[1].Key, result.Salary.ToList()[1].Key);
Assert.AreEqual(employee.Salary.ToList()[0].Value, result.Salary.ToList()[0].Value);
Assert.AreEqual(employee.Salary.ToList()[1].Value, result.Salary.ToList()[1].Value);
Assert.AreEqual(employee.IsMarried.ToList()[0].Key, result.IsMarried.ToList()[0].Key);
Assert.AreEqual(employee.IsMarried.ToList()[1].Key, result.IsMarried.ToList()[1].Key);
Assert.AreEqual(employee.IsMarried.ToList()[0].Value, result.IsMarried.ToList()[0].Value);
Assert.AreEqual(employee.IsMarried.ToList()[1].Value, result.IsMarried.ToList()[1].Value);
Assert.AreEqual(employee.Childs[0].Id, result.Childs[0].Id);
Assert.AreEqual(employee.Childs[1].Id, result.Childs[1].Id);
Assert.AreEqual(employee.BirthDate.ToList()[0].Key, result.BirthDate.ToList()[0].Key);
Assert.AreEqual(employee.BirthDate.ToList()[1].Key, result.BirthDate.ToList()[1].Key);
Assert.AreEqual(employee.BirthDate.ToList()[0].Value, result.BirthDate.ToList()[0].Value);
Assert.AreEqual(employee.BirthDate.ToList()[1].Value, result.BirthDate.ToList()[1].Value);
Assert.AreEqual(employee.YearlyIncome.ToList()[0].Key, result.YearlyIncome.ToList()[0].Key);
Assert.AreEqual(employee.YearlyIncome.ToList()[1].Key, result.YearlyIncome.ToList()[1].Key);
Assert.AreEqual(employee.YearlyIncome.ToList()[0].Value, result.YearlyIncome.ToList()[0].Value);
Assert.AreEqual(employee.YearlyIncome.ToList()[1].Value, result.YearlyIncome.ToList()[1].Value);
Assert.AreEqual(employee.FavoriteColor.ToList()[0].Key, result.FavoriteColor.ToList()[0].Key);
Assert.AreEqual(employee.FavoriteColor.ToList()[1].Key, result.FavoriteColor.ToList()[1].Key);
Assert.AreEqual(employee.FavoriteColor.ToList()[0].Value, result.FavoriteColor.ToList()[0].Value);
Assert.AreEqual(employee.FavoriteColor.ToList()[1].Value, result.FavoriteColor.ToList()[1].Value);
Assert.AreEqual(employee.Height.ToList()[0].Key, result.Height.ToList()[0].Key);
Assert.AreEqual(employee.Height.ToList()[1].Key, result.Height.ToList()[1].Key);
Assert.AreEqual(employee.Height.ToList()[0].Value, result.Height.ToList()[0].Value);
Assert.AreEqual(employee.Height.ToList()[1].Value, result.Height.ToList()[1].Value);
Assert.AreEqual(employee.Tall.ToList()[0].Key, result.Tall.ToList()[0].Key);
Assert.AreEqual(employee.Tall.ToList()[1].Key, result.Tall.ToList()[1].Key);
Assert.AreEqual(employee.Tall.ToList()[0].Value, result.Tall.ToList()[0].Value);
Assert.AreEqual(employee.Tall.ToList()[1].Value, result.Tall.ToList()[1].Value);
database.Command("DELETE FROM " + DemoEmployeeClassName + " WHERE Id = '" + employee.Id + "'");
}
}
public class EmployeeDictionaryType
{
public Guid Id { get; set; }
public Dictionary<Guid, Guid> Ids { get; set; }
public Dictionary<string, string> Name { get; set; }
public Dictionary<int, int> Age { get; set; }
public Dictionary<decimal, decimal> Salary { get; set; }
public Dictionary<bool, bool> IsMarried { get; set; }
public Dictionary<DateTime, DateTime> BirthDate { get; set; }
public Dictionary<double, double> YearlyIncome { get; set; }
public Dictionary<short, short> Height { get; set; }
public Dictionary<long, long> Tall { get; set; }
public Dictionary<Color, Color> FavoriteColor { get; set; }
public Dictionary<int, 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; }
}