public void Entity_OnDestroy_ShouldUnregisterEventHandlersWithLevel() { // Arrange Level l = new Level(null, 200, 200); Entity e1 = new EntityWall(0, 0, 10, 10); Entity e2 = new EntityWall(10, 0, 10, 10); // Zet ze op een bots koers e1.Speed = new Vector(1, 0); e2.Speed = new Vector(-1, 0); // Act l.SpawnEntity(e1); l.SpawnEntity(e2); l.DestroyEntity(e2); l.Update(1); // We checken of de event handlers geregistreerd zijn door // een botsing te simuleren. Als ze NIET botsen, dan is de // handler dus successvol ongeregistreerd. // Assert Assert.AreEqual(new Vector(1, 0), e1.Position); Assert.AreEqual(new Vector(10, 0), e2.Position); }
public void Collision_GetTarget_WhenProvidedEntityIsRelevant_ShouldReturnProvidedEntity() { // Arrange Entity e1 = new EntityWall(0, 0, 0, 0); Entity e2 = new EntityWall(0, 0, 0, 0); Collision c1 = new Collision(e1, e2, 0); // Act Entity target = c1.GetTarget(e1); // Assert Assert.AreEqual(e1, target); }
public void CollisionHelper_FindCollision_WhenNoMovingEntity_ShouldReturnNull() { // Arrange Entity e1 = new EntityWall(0, 0, 5, 5); // X1=0, Y1=0, X2=4, Y2=4 Entity e2 = new EntityWall(5, 0, 5, 5); // X1=5, Y1=0, X2=9, Y2=9 // Act Collision c1 = e1.FindCollision(e2); Collision c2 = e2.FindCollision(e1); // Assert Assert.IsNull(c1); Assert.IsNull(c2); }
public void Entity_MoveForVector_ShouldMoveAlongVector() { // Arrange Entity e1 = new EntityWall(0, 0, 10, 10); e1.Speed = new Vector(1, 0); // Act e1.Move(null, 1); // Assert Assert.AreEqual(e1.X1, 1); Assert.AreEqual(0.95, e1.Speed.X); }
public void Collision_IsRelevant_WhenProvidedEntityIsNotRelevant_ShouldReturnFalse() { // Arrange Entity e1 = new EntityWall(0, 0, 0, 0); Entity e2 = new EntityWall(0, 0, 0, 0); Entity e3 = new EntityWall(0, 0, 0, 0); Collision c1 = new Collision(e1, e2, 0); // Act bool relevant = c1.IsRelevant(e3); // Assert Assert.IsFalse(relevant); }
public void Collision_GetOther_WhenProvidedEntityIsIrrelevant_ShouldReturnNull() { // Arrange Entity e1 = new EntityWall(0, 0, 0, 0); Entity e2 = new EntityWall(0, 0, 0, 0); Entity e3 = new EntityWall(0, 0, 0, 0); Collision c1 = new Collision(e1, e2, 0); // Act Entity target = c1.GetOther(e3); // Assert Assert.AreEqual(null, target); }
public void CollisionState_Done_WhenOffsetSmallerThanSpeed_ShouldReturnFalse() { // Arrange Entity e1 = new EntityWall(0, 0, 10, 10); e1.Speed = new Vector(4, 0); CollisionState cs1 = new CollisionState(e1, 4); // Act cs1.Next(); // Assert Assert.IsFalse(cs1.Done); }
public void Collision_IsRelevant_WhenProvidedEntityIsRelevant_ShouldReturnTrue() { // Arrange Entity e1 = new EntityWall(0, 0, 0, 0); Entity e2 = new EntityWall(0, 0, 0, 0); Collision c1 = new Collision(e1, e2, 0); // Act bool relevant1 = c1.IsRelevant(e1); bool relevant2 = c1.IsRelevant(e2); // Assert Assert.IsTrue(relevant1); Assert.IsTrue(relevant2); }
public void Collision_GetOther_WhenProvidedEntityIsRelevant_ShouldReturnOtherEntity() { // Arrange Entity e1 = new EntityWall(0, 0, 0, 0); Entity e2 = new EntityWall(0, 0, 0, 0); Collision c1 = new Collision(e1, e2, 0); // Act Entity target1 = c1.GetOther(e1); Entity target2 = c1.GetOther(e2); // Assert Assert.AreEqual(e2, target1); Assert.AreEqual(e1, target2); }
public void CollisionState_Rectangle_ShouldReturnEntityAtCurrentHypotheticalFlooredPosition() { // Arrange Entity e1 = new EntityWall(0, 0, 10, 10); e1.Speed = new Vector(4, 0); CollisionState cs1 = new CollisionState(e1, 4); // Act cs1.Next(); Rectangle r1 = cs1.Rectangle; // Assert Assert.AreEqual(new Vector(1, 0), cs1.Rectangle.Position); }
public void RemoveWall(TileEntity tile, Direction dir) { EntityWall wall = SelectEnter(); GameObject wallObj = (wall.Point == null) ? null: wall.Point.gameObject; switch (dir) { case Direction.Left: tile.ChangeWall(Direction.Left, wallObj, wall.Type); break; case Direction.Right: tile.ChangeWall(Direction.Right, wallObj, wall.Type); break; case Direction.Up: tile.ChangeWall(Direction.Up, wallObj, wall.Type); break; case Direction.Down: tile.ChangeWall(Direction.Down, wallObj, wall.Type); break; } }
public void CollisionState_Next_ShouldAddStepToOffset() { // Arrange Entity e1 = new EntityWall(0, 0, 10, 10); e1.Speed = new Vector(4, 0); CollisionState cs1 = new CollisionState(e1, 4); Vector expected = new Vector(1, 0); // Act cs1.Next(); // Assert Assert.AreEqual(expected, cs1.Rectangle.Position); }
public void CollisionHelper_FindCollision_WhenWillEndAsCollision_ShouldReturnNull() { // Arrange Entity e1 = new EntityWall(0, 0, 5, 5); // X1=0, Y1=0, X2=4, Y2=4 Entity e2 = new EntityWall(7, 0, 5, 5); // X1=5, Y1=0, X2=9, Y2=9 e1.Speed = new Vector(1, 0); e2.Speed = new Vector(-1, 0); // Act Collision c1 = e1.FindCollision(e2); Collision c2 = e2.FindCollision(e1); // Assert Assert.IsNull(c1); Assert.IsNull(c2); }
public void CollisionHelper_FindCollision_WhenAreAlreadyColliding_ShouldReturnCollisionWithZeroFractionBefore() { // Arrange Entity e1 = new EntityWall(0, 0, 5, 5); // X1=0, Y1=0, X2=4, Y2=4 Entity e2 = new EntityWall(5, 0, 5, 5); // X1=5, Y1=0, X2=9, Y2=9 e1.Speed = new Vector(1, 0); e2.Speed = new Vector(-1, 0); // Act Collision c1 = e1.FindCollision(e2); Collision c2 = e2.FindCollision(e1); // Assert Assert.AreEqual(0, c1.FractionBefore); Assert.AreEqual(0, c2.FractionBefore); }
public void CollisionState_Done_WhenOffsetGreaterThanSpeed_ShouldReturnTrue() { // Arrange Entity e1 = new EntityWall(0, 0, 10, 10); e1.Speed = new Vector(4, 0); CollisionState cs1 = new CollisionState(e1, 4); // Act for (int i = 0; i < 5; i++) { cs1.Next(); } // Assert Assert.IsTrue(cs1.Done); }
public void CollisionState_Fraction_ShouldReturnOffsetDividedBySpeed() { // Arrange Entity e1 = new EntityWall(0, 0, 10, 10); e1.Speed = new Vector(4, 0); CollisionState cs1 = new CollisionState(e1, 4); double expected = 1 / e1.Speed.Length; // Act cs1.Next(); double frac = cs1.Fraction; // Assert Assert.AreEqual(expected, frac); }
public void CollisionState_Previous_ShouldSubtractStepFromOffset() { // Arrange Entity e1 = new EntityWall(0, 0, 10, 10); e1.Speed = new Vector(4, 0); CollisionState cs1 = new CollisionState(e1, 4); Vector expected = new Vector(1, 0); // Act cs1.Next(); cs1.Next(); cs1.Previous(); // Assert Assert.AreEqual(expected, cs1.Rectangle.Position); }