using Strata.SqlTools.SqlBreakdown.Interfaces; using System.Text; namespace Strata.SqlTools.SqlBreakdown.Tests.SqlBreakdownCollectionTests; /// /// Base class for SqlBreakdownCollection tests containing shared test utilities and mock implementations. /// public class SqlBreakdownCollectionTestBase { /// /// Mock implementation of ISqlBreakdown for testing purposes. /// public class MockSqlBreakdown : ISqlBreakdown { private readonly string _sql; public MockSqlBreakdown(string sql) { _sql = sql; SetupClauses = new List(); FinishClauses = new System.Collections.ArrayList(); } public string? RawSql { get; set; } public List SetupClauses { get; set; } public bool IsUsingSetupClause => SetupClauses.Count > 0; public System.Collections.ArrayList FinishClauses { get; set; } public bool IsUsingFinishClause => FinishClauses.Count > 0; public string GetSql(bool includeSetupFinish = true) { var sb = new StringBuilder(); if (includeSetupFinish) { foreach (string setup in SetupClauses) { sb.AppendLine(setup); } } sb.Append(_sql); if (includeSetupFinish) { foreach (string finish in FinishClauses) { sb.AppendLine(finish); } } return sb.ToString(); } public override string ToString() => GetSql(); public object Clone() { var clone = (MockSqlBreakdown)MemberwiseClone(); clone.SetupClauses = new List(SetupClauses); clone.FinishClauses = new System.Collections.ArrayList(FinishClauses); return clone; } } }