Beispiel #1
0
        public void Test_Contains()
        {
            var entity1         = new EcsId(0x20);
            var entity1WithGen  = new EcsId(0x20, 20);
            var entity1WithRole = new EcsId(0x20, (EcsRole)0xFF);

            var entity2         = new EcsId(0x200);
            var entity2WithGen  = new EcsId(0x200, 20);
            var entity2WithRole = new EcsId(0x200, (EcsRole)0xFF);

            var range1 = EcsIdRange.Components;

            Assert.True(range1.Contains(entity1));
            Assert.True(range1.Contains(entity1WithGen));
            Assert.True(range1.Contains(entity1WithRole));
            Assert.False(range1.Contains(entity2));
            Assert.False(range1.Contains(entity2WithGen));
            Assert.False(range1.Contains(entity2WithRole));

            var range2 = new EcsIdRange(0x100, 0xFFFFFFFF);

            Assert.False(range2.Contains(entity1));
            Assert.False(range2.Contains(entity1WithGen));
            Assert.False(range2.Contains(entity1WithRole));
            Assert.True(range2.Contains(entity2));
            Assert.True(range2.Contains(entity2WithGen));
            Assert.True(range2.Contains(entity2WithRole));
        }
Beispiel #2
0
        public void Test_Properties()
        {
            var entityWithGen = new EcsId(0x200, 20);

            Assert.Equal((uint)0x200, entityWithGen.ID);
            Assert.Equal((ushort)20, entityWithGen.Generation);
            Assert.Equal(EcsRole.None, entityWithGen.Role);

            // TODO: Due to lack of non-Pair role, create a "fake" role.
            var entityWithRole = new EcsId(0x300, 30, (EcsRole)0xFF);

            Assert.Equal((uint)0x300, entityWithRole.ID);
            Assert.Equal((ushort)30, entityWithRole.Generation);
            Assert.Equal((EcsRole)0xFF, entityWithRole.Role);
        }
Beispiel #3
0
        public void Test_ToString()
        {
            var entity        = new EcsId(0x100);
            var entityWithGen = new EcsId(0x200, 20);
            // TODO: Due to lack of non-Pair role, create "fake" roles.
            var entityWithRole = new EcsId(0x300, (EcsRole)230);
            var entityWithBoth = new EcsId(0x400, 40, (EcsRole)240);

            Assert.Equal("EcsId(id: 0x100)", entity.ToString());
            Assert.Equal("EcsId(id: 0x200, generation: 20)", entityWithGen.ToString());
            Assert.Equal("EcsId(id: 0x300, role: 230)", entityWithRole.ToString());
            Assert.Equal("EcsId(id: 0x400, generation: 40, role: 240)", entityWithBoth.ToString());

            var pair = EcsId.Pair(entity, entityWithGen);

            Assert.Equal("EcsId.Pair(relation: 0x100, target: 0x200)", pair.ToString());
        }
Beispiel #4
0
        public void Test()
        {
            var universe    = new Universe();
            var componentId = Universe.COMPONENT_ID;

            Assert.Equal(typeof(Component), universe.GetStruct <Component>(componentId)?.Type);
            Assert.Equal(nameof(Component), universe.GetStruct <Identifier>(componentId));

            Assert.Equal(2, universe.Entities[componentId].Archetype.Count);

            var testId = new EcsId(0x100);

            universe.Add(componentId, testId);
            Assert.Equal(new [] { componentId, Universe.IDENTIFIER_ID, testId },
                         universe.Entities[componentId].Type);

            Assert.Equal(1, universe.Entities[componentId].Archetype.Count);
        }
Beispiel #5
0
        public void Test_ModifyEntityType()
        {
            var universe = new Universe();
            var entity   = new EcsId(0x100);

            // var testComponent = new EntityId(0x10);
            // universe.Set(testComponent, Component.Of<TestComponent>());

            var value1 = new EcsId(0x101);
            var value2 = new EcsId(0x102);
            var value3 = new EcsId(0x103);

            universe.ModifyEntityType(entity, previousType => {
                Assert.Equal(EcsType.Empty, previousType);
                return(new(value1, value2, value3));
            });

            universe.ModifyEntityType(entity, previousType => {
                Assert.Equal(new(value1, value2, value3), previousType);
                return(new());
            });
Beispiel #6
0
        public void Test_Pairs()
        {
            var relation = new EcsId(0x100);
            var target   = new EcsId(0x200);

            var pair = EcsId.Pair(relation, target);

            Assert.Equal((uint)0x200, pair.ID);
            Assert.Equal(EcsRole.Pair, pair.Role);
            Assert.Equal((relation, target), pair.ToPair());

            var relationWithGen = new EcsId(0x300, 30);
            var targetWithRole  = new EcsId(0x400, 40, (EcsRole)0xFF);

            var pair2 = EcsId.Pair(relationWithGen, targetWithRole);

            Assert.Equal((relation, target), pair.ToPair());
            Assert.Equal((uint)0x300, pair2.ToPair().Relation.ID);
            Assert.Equal((uint)0x400, pair2.ToPair().Target.ID);
            // Pairs will lose any Generation and Role information.
            Assert.NotEqual((relationWithGen, targetWithRole), pair2.ToPair());
            Assert.Equal(0, pair2.ToPair().Relation.Generation);
            Assert.Equal(EcsRole.None, pair2.ToPair().Target.Role);
        }