using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Collections.Generic; namespace YesNt.Interpreter.Tests; [TestClass] public class VariableStatementsTests { [TestMethod] public void LetAndReadVariableTest() { List lines = [ "var value = hi", "${value}" ]; YesNtAssert.IsLastLineEqual(lines, "hi"); } [TestMethod] public void GlobalVariableReadTest() { List lines = [ "global value = hi", "${value}" ]; YesNtAssert.IsLastLineEqual(lines, "hi"); } [TestMethod] public void LocalVariableOverridesGlobalTest() { List lines = [ "global value = global", "var value = local", "${value}" ]; YesNtAssert.IsLastLineEqual(lines, "local"); } [TestMethod] public void DeleteLocalVariableTest() { List lines = [ "var value = a", "delete value", "global value = b", "${value}" ]; YesNtAssert.IsLastLineEqual(lines, "b"); } [TestMethod] public void DeleteMissingVariableFailsTest() { List lines = [ "delete missing" ]; YesNtAssert.ContainsTerminationMessage(lines, "Variable \"missing\" not found"); } [TestMethod] public void LetInvalidSyntaxFailsTest() { List lines = [ "var a" ]; YesNtAssert.ContainsTerminationMessage(lines, "Invalid statement"); } [TestMethod] public void LetInvalidNameFailsTest() { List lines = [ "var a b = 1" ]; YesNtAssert.ContainsTerminationMessage(lines, "Invalid Syntax"); } [TestMethod] public void MissingVariableReferenceFailsTest() { List lines = [ "${missing}" ]; YesNtAssert.ContainsTerminationMessage(lines, "Variable \"missing\" not found"); } }