private void SpawnTerrain()
    {
        var terrainModel = terrainStructure.GetTerrain();

        if (terrainModel.Type == TerrainType.Road && terrainModel.Type == previousTerrainType)
        {
            ObjectPool.Spawn(lanes, Vector3.forward * (zPosition - 1));
        }

        ObjectPool.Spawn(terrainModel.Prefab, Vector3.forward * zPosition);
        previousTerrainType = terrainModel.Type;
    }
    public void Get_Terrain_Test()
    {
        //Arrange
        var terrainStructure = new TerrainStructure();

        var terrainModels = new List <TerrainModel>()
        {
            new TerrainModel()
            {
                Type = TerrainType.Grass
            },
            new TerrainModel()
            {
                Type = TerrainType.Road
            },
            new TerrainModel()
            {
                Type = TerrainType.Rail
            },
            new TerrainModel()
            {
                Type = TerrainType.Water
            }
        };

        terrainStructure.Construct(terrainModels);
        //Act
        var actual = new List <TerrainType>();

        for (int i = 0; i < 100000; i++)
        {
            actual.Add(terrainStructure.GetTerrain().Type);
        }

        //Assert
        CheckMaxRepetition(actual);
    }