Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace Omika.Tests.Mobile.Local;
|
||||
|
||||
/// <summary>
|
||||
/// Régression du micro-lot 36b : un Margin mixte
|
||||
/// "{DynamicResource SpaceS},0,0,0" résolvait SpaceS (un Double) sur une
|
||||
/// propriété Thickness et levait une InvalidCastException au runtime
|
||||
/// ("Unable to cast object of type 'System.Double' to type
|
||||
/// 'Avalonia.Thickness'"), avalée par le ContentPresenter : toute la page
|
||||
/// Interventions était vide.
|
||||
///
|
||||
/// Le correctif remplace ces marges par une Thickness statique.
|
||||
/// Ce test verrouille le XAML source pour empêcher la réintroduction du
|
||||
/// pattern mixte (DynamicResource suivi de littéraux séparés par des virgules).
|
||||
/// </summary>
|
||||
public sealed class InterventionsViewMarginRegressionTests
|
||||
{
|
||||
[Fact]
|
||||
public void InterventionsView_AucunDynamicResourceDoubleMelangeADesThickness()
|
||||
{
|
||||
var xaml = File.ReadAllText(Path.Combine(
|
||||
FindRepoRoot(), "src", "Omika.App", "Views", "InterventionsView.axaml"));
|
||||
|
||||
// Le pattern exact à l'origine de l'InvalidCastException.
|
||||
Assert.DoesNotContain("{DynamicResource SpaceS},0,0,0", xaml);
|
||||
|
||||
// Garde-fou général : aucun DynamicResource immédiatement suivi de
|
||||
// littéraux séparés par des virgules (mélange illégal pour les
|
||||
// propriétés composites comme Thickness).
|
||||
Assert.DoesNotMatch(@"\{DynamicResource [^}]+\},", xaml);
|
||||
}
|
||||
|
||||
private static string FindRepoRoot()
|
||||
{
|
||||
var directory = new DirectoryInfo(AppContext.BaseDirectory);
|
||||
while (directory is not null)
|
||||
{
|
||||
if (File.Exists(Path.Combine(directory.FullName, "Omika.slnx")))
|
||||
{
|
||||
return directory.FullName;
|
||||
}
|
||||
|
||||
directory = directory.Parent;
|
||||
}
|
||||
|
||||
throw new InvalidOperationException("Racine du dépôt Omika introuvable (Omika.slnx absent de la chaîne).");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user