public void TestMapDeserialization()
{
string raw = "rules:{\"database.query\":2,\"database.command\":2,\"database.hook.record\":2},embedded:(rules:{\"database.query\":2,\"database.command\":2,\"database.hook.record\":2}),array:[{\"database.query\":2,\"database.command\":2,\"database.hook.record\":2},{\"database.query\":2,\"database.command\":2,\"database.hook.record\":2}],nested:{\"database.query\":2,\"database.command\":{\"database.query\":2,\"database.command\":2,\"database.hook.record\":2},\"database.hook.record\":2,\"database.hook2.record\":{\"database.hook.record\":2}}";
ORecord record = new ORecord(ORecordType.Document, 0, UTF8Encoding.UTF8.GetBytes(raw));
Assert.IsTrue(record.Fields["rules"].GetType() == typeof(string));
Assert.IsTrue((string)record.Fields["rules"] == "{\"database.query\":2,\"database.command\":2,\"database.hook.record\":2}");
Dictionary<string, object> embedded = (Dictionary<string, object>)record.Fields["embedded"];
Assert.IsTrue(embedded["rules"].GetType() == typeof(string));
Assert.IsTrue((string)embedded["rules"] == "{\"database.query\":2,\"database.command\":2,\"database.hook.record\":2}");
List<object> array = (List<object>)record.Fields["array"];
Assert.IsTrue(array[0].GetType() == typeof(string));
Assert.IsTrue((string)array[0] == "{\"database.query\":2,\"database.command\":2,\"database.hook.record\":2}");
Assert.IsTrue(array[1].GetType() == typeof(string));
Assert.IsTrue((string)array[1] == "{\"database.query\":2,\"database.command\":2,\"database.hook.record\":2}");
Assert.IsTrue(record.Fields["nested"].GetType() == typeof(string));
Assert.IsTrue((string)record.Fields["nested"] == "{\"database.query\":2,\"database.command\":{\"database.query\":2,\"database.command\":2,\"database.hook.record\":2},\"database.hook.record\":2,\"database.hook2.record\":{\"database.hook.record\":2}}");
}