public void if_enemies_block_path_dont_generate_enemy()
            {
                var e1 = BuildAn.Enemy.WhoseNameIs("lol1").WithSpeed(1).CalculateTimeFor(minY, maxY).Build();
                var e2 = BuildAn.Enemy.WhoseNameIs("lol2").WithSpeed(2).Build();

                var levelEnemies = BuildA.LevelEnemies.WithLanes(3)
                                   .SetEnemyForType(Arg.Any <int>(), e2)
                                   .WithCollisionBoundary(10, 15)
                                   .ForSelectedLanes(0)
                                   .SetTimeForEnemy(0, 4)
                                   .GeneratesEnemyForLane(Arg.Any <int>(), 0)
                                   .HasEnemyInLane(0, null)
                                   .HasEnemyInLane(1, e1).HasEnemyInLane(2, e1)
                                   .Build();

                var ai = ScriptableObject.CreateInstance <LevelEnemyAI>();

                ai.SetLevelEnemies(levelEnemies);

                var contexts = ai.GenerateEnemySpawnContexts().ToList();

                contexts.ForEach(c =>
                                 ValidateThat.EnemySpawnContext(c)
                                 .IsNotNull()
                                 .IsNotSet()
                                 );
            }
            public void if_no_collision_detected_in_same_lane_generate_enemy()
            {
                var e1 = BuildAn.Enemy.WhoseNameIs("lol1").WithSpeed(1).CalculateTimeFor(minY, maxY).Build();
                var e2 = BuildAn.Enemy.WhoseNameIs("lol2").StartedAt(6).WithSpeed(1).CalculateTimeFor(minY, maxY).Build();

                var levelEnemies = BuildA.LevelEnemies.WithLanes(3)
                                   .SetEnemyForType(Arg.Any <int>(), e2)
                                   .WithCollisionBoundary(10, 15)
                                   .ForSelectedLanes(0)
                                   .SetTimeForEnemy(0, 6)
                                   .GeneratesEnemyForLane(Arg.Any <int>(), 0)
                                   .HasEnemyInLane(0, e1)
                                   .HasEnemyInLane(1, null).HasEnemyInLane(2, null)
                                   .Build();

                var ai = ScriptableObject.CreateInstance <LevelEnemyAI>();

                ai.SetLevelEnemies(levelEnemies);

                var contexts = ai.GenerateEnemySpawnContexts().ToList();

                ValidateThat.EnemySpawnContext(contexts[0])
                .IsNotNull()
                .IsSet(0, 0, e2);

                ValidateThat.EnemySpawnContext(contexts[1])
                .IsNotNull()
                .IsNotSet();

                ValidateThat.EnemySpawnContext(contexts[2])
                .IsNotNull()
                .IsNotSet();
            }