Arreglado vision y funcion de zonas a evitar

This commit is contained in:
2026-09-10 08:59:29 +02:00
parent d50333f82a
commit 7f17dfeb2a
8 changed files with 71 additions and 71 deletions

View File

@@ -58,23 +58,27 @@ List<double[]> Ring(double lon, double lat, double size) =>
await Walk();
var far = new List<List<double[]>> { Ring(-2.3, 43.0, .01) };
await Walk(far);
Check(fake.Calls == 1, "Zona lejana reutiliza la geometria conocida");
Check(fake.Calls == 2 && fake.Zones == 1, "Toda zona activa se envia a V2 aunque este lejos de la ruta previa");
var near = new List<List<double[]>> { Ring(-1.985, 43.315, .001), Ring(-1.982, 43.317, .001) };
await Walk(near);
Check(fake.Zones == 2, "Se envian todos los poligonos");
await Walk(near);
Check(fake.Calls == 2, "Mismas zonas reutilizan cache restringida");
Check(fake.Calls == 3, "Mismas zonas reutilizan cache restringida");
near[0][0][0] += .00001;
await Walk(near);
Check(fake.Calls == 3, "Mover un vertice invalida esa entrada de cache");
Check(fake.Calls == 4, "Mover un vertice invalida esa entrada de cache");
await Walk(new() { Ring(-2.2, 43.1, .5) });
Check(fake.Calls == 4, "Una zona que rodea la ruta no se ignora aunque sus vertices esten lejos");
Check(fake.Calls == 5, "Una zona que rodea la ruta no se ignora aunque sus vertices esten lejos");
fake.Fail = true;
var retry = new List<List<double[]>> { Ring(-1.984, 43.312, .0002) };
await Walk(retry);
fake.Fail = false;
await Walk(retry);
Check(fake.Calls == 6, "Un fallo temporal no queda guardado en cache de zonas");
Check(fake.Calls == 7, "Un fallo temporal no queda guardado en cache de zonas");
var puntos = new List<double[]> { new[] { 43.314, -1.984 }, new[] { 43.315, -1.983 } };
await (Task<(double[,]?, double, double)>)walk.Invoke(planner,
new object?[] { 43.31, -1.99, 43.32, -1.98, near, puntos })!;
Check(fake.Zones == 2 && fake.Points == 2, "Se envian juntos todos los poligonos y puntos activos");
var page = new PlanificadorRutas();
var flags = BindingFlags.Instance | BindingFlags.NonPublic;
var options = (List<AlternativaRuta>)typeof(PlanificadorRutas).GetField("_opcionesRuta", flags)!.GetValue(page)!;
@@ -102,6 +106,7 @@ sealed class FakeValhalla : IClienteValhalla
public int Calls { get; private set; }
public int Zones { get; private set; }
public int Points { get; private set; }
public bool Fail { get; set; }
public Task<(double[,]? Linea, double DistanciaMetros, double DuracionSegundos)> ObtenerRutaAsync(
double latitudDesde, double longitudDesde, double latitudHasta, double longitudHasta,
@@ -110,6 +115,7 @@ sealed class FakeValhalla : IClienteValhalla
{
Calls++;
Zones = excludePolygons?.Count ?? 0;
Points = excludeLocations?.Count ?? 0;
return Task.FromResult<(double[,]?, double, double)>(Fail ? (null, 0, 0) :
(new[,] { { latitudDesde, longitudDesde }, { latitudHasta, longitudHasta } }, 100, 100));
}