using ZB.MOM.WW.ScadaBridge.Commons.Entities.Templates; using ZB.MOM.WW.ScadaBridge.Commons.Types.Templates; namespace ZB.MOM.WW.ScadaBridge.TemplateEngine.Tests; /// /// Gitea #66: member add/update validation now runs the analysis walkers over a template's /// inheritance chain + composition closure instead of the whole library. These tests pin that /// the closure is (a) sufficient — every walker answer is identical to the whole-graph answer, /// for every template in a graph with chains, nested and diamond compositions, a derived /// module, cycles, dangling edges and unrelated look-alikes — and (b) actually smaller. /// public class TemplateAnalysisClosureTests { // Ids of the fixture graph. private const int Grand = 1, Parent = 2, Child = 3, ModA = 4, ModB = 5, ModBBase = 6, Inner = 7; private const int CycX = 8, CycY = 9, Dangling = 10; private const int Twin = 18, TwinParent = 19, TwinGrand = 20; private static readonly List