Exemplo n.º 1
0
        public void IndexByNameSet()
        {
            var meta       = new DynamicMeta(new Pluralizer());
            var population = new Default.DynamicPopulation(meta);

            var(property, owner)     = meta.AddOneToOne <Organisation, Person>("Owner");
            var(organisation, named) = meta.AddOneToOne <Organisation, Person>("Named");

            dynamic acme  = population.New <Organisation>();
            dynamic gizmo = population.New <Organisation>();
            dynamic jane  = population.New <Person>();
            dynamic john  = population.New <Person>();

            acme["Owner"] = jane;

            Assert.Equal(jane, acme.Owner);
            Assert.Equal(acme, jane.OrganisationWhereOwner);
            Assert.Equal(jane, acme["Owner"]);
            Assert.Equal(acme, jane["OrganisationWhereOwner"]);
            Assert.Equal(jane, acme[owner]);
            Assert.Equal(acme, jane[property]);

            Assert.Null(gizmo.Owner);
            Assert.Null(john.OrganisationWhereOwner);
            Assert.Null(gizmo["Owner"]);
            Assert.Null(john["OrganisationWhereOwner"]);
            Assert.Null(gizmo[owner]);
            Assert.Null(john[property]);

            // Wrong Type
            Assert.Throws <ArgumentException>(() =>
            {
                acme["Owner"] = gizmo;
            });
        }