public static void NestedEntityTests()
        {
            var x = new NestedEntities
            {
                Simple = new Simple {
                    Baz = "hello world!"
                },
                Complex = new Complex {
                    Amount = 99, Id = Guid.NewGuid(), Uri = new Uri("https://google.com")
                },
                Enumerable = new Enumerable
                {
                    Ints   = null,
                    Chars  = "hello world!".ToCharArray(),
                    Floats = new[] { float.MinValue, float.MaxValue, 0, float.NegativeInfinity, float.PositiveInfinity, float.NaN },
                },
                SimpleList = new[]
                {
                    new Simple {
                        Baz = "Simple0"
                    },
                    new Simple {
                        Baz = "Simple1"
                    },
                    new Simple {
                        Baz = "Simple2"
                    },
                }
            };
            var db   = Open();
            var xkey = db.Insert(x);
            var rt   = db.Lookup(xkey, new NestedEntities());

            Assert.Equal(x.Id, rt.Id);
            Assert.Equal(x.Simple.Bar, rt.Simple.Bar);
            Assert.Equal(x.Simple.Baz, rt.Simple.Baz);
            Assert.Equal(x.Complex.Amount, rt.Complex.Amount);
            Assert.Equal(x.Complex.Id, rt.Complex.Id);
            Assert.Equal(x.Complex.Uri, rt.Complex.Uri);
            Assert.Equal(x.Enumerable.Ints, rt.Enumerable.Ints);
            Assert.Equal(x.Enumerable.Chars, rt.Enumerable.Chars);
            Assert.Equal(x.Enumerable.Floats, rt.Enumerable.Floats);
            Assert.Equal(x.SimpleList.Select(z => z.Bar), rt.SimpleList.Select(z => z.Bar));
            Assert.Equal(x.SimpleList.Select(z => z.Baz), rt.SimpleList.Select(z => z.Baz));
            //only root entities get key values, nested entities do not?
            //Assert.True(x.SimpleList.All(z => z.Bar != 0));
            //Assert.True(rt.SimpleList.All(z => z.Bar != 0));
        }
        public static void NestedEntityTests()
        {
            var x = new NestedEntities
            {
                Simple = new Simple {
                    Baz = "hello world!"
                },
                Complex = new Complex {
                    Amount = 99, Id = Guid.NewGuid(), Uri = new Uri("https://google.com")
                },
                Enumerable = new Enumerable
                {
                    Ints   = null,
                    Chars  = "hello world!".ToCharArray(),
                    Floats = new[] { float.MinValue, float.MaxValue, 0, float.NegativeInfinity, float.PositiveInfinity, float.NaN },
                },
                SimpleList = new[]
                {
                    new Simple {
                        Baz = "Simple0"
                    },
                    new Simple {
                        Baz = "Simple1"
                    },
                    new Simple {
                        Baz = "Simple2"
                    },
                }
            };
            var e = Entity <NestedEntities> .To(new Entity(), x);

            var rt = Entity <NestedEntities> .From(new NestedEntities(), e);

            Assert.Equal(x.Id, rt.Id);
            Assert.Equal(x.Simple.Bar, rt.Simple.Bar);
            Assert.Equal(x.Simple.Baz, rt.Simple.Baz);
            Assert.Equal(x.Complex.Amount, rt.Complex.Amount);
            Assert.Equal(x.Complex.Id, rt.Complex.Id);
            Assert.Equal(x.Complex.Uri, rt.Complex.Uri);
            Assert.Equal(x.Enumerable.Ints, rt.Enumerable.Ints);
            Assert.Equal(x.Enumerable.Chars, rt.Enumerable.Chars);
            Assert.Equal(x.Enumerable.Floats, rt.Enumerable.Floats);
            Assert.Equal(x.SimpleList.Select(z => z.Bar), rt.SimpleList.Select(z => z.Bar));
            Assert.Equal(x.SimpleList.Select(z => z.Baz), rt.SimpleList.Select(z => z.Baz));
        }