using Microsoft.VisualStudio.TestTools.UnitTesting; using SyncEngine.Access; namespace SyncEngine.Tests { [TestClass] public class AccessDefaultTranslatorTests { [TestMethod] public void TryTranslate_Now_ReturnsGetDate() { Assert.IsTrue(AccessDefaultTranslator.TryTranslate("Now()", out var sql)); Assert.AreEqual("GETDATE()", sql); } [TestMethod] public void TryTranslate_QuotedString() { Assert.IsTrue(AccessDefaultTranslator.TryTranslate("\"Active\"", out var sql)); Assert.AreEqual("N'Active'", sql); } [TestMethod] public void TryTranslate_NumericLiteral() { Assert.IsTrue(AccessDefaultTranslator.TryTranslate("0", out var sql)); Assert.AreEqual("0", sql); } [TestMethod] public void TryTranslate_YesNoBooleanDefaults() { Assert.IsTrue(AccessDefaultTranslator.TryTranslate("No", out var noSql)); Assert.AreEqual("0", noSql); Assert.IsTrue(AccessDefaultTranslator.TryTranslate("Yes", out var yesSql)); Assert.AreEqual("1", yesSql); } [TestMethod] public void TryTranslate_AccessDateLiteral() { Assert.IsTrue(AccessDefaultTranslator.TryTranslate("#1/1/2000#", out var sql)); StringAssert.StartsWith(sql, "'"); StringAssert.Contains(sql, "2000"); } [TestMethod] public void IsNullDefault_DetectsExplicitNull() { Assert.IsTrue(AccessDefaultTranslator.IsNullDefault("Null")); Assert.IsTrue(AccessDefaultTranslator.IsNullDefault("=Null")); Assert.IsFalse(AccessDefaultTranslator.TryTranslate("Null", out _)); } } }