public static List <LogInfo> Eval(EngineState s, string rawCode, CodeType type, ErrorCheck check, CompatOption compat, out CodeCommand cmd) { CodeParser parser = new CodeParser(DummySection(), Global.Setting, compat); return(Eval(s, parser, rawCode, type, check, compat, out cmd)); }
public static List <LogInfo> Eval(EngineState s, CodeParser parser, string rawCode, CodeType type, ErrorCheck check, CompatOption compat, out CodeCommand cmd) { // Create CodeCommand cmd = parser.ParseStatement(rawCode); if (cmd.Type == CodeType.Error) { CodeInfo_Error info = cmd.Info.Cast <CodeInfo_Error>(); Console.WriteLine(info.ErrorMessage); Assert.AreEqual(ErrorCheck.ParserError, check); return(new List <LogInfo>()); } Assert.AreEqual(type, cmd.Type); // Run CodeCommand s.SetCompat(compat); List <LogInfo> logs = Engine.ExecuteCommand(s, cmd); s.SetCompat(Project.Compat); // Reset to default // Assert CheckErrorLogs(logs, check); // Return logs return(logs); }
private static void WriteSuccessTemplate(EngineState s, CodeType codeType, string rawCode, RegistryKey hKey, RegistryValueKind compKind, string keyPath, string valueName, object comp, CompatOption opts = null, ErrorCheck check = ErrorCheck.Success) { if (opts == null) { EngineTests.Eval(s, rawCode, codeType, check); } else { EngineTests.Eval(s, rawCode, codeType, check, opts); } if (check == ErrorCheck.Success || check == ErrorCheck.Warning || check == ErrorCheck.Overwrite) { using (RegistryKey subKey = hKey.OpenSubKey(keyPath, false)) { Assert.IsNotNull(subKey); RegistryValueKind kind = subKey.GetValueKind(valueName); Assert.IsTrue(kind == compKind); object valueData; if (kind == RegistryValueKind.Unknown) { valueData = RegistryHelper.RegGetValue(hKey, keyPath, valueName, RegistryValueKind.Unknown); } else { valueData = subKey.GetValue(valueName, null, RegistryValueOptions.DoNotExpandEnvironmentNames); } Assert.IsNotNull(valueData); switch (kind) { case RegistryValueKind.Unknown: { // RegWriteEx byte[] destBin = (byte[])valueData; byte[] compBin = (byte[])comp; Assert.IsTrue(destBin.SequenceEqual(compBin)); } break; case RegistryValueKind.None: break; case RegistryValueKind.String: case RegistryValueKind.ExpandString: { string destStr = (string)valueData; string compStr = (string)comp; Assert.IsTrue(destStr.Equals(compStr, StringComparison.Ordinal)); } break; case RegistryValueKind.MultiString: { string[] destStrs = (string[])valueData; string[] compStrs = (string[])comp; Assert.IsTrue(destStrs.Length == compStrs.Length); for (int i = 0; i < destStrs.Length; i++) { Assert.IsTrue(destStrs[i].Equals(compStrs[i], StringComparison.Ordinal)); } } break; case RegistryValueKind.Binary: { byte[] destBin = (byte[])valueData; byte[] compBin = (byte[])comp; Assert.IsTrue(destBin.SequenceEqual(compBin)); } break; case RegistryValueKind.DWord: { uint destInt = (uint)(int)valueData; uint compInt = (uint)comp; Assert.IsTrue(destInt == compInt); } break; case RegistryValueKind.QWord: { ulong destInt = (ulong)(long)valueData; ulong compInt = (ulong)comp; Assert.IsTrue(destInt == compInt); } break; default: Assert.Fail(); break; } } } }