diff --git a/App.config b/App.config deleted file mode 100644 index 952ad67..0000000 --- a/App.config +++ /dev/null @@ -1,14 +0,0 @@ - - - -
- - - - - - - - - - \ No newline at end of file diff --git a/Detokenizer.cs b/Detokenizer.cs deleted file mode 100644 index 6140b3c..0000000 --- a/Detokenizer.cs +++ /dev/null @@ -1,348 +0,0 @@ -using System; -using System.Globalization; -using System.Linq; -using System.Text; - -namespace TeamControlium.Utilities -{ - public class Detokenizer - { - private static readonly char tokenStartChar = '{'; - private static readonly char tokenEndChar = '}'; - private static Random RandomGenerator { get; } = new Random(); - - /// - /// Delegate for processing custom tokens if required. If a token cannot be resolved internally, the token (split based on the delimiter) is passed to - /// the CustomTokenProcessor, if defined. CustomTokenProcessor returns a null string if token not resolved. - /// - static public Func CustomTokenProcessor { get; set; } - - //[DebuggerStepThrough] - public static string ProcessTokensInString(string stringWithTokens) - { - var detokenizedString = new StringBuilder(); - var startIndex = 0; - var foundTokenStart = false; - - // - // Find the start of a token, ignoring doubles {{'s as they are litterals) - // - while (!foundTokenStart && startIndex < stringWithTokens.Length) - { - if (stringWithTokens[startIndex] == tokenStartChar) - { - // We are looking at a token start char... - if ((startIndex < stringWithTokens.Length - 1) && (stringWithTokens[startIndex + 1] == tokenStartChar)) - { - // Next char is also a start char, so ignore and skip past - startIndex += 1; - } - else - { - // Next char not a start char so we have found a token! - foundTokenStart = true; - } - } - startIndex += 1; - } - - // - // startIndex is now pointing to first char of a token - // - - if (foundTokenStart) - { - var foundTokenEnd = false; - var endIndex = startIndex; // We start searching for the end of the token from the first character of the - // - // Find the end of the token. - // - while (!foundTokenEnd && endIndex < stringWithTokens.Length) - { - if ((stringWithTokens[endIndex] == tokenStartChar) && - !((startIndex < stringWithTokens.Length - 1) && (stringWithTokens[startIndex + 1] == tokenStartChar))) - { - // - // Another start token (and it is NOT a dounble!!!!) We have nested tokens by golly. - // So, start the process again, but from the new start of the nested token. Hah, this - // is a quick easy way of dealing with nested tokens! - // - startIndex = endIndex + 1; - } - else if (stringWithTokens[endIndex] == tokenEndChar) - { - if ((endIndex < stringWithTokens.Length - 1) && (stringWithTokens[endIndex + 1] == tokenEndChar)) - { - // Next char is also an end char, so ignore and skip past - endIndex += 1; - } - else - { - // Next char not a start char so we have found a token! - foundTokenEnd = true; - } - } - endIndex += 1; - } - if (foundTokenEnd) - { - detokenizedString.Append(stringWithTokens.Substring(0, startIndex - 1)); - string token = stringWithTokens.Substring(startIndex, endIndex - startIndex - 1); - try - { - detokenizedString.Append(ProcessToken(token)); - } - catch (Exception ex) - { - throw new Exception($"Error processing token {{{token}}} ({ex.Message})", ex); - } - detokenizedString.Append(stringWithTokens.Substring(endIndex, stringWithTokens.Length - endIndex)); - } - else - { - throw new Exception($"Found token start {{ found at index {startIndex} but no closing }} found: [{stringWithTokens}]"); - } - // Now, we call ourself again to process any more tokens.... - detokenizedString = new StringBuilder(ProcessTokensInString(detokenizedString.ToString())); - } - else - { - // So no token found. We will convert all doubles back to singles and return the string... - detokenizedString.Append(stringWithTokens).Replace("{{", "{").Replace("}}", "}"); - } - return detokenizedString.ToString(); - } - - private static string ProcessToken(string token) - { - char delimiter = ';'; - string processedToken = ""; - if (string.IsNullOrEmpty(token)) throw new Exception("Empty token!"); - string[] splitToken = token.Split(new char[] { delimiter }, 2); - switch (splitToken[0].ToLower().Trim()) - { - case "random": - if (splitToken.Length < 2) throw new Exception($"Random token [{token}] needs 3 parts {{random;;}}"); - processedToken = DoRandomToken(delimiter, splitToken[1]); - break; - case "date": - if (splitToken.Length < 2) throw new Exception($"Date token [{token}] needs 3 parts {{date;;}}"); - processedToken = DoDateToken(delimiter, splitToken[1]); - break; - case "financialyearstart": - if (splitToken.Length < 2) throw new Exception($"FinancialYearStart token [{token}] needs 3 parts {{FinancialYearStart;;}}"); - processedToken = DoFinancialYearToken(delimiter, splitToken[1], true); - break; - case "financialyearend": - if (splitToken.Length < 2) throw new Exception($"FinancialYearEnd token [{token}] needs 3 parts {{FinancialYearEnd;;}}"); - processedToken = DoFinancialYearToken(delimiter, splitToken[1], false); - break; -// case "seleniumkeys": -// case "seleniumkey": -// if (splitToken.Length < 2) throw new Exception($"SeleniumKey token [{token}] needs 2 parts {{SeleniumKey;}}"); -// processedToken = DoSeleniumKey(splitToken[1]); -// break; - default: - if (CustomTokenProcessor!=null) - { - try - { - processedToken = CustomTokenProcessor(delimiter, splitToken); - } - catch (Exception ex) - { - throw new Exception($"Error thrown by Custom Token Processor for [{splitToken[0]}] in {token}", ex); - } - } - if (processedToken == null) - { - throw new Exception($"Unsupported token [{splitToken[0]}] in {token}"); - } - break; - } - - return processedToken; - } - - private static string DoRandomToken(char delimiter, string TypeAndLength) - { - string[] typeAndLengthOrFormat = TypeAndLength.Split(new char[] { delimiter }, 2); - string result; - string select = ""; - string verb = typeAndLengthOrFormat[0].ToLower().Trim(); - if (verb.StartsWith("date(")) - { - result = DoRandomDate(verb.Substring(verb.IndexOf('(') + 1, verb.Length - 2 - verb.IndexOf('('))).ToString(typeAndLengthOrFormat[1]); - } - else if (verb.StartsWith("float(")) - { - result = DoRandomFloat(verb.Substring(verb.IndexOf('(') + 1, verb.Length - 2 - verb.IndexOf('('))).ToString(typeAndLengthOrFormat[1]); - } - else - { - // {random,from(ASDF),5} - 5 characters selected from ASDF - if (verb.StartsWith("from(")) - { - select = typeAndLengthOrFormat[0].Trim().Substring(verb.IndexOf('(') + 1, verb.Length - 2 - verb.IndexOf('(')); - } - else - { - switch (verb) - { - case "letters": - select = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; - break; - case "lowercaseletters": - select = "abcdefghijklmnopqrstuvwxyz"; - break; - case "uppercaseletters": - select = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - break; - case "digits": - select = "01234567890"; - break; - case "alphanumerics": - select = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890"; - break; - case "acn": - return ProcessTokensInString("{random;digits;9}"); - case "abn": - { - string acn = ProcessTokensInString("{random;acn}"); - return ProcessTokensInString($"{{ABNFromACN;{acn}}}"); - } - default: - throw new Exception($"Unrecognised random Type [{typeAndLengthOrFormat[0]}] - Expect letters, lowercaseletters, uppercaseletters digits or alphanumerics"); - } - } - if (!int.TryParse(typeAndLengthOrFormat[1], out int number)) throw new Exception($"Invalid number of characters in Random token {{random;;}}"); - result = new string(Enumerable.Repeat(select, number).Select(s => s[RandomGenerator.Next(s.Length)]).ToArray()); - } - - return result; - } - - private static string DoDateToken(char delimiter, string OffsetAndFormat) - { - string[] offsetAndFormat = OffsetAndFormat.Split(new char[] { delimiter }, 2); - - if (offsetAndFormat.Length != 2) - { - throw new Exception("Date token does not have a format parameter; example: {date" + delimiter + "today" + delimiter + "dd-MM-yyyy}"); - } - - DateTime dt; - string verb = offsetAndFormat[0].ToLower().Trim(); - if (verb.StartsWith("random(")) - { - dt = DoRandomDate(verb.Substring(verb.IndexOf('(') + 1, verb.Length - 2 - verb.IndexOf('('))); - } - else - { - switch (verb) - { - case "today": - dt = DateTime.Now; - break; - case "yesterday": - dt = DateTime.Now.AddDays(-1); - break; - case "tomorrow": - dt = DateTime.Now.AddDays(1); - break; - default: - { - if (offsetAndFormat[0].Contains('(') && offsetAndFormat[0].EndsWith(")")) - { - string[] activeOffset = verb.Substring(0, verb.Length - 1).Split(new char[] { '(' }, 2); - switch (activeOffset[0].Trim()) - { - case "addyears": - dt = DateTime.Now.AddYears(int.Parse(activeOffset[1])); - break; - case "addmonths": - dt = DateTime.Now.AddMonths(int.Parse(activeOffset[1])); - break; - case "adddays": - dt = DateTime.Now.AddDays(int.Parse(activeOffset[1])); - break; - default: - throw new Exception($"Invalid Active Date offset. Expect AddYears(n) AddMonths(n) or AddDays(n). Got [{activeOffset[0].Trim()}]"); - } - } - else - { - throw new Exception($"Invalid Active Date offset. Open or Closing paranthesis missing. Expect example {{date;AddYears(-30);dd-MM-yyyy}}"); - } - break; - } - } - } - - return dt.ToString(offsetAndFormat[1]); - } - - private static string DoFinancialYearToken(char delimiter, string DateToWorkFromAndFormat, bool Start) - { - string[] dateToWorkFromAndFormat = DateToWorkFromAndFormat.Split(new char[] { delimiter }, 2); - - if (!DateTime.TryParseExact(dateToWorkFromAndFormat[0], new string[] { "dd/MM/yyyy", "d/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "dd/MM/yy", "d/MM/yy", "dd/M/yy", "d/M/yy" }, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dateToWorkFrom)) - { - throw new ArgumentException("Cannot parse date. Must be in format d/M/y", "DateToWorkFromAndFormat (first element)"); - } - - string year; - if (dateToWorkFrom.Month >= 7) - year = Start ? dateToWorkFrom.Year.ToString() : (dateToWorkFrom.Year + 1).ToString(); - else - year = Start ? (dateToWorkFrom.Year - 1).ToString() : dateToWorkFrom.Year.ToString(); - - DateTime returnDate = DateTime.ParseExact((Start ? "01/07/" : "30/06/") + year, "dd/MM/yyyy", CultureInfo.InvariantCulture); - return returnDate.ToString(dateToWorkFromAndFormat[1]); - } - - static private float DoRandomFloat(string MaxAndMinFloats) - { - char delimiter = ','; - string[] MaxAndMin = MaxAndMinFloats.Split(delimiter); - if (MaxAndMin.Length != 2) - throw new Exception($"Invalid Maximum and Minimum floats. Expect {{random.float(min;max),}}. Max/min was: [{MaxAndMinFloats}]"); - - if (!float.TryParse(MaxAndMin[0], out float Min)) - throw new Exception($"Invalid Minimum float. Expect {{random.float(min;max),}}. Max/min was: [{MaxAndMinFloats}]"); - if (!float.TryParse(MaxAndMin[1], out float Max)) - throw new Exception($"Invalid Maximum float. Expect {{random.float(min;max),}}. Max/min was: [{MaxAndMinFloats}]"); - - return DoRandomFloat(Min, Max); - } - - static public float DoRandomFloat(float MinFloat, float MaxFloat) - { - if (MinFloat >= MaxFloat) - throw new Exception($"Maximum float less than Minimum float! Expect {{random.float(min,max),}} Min = {MinFloat.ToString()}, Max = {MaxFloat.ToString()}"); - return (float)RandomGenerator.NextDouble() * (MaxFloat - MinFloat) + MinFloat; - } - - static private DateTime DoRandomDate(string MaxAndMinDates) - { - char delimiter = ','; - string[] MaxAndMin = MaxAndMinDates.Split(delimiter); - if (MaxAndMin.Length != 2) - throw new Exception($"Invalid Maximum and Minimum dates. Expect {{random;date(dd-MM-yyyy,dd-MM-yyyy);}}. Max/min was: [{MaxAndMinDates}]"); - - if (!DateTime.TryParseExact(MaxAndMin[0], "d-M-yyyy", CultureInfo.InstalledUICulture, DateTimeStyles.None, out DateTime Min)) - throw new Exception($"Invalid Minimum date. Expect {{random;date(dd-MM-yyyy,dd-MM-yyyy);}}. Max/min was: [{MaxAndMinDates}]"); - if (!DateTime.TryParseExact(MaxAndMin[1], "d-M-yyyy", CultureInfo.InstalledUICulture, DateTimeStyles.None, out DateTime Max)) - throw new Exception($"Invalid Maximum date. Expect {{random;date(dd-MM-yyyy,dd-MM-yyyy);}}. Max/min was: [{MaxAndMinDates}]"); - - return DoRandomDate(Min, Max); - } - - static public DateTime DoRandomDate(DateTime MinDate, DateTime MaxDate) - { - if (MinDate > MaxDate) - throw new Exception($"Maximum date earlier than Maximum date! Expect {{random;date(dd-MM-yyyy,dd-MM-yyyy);}} Mindate = {MinDate.ToString("dd/MM/yyyy")}, Maxdate = {MaxDate.ToString("dd/MM/yyyy")}"); - return MinDate.AddDays(RandomGenerator.Next((MaxDate - MinDate).Days)); - } - } -} \ No newline at end of file diff --git a/Documentation/.gitignore b/Documentation/.gitignore new file mode 100644 index 0000000..7ffc278 --- /dev/null +++ b/Documentation/.gitignore @@ -0,0 +1,11 @@ +## +## We only want the .shfbproj file, .png and .aml files +## +## + +# Ignore everything + +# But not these... +!*.shfbproj +!*.png +!*.aml \ No newline at end of file diff --git a/Documentation/Content/Welcome.aml b/Documentation/Content/Welcome.aml new file mode 100644 index 0000000..a42768e --- /dev/null +++ b/Documentation/Content/Welcome.aml @@ -0,0 +1,23 @@ + + + + + The TeamControlium test Utilities is a standalone collection of automated-test framework utilities designed to assist .NET Core based automated-test frameworks. + Tool and testing phase (IE. Unit, Functional regression, systems etc...) agnostic, the utilities are designed to assist any type of automation-framework. + Originally built by Test Automation Engineers as part of an Automation PoC project in 2014-2015, the utilities library has evolved into the multi-facited general-use library it is today. Ported into both Java and (partially) UFT the library continues to evolve and embody the latest test automation technologies. The TeamControlium Controlium library is dependent on this Utilities library, however the Utilities library can be used standalone if the Controlium library is not used. + + +
+ Utilities library members + + The Utilities library consists of a number of member classes made available to consumers: + + + + Log - Provides test logging functionality to enable test/framework information and debug level logging. Log output is to Console as default but can be directed to delegated consumer for custom output (IE. HTML/XML wrapping, file output etc...). + + + +
+
+
diff --git a/Documentation/Documentation.shfbproj b/Documentation/Documentation.shfbproj new file mode 100644 index 0000000..0471760 --- /dev/null +++ b/Documentation/Documentation.shfbproj @@ -0,0 +1,101 @@ + + + + + Debug + AnyCPU + 2.0 + 24cce119-e46f-4577-b518-55cb69152b9f + 2017.9.26.0 + + Documentation + Documentation + Documentation + + Cross-platform (.NET Core/.NET Standard) + ..\Docs\ + Documentation + en-US + + + + + + + + + + + + + Website + C# + VS2013 + True + False + False + False + OnlyWarningsAndErrors + 100 + False + Working\ + TeamControlium - Utilities library + 1.0.0.0 + Guid + BelowNamespaces + False + False + 2 + True + https://github.com/TeamControlium/Utilities.net/blob/master/LICENSE.txt + &#169%3b MIT License + Blank + Summary, Parameter, Returns, AutoDocumentCtors, TypeParameter, AutoDocumentDispose + Hello arrse + + + info%40teamcontrolium.com + TeamControlium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OnBuildSuccess + + \ No newline at end of file diff --git a/Documentation/icons/Help.png b/Documentation/icons/Help.png new file mode 100644 index 0000000..945e89f Binary files /dev/null and b/Documentation/icons/Help.png differ diff --git a/General.cs b/General.cs deleted file mode 100644 index 8f7d256..0000000 --- a/General.cs +++ /dev/null @@ -1,128 +0,0 @@ -using HtmlAgilityPack; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; - -namespace TeamControlium.Utilities -{ - public class General - { - - /// - /// If object is a string and has been set, tokens with the string are processed - /// - /// is called recursively until string returned matches string sent. Ensures all tokens and nested tokens removed. - /// Returns same object type as submitted - /// Object to process - /// Processed object - public static T DetokeniseString(T ObjectToProcess) - { - // Only do any processing if the object is a string. - if (typeof(T) == typeof(String)) - { - // - // Call the TokenProcessor in a loop until the string returned is the same as the string passed in. This indicates any processing has been - // completed. Doing this allows token values to themselves contain tokens) - // - string StringToProcess = string.Empty; - string ProcessedString = (string)(object)ObjectToProcess; - Logger.Write(Logger.LogLevels.FrameworkDebug, "Object is a string [{0}]. ", ProcessedString ?? string.Empty); - while (!StringToProcess.Equals(ProcessedString)) - { - StringToProcess = string.Copy(ProcessedString); - - ProcessedString = Detokenizer.ProcessTokensInString(StringToProcess); - Logger.WriteLine(Logger.LogLevels.FrameworkDebug, "Processed [{0}] to [{1}]", StringToProcess, ProcessedString ?? string.Empty); - } - return (T)(object)ProcessedString; - } - else - { - Logger.WriteLine(Logger.LogLevels.FrameworkDebug, "Object [{0}] not a string. Not processed", typeof(T).Name); - return ObjectToProcess; - } - } - - /// - /// Returns true if string does not start with 0 or starts with t(rue), y(es) or o(n) - /// - /// value to check - /// true if string first digit is not 0 or is true, yes or on - public static bool IsValueTrue(string Value) - { - if (string.IsNullOrEmpty(Value)) return false; - if (int.TryParse(Value, out int i)) - if (i > 0) return true; else return false; - return Value.ToLower().StartsWith("t") || Value.ToLower().StartsWith("y") || Value.ToLower().StartsWith("on"); - } - - /// - /// Normalises single and double quotes for XPath use - /// - /// String containing single and double quotes - /// String for XPath use - public static string CleanStringForXPath(string original) - { - if (!original.Contains("'")) - return '\'' + original + '\''; - - else if (!original.Contains("\"")) - return '"' + original + '"'; - - else - return "concat('" + original.Replace("'", "',\"'\",'") + "')"; - } - - /// - /// Makes string filename friendly - /// - /// Possible unfriendly filename string - /// String that can be used in a filename - public static string CleanStringForFilename(string original) - { - string invalidChars = Regex.Escape(new string(System.IO.Path.GetInvalidFileNameChars())); - string invalidRegStr = string.Format(@"([{0}]*\.+$)|([{0}]+)", invalidChars); - return Regex.Replace(original, invalidRegStr, "_"); - } - - /// - /// Extracts displayed text from an HTML node and desendants - /// - /// HTML containing text - /// Text with HTML stripped out - public static string GetTextFromHTML(string HtmlData) - { - if (string.IsNullOrEmpty(HtmlData)) return string.Empty; - - HtmlDocument document = new HtmlDocument(); - document.LoadHtml(HtmlData); - - String[] acceptableTags = new String[] { "strong", "em", "u" }; - - Queue nodes = new Queue(document.DocumentNode.SelectNodes("./*|./text()")); - while (nodes.Count > 0) - { - HtmlNode node = nodes.Dequeue(); - HtmlNode parentNode = node.ParentNode; - - if (!acceptableTags.Contains(node.Name) && node.Name != "#text") - { - HtmlNodeCollection childNodes = node.SelectNodes("./*|./text()"); - - if (childNodes != null) - { - foreach (var child in childNodes) - { - nodes.Enqueue(child); - parentNode.InsertBefore(child, node); - } - } - parentNode.RemoveChild(node); - } - } - - return document.DocumentNode.InnerHtml; - } - } -} diff --git a/Logger.cs b/Logger.cs deleted file mode 100644 index 2fd0244..0000000 --- a/Logger.cs +++ /dev/null @@ -1,408 +0,0 @@ -using System; -using System.Reflection; -using System.IO; -using System.Diagnostics; -using System.Collections.Generic; -using System.Threading; - -namespace TeamControlium.Utilities -{ - /// - /// Enables test scripts to log data that assists in debugging of test scripts and/or framework. Library and - /// helper classes write to the debug log using log levels Framework - /// Information and Framework Debug to ensure detailed analysis - /// is possible.
- /// Debug text redirection is possible if underlying tool supplies its own logging and/or debug output, wired up - /// to and is set to false.
- /// The timestamp, shown on every line of the log output, is reset on the first call to the Logger. - ///
- /// - static public class Logger - { - static private bool errorWrittenToEventLog; - static private Stopwatch testTimer; // Used to keep track of time since first call to Logger class made. - static private Dictionary testToolStrings; // Used to build string-per-thread as logger Write calls made. - static private object lockWriteLine = new object(); // Used for locking during a DoWriteLine to ensure thread safety - static private object lockWrite = new object(); // Used for locking during a DoWrite to ensure thread safety - - /// - /// Instantiates an instant of the Logger static class. Starts the Stopwatch running for timing information in debug data. - /// - static Logger() - { - errorWrittenToEventLog = false; - testToolStrings = new Dictionary(); - LoggingLevel = LogLevels.TestInformation; // Default logging level - ResetTimer(); - } - - /// - /// Levels of logging - Verbose (Maximum) to Exception (Minimum). If level of text being written to - /// logging is equal to, or higher than the current LoggingLevel the text is written.
- /// This is used to filter logging so that only entries to log are made if the level of the write is equal - /// or greater than the logging level set by LoggingLevel. - ///
- public enum LogLevels - { - /// - /// Data written to log if LoggingLevel is FrameworkDebug and Write is FrameworkDebug or higher - /// - FrameworkDebug = 0, - /// - /// Data written to log if LoggingLevel is FrameworkInformation and Write is FrameworkInformation or higher - /// - FrameworkInformation = 1, - /// - /// Data written to log if LoggingLevel is TestDebug and Write is TestDebug or higher - /// - TestDebug = 2, - /// - /// Data written to log if LoggingLevel is TestInformation and Write is TestInformation or Error - /// - TestInformation = 3, - /// - /// Data always written to results - /// - Error = 4 - }; - - - /// - /// Logging level. Lowest is Error (least amount of log data written - only writes at - /// level Error are written to the log). Most data is written to - /// the log if level set is FrameworkDebug. - /// - static public LogLevels LoggingLevel { get; set; } = LogLevels.FrameworkDebug; - - /// - /// Defines where log lines are written to.
- /// If true (or has not been defined), debug data is written to the Console (stdout)
- /// If false, debug data logging is written to the delegate (if wired up)
- ///
- /// - /// The default is for log data to be written to the console - /// - static public bool WriteToConsole { get; set; } - - /// - /// System delegate to write debug data to if WriteToConsole is false. - /// - /// - static public Action TestToolLog { get; set; } - - - /// - /// Resets the logger elapsed timer to zero - /// - static public void ResetTimer() - { - testTimer = new Stopwatch(); - testTimer.Start(); - } - - /// - /// Writes details of a caught exception to the active debug log at level Error - /// - /// - /// If current error logging level is FrameworkDebug the full - /// exception is written, including stacktrace etc.
- /// With any other Log Level only the exception message is writteIf an exception is thrown during write, Logger - /// attempts to write the error details if able. - ///
- /// Exception being logged - /// - /// - /// catch (InvalidHostURI ex) - /// { - /// // Log exception and abort the test - we cant talk to the remote Selenium server - /// Logger.LogException(ex); - /// toolWrapper.AbortTest("Cannot connect to remote Selenium host"); - /// } - /// - /// - static public void LogException(Exception ex) - { - StackFrame stackFrame = new StackFrame(1, true); - if (LoggingLevel == LogLevels.FrameworkDebug) - { - DoWriteLine((stackFrame == null) ? null : stackFrame.GetMethod(), LogLevels.Error, - string.Format("Exception thrown: {0}", ex.ToString())); - } - else - { - DoWriteLine((stackFrame == null) ? null : stackFrame.GetMethod(), LogLevels.Error, - string.Format("Exception thrown: {0}", ex.Message)); - } - } - /// - /// Writes details of a caught exception to the active debug log at level Error - /// - /// - /// If current error logging level is FrameworkDebug the full - /// exception is written, including stacktrace etc.
- /// With any other Log Level only the exception message is writteIf an exception is thrown during write, Logger - /// attempts to write the error details if able. - ///
- /// Exception being logged - /// Additional string format text to show when logging exception - /// Arguments shown in string format text - /// - /// - /// catch (InvalidHostURI ex) - /// { - /// // Log exception and abort the test - we cant talk to the remote Selenium server - /// Logger.LogException(ex,"Given up trying to connect to [{0}]",Wherever); - /// toolWrapper.AbortTest("Cannot connect to remote Selenium host"); - /// } - /// - /// - static public void LogException(Exception ex, string text, params Object[] args) - { - StackFrame stackFrame = new StackFrame(1, true); - DoWrite((stackFrame == null) ? null : stackFrame.GetMethod(), LogLevels.Error, string.Format(text, args)); - if (LoggingLevel == LogLevels.FrameworkDebug) - { - DoWriteLine((stackFrame == null) ? null : stackFrame.GetMethod(), LogLevels.Error, - string.Format("Exception thrown: {0}", ex.ToString())); - } - else - { - DoWriteLine((stackFrame == null) ? null : stackFrame.GetMethod(), LogLevels.Error, - string.Format("Exception thrown: {0}", ex.Message)); - } - } - - /// - /// Writes a line of data to the active debug log with no line termination - /// - /// - /// - /// - /// Text to be written - /// String formatting arguments (if any) - /// Level of text being written (See for usage of the Log Level) - /// Write a line of data from our test: - /// - /// Logger.WriteLn(LogLevels.TestDebug, "Select member using key (Member: {0})","90986754332"); - /// code> - static public void Write(LogLevels logLevel, string textString, params Object[] args) - { - StackFrame stackFrame = new StackFrame(1, true); - DoWrite(stackFrame?.GetMethod(), logLevel, string.Format(textString, args)); - } - - /// - /// Writes a line of data to the active debug log. - /// Data can be formatted in the standard string.format syntax. If an exception is thrown during write, Logger - /// attempts to write the error deatils if able. - /// - /// Level of text being written (See for usage of the Log Level) - /// Text to be written - /// String formatting arguments (if any) - /// Write a line of data from our test: - /// - /// Logger.WriteLine(LogLevels.TestDebug, "Select member using key (Member: {0})","90986754332"); - /// - static public void WriteLine(LogLevels logLevel, string textString, params Object[] args) - { - StackFrame stackFrame = new StackFrame(1, true); - DoWriteLine(stackFrame?.GetMethod(), logLevel, string.Format(textString, args)); - } - - /// - /// Writes given Text to a text file, optionally auto versioning (adding (n) to filename) OR - /// overwriting. - /// - /// - /// No exception is raised if there is any problem, but details of error is written to Logger log - /// - /// Full path and filename to use - /// If true and file exists. (n) is added to auto-version. If false and file exists, it is overwritten if able - /// Text to write - static public void WriteTextToFile(string Filename, bool AutoVersion, string Text) - { - try - { - string FilenameToUse = Filename; - if (AutoVersion) - { - int count = 1; - string fileNameOnly = Path.GetFileNameWithoutExtension(Filename); - string extension = Path.GetExtension(Filename); - string path = Path.GetDirectoryName(Filename); - FilenameToUse = Filename; - - while (File.Exists(FilenameToUse)) - { - string tempFileName = string.Format("{0}({1})", fileNameOnly, count++); - FilenameToUse = Path.Combine(path, tempFileName + extension); - } - } - - File.WriteAllText(FilenameToUse, Text); - } - catch (Exception ex) - { - LogException(ex, $"Cannot write data to file [{Filename ?? "Null Filename!"}] (AutoVersion={(AutoVersion ? "Yes" : "No")})"); - } - } - - /// - /// Gets class-type and Method name of passed MethodBase class. - /// - /// MethodBase of class - /// Formatted string containing Type.Method - static private string CallingMethodDetails(MethodBase methodBase) - { - string methodName = ""; - string typeName = ""; - if (methodBase != null) - { - methodName = methodBase.Name ?? methodName; - if (methodBase.DeclaringType != null) - { - typeName = methodBase.DeclaringType.Name ?? typeName; - } - } - return string.Format("{0}.{1}", typeName, methodName); - } - - - /// - /// Appends text to currently active line. If the start of line, text is pre-pended with Line header information - /// - /// MethodBase of class calling Logger class - /// Level of debug text to be written - /// Text string to be written - /// Text is written if TypeOfWrite is equal to, or higher the current Logging Level - static private void DoWrite(MethodBase methodBase, LogLevels TypeOfWrite, string textString) - { - // Only do write if level of this write is equal to or greater than the current logging level - if (TypeOfWrite >= LoggingLevel) - { - // Ensure thread safety by locking code around the write - lock (lockWrite) - { - // - // Get the id of the current thread and append text to end of the dictionary item for that - // thread (create new item if doesnt already exist). If this is - // first time this thread is doing a write, prepend the PreAmble text first. - // - int threadID = Thread.CurrentThread.ManagedThreadId; - bool writeStart = !testToolStrings.ContainsKey(threadID); - if (writeStart) testToolStrings[threadID] = GetPreAmble(methodBase, TypeOfWrite); - testToolStrings[threadID] += textString ?? string.Empty; - } - } - } - - /// - /// Appends text to currently active line and writes line to active log. If new line, text is pre-pended with Line header information - /// - /// MethodBase of class calling Logger class - /// Level of debug text to be written - /// Text string to be written - /// Text is written if TypeOfWrite is equal to, or higher the current Logging Level - static private void DoWriteLine(MethodBase methodBase, LogLevels TypeOfWrite, string textString) - { - if (TypeOfWrite >= LoggingLevel) - { - var textToWrite = textString; - lock (lockWriteLine) - { - int threadID = Thread.CurrentThread.ManagedThreadId; - if (testToolStrings.ContainsKey(threadID)) - { - try - { - textToWrite = testToolStrings[threadID] += testToolStrings[threadID].EndsWith(" ") ? "" : " " + textToWrite; - } - finally - { - testToolStrings.Remove(threadID); - } - } - else - { - textToWrite = GetPreAmble(methodBase, TypeOfWrite) + textString ?? string.Empty; - } - - try - { - if (WriteToConsole || TestToolLog == null) - Console.WriteLine(textToWrite); - else - TestToolLog(textToWrite); - } - catch (Exception ex) - { - string details; - if (!errorWrittenToEventLog) - { - using (EventLog appLog = new EventLog("Application")) - { - if (WriteToConsole) - { - details = "console (STDOUT)"; - } - else - { - details = string.Format("delegate provide by tool{0}.", (TestToolLog == null) ? - " (Is null! - Has not been implemented!)" : - ""); - } - appLog.Source = "Application"; - appLog.WriteEntry(string.Format("AppServiceInterfaceMock - Logger error writing to {0}.\r\n\r\n" + - "Attempt to write line;\r\n" + - "{1}\r\n\r\n" + - "No further log writes to event log will happen in this session", details, textToWrite, ex), EventLogEntryType.Warning, 12791, 1); - } - errorWrittenToEventLog = true; - } - } - } - } - } - - /// - /// Constructs and returns a log-file pre-amble. Preamble is {Log Type} {Time} [Calling Type.Method]: - /// - /// Reference to calling method - /// Type of write - /// Line pre-amble text - static private string GetPreAmble(MethodBase methodBase, LogLevels TypeOfWrite) - { - string time = String.Format("[{0:HH:mm:ss.ff}][{1:00000.00}]", DateTime.Now, testTimer.Elapsed.TotalSeconds); - int totalTimeLength = time.Length + (8 - (int)TypeOfWrite); - if ((time.Length + 1) <= totalTimeLength) time = time.PadRight(totalTimeLength); - string preAmble = String.Format("{0} {1} [{2}]: ", WriteTypeString(TypeOfWrite), - time, - CallingMethodDetails(methodBase)); - return preAmble; - } - - /// - /// Returns debug line inital token based on LogLevel of text being written - /// - /// Log Level to obtain text for - /// Textual representation for Debug log line pre-amble - static private string WriteTypeString(LogLevels TypeOfWrite) - { - switch (TypeOfWrite) - { - case LogLevels.Error: - return "LOG-E"; - case LogLevels.FrameworkDebug: - return "LOG-F"; - case LogLevels.FrameworkInformation: - return "LOG-R"; - case LogLevels.TestDebug: - return "LOG-D"; - case LogLevels.TestInformation: - return "LOG-I"; - default: - return "LOG-?"; - } - } - } -} \ No newline at end of file diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs deleted file mode 100644 index fee6b96..0000000 --- a/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Resources; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Team Controlium Utilities")] -[assembly: AssemblyDescription("General test automation utilities primarily for use within the Team Controlium suite and associated frameworks")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Team Controlium contributors")] -[assembly: AssemblyProduct("Utilities.net")] -[assembly: AssemblyCopyright("Copyright 2018 - Mat Walker and the Team Controlium contributors")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("f8af7786-9221-4b50-a12c-f8a5779671d4")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0")] -[assembly: AssemblyFileVersion("1.0.0")] -[assembly: NeutralResourcesLanguage("en-AU")] - diff --git a/Settings.StyleCop b/Settings.StyleCop new file mode 100644 index 0000000..593c2e8 --- /dev/null +++ b/Settings.StyleCop @@ -0,0 +1,11 @@ + + + + Specflow + stdout + WriteToConsole + Detokenizer + + NoMerge + + \ No newline at end of file diff --git a/TestArguments.cs b/TestArguments.cs deleted file mode 100644 index 43f1914..0000000 --- a/TestArguments.cs +++ /dev/null @@ -1,127 +0,0 @@ -using System.Collections.Specialized; -using System.Text.RegularExpressions; - -namespace TeamControlium.Utilities -{ - /// - /// Processes test command-line arguments and presents them to the test script as a string array - /// - /// - /// Thanks to Mike Burns (https://www.linkedin.com/in/maddogmikeb) for original - /// - public class TestArguments - { - // Variables - private StringDictionary processedParameters; - - /// - /// Process the test arguments and make available for the test to use. - /// - /// - /// Arguments are space delimited and handle various common parameter preambles

- /// EG. Test.exe -param1 value1 --param2 /param3:"Test-:-work /param4=happy -param5 '--=nice=--' - ///
- /// String array of arguments for the test to use. - public TestArguments(string[] argumentsToProcess) - { - processedParameters = new StringDictionary(); - Regex Spliter = new Regex(@"^-{1,2}|^/|=|:", RegexOptions.IgnoreCase | RegexOptions.Compiled); - Regex Remover = new Regex(@"^['""]?(.*?)['""]?$", RegexOptions.IgnoreCase | RegexOptions.Compiled); - - string currentParameterBeingBuilt = null; - string[] argumentParts; - - // Valid parameters forms: - // {-,/,--}param{ ,=,:}((",')value(",')) - // Examples: - // -param1 value1 --param2 /param3:"Test-:-work" - // /param4=happy -param5 '--=nice=--' - foreach (string currentArgument in argumentsToProcess) - { - // Look for new parameters (-,/ or --) and a - // possible enclosed value (=,:) - argumentParts = Spliter.Split(currentArgument, 3); - - switch (argumentParts.Length) - { - // Found a value (for the last parameter - // found (space separator)) - case 1: - if (currentParameterBeingBuilt != null) - { - if (!processedParameters.ContainsKey(currentParameterBeingBuilt)) - { - argumentParts[0] = - Remover.Replace(argumentParts[0], "$1"); - - processedParameters.Add(currentParameterBeingBuilt, argumentParts[0]); - } - currentParameterBeingBuilt = null; - } - // else Error: no parameter waiting for a value (skipped) - break; - - // Found just a parameter - case 2: - // The last parameter is still waiting. - // With no value, set it to true. - if (currentParameterBeingBuilt != null) - { - if (!processedParameters.ContainsKey(currentParameterBeingBuilt)) - processedParameters.Add(currentParameterBeingBuilt, "true"); - } - currentParameterBeingBuilt = argumentParts[1]; - break; - - // Parameter with enclosed value - case 3: - // The last parameter is still waiting. - // With no value, set it to true. - if (currentParameterBeingBuilt != null) - { - if (!processedParameters.ContainsKey(currentParameterBeingBuilt)) - processedParameters.Add(currentParameterBeingBuilt, "true"); - } - - currentParameterBeingBuilt = argumentParts[1]; - - // Remove possible enclosing characters (",') - if (!processedParameters.ContainsKey(currentParameterBeingBuilt)) - { - argumentParts[2] = Remover.Replace(argumentParts[2], "$1"); - processedParameters.Add(currentParameterBeingBuilt, argumentParts[2]); - } - - currentParameterBeingBuilt = null; - break; - } - } - // In case a parameter is still waiting - if (currentParameterBeingBuilt != null) - { - if (!processedParameters.ContainsKey(currentParameterBeingBuilt)) - processedParameters.Add(currentParameterBeingBuilt, "true"); - } - } - - /// - /// Return a named parameter value if it exists - /// - /// Parameter to obtain - /// Value of named parameter. If named parameter does not exist null is returned - public string this[string Param] - { - get - { - try - { - return (processedParameters[Param]); - } - catch - { - return null; - } - } - } - } -} \ No newline at end of file diff --git a/TestData.cs b/TestData.cs deleted file mode 100644 index 8d8ae46..0000000 --- a/TestData.cs +++ /dev/null @@ -1,273 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace TeamControlium.Utilities -{ - public class TestData - { - private static Dictionary> testData = new Dictionary>(); - - /// - /// Repository for all Data used within current test - /// - /// - /// Data persists throughout the lifetime of application instantiating Utilities class - /// - /// - /// - /// // - /// // Store the string MyString as item named MyName in the TestData - /// // repository category MyCategory - /// // - /// Utilities.TestData.Repository["MyCategory","MyName"] = "MyString"; - /// - /// // - /// // Obtain the item MyName from TestData category MyCategory - /// // - /// string myString = Utilities.TestData.Repository["MyCategory","MyName"]; - /// - /// - public static TestDataRepository Repository { get; } = new TestDataRepository(); - - /// - /// Underlying TestData repository - /// - /// - public sealed class TestDataRepository // : Dictionary> - { - /// - /// Returns the last exception were a TryGetRunCategoryOptions returned false - /// - public Exception TryException { get; private set; } - - /// - /// Clears the Test Data repository of all test data - /// - public void Clear() - { - Logger.WriteLine(Logger.LogLevels.FrameworkDebug, "Clearing Test Data repository"); - testData.Clear(); - } - - public bool HasCategory(string key) - { - return testData.ContainsKey(key); - } - - /// - /// Sets or Gets test data item [name] in category [category] - /// - /// - /// If name and/or category does not exist when setting, item is created. If item already exists it is updated with new value

- /// Names of items can be duplicated if in seperate categories but must be unique in a single category
- /// It is the responsibility of the calling software to ensure correct type-casting on a Get - ///
- /// Category for test data item - /// Name of item within Category - /// Item named from defined category - /// Thrown if category and/or name are null/empty when getting - /// Thrown if category does not exist or item named does not exist in defined category when getting - public dynamic this[string category, string name] - { - get - { - // Ensure name is valid - not null or empty and named category contains it - if (string.IsNullOrEmpty(name)) - throw new ArgumentException(string.Format("Cannot be null or empty ({0})", name == null ? "Is Null" : "Is empty"), "name"); - if (!this[category].ContainsKey(name)) - throw new ArgumentOutOfRangeException("name", name, string.Format("Category [{0}] does not have item named", category)); - - // Get item named from category and return it - dynamic obtainedObject = (this[category])[name]; - - Logger.Write(Logger.LogLevels.FrameworkDebug, "Got "); - if (obtainedObject is string) - { - Logger.Write(Logger.LogLevels.FrameworkDebug, "string [{0}]", ((string)obtainedObject)?.Length < 50 ? (string)obtainedObject : (((string)obtainedObject).Substring(0, 47) + "...") ?? ""); - } - else if (obtainedObject is int) - { - Logger.Write(Logger.LogLevels.FrameworkDebug, "integer [{0}]", ((int)obtainedObject)); - } - else if (obtainedObject is float) - { - Logger.Write(Logger.LogLevels.FrameworkDebug, "integer [{0}]", ((float)obtainedObject)); - } - else - { - Logger.Write(Logger.LogLevels.FrameworkDebug, "type {0}{1}", obtainedObject.ToString(), (obtainedObject == null) ? " (is null!)" : ""); - } - Logger.WriteLine(Logger.LogLevels.FrameworkDebug, " from [{0}][{1}]", category, name); - return obtainedObject; - } - set - { - Logger.Write(Logger.LogLevels.FrameworkDebug, "Setting [{0}][{1}] to ", category, name); - if (value is string) - { - Logger.Write(Logger.LogLevels.FrameworkDebug, "string [{0}]", ((string)value)?.Length < 50 ? (string)value : (((string)value).Substring(0, 47) + "...") ?? ""); - } - else if (value is int) - { - Logger.Write(Logger.LogLevels.FrameworkDebug, "integer [{0}]", ((int)value)); - } - else if (value is float) - { - Logger.Write(Logger.LogLevels.FrameworkDebug, "integer [{0}]", ((float)value)); - } - else - { - Logger.Write(Logger.LogLevels.FrameworkDebug, "type {0}{1}", value.ToString(), (value == null) ? " (is null!)" : ""); - } - // Add Category if we dont already have it - if (!testData.ContainsKey(category)) - testData.Add(category, new Dictionary()); - - Dictionary wholeCategory = testData[category]; - // Add Name if we dont already have it in the current category, otherwise change contents of name - if (wholeCategory.ContainsKey(name)) - wholeCategory[name] = value; - else - wholeCategory.Add(name, value); - } - } - - /// - /// Gets all items in category - /// - /// Category to return - /// Dictionary of all items in named category - /// Thrown if category argument is null/empty - /// Thrown if category does not exist - public new Dictionary this[string category] - { - get - { - if (string.IsNullOrEmpty(category)) - throw new ArgumentException(string.Format("Cannot be null or empty ({0})", category == null ? "Is Null" : "Is empty"), "Category"); - if (!testData.ContainsKey(category)) - throw new ArgumentOutOfRangeException("category", category, "Category does not exist"); - - var wholeCategory = testData[category]; - Logger.WriteLine(Logger.LogLevels.FrameworkDebug, "Got category [{0}] ({1} items)", category, wholeCategory.Count); - return wholeCategory; - } - set - { - if (string.IsNullOrEmpty(category)) - throw new ArgumentException(string.Format("Cannot be null or empty ({0})", category == null ? "Is Null" : "Is empty"), "Category"); - // Add Category if we dont already have it - if (!testData.ContainsKey(category)) - testData.Add(category, new Dictionary()); - - Logger.WriteLine(Logger.LogLevels.FrameworkDebug, "Setting category [{0}] ({1} items)", category, value.Count); - testData[category] = value; - } - } - - /// Returns named item from named category - /// Category to obtain option from - /// Name of option to get - /// Expected return Type of object being obtained - /// Object of Category and Name - public U GetItem(string category, string name) - { - dynamic obtainedObject; - - try - { - obtainedObject = this[category, name]; - - if (obtainedObject is U) - { - return (U)obtainedObject; - } - else if (obtainedObject != null && (typeof(U) == typeof(int) && obtainedObject.GetType().Equals(typeof(string)))) - { - // We want and int and we got a string. So, try converting it to be helpful.... - try - { - return (U)int.Parse(obtainedObject); - } - catch { } - } - else if (obtainedObject != null && (typeof(U) == typeof(float) && obtainedObject.GetType().Equals(typeof(string)))) - { - // We want and float and we got a string. So, try converting it to be helpful.... - try - { - return (U)float.Parse(obtainedObject); - } - catch { } - } - } - catch (Exception ex) - { - throw new Exception(string.Format("Exception getting Category.Name ([{0}].[{1}])", category, name), ex); - } - - throw new Exception(string.Format("Expected type [{0}] but got type [{1}].", typeof(U).Name, obtainedObject.GetType())); - } - - /// Returns named option from named category - /// Category to obtain option from - /// Name of option to get - /// Object of Category and Name if successful - /// Expected return Type of object being obtained - /// true if object obtained successfullt otherwise false (use TryExeception to exception thrown) - public bool TryGetItem(string category, string name, out U value) - { - try - { - value = GetItem(category, name); - return true; - } - catch (Exception ex) - { - TryException = new Exception(string.Format("Exception getting Category.Name ([{0}].[{1}])", category, name), ex); - value = default(U); - return false; - } - } - - /// Returns named option from named category. Returns null if object not set - /// Category to obtain option from - /// Name of option to get - /// Expected return Type of object being obtained - /// Object of Category and Name. If object does not exist returns default value (Null if a reference type) - public U GetItemOrDefault(string category, string name) - { - dynamic obtainedObject; - try - { - obtainedObject = this[category, name]; - } - catch - { - Logger.WriteLine(Logger.LogLevels.FrameworkInformation, "No data found for [{0}.{1}] - returning [Type ({2})] default value.", category, name, typeof(U).Name); - obtainedObject = default(U); - } - - if (obtainedObject is U) - return (U)obtainedObject; - else - throw new InvalidCastException(string.Format("Expected type [{0}] but got type [{1}].", typeof(U).Name, obtainedObject.GetType().Name)); - } - - /// Returns all options defined in passed Category - /// Category to get options for - /// Dictionary of KeyValue pairs where Keys are the option names and Values are the option data - public Dictionary GetCategoryItems(string Category) - { - try - { - return testData[Category]; - } - catch (Exception ex) - { - throw new Exception(string.Format("Exception getting itms in Category ([{0}])", Category), ex); - } - } - } - } -} \ No newline at end of file diff --git a/UnitTests/Detokenizer/Detokenizer.feature.cs b/UnitTests/Detokenizer/Detokenizer.feature.cs deleted file mode 100644 index f7f70f6..0000000 --- a/UnitTests/Detokenizer/Detokenizer.feature.cs +++ /dev/null @@ -1,519 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by SpecFlow (http://www.specflow.org/). -// SpecFlow Version:2.2.0.0 -// SpecFlow Generator Version:2.2.0.0 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ -#region Designer generated code -#pragma warning disable -namespace TeamControlium.Utilities.UnitTests.Detokenizer -{ - using TechTalk.SpecFlow; - - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.2.0.0")] - [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute()] - public partial class DetokenizerFeature - { - - private static TechTalk.SpecFlow.ITestRunner testRunner; - - private Microsoft.VisualStudio.TestTools.UnitTesting.TestContext _testContext; - -#line 1 "Detokenizer.feature" -#line hidden - - public virtual Microsoft.VisualStudio.TestTools.UnitTesting.TestContext TestContext - { - get - { - return this._testContext; - } - set - { - this._testContext = value; - } - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute()] - public static void FeatureSetup(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext testContext) - { - testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(null, 0); - TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Detokenizer", "\tIn order to process tokens\r\n\tAs a test automator\r\n\tI want to be able to convert " + - "tokens to real texts", ProgrammingLanguage.CSharp, new string[] { - "Detokenizer"}); - testRunner.OnFeatureStart(featureInfo); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupAttribute()] - public static void FeatureTearDown() - { - testRunner.OnFeatureEnd(); - testRunner = null; - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute()] - public virtual void TestInitialize() - { - if (((testRunner.FeatureContext != null) - && (testRunner.FeatureContext.FeatureInfo.Title != "Detokenizer"))) - { - global::TeamControlium.Utilities.UnitTests.Detokenizer.DetokenizerFeature.FeatureSetup(null); - } - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute()] - public virtual void ScenarioTearDown() - { - testRunner.OnScenarioEnd(); - } - - public virtual void ScenarioSetup(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) - { - testRunner.OnScenarioStart(scenarioInfo); - testRunner.ScenarioContext.ScenarioContainer.RegisterInstanceAs(TestContext); - } - - public virtual void ScenarioCleanup() - { - testRunner.CollectScenarioErrors(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert today\'s date token to the date we run this test")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ConvertTodaysDateTokenToTheDateWeRunThisTest() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert today\'s date token to the date we run this test", ((string[])(null))); -#line 17 - this.ScenarioSetup(scenarioInfo); -#line 18 - testRunner.Given("I have a string \"{date;today;dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 19 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 20 - testRunner.Then("the string is today\'s date in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert yesterday\'s date token to the day before we run this test")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ConvertYesterdaysDateTokenToTheDayBeforeWeRunThisTest() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert yesterday\'s date token to the day before we run this test", ((string[])(null))); -#line 22 - this.ScenarioSetup(scenarioInfo); -#line 23 - testRunner.Given("I have a string \"{date;yesterday;dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 24 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 25 - testRunner.Then("the string is yesterday\'s date in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert tomorrows\'s date token to the day after we run this test")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ConvertTomorrowssDateTokenToTheDayAfterWeRunThisTest() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert tomorrows\'s date token to the day after we run this test", ((string[])(null))); -#line 27 - this.ScenarioSetup(scenarioInfo); -#line 28 - testRunner.Given("I have a string \"{date;tomorrow;dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 29 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 30 - testRunner.Then("the string is tomorrows\'s date in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Date command and verb not case sensitive")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void DateCommandAndVerbNotCaseSensitive() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Date command and verb not case sensitive", ((string[])(null))); -#line 32 - this.ScenarioSetup(scenarioInfo); -#line 33 - testRunner.Given("I have a string \"{Date;Today;dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 34 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 35 - testRunner.Then("the string is today\'s date in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Get the day of the week when test is run")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void GetTheDayOfTheWeekWhenTestIsRun() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Get the day of the week when test is run", ((string[])(null))); -#line 41 - this.ScenarioSetup(scenarioInfo); -#line 42 - testRunner.Given("I have a string \"{date;today;dddd}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 43 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 44 - testRunner.Then("the string is today\'s date in the format \"dddd\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a days offset in the past")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ConvertDateForADaysOffsetInThePast() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a days offset in the past", ((string[])(null))); -#line 49 - this.ScenarioSetup(scenarioInfo); -#line 50 - testRunner.Given("I have a string \"{date;AddDays(-10);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 51 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 52 - testRunner.Then("the string is the date -10 \"days\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a days offset in the future")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ConvertDateForADaysOffsetInTheFuture() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a days offset in the future", ((string[])(null))); -#line 54 - this.ScenarioSetup(scenarioInfo); -#line 55 - testRunner.Given("I have a string \"{date;AddDays(10);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 56 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 57 - testRunner.Then("the string is the date 10 \"days\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a days offset in the future (with a plus sign)")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ConvertDateForADaysOffsetInTheFutureWithAPlusSign() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a days offset in the future (with a plus sign)", ((string[])(null))); -#line 59 - this.ScenarioSetup(scenarioInfo); -#line 60 - testRunner.Given("I have a string \"{date;AddDays(+10);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 61 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 62 - testRunner.Then("the string is the date 10 \"days\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a months offset in the past")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ConvertDateForAMonthsOffsetInThePast() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a months offset in the past", ((string[])(null))); -#line 64 - this.ScenarioSetup(scenarioInfo); -#line 65 - testRunner.Given("I have a string \"{date;AddMonths(-19);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 66 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 67 - testRunner.Then("the string is the date -19 \"months\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a months offset in the future")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ConvertDateForAMonthsOffsetInTheFuture() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a months offset in the future", ((string[])(null))); -#line 69 - this.ScenarioSetup(scenarioInfo); -#line 70 - testRunner.Given("I have a string \"{date;AddMonths(17);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 71 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 72 - testRunner.Then("the string is the date 17 \"months\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a years offset in the past")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ConvertDateForAYearsOffsetInThePast() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a years offset in the past", ((string[])(null))); -#line 74 - this.ScenarioSetup(scenarioInfo); -#line 75 - testRunner.Given("I have a string \"{date;AddYears(-25);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 76 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 77 - testRunner.Then("the string is the date -25 \"years\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a years offset in the future")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ConvertDateForAYearsOffsetInTheFuture() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a years offset in the future", ((string[])(null))); -#line 79 - this.ScenarioSetup(scenarioInfo); -#line 80 - testRunner.Given("I have a string \"{date;AddYears(25);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 81 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 82 - testRunner.Then("the string is the date 25 \"years\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random date from a single date")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ICanGetARandomDateFromASingleDate() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random date from a single date", ((string[])(null))); -#line 94 - this.ScenarioSetup(scenarioInfo); -#line 95 - testRunner.Given("I have a string \"{random;date(12-07-2001,12-07-2001);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 96 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 97 - testRunner.Then("the string is a date between \"12/07/2001\" and \"12/07/2001\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random date from one of two consequtive dates")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ICanGetARandomDateFromOneOfTwoConsequtiveDates() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random date from one of two consequtive dates", ((string[])(null))); -#line 99 - this.ScenarioSetup(scenarioInfo); -#line 100 - testRunner.Given("I have a string \"{random;date(11-07-2001,12-07-2001);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 101 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 102 - testRunner.Then("the string is a date between \"11/07/2001\" and \"12/07/2001\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I get correct error if min date after max date")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void IGetCorrectErrorIfMinDateAfterMaxDate() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I get correct error if min date after max date", ((string[])(null))); -#line 104 - this.ScenarioSetup(scenarioInfo); -#line 105 - testRunner.Given("I have a string \"{random;date(12-07-2001,11-07-2001);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 106 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 107 - testRunner.Then("the string is \"Error processing token {random;date(12-07-2001,11-07-2001);dd/MM/y" + - "yyy} (Maximum date earlier than Maximum date! Expect {random;date(dd-MM-yyyy,dd-" + - "MM-yyyy);} Mindate = 12/07/2001, Maxdate = 11/07/2001)\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random positive floating point number with no decimal places")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ICanGetARandomPositiveFloatingPointNumberWithNoDecimalPlaces() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random positive floating point number with no decimal places", ((string[])(null))); -#line 112 - this.ScenarioSetup(scenarioInfo); -#line 113 - testRunner.Given("I have a string \"{random;float(0,1);0}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 114 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 115 - testRunner.Then("the string matches regular expression \"^[0-9]{1}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 116 - testRunner.And("the string is a number between 0 and 1", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random positive floating point number with 1 decimal places")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ICanGetARandomPositiveFloatingPointNumberWith1DecimalPlaces() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random positive floating point number with 1 decimal places", ((string[])(null))); -#line 118 - this.ScenarioSetup(scenarioInfo); -#line 119 - testRunner.Given("I have a string \"{random;float(0,1);0.0}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 120 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 121 - testRunner.Then("the string matches regular expression \"^[0-1]{1}\\.[0-9]{1}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 122 - testRunner.And("the string is a number between 0 and 1", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random negative floating point number with 1 decimal places")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ICanGetARandomNegativeFloatingPointNumberWith1DecimalPlaces() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random negative floating point number with 1 decimal places", ((string[])(null))); -#line 124 - this.ScenarioSetup(scenarioInfo); -#line 125 - testRunner.Given("I have a string \"{random;float(-1,0);0.0}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 126 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 127 - testRunner.Then("the string matches regular expression \"^-[0-9]{1}\\.[0-9]{1}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 128 - testRunner.And("the string is a number between -1 and 0", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random positive floating point number between tiny numbers")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ICanGetARandomPositiveFloatingPointNumberBetweenTinyNumbers() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random positive floating point number between tiny numbers", ((string[])(null))); -#line 130 - this.ScenarioSetup(scenarioInfo); -#line 131 - testRunner.Given("I have a string \"{random;float(0.0003,0.0004);0.000000}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 132 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 133 - testRunner.Then("the string matches regular expression \"^0{1}\\.0{3}[0-9]{3}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 134 - testRunner.And("the string is a number between 0.0003 and 0.0004", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random positive floating point number with leading zeros")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ICanGetARandomPositiveFloatingPointNumberWithLeadingZeros() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random positive floating point number with leading zeros", ((string[])(null))); -#line 136 - this.ScenarioSetup(scenarioInfo); -#line 137 - testRunner.Given("I have a string \"{random;float(3,4);000}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 138 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 139 - testRunner.Then("the string matches regular expression \"^0{2}[3-4]{1}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 140 - testRunner.And("the string is a number between 3 and 4", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a single random character from a given set")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void ICanGetASingleRandomCharacterFromAGivenSet() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a single random character from a given set", ((string[])(null))); -#line 145 - this.ScenarioSetup(scenarioInfo); -#line 146 - testRunner.Given("I have a string \"{random;from(abc);1}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 147 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 148 - testRunner.Then("the string matches regular expression \"^[a-c]{1}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 149 - testRunner.And("the string is 1 characters from \"abc\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Nested tokens")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Detokenizer")] - public virtual void NestedTokens() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Nested tokens", ((string[])(null))); -#line 151 - this.ScenarioSetup(scenarioInfo); -#line 152 - testRunner.Given("I have a string \"{random;digits;{random;from(2345);1} }\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 153 - testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden - this.ScenarioCleanup(); - } - } -} -#pragma warning restore -#endregion diff --git a/UnitTests/Detokenizer/DetokenizerTestSteps.cs b/UnitTests/Detokenizer/DetokenizerTestSteps.cs deleted file mode 100644 index 8679355..0000000 --- a/UnitTests/Detokenizer/DetokenizerTestSteps.cs +++ /dev/null @@ -1,130 +0,0 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Globalization; -using System.Text.RegularExpressions; -using TechTalk.SpecFlow; - -namespace TeamControlium.Utilities -{ - [Binding] - public sealed class DetokenizerTestSteps - { - [Given(@"I have a string ""(.*)""")] - public void GivenIHaveAStringWithToken(string stringToBeProcessed) - { - ScenarioContext.Current["StringToBeProcessed"] = stringToBeProcessed; - } - - [When(@"I process the token to a string")] - public void WhenIProcessTheToken() - { - string toBeProcessed = (string)ScenarioContext.Current["StringToBeProcessed"]; - string processed; - try - { - processed = Detokenizer.ProcessTokensInString(toBeProcessed); - } - catch (Exception ex) - { - processed = ex.Message; - } - ScenarioContext.Current["ProcessedString"] = processed; - } - - [Then(@"the string is ""(.*)""")] - public void ThenTheStringIs(string expectedString) - { - Assert.AreEqual(expectedString, (string)ScenarioContext.Current["ProcessedString"]); - } - - [Then(@"the string is today's date in the format ""(.*)""")] - public void ThenTheStringIsTodaySDateInTheFormat(string requiredFormatOfDate) - { - string requiredDate = DateTime.Now.ToString(requiredFormatOfDate); - string actualDate = (string)ScenarioContext.Current["ProcessedString"]; - Assert.AreEqual(requiredDate, actualDate, "Dates and formats match"); - } - - [Then(@"the string is yesterday's date in the format ""(.*)""")] - public void ThenTheStringIsYesterdaySDateInTheFormat(string requiredFormatOfDate) - { - string requiredDate = DateTime.Now.AddDays(-1).ToString(requiredFormatOfDate); - string actualDate = (string)ScenarioContext.Current["ProcessedString"]; - Assert.AreEqual(requiredDate, actualDate, "Dates and formats match"); - } - - [Then(@"the string is tomorrows's date in the format ""(.*)""")] - public void ThenTheStringIsTomorrowsDateInTheFormat(string requiredFormatOfDate) - { - string requiredDate = DateTime.Now.AddDays(1).ToString(requiredFormatOfDate); - string actualDate = (string)ScenarioContext.Current["ProcessedString"]; - Assert.AreEqual(requiredDate, actualDate, "Dates and formats match"); - } - - [Then(@"the string is the date (.*) ""(.*)"" in the format ""(.*)""")] - public void ThenTheStringIsTheDateInTheFormat(int offset, string offsetType, string requiredFormatOfDate) - { - DateTime requiredDate; - switch (offsetType.ToLower().Trim()) - { - case "days": - requiredDate = DateTime.Now.AddDays(offset); break; - case "months": - requiredDate = DateTime.Now.AddMonths(offset); break; - case "years": - requiredDate = DateTime.Now.AddYears(offset); break; - default: - throw new ArgumentException("Unknown Offset Type. Expect days, months or years.", "offsetType"); - } - string actualDate = (string)ScenarioContext.Current["ProcessedString"]; - Assert.AreEqual(requiredDate.ToString(requiredFormatOfDate), actualDate, "Dates and formats match"); - } - - [Then(@"the string is a date between ""(.*)"" and ""(.*)""")] - public void ThenTheStringIsADateBetweenAnd(string minDate, string maxDate) - { - var processedString = (string)ScenarioContext.Current["ProcessedString"]; - var actualDate = DateTime.ParseExact(processedString, new string[] { "d/M/yy", "dd/M/yy", "d/MM/yy", "dd/MM/yy", "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy", "dd/MM/yyyy" }, CultureInfo.InvariantCulture, DateTimeStyles.None); - var min = DateTime.ParseExact(minDate, "d/M/yyyy", CultureInfo.InvariantCulture); - var max = DateTime.ParseExact(maxDate, "d/M/yyyy", CultureInfo.InvariantCulture); - - if (min > max) throw new Exception($"Minimum date [{minDate}] is later than Maximum date [{maxDate}]!"); - Assert.IsTrue((actualDate >= min) && (actualDate <= max)); - } - - [Then(@"the string is a ""(.*)"" number between ""(.*)"" and ""(.*)""")] - public void ThenTheStringIsANumberBetweenAnd(string format, int minNumber, int maxNumber) - { - var processedString = (string)ScenarioContext.Current["ProcessedString"]; - - } - [Then(@"the string matches regular expression ""(.*)""")] - public void ThenTheStringIsAFormattedNumber(string format) - { - var processedString = (string)ScenarioContext.Current["ProcessedString"]; - bool result = Regex.IsMatch(processedString, format); - Assert.IsTrue(result, string.Format("Processed string [{0}] matches regular expression [{1}]", processedString, format)); - } - - [Then(@"the string is a number between (.*) and (.*)")] - public void ThenTheStringIsANumberBetweenAnd(float minNumber, float maxNumber) - { - var processedString = (string)ScenarioContext.Current["ProcessedString"]; - float num = float.Parse(processedString); - Assert.IsTrue((num >= minNumber) && (num <= maxNumber)); - } - - [Then(@"the string is (.*) characters from ""(.*)""")] - public void ThenTheStringIsCharacterFrom(int numberOfCharacters, string possibleCharacters) - { - var processedString = (string)ScenarioContext.Current["ProcessedString"]; - - Assert.AreEqual(numberOfCharacters, processedString.Length); - - foreach (char character in processedString) - { - // Need to populate this up.... - } - } - } -} \ No newline at end of file diff --git a/UnitTests/Logger/Logger.feature b/UnitTests/Logger/Logger.feature deleted file mode 100644 index b1e0dfc..0000000 --- a/UnitTests/Logger/Logger.feature +++ /dev/null @@ -1,64 +0,0 @@ -Feature: Logger - In order to test log events in the Controlium solution - As a test automator - I want to be able to log events - -Scenario Outline: Logger only outputs levels equal to higher than the level selected - Given I have configured Logger WriteToConsole to true - Given I set Logger to level - When I call Logger with level and string - Then the console output contains a Logger line ending with -Examples: -| Logger Level | Write Level | Test String | Output | -| FrameworkDebug | FrameworkDebug | "Test Framework Debug" | "Test Framework Debug" | -| FrameworkDebug | FrameworkInformation | "Test Framework Debug" | "Test Framework Debug" | -| FrameworkDebug | TestDebug | "Test Test Debug" | "Test Test Debug" | -| FrameworkDebug | TestInformation | "Test Test Information" | "Test Test Information" | -| FrameworkDebug | Error | "Test Error" | "Test Error" | -| FrameworkInformation | FrameworkDebug | "Test Framework Debug" | "" | -| FrameworkInformation | FrameworkInformation | "Test Framework Debug" | "Test Framework Debug" | -| FrameworkInformation | TestDebug | "Test Test Debug" | "Test Test Debug" | -| FrameworkInformation | TestInformation | "Test Test Information" | "Test Test Information" | -| FrameworkInformation | Error | "Test Error" | "Test Error" | -| TestDebug | FrameworkDebug | "Test Framework Debug" | "" | -| TestDebug | FrameworkInformation | "Test Framework Debug" | "" | -| TestDebug | TestDebug | "Test Test Debug" | "Test Test Debug" | -| TestDebug | TestInformation | "Test Test Information" | "Test Test Information" | -| TestDebug | Error | "Test Error" | "Test Error" | -| TestInformation | FrameworkDebug | "Test Framework Debug" | "" | -| TestInformation | FrameworkInformation | "Test Framework Debug" | "" | -| TestInformation | TestDebug | "Test Test Debug" | "" | -| TestInformation | TestInformation | "Test Test Information" | "Test Test Information" | -| TestInformation | Error | "Test Error" | "Test Error" | -| Error | FrameworkDebug | "Test Framework Debug" | "" | -| Error | FrameworkInformation | "Test Framework Debug" | "" | -| Error | TestDebug | "Test Test Debug" | "" | -| Error | TestInformation | "Test Test Information" | "" | -| Error | Error | "Test Error" | "Test Error" | - - -Scenario Outline: Logger output can be directed to Console or a custom output stream - Given I have configured Logger WriteToConsole to - And I have configured Logger TestToolLog to write to my string - And I set Logger to level FrameworkDebug - When I call Logger with level FrameworkDebug and string - Then my string contains a Logger line ending with - And the console output contains a Logger line ending with - Examples: -| Write To Console | Test String | TestLogOutput | ConsoleOutput | -| true | "Test Framework Debug" | "" | "Test Framework Debug" | -| false | "Test Framework Debug" | "Test Framework Debug" | "" | - -Scenario Outline: Logger output can be changed in flight - Given I have configured Logger WriteToConsole to - And I have configured Logger TestToolLog to write to my string - And I set Logger to level FrameworkDebug - And I call Logger with level FrameworkDebug and string - When I change Logger WriteToConsole to - And I call Logger with level FrameworkDebug and string - Then my string contains a Logger line ending with - And the console output contains a Logger line ending with - Examples: -| Initial Write To Console | Second Write To Console | Logger Level | Write Level | First Test String | Second Test String | TestLogOutput | ConsoleOutput | -| false | true | FrameworkDebug | FrameworkDebug | "My First string" | "My Second string" | "My First string" | "My Second string" | -| true | false | FrameworkDebug | FrameworkDebug | "My First string" | "My Second string" | "My Second string" | "My First string" | \ No newline at end of file diff --git a/UnitTests/Logger/Logger.feature.cs b/UnitTests/Logger/Logger.feature.cs deleted file mode 100644 index be2df20..0000000 --- a/UnitTests/Logger/Logger.feature.cs +++ /dev/null @@ -1,594 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by SpecFlow (http://www.specflow.org/). -// SpecFlow Version:2.2.0.0 -// SpecFlow Generator Version:2.2.0.0 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ -#region Designer generated code -#pragma warning disable -namespace TeamControlium.Utilities.UnitTests.Logger -{ - using TechTalk.SpecFlow; - - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.2.0.0")] - [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute()] - public partial class LoggerFeature - { - - private static TechTalk.SpecFlow.ITestRunner testRunner; - - private Microsoft.VisualStudio.TestTools.UnitTesting.TestContext _testContext; - -#line 1 "Logger.feature" -#line hidden - - public virtual Microsoft.VisualStudio.TestTools.UnitTesting.TestContext TestContext - { - get - { - return this._testContext; - } - set - { - this._testContext = value; - } - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute()] - public static void FeatureSetup(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext testContext) - { - testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(null, 0); - TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Logger", "\tIn order to test log events in the Controlium solution\r\n\tAs a test automator\r\n\tI" + - " want to be able to log events", ProgrammingLanguage.CSharp, ((string[])(null))); - testRunner.OnFeatureStart(featureInfo); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupAttribute()] - public static void FeatureTearDown() - { - testRunner.OnFeatureEnd(); - testRunner = null; - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute()] - public virtual void TestInitialize() - { - if (((testRunner.FeatureContext != null) - && (testRunner.FeatureContext.FeatureInfo.Title != "Logger"))) - { - global::TeamControlium.Utilities.UnitTests.Logger.LoggerFeature.FeatureSetup(null); - } - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute()] - public virtual void ScenarioTearDown() - { - testRunner.OnScenarioEnd(); - } - - public virtual void ScenarioSetup(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) - { - testRunner.OnScenarioStart(scenarioInfo); - testRunner.ScenarioContext.ScenarioContainer.RegisterInstanceAs(TestContext); - } - - public virtual void ScenarioCleanup() - { - testRunner.CollectScenarioErrors(); - } - - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected(string loggerLevel, string writeLevel, string testString, string output, string[] exampleTags) - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Logger only outputs levels equal to higher than the level selected", exampleTags); -#line 6 -this.ScenarioSetup(scenarioInfo); -#line 7 - testRunner.Given("I have configured Logger WriteToConsole to true", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 8 - testRunner.Given(string.Format("I set Logger to level {0}", loggerLevel), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 9 - testRunner.When(string.Format("I call Logger with level {0} and string {1}", writeLevel, testString), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 10 - testRunner.Then(string.Format("the console output contains a Logger line ending with {0}", output), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 0")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 0")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Framework Debug\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant0() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("FrameworkDebug", "FrameworkDebug", "\"Test Framework Debug\"", "\"Test Framework Debug\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 1")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 1")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Framework Debug\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant1() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("FrameworkDebug", "FrameworkInformation", "\"Test Framework Debug\"", "\"Test Framework Debug\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 2")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 2")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Debug\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant2() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("FrameworkDebug", "TestDebug", "\"Test Test Debug\"", "\"Test Test Debug\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 3")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 3")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Information\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Information\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant3() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("FrameworkDebug", "TestInformation", "\"Test Test Information\"", "\"Test Test Information\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 4")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 4")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "Error")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Error\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Error\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant4() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("FrameworkDebug", "Error", "\"Test Error\"", "\"Test Error\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 5")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 5")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant5() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("FrameworkInformation", "FrameworkDebug", "\"Test Framework Debug\"", "\"\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 6")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 6")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Framework Debug\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant6() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("FrameworkInformation", "FrameworkInformation", "\"Test Framework Debug\"", "\"Test Framework Debug\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 7")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 7")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Debug\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant7() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("FrameworkInformation", "TestDebug", "\"Test Test Debug\"", "\"Test Test Debug\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 8")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 8")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Information\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Information\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant8() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("FrameworkInformation", "TestInformation", "\"Test Test Information\"", "\"Test Test Information\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 9")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 9")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "Error")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Error\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Error\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant9() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("FrameworkInformation", "Error", "\"Test Error\"", "\"Test Error\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 10")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 10")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "TestDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant10() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("TestDebug", "FrameworkDebug", "\"Test Framework Debug\"", "\"\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 11")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 11")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "TestDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant11() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("TestDebug", "FrameworkInformation", "\"Test Framework Debug\"", "\"\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 12")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 12")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "TestDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Debug\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant12() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("TestDebug", "TestDebug", "\"Test Test Debug\"", "\"Test Test Debug\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 13")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 13")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "TestDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Information\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Information\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant13() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("TestDebug", "TestInformation", "\"Test Test Information\"", "\"Test Test Information\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 14")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 14")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "TestDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "Error")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Error\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Error\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant14() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("TestDebug", "Error", "\"Test Error\"", "\"Test Error\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 15")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 15")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "TestInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant15() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("TestInformation", "FrameworkDebug", "\"Test Framework Debug\"", "\"\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 16")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 16")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "TestInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant16() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("TestInformation", "FrameworkInformation", "\"Test Framework Debug\"", "\"\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 17")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 17")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "TestInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant17() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("TestInformation", "TestDebug", "\"Test Test Debug\"", "\"\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 18")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 18")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "TestInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Information\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Information\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant18() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("TestInformation", "TestInformation", "\"Test Test Information\"", "\"Test Test Information\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 19")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 19")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "TestInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "Error")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Error\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Error\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant19() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("TestInformation", "Error", "\"Test Error\"", "\"Test Error\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 20")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 20")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "Error")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant20() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Error", "FrameworkDebug", "\"Test Framework Debug\"", "\"\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 21")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 21")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "Error")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant21() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Error", "FrameworkInformation", "\"Test Framework Debug\"", "\"\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 22")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 22")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "Error")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant22() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Error", "TestDebug", "\"Test Test Debug\"", "\"\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 23")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 23")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "Error")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestInformation")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Information\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant23() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Error", "TestInformation", "\"Test Test Information\"", "\"\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger only outputs levels equal to higher than the level selected: Variant 24")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Variant 24")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "Error")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "Error")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Error\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Error\"")] - public virtual void LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_Variant24() - { -#line 6 -this.LoggerOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Error", "Error", "\"Test Error\"", "\"Test Error\"", ((string[])(null))); -#line hidden - } - - public virtual void LoggerOutputCanBeDirectedToConsoleOrACustomOutputStream(string writeToConsole, string testString, string testLogOutput, string consoleOutput, string[] exampleTags) - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Logger output can be directed to Console or a custom output stream", exampleTags); -#line 40 -this.ScenarioSetup(scenarioInfo); -#line 41 - testRunner.Given(string.Format("I have configured Logger WriteToConsole to {0}", writeToConsole), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 42 - testRunner.And("I have configured Logger TestToolLog to write to my string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 43 - testRunner.And("I set Logger to level FrameworkDebug", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 44 - testRunner.When(string.Format("I call Logger with level FrameworkDebug and string {0}", testString), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 45 - testRunner.Then(string.Format("my string contains a Logger line ending with {0}", testLogOutput), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 46 - testRunner.And(string.Format("the console output contains a Logger line ending with {0}", consoleOutput), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger output can be directed to Console or a custom output stream: true")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "true")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write To Console", "true")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"Test Framework Debug\"")] - public virtual void LoggerOutputCanBeDirectedToConsoleOrACustomOutputStream_True() - { -#line 40 -this.LoggerOutputCanBeDirectedToConsoleOrACustomOutputStream("true", "\"Test Framework Debug\"", "\"\"", "\"Test Framework Debug\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger output can be directed to Console or a custom output stream: false")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "false")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write To Console", "false")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"Test Framework Debug\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"\"")] - public virtual void LoggerOutputCanBeDirectedToConsoleOrACustomOutputStream_False() - { -#line 40 -this.LoggerOutputCanBeDirectedToConsoleOrACustomOutputStream("false", "\"Test Framework Debug\"", "\"Test Framework Debug\"", "\"\"", ((string[])(null))); -#line hidden - } - - public virtual void LoggerOutputCanBeChangedInFlight(string initialWriteToConsole, string secondWriteToConsole, string loggerLevel, string writeLevel, string firstTestString, string secondTestString, string testLogOutput, string consoleOutput, string[] exampleTags) - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Logger output can be changed in flight", exampleTags); -#line 52 -this.ScenarioSetup(scenarioInfo); -#line 53 - testRunner.Given(string.Format("I have configured Logger WriteToConsole to {0}", initialWriteToConsole), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 54 - testRunner.And("I have configured Logger TestToolLog to write to my string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 55 - testRunner.And("I set Logger to level FrameworkDebug", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 56 - testRunner.And(string.Format("I call Logger with level FrameworkDebug and string {0}", firstTestString), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 57 - testRunner.When(string.Format("I change Logger WriteToConsole to {0}", secondWriteToConsole), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 58 - testRunner.And(string.Format("I call Logger with level FrameworkDebug and string {0}", secondTestString), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 59 - testRunner.Then(string.Format("my string contains a Logger line ending with {0}", testLogOutput), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 60 - testRunner.And(string.Format("the console output contains a Logger line ending with {0}", consoleOutput), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger output can be changed in flight: false")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "false")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Initial Write To Console", "false")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Write To Console", "true")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:First Test String", "\"My First string\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Test String", "\"My Second string\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"My First string\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"My Second string\"")] - public virtual void LoggerOutputCanBeChangedInFlight_False() - { -#line 52 -this.LoggerOutputCanBeChangedInFlight("false", "true", "FrameworkDebug", "FrameworkDebug", "\"My First string\"", "\"My Second string\"", "\"My First string\"", "\"My Second string\"", ((string[])(null))); -#line hidden - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Logger output can be changed in flight: true")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Logger")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "true")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Initial Write To Console", "true")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Write To Console", "false")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Logger Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:First Test String", "\"My First string\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Test String", "\"My Second string\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"My Second string\"")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"My First string\"")] - public virtual void LoggerOutputCanBeChangedInFlight_True() - { -#line 52 -this.LoggerOutputCanBeChangedInFlight("true", "false", "FrameworkDebug", "FrameworkDebug", "\"My First string\"", "\"My Second string\"", "\"My Second string\"", "\"My First string\"", ((string[])(null))); -#line hidden - } - } -} -#pragma warning restore -#endregion diff --git a/UnitTests/Logger/LoggerTestSteps.cs b/UnitTests/Logger/LoggerTestSteps.cs deleted file mode 100644 index a979d23..0000000 --- a/UnitTests/Logger/LoggerTestSteps.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; -using System.Linq; -using TechTalk.SpecFlow; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System.IO; - -namespace TeamControlium.Utilities -{ - [Binding] - public sealed class LoggerTestSteps - { - private StringWriter consoleOut = new StringWriter(); - - [Given(@"I have configured Logger WriteToConsole to (false|true)")] - [When(@"I change Logger WriteToConsole to (false|true)")] - public void GivenIHaveConfiguredLoggerToWriteToConsole(bool writeToConsole) - { - Console.SetOut(consoleOut); - Logger.WriteToConsole = writeToConsole; - } - - [Given(@"I have configured Logger TestToolLog to write to my string")] - public void GivenIHaveConfiguredLoggerToWriteToAString() - { - Logger.TestToolLog = (s) => { ScenarioContext.Current.Add("LoggerOutputString", s); }; - } - - [Given(@"I set Logger to level (.*)")] - public void WhenISetLoggerToLevel(Logger.LogLevels logLevel) - { - Logger.LoggingLevel = logLevel; - } - - [Given(@"I call Logger with level (.*) and string ""(.*)""")] - [When(@"I call Logger with level (.*) and string ""(.*)""")] - public void WhenICallLoggerWithLevelAndString(Logger.LogLevels logLevel, string stringToWrite) - { - Logger.WriteLine(logLevel, stringToWrite); - } - - [Then(@"the console output contains a Logger line ending with ""(.*)""")] - public void ThenTheConsoleWrittenToByLoggerShouldEndWith(string expectedToEndWith) - { - var outputString = default(string); - var expectedString = string.IsNullOrEmpty(expectedToEndWith) ? default(string) : expectedToEndWith; - try - { - var consoleOutput = consoleOut.ToString().Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); - outputString = consoleOutput.Find(x => x.StartsWith("LOG-")); - } - catch - { - // - } - Assert.AreEqual(expectedString != null, outputString?.EndsWith(expectedString) ?? false, $"Console output had [{expectedString ?? "No logger output written"}] written to it: {outputString ?? "No logger output written"} "); - } - - /// - /// - /// - /// - [Then(@"my string contains a Logger line ending with ""(.*)""")] - public void ThenTheStringWrittenToByLoggerShouldEndWith(string expectedToEndWith) - { - var outputString = default(string); - var expectedString = string.IsNullOrEmpty(expectedToEndWith) ? default(string) : expectedToEndWith; - try - { - outputString = (string)ScenarioContext.Current["LoggerOutputString"]; - } - catch - { - // - } - Assert.AreEqual(expectedString != null, outputString?.EndsWith(expectedString) ?? false, $"Console output had [{expectedString ?? "No logger output written"}] written to it: {outputString ?? "No logger output written"} "); - } - } -} \ No newline at end of file diff --git a/UnitTests/TestData/TestData.feature b/UnitTests/TestData/TestData.feature deleted file mode 100644 index f4fbf5b..0000000 --- a/UnitTests/TestData/TestData.feature +++ /dev/null @@ -1,80 +0,0 @@ -@Utilities_TestData -Feature: Utilities_TestData - In order to test Test Data repository - As a test automator - I want to be able to save and recall test data - - Scenario: Save and recall a string to test data - Given I have saved Test Data item 1 "My Data" in item named "MyName" in category "MyCategory" - When I recall the Test Data item 1 named "MyName" in category "MyCategory" - Then the recalled 1 value matches the saved 1 value - - Scenario: Save and recall two strings from same Category - Given I have saved Test Data item 1 "My Data one" in item named "MyName1" in category "MyCategory" - And I have saved Test Data item 2 "My Data two" in item named "MyName2" in category "MyCategory" - When I recall the Test Data item 1 named "MyName1" in category "MyCategory" - And I recall the Test Data item 2 named "MyName2" in category "MyCategory" - Then the recalled 1 value matches the saved 1 value - And the recalled 2 value matches the saved 2 value - - Scenario: Save two strings to a category then recall - Given I have a Test data item "My Data one" in item named "MyName1" - And I have a Test data item "My Data two" in item named "MyName2" - And I have saved items in category "MyCategory" - When I recall the Test Data item 1 named "MyName1" in category "MyCategory" - And I recall the Test Data item 2 named "MyName2" in category "MyCategory" - Then the recalled 1 value matches the saved 1 value - And the recalled 2 value matches the saved 2 value - - Scenario: Save and recall two strings from different Categories - Given I have saved Test Data item 1 "My Data one" in item named "MyName" in category "MyCategory1" - And I have saved Test Data item 2 "My Data two" in item named "MyName" in category "MyCategory2" - When I recall the Test Data item 1 named "MyName" in category "MyCategory1" - And I recall the Test Data item 2 named "MyName" in category "MyCategory2" - Then the recalled 1 value matches the saved 1 value - And the recalled 2 value matches the saved 2 value - - Scenario: Save and recall an integer to test data - Given I have saved Test Data item 1 69 in item named "MyName" in category "MyCategory" - When I recall the Test Data item 1 named "MyName" in category "MyCategory" - Then the recalled 1 value matches the saved 1 value - - Scenario: Save and recall one string and one int from same Category - Given I have saved Test Data item 1 "My Data one" in item named "MyName1" in category "MyCategory" - And I have saved Test Data item 2 222 in item named "MyName2" in category "MyCategory" - When I recall the Test Data item 1 named "MyName1" in category "MyCategory" - And I recall the Test Data item 2 named "MyName2" in category "MyCategory" - Then the recalled 1 value matches the saved 1 value - And the recalled 2 value matches the saved 2 value - - Scenario: Change a string value in test data - Given I have saved Test Data item 1 "My Data" in item named "MyName" in category "MyCategory" - When I change Test Data item 1 named "MyName" in category "MyCategory" to "New Value" - And I recall the Test Data item 1 named "MyName" in category "MyCategory" - Then the recalled 1 value matches the saved 1 value - - Scenario: Change an integer value to a string value in test data - Given I have saved Test Data item 1 69 in item named "MyName" in category "MyCategory" - When I change Test Data item 1 named "MyName" in category "MyCategory" to "New Value" - And I recall the Test Data item 1 named "MyName" in category "MyCategory" - Then the recalled 1 value matches the saved 1 value - - Scenario: Correct error if I try to get a string as an integer - Given I have saved Test Data item 1 "My Data" in item named "MyName" in category "MyCategory" - When I recall the Test Data item 1 named "MyName" in category "MyCategory" as an integer - Then the recalled 1 value is an exception with innermost exception message "Expected type [Int32] but got type [System.String]." - - Scenario: Save one item of test data then clear - Given I have saved Test Data item 1 "My Data" in item named "MyName" in category "MyCategory" - When I clear the test data - And I recall the Test Data item 1 named "MyName" in category "MyCategory" - Then the recalled 1 value is an exception with innermost exception message "Category does not exist Parameter name: category Actual value was MyCategory." - - Scenario: Save two items of test data in different categories then clear - Given I have saved Test Data item 1 "My Data" in item named "MyName" in category "MyCategory1" - Given I have saved Test Data item 2 66 in item named "MyName" in category "MyCategory2" - When I clear the test data - And I recall the Test Data item 1 named "MyName" in category "MyCategory1" - Then the recalled 1 value is an exception with innermost exception message "Category does not exist Parameter name: category Actual value was MyCategory1." - When I recall the Test Data item 2 named "MyName" in category "MyCategory2" - Then the recalled 2 value is an exception with innermost exception message "Category does not exist Parameter name: category Actual value was MyCategory2." diff --git a/UnitTests/TestData/TestData.feature.cs b/UnitTests/TestData/TestData.feature.cs deleted file mode 100644 index 70b2925..0000000 --- a/UnitTests/TestData/TestData.feature.cs +++ /dev/null @@ -1,355 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by SpecFlow (http://www.specflow.org/). -// SpecFlow Version:2.2.0.0 -// SpecFlow Generator Version:2.2.0.0 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ -#region Designer generated code -#pragma warning disable -namespace TeamControlium.Utilities.UnitTests.TestData -{ - using TechTalk.SpecFlow; - - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.2.0.0")] - [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute()] - public partial class Utilities_TestDataFeature - { - - private static TechTalk.SpecFlow.ITestRunner testRunner; - - private Microsoft.VisualStudio.TestTools.UnitTesting.TestContext _testContext; - -#line 1 "TestData.feature" -#line hidden - - public virtual Microsoft.VisualStudio.TestTools.UnitTesting.TestContext TestContext - { - get - { - return this._testContext; - } - set - { - this._testContext = value; - } - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute()] - public static void FeatureSetup(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext testContext) - { - testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(null, 0); - TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Utilities_TestData", "\tIn order to test Test Data repository\r\n\tAs a test automator\r\n\tI want to be able " + - "to save and recall test data", ProgrammingLanguage.CSharp, new string[] { - "Utilities_TestData"}); - testRunner.OnFeatureStart(featureInfo); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupAttribute()] - public static void FeatureTearDown() - { - testRunner.OnFeatureEnd(); - testRunner = null; - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute()] - public virtual void TestInitialize() - { - if (((testRunner.FeatureContext != null) - && (testRunner.FeatureContext.FeatureInfo.Title != "Utilities_TestData"))) - { - global::TeamControlium.Utilities.UnitTests.TestData.Utilities_TestDataFeature.FeatureSetup(null); - } - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute()] - public virtual void ScenarioTearDown() - { - testRunner.OnScenarioEnd(); - } - - public virtual void ScenarioSetup(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) - { - testRunner.OnScenarioStart(scenarioInfo); - testRunner.ScenarioContext.ScenarioContainer.RegisterInstanceAs(TestContext); - } - - public virtual void ScenarioCleanup() - { - testRunner.CollectScenarioErrors(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Save and recall a string to test data")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Utilities_TestData")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Utilities_TestData")] - public virtual void SaveAndRecallAStringToTestData() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Save and recall a string to test data", ((string[])(null))); -#line 7 - this.ScenarioSetup(scenarioInfo); -#line 8 - testRunner.Given("I have saved Test Data item 1 \"My Data\" in item named \"MyName\" in category \"MyCat" + - "egory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 9 - testRunner.When("I recall the Test Data item 1 named \"MyName\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 10 - testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Save and recall two strings from same Category")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Utilities_TestData")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Utilities_TestData")] - public virtual void SaveAndRecallTwoStringsFromSameCategory() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Save and recall two strings from same Category", ((string[])(null))); -#line 12 - this.ScenarioSetup(scenarioInfo); -#line 13 - testRunner.Given("I have saved Test Data item 1 \"My Data one\" in item named \"MyName1\" in category \"" + - "MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 14 - testRunner.And("I have saved Test Data item 2 \"My Data two\" in item named \"MyName2\" in category \"" + - "MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 15 - testRunner.When("I recall the Test Data item 1 named \"MyName1\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 16 - testRunner.And("I recall the Test Data item 2 named \"MyName2\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 17 - testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 18 - testRunner.And("the recalled 2 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Save two strings to a category then recall")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Utilities_TestData")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Utilities_TestData")] - public virtual void SaveTwoStringsToACategoryThenRecall() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Save two strings to a category then recall", ((string[])(null))); -#line 20 - this.ScenarioSetup(scenarioInfo); -#line 21 - testRunner.Given("I have a Test data item \"My Data one\" in item named \"MyName1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 22 - testRunner.And("I have a Test data item \"My Data two\" in item named \"MyName2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 23 - testRunner.And("I have saved items in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 24 - testRunner.When("I recall the Test Data item 1 named \"MyName1\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 25 - testRunner.And("I recall the Test Data item 2 named \"MyName2\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 26 - testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 27 - testRunner.And("the recalled 2 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Save and recall two strings from different Categories")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Utilities_TestData")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Utilities_TestData")] - public virtual void SaveAndRecallTwoStringsFromDifferentCategories() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Save and recall two strings from different Categories", ((string[])(null))); -#line 29 - this.ScenarioSetup(scenarioInfo); -#line 30 - testRunner.Given("I have saved Test Data item 1 \"My Data one\" in item named \"MyName\" in category \"M" + - "yCategory1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 31 - testRunner.And("I have saved Test Data item 2 \"My Data two\" in item named \"MyName\" in category \"M" + - "yCategory2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 32 - testRunner.When("I recall the Test Data item 1 named \"MyName\" in category \"MyCategory1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 33 - testRunner.And("I recall the Test Data item 2 named \"MyName\" in category \"MyCategory2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 34 - testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 35 - testRunner.And("the recalled 2 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Save and recall an integer to test data")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Utilities_TestData")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Utilities_TestData")] - public virtual void SaveAndRecallAnIntegerToTestData() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Save and recall an integer to test data", ((string[])(null))); -#line 37 - this.ScenarioSetup(scenarioInfo); -#line 38 - testRunner.Given("I have saved Test Data item 1 69 in item named \"MyName\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 39 - testRunner.When("I recall the Test Data item 1 named \"MyName\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 40 - testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Save and recall one string and one int from same Category")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Utilities_TestData")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Utilities_TestData")] - public virtual void SaveAndRecallOneStringAndOneIntFromSameCategory() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Save and recall one string and one int from same Category", ((string[])(null))); -#line 42 - this.ScenarioSetup(scenarioInfo); -#line 43 - testRunner.Given("I have saved Test Data item 1 \"My Data one\" in item named \"MyName1\" in category \"" + - "MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 44 - testRunner.And("I have saved Test Data item 2 222 in item named \"MyName2\" in category \"MyCategory" + - "\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 45 - testRunner.When("I recall the Test Data item 1 named \"MyName1\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 46 - testRunner.And("I recall the Test Data item 2 named \"MyName2\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 47 - testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 48 - testRunner.And("the recalled 2 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Change a string value in test data")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Utilities_TestData")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Utilities_TestData")] - public virtual void ChangeAStringValueInTestData() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Change a string value in test data", ((string[])(null))); -#line 50 - this.ScenarioSetup(scenarioInfo); -#line 51 - testRunner.Given("I have saved Test Data item 1 \"My Data\" in item named \"MyName\" in category \"MyCat" + - "egory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 52 - testRunner.When("I change Test Data item 1 named \"MyName\" in category \"MyCategory\" to \"New Value\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 53 - testRunner.And("I recall the Test Data item 1 named \"MyName\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 54 - testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Change an integer value to a string value in test data")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Utilities_TestData")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Utilities_TestData")] - public virtual void ChangeAnIntegerValueToAStringValueInTestData() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Change an integer value to a string value in test data", ((string[])(null))); -#line 56 - this.ScenarioSetup(scenarioInfo); -#line 57 - testRunner.Given("I have saved Test Data item 1 69 in item named \"MyName\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 58 - testRunner.When("I change Test Data item 1 named \"MyName\" in category \"MyCategory\" to \"New Value\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 59 - testRunner.And("I recall the Test Data item 1 named \"MyName\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 60 - testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Correct error if I try to get a string as an integer")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Utilities_TestData")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Utilities_TestData")] - public virtual void CorrectErrorIfITryToGetAStringAsAnInteger() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Correct error if I try to get a string as an integer", ((string[])(null))); -#line 62 - this.ScenarioSetup(scenarioInfo); -#line 63 - testRunner.Given("I have saved Test Data item 1 \"My Data\" in item named \"MyName\" in category \"MyCat" + - "egory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 64 - testRunner.When("I recall the Test Data item 1 named \"MyName\" in category \"MyCategory\" as an integ" + - "er", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 65 - testRunner.Then("the recalled 1 value is an exception with innermost exception message \"Expected t" + - "ype [Int32] but got type [System.String].\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Save one item of test data then clear")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Utilities_TestData")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Utilities_TestData")] - public virtual void SaveOneItemOfTestDataThenClear() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Save one item of test data then clear", ((string[])(null))); -#line 67 - this.ScenarioSetup(scenarioInfo); -#line 68 - testRunner.Given("I have saved Test Data item 1 \"My Data\" in item named \"MyName\" in category \"MyCat" + - "egory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 69 - testRunner.When("I clear the test data", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 70 - testRunner.And("I recall the Test Data item 1 named \"MyName\" in category \"MyCategory\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 71 - testRunner.Then("the recalled 1 value is an exception with innermost exception message \"Category d" + - "oes not exist Parameter name: category Actual value was MyCategory.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - - [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] - [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Save two items of test data in different categories then clear")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Utilities_TestData")] - [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("Utilities_TestData")] - public virtual void SaveTwoItemsOfTestDataInDifferentCategoriesThenClear() - { - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Save two items of test data in different categories then clear", ((string[])(null))); -#line 73 - this.ScenarioSetup(scenarioInfo); -#line 74 - testRunner.Given("I have saved Test Data item 1 \"My Data\" in item named \"MyName\" in category \"MyCat" + - "egory1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 75 - testRunner.Given("I have saved Test Data item 2 66 in item named \"MyName\" in category \"MyCategory2\"" + - "", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 76 - testRunner.When("I clear the test data", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 77 - testRunner.And("I recall the Test Data item 1 named \"MyName\" in category \"MyCategory1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 78 - testRunner.Then("the recalled 1 value is an exception with innermost exception message \"Category d" + - "oes not exist Parameter name: category Actual value was MyCategory1.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 79 - testRunner.When("I recall the Test Data item 2 named \"MyName\" in category \"MyCategory2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 80 - testRunner.Then("the recalled 2 value is an exception with innermost exception message \"Category d" + - "oes not exist Parameter name: category Actual value was MyCategory2.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden - this.ScenarioCleanup(); - } - } -} -#pragma warning restore -#endregion diff --git a/UnitTests/TestData/TestDataTestSteps.cs b/UnitTests/TestData/TestDataTestSteps.cs deleted file mode 100644 index 8ac987e..0000000 --- a/UnitTests/TestData/TestDataTestSteps.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System; -using System.Diagnostics; -using System.Collections.Generic; -using System.Linq; -using TechTalk.SpecFlow; -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace TeamControlium.Utilities -{ - [Binding] - public sealed class TestDataTestSteps - { - [BeforeFeature("Utilities_TestData")] - public static void BeforeAppFeature() - { - Logger.LoggingLevel = Logger.LogLevels.FrameworkDebug; - Logger.TestToolLog = (s) => { Debug.WriteLine(s); }; - Logger.WriteToConsole = false; - } - - [Given(@"I have saved Test Data item (\d) ""(.*)"" in item named ""(.*)"" in category ""(.*)""")] - public void GivenIHaveSavedTestDataInItemNamedInCategory(int itemIndex, string item, string name, string category) - { - ScenarioContext.Current[$"Saved-{itemIndex}"] = item; - TestData.Repository[category, name] = item; - } - - [Given(@"I have saved Test Data item (\d) (\d*) in item named ""(.*)"" in category ""(.*)""")] - public void GivenIHaveSavedTestDataInItemNamedInCategory(int itemIndex, int item, string name, string category) - { - ScenarioContext.Current[$"Saved-{itemIndex}"] = item; - TestData.Repository[category, name] = item; - } - - [Given(@"I have a Test data item ""(.*)"" in item named ""(.*)""")] - public void GivenIHaveATestDataItemInItemNamed(string item, string name) - { - if (!ScenarioContext.Current.ContainsKey($"Dictionary")) - { - ScenarioContext.Current[$"Dictionary"] = new Dictionary(); - } - ScenarioContext.Current.Get>($"Dictionary").Add(name, item); - } - - [Given(@"I have saved items in category ""(.*)""")] - public void GivenIHaveSavedItemsInCategory(string category) - { - int index = 1; - foreach (var keyvalue in ScenarioContext.Current.Get>($"Dictionary")) - { - ScenarioContext.Current[$"Saved-{index++}"] = keyvalue.Value; - } - TestData.Repository[category] = ScenarioContext.Current.Get>($"Dictionary"); - } - - [When(@"I recall the Test Data item (\d) named ""(.*)"" in category ""(.*)""")] - public void WhenIRecallTheTestDataNamedInCategory(string itemIndex, string name, string category) - { - if (TestData.Repository.TryGetItem(category, name, out dynamic value)) - ScenarioContext.Current[$"Recalled-{itemIndex}"] = value; - else - ScenarioContext.Current[$"Recalled-{itemIndex}"] = TestData.Repository.TryException; - } - - [When(@"I change Test Data item (\d) named ""(.*)"" in category ""(.*)"" to ""(.*)""")] - public void WhenIChangeTestDataItemNamedInCategoryTo(int itemIndex, string name, string category, string newValue) - { - ScenarioContext.Current[$"Saved-{itemIndex}"] = newValue; - TestData.Repository[category, name] = newValue; - } - - [When(@"I recall the Test Data item (\d) named ""(.*)"" in category ""(.*)"" as an integer")] - public void WhenIRecallTheTestDataNamedInCategoryAsAnInteger(int itemIndex, string name, string category) - { - if (TestData.Repository.TryGetItem(category, name, out int value)) - ScenarioContext.Current[$"Recalled-{itemIndex}"] = value; - else - ScenarioContext.Current[$"Recalled-{itemIndex}"] = TestData.Repository.TryException; - } - - [When(@"I clear the test data")] - public void WhenIClearTheTestData() - { - TestData.Repository.Clear(); - } - - [Then(@"the recalled (.*) value matches the saved (.*) value")] - public void ThenTheRecalledValueMatchesTheSavedValue(int savedIndex, int recalledIndex) - { - if (!ScenarioContext.Current.ContainsKey($"Saved-{savedIndex}")) - Assert.Inconclusive($"No [Saved-{savedIndex}] scenario context key"); - if (!ScenarioContext.Current.ContainsKey($"Recalled-{recalledIndex}")) - Assert.Inconclusive($"No [Recalled-{recalledIndex}] scenario context key"); - - Assert.AreEqual(ScenarioContext.Current[$"Saved-{savedIndex}"], ScenarioContext.Current[$"Recalled-{recalledIndex}"]); - } - - [Then(@"the recalled (.*) value is an exception with innermost exception message ""(.*)""")] - public void ThenTheRecalledValueIsError(int recalledIndex, string errorText) - { - object dynError = ScenarioContext.Current[$"Recalled-{recalledIndex}"]; - - Assert.IsInstanceOfType(dynError, typeof(Exception)); - - Exception exception = (Exception)ScenarioContext.Current[$"Recalled-{recalledIndex}"]; - while (exception.InnerException != null) exception = exception.InnerException; - - Assert.AreEqual((new string(errorText.Where(c => char.IsLetter(c) || char.IsDigit(c)).ToArray())).Replace(" ", "").Trim(), (new string(exception.Message.Where(c => char.IsLetter(c) || char.IsDigit(c)).ToArray())).Replace(" ", "").Trim()); - } - } -} \ No newline at end of file diff --git a/Utilities.UnitTests.net/DetokenizerTests/DetokenizerTestSteps.cs b/Utilities.UnitTests.net/DetokenizerTests/DetokenizerTestSteps.cs new file mode 100644 index 0000000..37763e1 --- /dev/null +++ b/Utilities.UnitTests.net/DetokenizerTests/DetokenizerTestSteps.cs @@ -0,0 +1,252 @@ +// +// Copyright (c) Licensed under the MIT License. See LICENSE file in the project root for full license information. +// +namespace TeamControlium.Utilities.UnitTests +{ + using System; + using System.Collections.Generic; + using System.Globalization; + using System.IO; + using System.Linq; + using System.Text.RegularExpressions; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using TechTalk.SpecFlow; + using static TeamControlium.Utilities.Detokenizer; + + /// + /// Test-step definitions for steps using/validating the Utilities Detokenizer class. + /// + [Binding] + public sealed class DetokenizerTestSteps + { + /// + /// Used to hold context information for current Scenario + /// + private readonly ScenarioContext scenarioContext; + + /// + /// Initializes a new instance of the class. + /// Stores console output when redirected by any test steps. + /// + /// Scenario context + public DetokenizerTestSteps(ScenarioContext scenarioContext) + { + this.scenarioContext = scenarioContext; + } + + /// + /// Store String to be processed into the Scenario context to enable use and validation + /// + /// String to be processed to Detokenizer and then used in validation/s. + [Given(@"I have a string ""(.*)""")] + public void GivenIHaveAStringWithToken(string stringToBeProcessed) + { + this.scenarioContext["StringToBeProcessed"] = stringToBeProcessed; + } + + /// + /// Call Detokenizer to process string placing result in Scenario context to enable later validation. + /// Catch any exception and store in result for possible later validation + /// + [When(@"I process the token to a string")] + public void WhenIProcessTheToken() + { + string stringToProcess = (string)this.scenarioContext["StringToBeProcessed"]; + string processed; + + try + { + processed = Detokenize(stringToProcess); + } + catch (Exception ex) + { + processed = ex.Message; + } + + this.scenarioContext["ProcessedString"] = processed; + } + + /// + /// Validate that Detokenizer returned string matches the expected + /// + /// Expected string + [Then(@"the string is ""(.*)""")] + public void ThenTheStringIs(string expectedString) + { + Assert.AreEqual(expectedString, (string)this.scenarioContext["ProcessedString"], $"Verify Detokenizer processed string [{(string)this.scenarioContext["ProcessedString"]}] matches expected [{expectedString}]"); + } + + /// + /// Verify Detokenizer returned string is todays date in the required format + /// + /// Required format of date + [Then(@"the string is today's date in the format ""(.*)""")] + public void ThenTheStringIsTodaySDateInTheFormat(string requiredFormatOfDate) + { + string requiredDate = DateTime.Now.ToString(requiredFormatOfDate); + string actualDate = (string)this.scenarioContext["ProcessedString"]; + Assert.AreEqual(requiredDate, actualDate, "Dates and formats match"); + } + + /// + /// Verify Detokenizer returned string is yesterdays date in the required format + /// + /// Required format of date + [Then(@"the string is yesterday's date in the format ""(.*)""")] + public void ThenTheStringIsYesterdaySDateInTheFormat(string requiredFormatOfDate) + { + string requiredDate = DateTime.Now.AddDays(-1).ToString(requiredFormatOfDate); + string actualDate = (string)this.scenarioContext["ProcessedString"]; + Assert.AreEqual(requiredDate, actualDate, "Dates and formats match"); + } + + /// + /// Verify Detokenizer returned string is tomorrows date in the required format + /// + /// Required format of date + [Then(@"the string is tomorrows's date in the format ""(.*)""")] + public void ThenTheStringIsTomorrowsDateInTheFormat(string requiredFormatOfDate) + { + string requiredDate = DateTime.Now.AddDays(1).ToString(requiredFormatOfDate); + string actualDate = (string)this.scenarioContext["ProcessedString"]; + Assert.AreEqual(requiredDate, actualDate, "Dates and formats match"); + } + + /// + /// Verify Detokenizer returned string is required date offset in the required format + /// + /// Number of units of offset required + /// Unit type of offset (IE. days, months or years) + /// Required format of date + [Then(@"the string is the date (.*) ""(.*)"" in the format ""(.*)""")] + public void ThenTheStringIsTheDateInTheFormat(int offset, string offsetType, string requiredFormatOfDate) + { + DateTime requiredDate; + string actualDate = (string)this.scenarioContext["ProcessedString"]; + + switch (offsetType.ToLower().Trim()) + { + case "days": + requiredDate = DateTime.Now.AddDays(offset); + break; + case "months": + requiredDate = DateTime.Now.AddMonths(offset); + break; + case "years": + requiredDate = DateTime.Now.AddYears(offset); + break; + default: + throw new ArgumentException("Unknown Offset Type. Expect days, months or years.", "offsetType"); + } + + Assert.AreEqual(requiredDate.ToString(requiredFormatOfDate), actualDate, "Dates and formats match"); + } + + /// + /// Verify date is within the required maximum and minimum + /// + /// Minimum date Detokenizer date must be + /// Maximum date Detokenizer date must be + [Then(@"the string is a date between ""(.*)"" and ""(.*)""")] + public void ThenTheStringIsADateBetweenAnd(string minDate, string maxDate) + { + var processedString = (string)this.scenarioContext["ProcessedString"]; + var actualDate = DateTime.ParseExact(processedString, new string[] { "d/M/yy", "dd/M/yy", "d/MM/yy", "dd/MM/yy", "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy", "dd/MM/yyyy" }, CultureInfo.InvariantCulture, DateTimeStyles.None); + var min = DateTime.ParseExact(minDate, "d/M/yyyy", CultureInfo.InvariantCulture); + var max = DateTime.ParseExact(maxDate, "d/M/yyyy", CultureInfo.InvariantCulture); + + if (min > max) + { + throw new Exception($"Test error: Minimum date [{minDate}] is later than Maximum date [{maxDate}]!"); + } + + Assert.IsTrue((actualDate >= min) && (actualDate <= max)); + } + + /// + /// Verify Detokenizer result matches required regular expression + /// + /// Regular Expression pattern to match + [Then(@"the string matches regular expression ""(.*)""")] + public void ThenTheStringIsAFormattedNumber(string regExpPattern) + { + var processedString = (string)this.scenarioContext["ProcessedString"]; + bool result = Regex.IsMatch(processedString, regExpPattern); + Assert.IsTrue(result, string.Format("Processed string [{0}] matches regular expression [{1}]", processedString, regExpPattern)); + } + + /// + /// Verify Detokenizer result is a number within the given limits + /// + /// Minimum number result can be + /// Maximum number result can be + [Then(@"the string is a number between (.*) and (.*)")] + public void ThenTheStringIsANumberBetweenAnd(float minNumber, float maxNumber) + { + var processedString = (string)this.scenarioContext["ProcessedString"]; + float num = float.Parse(processedString); + Assert.IsTrue((num >= minNumber) && (num <= maxNumber)); + } + + /// + /// Verify the Detokenizer result is correct number of characters and only selected from the required set + /// + /// Number of characters Detokenizer result must be + /// Characters Detokenizer result must be selected from + [Then(@"the string is (.*) characters from ""(.*)""")] + public void ThenTheStringIsCharacterFrom(int numberOfCharacters, string possibleCharacters) + { + var processedString = (string)this.scenarioContext["ProcessedString"]; + var seenInPossibleChars = true; + + Assert.AreEqual(numberOfCharacters, processedString.Length); + + foreach (char character in processedString) + { + if (possibleCharacters.IndexOf(character) == -1) + { + Assert.IsTrue(false, $"Verify character [{character}] (in detokenizer result [{processedString}]) is from possible characters [{possibleCharacters}]"); + seenInPossibleChars = false; + break; + } + } + + if (seenInPossibleChars) + { + Assert.IsTrue(true, $"All characters in detokenizer result [{processedString}] are from possible characters [{possibleCharacters}]"); + } + } + + /// + /// Verify Detokenizer result is a valid Australian TFN (Tax File Number) + /// + [Then(@"the string is a valid Australian TFN")] + public void ThenTheStringIsAValidAustralianTFN() + { + int[] weights = { 1, 4, 3, 7, 5, 8, 6, 9 }; + int index; + int sum = 0; + int product; + var processedString = (string)this.scenarioContext["ProcessedString"]; + + for (index = 0; index < weights.Length; index++) + { + if (!int.TryParse(processedString[index].ToString(), out product)) + { + throw new Exception($"Processed string contain invalid TFN (at position {(index + 1)}) - expected only digits. Got {processedString}"); + } + + sum += product * int.Parse(weights[index].ToString()); + } + + product = sum % 11; + + if (!int.TryParse(processedString[8].ToString(), out sum)) + { + throw new Exception($"Processed string contain invalid TFN (at position 8) - expected only digits. Got {processedString}"); + } + + Assert.AreEqual(product, sum, $"Verify TFN ({processedString}) check digit ({processedString[8]}) matches expected ({product})"); + } + } +} \ No newline at end of file diff --git a/UnitTests/Detokenizer/Detokenizer.feature b/Utilities.UnitTests.net/DetokenizerTests/DetokenizerTests.feature similarity index 90% rename from UnitTests/Detokenizer/Detokenizer.feature rename to Utilities.UnitTests.net/DetokenizerTests/DetokenizerTests.feature index 5e23e5b..e195d52 100644 --- a/UnitTests/Detokenizer/Detokenizer.feature +++ b/Utilities.UnitTests.net/DetokenizerTests/DetokenizerTests.feature @@ -1,5 +1,4 @@ -@Detokenizer -Feature: Detokenizer +Feature: Detokenizer In order to process tokens As a test automator I want to be able to convert tokens to real texts @@ -104,7 +103,7 @@ Feature: Detokenizer Scenario:I get correct error if min date after max date Given I have a string "{random;date(12-07-2001,11-07-2001);dd/MM/yyyy}" When I process the token to a string - Then the string is "Error processing token {random;date(12-07-2001,11-07-2001);dd/MM/yyyy} (Maximum date earlier than Maximum date! Expect {random;date(dd-MM-yyyy,dd-MM-yyyy);} Mindate = 12/07/2001, Maxdate = 11/07/2001)" + Then the string is "Error processing token {random;date(12-07-2001,11-07-2001);dd/MM/yyyy} (Maximum date earlier than Minimum date! Expect {random;date(dd-MM-yyyy,dd-MM-yyyy);} Mindate = 12/07/2001, Maxdate = 11/07/2001)" # # Float @@ -139,15 +138,30 @@ Feature: Detokenizer Then the string matches regular expression "^0{2}[3-4]{1}$" And the string is a number between 3 and 4 + # + # TFN + # + Scenario:I can get a random valid TFN + Given I have a string "{Random;AustralianTFN}" + When I process the token to a string + Then the string is a valid Australian TFN + # # Set of characters # Scenario:I can get a single random character from a given set Given I have a string "{random;from(abc);1}" When I process the token to a string - Then the string matches regular expression "^[a-c]{1}$" + Then the string matches regular expression "^.{1}$" And the string is 1 characters from "abc" + Scenario:I can get a multiple random characters from a given set + Given I have a string "{random;from(abcdef);10}" + When I process the token to a string + Then the string matches regular expression "^.{10}$" + And the string is 10 characters from "abcdef" + + Scenario: Nested tokens Given I have a string "{random;digits;{random;from(2345);1} }" When I process the token to a string diff --git a/Utilities.UnitTests.net/DetokenizerTests/DetokenizerTests.feature.cs b/Utilities.UnitTests.net/DetokenizerTests/DetokenizerTests.feature.cs new file mode 100644 index 0000000..e9cfb2e --- /dev/null +++ b/Utilities.UnitTests.net/DetokenizerTests/DetokenizerTests.feature.cs @@ -0,0 +1,1077 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by SpecFlow (http://www.specflow.org/). +// SpecFlow Version:3.1.0.0 +// SpecFlow Generator Version:3.1.0.0 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ +#region Designer generated code +#pragma warning disable +namespace Utilities.UnitTests.net.DetokenizerTests +{ + using TechTalk.SpecFlow; + using System; + using System.Linq; + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.1.0.0")] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute()] + public partial class DetokenizerFeature + { + + private static TechTalk.SpecFlow.ITestRunner testRunner; + + private Microsoft.VisualStudio.TestTools.UnitTesting.TestContext _testContext; + + private string[] _featureTags = ((string[])(null)); + +#line 1 "DetokenizerTests.feature" +#line hidden + + public virtual Microsoft.VisualStudio.TestTools.UnitTesting.TestContext TestContext + { + get + { + return this._testContext; + } + set + { + this._testContext = value; + } + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute()] + public static void FeatureSetup(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext testContext) + { + testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); + TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Detokenizer", "\tIn order to process tokens\r\n\tAs a test automator\r\n\tI want to be able to convert " + + "tokens to real texts", ProgrammingLanguage.CSharp, ((string[])(null))); + testRunner.OnFeatureStart(featureInfo); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupAttribute()] + public static void FeatureTearDown() + { + testRunner.OnFeatureEnd(); + testRunner = null; + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute()] + public virtual void TestInitialize() + { + if (((testRunner.FeatureContext != null) + && (testRunner.FeatureContext.FeatureInfo.Title != "Detokenizer"))) + { + global::Utilities.UnitTests.net.DetokenizerTests.DetokenizerFeature.FeatureSetup(null); + } + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute()] + public virtual void TestTearDown() + { + testRunner.OnScenarioEnd(); + } + + public virtual void ScenarioInitialize(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) + { + testRunner.OnScenarioInitialize(scenarioInfo); + testRunner.ScenarioContext.ScenarioContainer.RegisterInstanceAs(_testContext); + } + + public virtual void ScenarioStart() + { + testRunner.OnScenarioStart(); + } + + public virtual void ScenarioCleanup() + { + testRunner.CollectScenarioErrors(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert today\'s date token to the date we run this test")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ConvertTodaysDateTokenToTheDateWeRunThisTest() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert today\'s date token to the date we run this test", null, ((string[])(null))); +#line 16 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 17 + testRunner.Given("I have a string \"{date;today;dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 18 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 19 + testRunner.Then("the string is today\'s date in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert yesterday\'s date token to the day before we run this test")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ConvertYesterdaysDateTokenToTheDayBeforeWeRunThisTest() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert yesterday\'s date token to the day before we run this test", null, ((string[])(null))); +#line 21 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 22 + testRunner.Given("I have a string \"{date;yesterday;dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 23 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 24 + testRunner.Then("the string is yesterday\'s date in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert tomorrows\'s date token to the day after we run this test")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ConvertTomorrowssDateTokenToTheDayAfterWeRunThisTest() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert tomorrows\'s date token to the day after we run this test", null, ((string[])(null))); +#line 26 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 27 + testRunner.Given("I have a string \"{date;tomorrow;dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 28 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 29 + testRunner.Then("the string is tomorrows\'s date in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Date command and verb not case sensitive")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void DateCommandAndVerbNotCaseSensitive() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Date command and verb not case sensitive", null, ((string[])(null))); +#line 31 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 32 + testRunner.Given("I have a string \"{Date;Today;dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 33 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 34 + testRunner.Then("the string is today\'s date in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Get the day of the week when test is run")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void GetTheDayOfTheWeekWhenTestIsRun() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Get the day of the week when test is run", null, ((string[])(null))); +#line 40 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 41 + testRunner.Given("I have a string \"{date;today;dddd}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 42 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 43 + testRunner.Then("the string is today\'s date in the format \"dddd\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a days offset in the past")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ConvertDateForADaysOffsetInThePast() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a days offset in the past", null, ((string[])(null))); +#line 48 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 49 + testRunner.Given("I have a string \"{date;AddDays(-10);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 50 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 51 + testRunner.Then("the string is the date -10 \"days\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a days offset in the future")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ConvertDateForADaysOffsetInTheFuture() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a days offset in the future", null, ((string[])(null))); +#line 53 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 54 + testRunner.Given("I have a string \"{date;AddDays(10);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 55 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 56 + testRunner.Then("the string is the date 10 \"days\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a days offset in the future (with a plus sign)")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ConvertDateForADaysOffsetInTheFutureWithAPlusSign() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a days offset in the future (with a plus sign)", null, ((string[])(null))); +#line 58 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 59 + testRunner.Given("I have a string \"{date;AddDays(+10);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 60 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 61 + testRunner.Then("the string is the date 10 \"days\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a months offset in the past")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ConvertDateForAMonthsOffsetInThePast() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a months offset in the past", null, ((string[])(null))); +#line 63 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 64 + testRunner.Given("I have a string \"{date;AddMonths(-19);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 65 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 66 + testRunner.Then("the string is the date -19 \"months\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a months offset in the future")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ConvertDateForAMonthsOffsetInTheFuture() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a months offset in the future", null, ((string[])(null))); +#line 68 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 69 + testRunner.Given("I have a string \"{date;AddMonths(17);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 70 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 71 + testRunner.Then("the string is the date 17 \"months\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a years offset in the past")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ConvertDateForAYearsOffsetInThePast() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a years offset in the past", null, ((string[])(null))); +#line 73 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 74 + testRunner.Given("I have a string \"{date;AddYears(-25);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 75 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 76 + testRunner.Then("the string is the date -25 \"years\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Convert date for a years offset in the future")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ConvertDateForAYearsOffsetInTheFuture() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Convert date for a years offset in the future", null, ((string[])(null))); +#line 78 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 79 + testRunner.Given("I have a string \"{date;AddYears(25);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 80 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 81 + testRunner.Then("the string is the date 25 \"years\" in the format \"dd/MM/yyyy\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random date from a single date")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ICanGetARandomDateFromASingleDate() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random date from a single date", null, ((string[])(null))); +#line 93 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 94 + testRunner.Given("I have a string \"{random;date(12-07-2001,12-07-2001);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 95 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 96 + testRunner.Then("the string is a date between \"12/07/2001\" and \"12/07/2001\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random date from one of two consequtive dates")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ICanGetARandomDateFromOneOfTwoConsequtiveDates() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random date from one of two consequtive dates", null, ((string[])(null))); +#line 98 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 99 + testRunner.Given("I have a string \"{random;date(11-07-2001,12-07-2001);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 100 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 101 + testRunner.Then("the string is a date between \"11/07/2001\" and \"12/07/2001\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I get correct error if min date after max date")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void IGetCorrectErrorIfMinDateAfterMaxDate() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I get correct error if min date after max date", null, ((string[])(null))); +#line 103 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 104 + testRunner.Given("I have a string \"{random;date(12-07-2001,11-07-2001);dd/MM/yyyy}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 105 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 106 + testRunner.Then("the string is \"Error processing token {random;date(12-07-2001,11-07-2001);dd/MM/y" + + "yyy} (Maximum date earlier than Minimum date! Expect {random;date(dd-MM-yyyy,dd-" + + "MM-yyyy);} Mindate = 12/07/2001, Maxdate = 11/07/2001)\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random positive floating point number with no decimal places")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ICanGetARandomPositiveFloatingPointNumberWithNoDecimalPlaces() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random positive floating point number with no decimal places", null, ((string[])(null))); +#line 111 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 112 + testRunner.Given("I have a string \"{random;float(0,1);0}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 113 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 114 + testRunner.Then("the string matches regular expression \"^[0-9]{1}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 115 + testRunner.And("the string is a number between 0 and 1", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random positive floating point number with 1 decimal places")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ICanGetARandomPositiveFloatingPointNumberWith1DecimalPlaces() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random positive floating point number with 1 decimal places", null, ((string[])(null))); +#line 117 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 118 + testRunner.Given("I have a string \"{random;float(0,1);0.0}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 119 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 120 + testRunner.Then("the string matches regular expression \"^[0-1]{1}\\.[0-9]{1}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 121 + testRunner.And("the string is a number between 0 and 1", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random negative floating point number with 1 decimal places")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ICanGetARandomNegativeFloatingPointNumberWith1DecimalPlaces() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random negative floating point number with 1 decimal places", null, ((string[])(null))); +#line 123 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 124 + testRunner.Given("I have a string \"{random;float(-1,0);0.0}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 125 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 126 + testRunner.Then("the string matches regular expression \"^-[0-9]{1}\\.[0-9]{1}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 127 + testRunner.And("the string is a number between -1 and 0", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random positive floating point number between tiny numbers")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ICanGetARandomPositiveFloatingPointNumberBetweenTinyNumbers() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random positive floating point number between tiny numbers", null, ((string[])(null))); +#line 129 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 130 + testRunner.Given("I have a string \"{random;float(0.0003,0.0004);0.000000}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 131 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 132 + testRunner.Then("the string matches regular expression \"^0{1}\\.0{3}[0-9]{3}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 133 + testRunner.And("the string is a number between 0.0003 and 0.0004", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random positive floating point number with leading zeros")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ICanGetARandomPositiveFloatingPointNumberWithLeadingZeros() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random positive floating point number with leading zeros", null, ((string[])(null))); +#line 135 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 136 + testRunner.Given("I have a string \"{random;float(3,4);000}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 137 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 138 + testRunner.Then("the string matches regular expression \"^0{2}[3-4]{1}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 139 + testRunner.And("the string is a number between 3 and 4", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a random valid TFN")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ICanGetARandomValidTFN() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a random valid TFN", null, ((string[])(null))); +#line 144 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 145 + testRunner.Given("I have a string \"{Random;AustralianTFN}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 146 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 147 + testRunner.Then("the string is a valid Australian TFN", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a single random character from a given set")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ICanGetASingleRandomCharacterFromAGivenSet() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a single random character from a given set", null, ((string[])(null))); +#line 152 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 153 + testRunner.Given("I have a string \"{random;from(abc);1}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 154 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 155 + testRunner.Then("the string matches regular expression \"^.{1}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 156 + testRunner.And("the string is 1 characters from \"abc\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("I can get a multiple random characters from a given set")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void ICanGetAMultipleRandomCharactersFromAGivenSet() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can get a multiple random characters from a given set", null, ((string[])(null))); +#line 158 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 159 + testRunner.Given("I have a string \"{random;from(abcdef);10}\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 160 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 161 + testRunner.Then("the string matches regular expression \"^.{10}$\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 162 + testRunner.And("the string is 10 characters from \"abcdef\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Nested tokens")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Detokenizer")] + public virtual void NestedTokens() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Nested tokens", null, ((string[])(null))); +#line 165 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 166 + testRunner.Given("I have a string \"{random;digits;{random;from(2345);1} }\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 167 + testRunner.When("I process the token to a string", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden + } + this.ScenarioCleanup(); + } + } +} +#pragma warning restore +#endregion diff --git a/Utilities.UnitTests.net/LogTests/LogTestSteps.cs b/Utilities.UnitTests.net/LogTests/LogTestSteps.cs new file mode 100644 index 0000000..b325e9d --- /dev/null +++ b/Utilities.UnitTests.net/LogTests/LogTestSteps.cs @@ -0,0 +1,170 @@ +// +// Copyright (c) Licensed under the MIT License. See LICENSE file in the project root for full license information. +// +namespace TeamControlium.Utilities.UnitTests +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.Linq; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using TechTalk.SpecFlow; + + /// + /// Test-step definitions for steps using/validating the Utilities Log class. + /// + [Binding] + public sealed class LogTestSteps + { + /// + /// Used to hold context information for current Scenario + /// + private readonly ScenarioContext scenarioContext; + + /// + /// Stores console output when redirected by any test steps. + /// + private StringWriter consoleOut = new StringWriter(); + + /// + /// Initializes a new instance of the class. + /// Used by Specflow supply Scenario context information. + /// + /// Scenario context data for use by class methods + public LogTestSteps(ScenarioContext context) + { + this.scenarioContext = context; + } + + /// + /// Specflow step to set Log WriteToConsole flag as required by test. + /// + /// Flag (true/false) setting Log WriteToConsole. When true, log writes to Console stdout, when false it does not. + [Given(@"I have configured Log WriteToConsole to (false|true)")] + [When(@"I change Log WriteToConsole to (false|true)")] + public void GivenIHaveConfiguredLogToWriteToConsole(bool writeToConsole) + { + Log.WriteToConsole = writeToConsole; + } + + /// + /// Sets Log TestToolLog delegate to configured (Log writes output to configured receiver) or not configured (TestToolLog set to null) + /// + /// "Configured" (Receiver setup) or "Not Configured" (no Receiver) + [Given(@"I have (.*) Log TestToolLog delegate")] + [When(@"I have (.*) Log TestToolLog delegate")] + public void GivenIHaveConfiguredLogTestToolLogDelegate(string configuredOrNotConfigured) + { + if (configuredOrNotConfigured.ToLower().Trim('"').StartsWith("not")) + { + Log.TestToolLog = null; + } + else + { + Log.TestToolLog = (s) => + { + scenarioContext.Add("LogOutputReceiver", s); + }; + } + } + + /// + /// Sets Log logging level to required setting, + /// + /// Required level of logging () + [Given(@"I set Log to level (.*)")] + public void WhenISetLogToLevel(Log.LogLevels logLevel) + { + Log.CurrentLoggingLevel = logLevel; + } + + /// + /// Log.WriteLogLine is called with required logging level () and text + /// + /// Console STDOUT is set to consoleOut (scenario StringWriter type) for duration of WriteLogLine call. + /// Logging level to call WriteLogLine with () + /// Text to write to log + [Given(@"I call Log.WriteLine with level (.*) and string ""(.*)""")] + [When(@"I call Log.WriteLine with level (.*) and string ""(.*)""")] + public void WhenICallLogWithLevelAndString(Log.LogLevels logLevel, string stringToWrite) + { + Console.SetOut((StringWriter)this.scenarioContext["consoleOut"]); + Log.WriteLogLine(logLevel, stringToWrite); + var sw = new StreamWriter(Console.OpenStandardOutput()); + sw.AutoFlush = true; + Console.SetOut(sw); + } + + /// + /// Verifies Console Output contains a line of text starting and ending with required text. + /// If both empty expect Console Output to contain no lines of text. + /// + /// Text matching Console stdout line must start with. Empty string matches any. + /// Text matching Console stdout line must end with. Empty string matches any. + [Then(@"the console stdout contains a line starting with ""(.*)"" and ending with ""(.*)""")] + public void ThenTheConsoleWrittenToByLogShouldEndWith(string expectedToStartWith, string expectedToEndWith) + { + var consoleOutput = new List(); + var outputString = string.Empty; + var expectedStartString = string.IsNullOrEmpty(expectedToStartWith) ? string.Empty : expectedToStartWith; + var expectedEndString = string.IsNullOrEmpty(expectedToEndWith) ? string.Empty : expectedToEndWith; + try + { + consoleOutput = ((StringWriter)this.scenarioContext["consoleOut"]).ToString().Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); + outputString = consoleOutput.Find(x => (x.StartsWith(expectedToStartWith) && x.EndsWith(expectedToEndWith))) ?? string.Empty; + } + catch + { + // We ignore any error as we are just interested in the Console output text. + } + + string testMessage; + if (expectedStartString == string.Empty && expectedEndString == string.Empty) + { + testMessage = $"Verify Console stdio ({consoleOutput.Count} lines received) contains Zero (0) lines of text"; + } + else + { + testMessage = $"Verify Console stdio ({(consoleOutput.Count == 0 ? "0 lines received" : outputString)}) contains a line of text starting with [{(expectedStartString == string.Empty?"":expectedStartString)}] and ending with [{(expectedEndString == string.Empty ? "" : expectedEndString)}]"; + } + + Assert.IsTrue((outputString == string.Empty) == (expectedStartString == string.Empty && expectedEndString == string.Empty), testMessage); + } + + /// + /// Verifies Log delegated receiver contains a line of text starting and ending with required text. + /// If both empty expect delegated receiver to contain no lines of text. + /// + /// Text matching Log Receiver line must start with. Empty string matches any. + /// Text matching Log Receiver line must end with. Empty string matches any. + [Then(@"Log text receiver contains a line starting with ""(.*)"" and ending with ""(.*)""")] + public void ThenTheStringWrittenToByLogShouldEndWith(string expectedToStartWith, string expectedToEndWith) + { + var receiverLines = new List(); + var matchingLine = string.Empty; + var expectedStartString = string.IsNullOrEmpty(expectedToStartWith) ? string.Empty : expectedToStartWith; + var expectedEndString = string.IsNullOrEmpty(expectedToEndWith) ? string.Empty : expectedToEndWith; + try + { + receiverLines = ((string)this.scenarioContext["LogOutputReceiver"]).Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); + matchingLine = receiverLines.Find(x => (x.StartsWith(expectedToStartWith) && x.EndsWith(expectedToEndWith))) ?? string.Empty; + } + catch + { + // We ignore any error as we are just interested in the Log Receiver text. + } + + string testMessage; + if (expectedStartString == string.Empty && expectedEndString == string.Empty) + { + testMessage = $"Verify Log receiver delegate (Actual: {receiverLines.Count} lines received) received Zero (0) lines of text"; + } + else + { + testMessage = $"Verify Log receiver delegate (Actual: [{(receiverLines.Count == 0 ? "0 lines received" : matchingLine)}]) received a line of text starting with [{(expectedStartString == string.Empty ? "" : expectedStartString)}] and ending with [{(expectedEndString == string.Empty ? "" : expectedEndString)}]"; + } + + Assert.IsTrue((matchingLine == string.Empty) == (expectedStartString == string.Empty && expectedEndString == string.Empty), testMessage); + } + } +} \ No newline at end of file diff --git a/Utilities.UnitTests.net/LogTests/LogTests.feature b/Utilities.UnitTests.net/LogTests/LogTests.feature new file mode 100644 index 0000000..bbab669 --- /dev/null +++ b/Utilities.UnitTests.net/LogTests/LogTests.feature @@ -0,0 +1,68 @@ +Feature: Log + In order to test log events in the Controlium solution + As a test automator + I want to be able to log events + +Scenario Outline: Log only outputs levels equal to higher than the level selected + Given I have configured Log WriteToConsole to true + Given I set Log to level + When I call Log.WriteLine with level and string + Then the console stdout contains a line starting with and ending with +Examples: +| example description | Log Level | Write Level | Test String | Type | Output | +| Level Framework Debug write Framework Debug | FrameworkDebug | FrameworkDebug | "Test Framework Debug" | "FKDBG" | "Test Framework Debug" | +| Level Framework Debug write Framework Information | FrameworkDebug | FrameworkInformation | "Test Framework Info" | "FKINF" | "Test Framework Info" | +| Level Framework Debug write Test Debug | FrameworkDebug | TestDebug | "Test Test Debug" | "TSDBG" | "Test Test Debug" | +| Level Framework Debug write Test Information | FrameworkDebug | TestInformation | "Test Test Information" | "TSINF" | "Test Test Information" | +| Level Framework Debug write Error | FrameworkDebug | Error | "Test Error" | "ERROR" | "Test Error" | +| Level Framework Information write Framework Debug | FrameworkInformation | FrameworkDebug | "Test Framework Debug" | "" | "" | +| Level Framework Information write Framework Information | FrameworkInformation | FrameworkInformation | "Test Framework Info" | "FKINF" | "Test Framework Info" | +| Level Framework Information write Test Debug | FrameworkInformation | TestDebug | "Test Test Debug" | "TSDBG" | "Test Test Debug" | +| Level Framework Information write Test Information | FrameworkInformation | TestInformation | "Test Test Information" | "TSINF" | "Test Test Information" | +| Level Framework Information write Error | FrameworkInformation | Error | "Test Error" | "ERROR" | "Test Error" | +| Level Test Debug write Framework Debug | TestDebug | FrameworkDebug | "Test Framework Debug" | "" | "" | +| Level Test Debug write Framework Information | TestDebug | FrameworkInformation | "Test Framework Info" | "" | "" | +| Level Test Debug write Test Debug | TestDebug | TestDebug | "Test Test Debug" | "TSDBG" | "Test Test Debug" | +| Level Test Debug write Test Information | TestDebug | TestInformation | "Test Test Information" | "TSINF" | "Test Test Information" | +| Level Test Debug write Error | TestDebug | Error | "Test Error" | "ERROR" | "Test Error" | +| Level Test Information write Framework Debug | TestInformation | FrameworkDebug | "Test Framework Debug" | "" | "" | +| Level Test Information write Framework Information | TestInformation | FrameworkInformation | "Test Framework Info" | "" | "" | +| Level Test Information write Test Debug | TestInformation | TestDebug | "Test Test Debug" | "" | "" | +| Level Test Information write Test Information | TestInformation | TestInformation | "Test Test Information" | "TSINF" | "Test Test Information" | +| Level Test Information write | TestInformation | Error | "Test Error" | "ERROR" | "Test Error" | +| Level Error write Framework Debug | Error | FrameworkDebug | "Test Framework Debug" | "" | "" | +| Level Error write Framework Information | Error | FrameworkInformation | "Test Framework Info" | "" | "" | +| Level Error write Test Debug | Error | TestDebug | "Test Test Debug" | "" | "" | +| Level Error write Test Information | Error | TestInformation | "Test Test Information" | "" | "" | +| Level Error write Error | Error | Error | "Test Error" | "ERROR" | "Test Error" | + +Scenario Outline: Log output can be directed to Console or a custom output stream + Given I have configured Log WriteToConsole to + And I have Log TestToolLog delegate + And I set Log to level FrameworkDebug + When I call Log.WriteLine with level FrameworkDebug and string + Then Log text receiver contains a line starting with and ending with + And the console stdout contains a line starting with and ending with + Examples: +| Description | Write To Console | Test Tool Log | Test String | Console Line Type | Receiver Line Type | ConsoleOutput | TestLogOutput | +| WriteToConsole True - TestToolLog not configured | true | not configured | "Test Framework Debug" | "FKDBG" | "" | "Test Framework Debug" | "" | +| WriteToConsole False - TestToolLog not configured | false | not configured | "Test Framework Debug" | "FKDBG" | "" | "Test Framework Debug" | "" | +| WriteToConsole True - TestToolLog configured | true | configured | "Test Framework Debug" | "FKDBG" | "FKDBG" | "Test Framework Debug" | "Test Framework Debug" | +| WriteToConsole False - TestToolLog configured | false | configured | "Test Framework Debug" | "" | "FKDBG" | "" | "Test Framework Debug" | + +Scenario Outline: Log output can be changed in flight + Given I set Log to level FrameworkDebug + And I have configured Log WriteToConsole to + And I have Log TestToolLog delegate + And I call Log.WriteLine with level FrameworkDebug and string + When I change Log WriteToConsole to + And I have Log TestToolLog delegate + And I call Log.WriteLine with level FrameworkDebug and string + Then Log text receiver contains a line starting with "FKDBG" and ending with + And the console stdout contains a line starting with "FKDBG" and ending with + Examples: +| Description | Initial Write To Console | Second Write To Console | Test Tool Log Initially Configured | Test Tool Log Second Configured | First Test String | Second Test String | TestLogOutput | ConsoleOutput | +| Test ToolLog configured then not configured | false | false | configured | not configured | "My first string" | "My second string" | "My first string" | "My second string" | +| Test ToolLog configured then not configured while writing to console | true | true | configured | not configured | "My first string" | "My second string" | "My first string" | "My first string" | +| Test ToolLog not configured and Console output then configured and no console output | true | false | not configured | configured | "My first string" | "My second string" | "My second string" | "My first string" | +| Test ToolLog not configured and not Console output then configured and console output | false | true | not configured | configured | "My first string" | "My second string" | "My second string" | "My first string" | diff --git a/Utilities.UnitTests.net/LogTests/LogTests.feature.cs b/Utilities.UnitTests.net/LogTests/LogTests.feature.cs new file mode 100644 index 0000000..17b0d1a --- /dev/null +++ b/Utilities.UnitTests.net/LogTests/LogTests.feature.cs @@ -0,0 +1,857 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by SpecFlow (http://www.specflow.org/). +// SpecFlow Version:3.1.0.0 +// SpecFlow Generator Version:3.1.0.0 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ +#region Designer generated code +#pragma warning disable +namespace Utilities.UnitTests.net.LogTests +{ + using TechTalk.SpecFlow; + using System; + using System.Linq; + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.1.0.0")] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute()] + public partial class LogFeature + { + + private static TechTalk.SpecFlow.ITestRunner testRunner; + + private Microsoft.VisualStudio.TestTools.UnitTesting.TestContext _testContext; + + private string[] _featureTags = ((string[])(null)); + +#line 1 "LogTests.feature" +#line hidden + + public virtual Microsoft.VisualStudio.TestTools.UnitTesting.TestContext TestContext + { + get + { + return this._testContext; + } + set + { + this._testContext = value; + } + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute()] + public static void FeatureSetup(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext testContext) + { + testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); + TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Log", "\tIn order to test log events in the Controlium solution\r\n\tAs a test automator\r\n\tI" + + " want to be able to log events", ProgrammingLanguage.CSharp, ((string[])(null))); + testRunner.OnFeatureStart(featureInfo); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupAttribute()] + public static void FeatureTearDown() + { + testRunner.OnFeatureEnd(); + testRunner = null; + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute()] + public virtual void TestInitialize() + { + if (((testRunner.FeatureContext != null) + && (testRunner.FeatureContext.FeatureInfo.Title != "Log"))) + { + global::Utilities.UnitTests.net.LogTests.LogFeature.FeatureSetup(null); + } + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute()] + public virtual void TestTearDown() + { + testRunner.OnScenarioEnd(); + } + + public virtual void ScenarioInitialize(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) + { + testRunner.OnScenarioInitialize(scenarioInfo); + testRunner.ScenarioContext.ScenarioContainer.RegisterInstanceAs(_testContext); + } + + public virtual void ScenarioStart() + { + testRunner.OnScenarioStart(); + } + + public virtual void ScenarioCleanup() + { + testRunner.CollectScenarioErrors(); + } + + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected(string exampleDescription, string logLevel, string writeLevel, string testString, string type, string output, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Log only outputs levels equal to higher than the level selected", null, exampleTags); +#line 6 +this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 7 + testRunner.Given("I have configured Log WriteToConsole to true", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 8 + testRunner.Given(string.Format("I set Log to level {0}", logLevel), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 9 + testRunner.When(string.Format("I call Log.WriteLine with level {0} and string {1}", writeLevel, testString), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 10 + testRunner.Then(string.Format("the console stdout contains a line starting with {0} and ending with {1}", type, output), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Framework " + + "Debug write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Framework Debug write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Framework Debug write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "FrameworkDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"FKDBG\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Framework Debug\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelFrameworkDebugWriteFrameworkDebug() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Framework Debug write Framework Debug", "FrameworkDebug", "FrameworkDebug", "\"Test Framework Debug\"", "\"FKDBG\"", "\"Test Framework Debug\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Framework " + + "Debug write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Framework Debug write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Framework Debug write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "FrameworkDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Info\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"FKINF\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Framework Info\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelFrameworkDebugWriteFrameworkInformation() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Framework Debug write Framework Information", "FrameworkDebug", "FrameworkInformation", "\"Test Framework Info\"", "\"FKINF\"", "\"Test Framework Info\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Framework " + + "Debug write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Framework Debug write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Framework Debug write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "FrameworkDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"TSDBG\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Debug\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelFrameworkDebugWriteTestDebug() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Framework Debug write Test Debug", "FrameworkDebug", "TestDebug", "\"Test Test Debug\"", "\"TSDBG\"", "\"Test Test Debug\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Framework " + + "Debug write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Framework Debug write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Framework Debug write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "FrameworkDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Information\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"TSINF\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Information\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelFrameworkDebugWriteTestInformation() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Framework Debug write Test Information", "FrameworkDebug", "TestInformation", "\"Test Test Information\"", "\"TSINF\"", "\"Test Test Information\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Framework " + + "Debug write Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Framework Debug write Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Framework Debug write Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "FrameworkDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Error\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"ERROR\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Error\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelFrameworkDebugWriteError() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Framework Debug write Error", "FrameworkDebug", "Error", "\"Test Error\"", "\"ERROR\"", "\"Test Error\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Framework " + + "Information write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Framework Information write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Framework Information write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "FrameworkInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelFrameworkInformationWriteFrameworkDebug() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Framework Information write Framework Debug", "FrameworkInformation", "FrameworkDebug", "\"Test Framework Debug\"", "\"\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Framework " + + "Information write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Framework Information write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Framework Information write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "FrameworkInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Info\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"FKINF\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Framework Info\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelFrameworkInformationWriteFrameworkInformation() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Framework Information write Framework Information", "FrameworkInformation", "FrameworkInformation", "\"Test Framework Info\"", "\"FKINF\"", "\"Test Framework Info\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Framework " + + "Information write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Framework Information write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Framework Information write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "FrameworkInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"TSDBG\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Debug\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelFrameworkInformationWriteTestDebug() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Framework Information write Test Debug", "FrameworkInformation", "TestDebug", "\"Test Test Debug\"", "\"TSDBG\"", "\"Test Test Debug\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Framework " + + "Information write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Framework Information write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Framework Information write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "FrameworkInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Information\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"TSINF\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Information\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelFrameworkInformationWriteTestInformation() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Framework Information write Test Information", "FrameworkInformation", "TestInformation", "\"Test Test Information\"", "\"TSINF\"", "\"Test Test Information\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Framework " + + "Information write Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Framework Information write Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Framework Information write Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "FrameworkInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Error\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"ERROR\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Error\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelFrameworkInformationWriteError() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Framework Information write Error", "FrameworkInformation", "Error", "\"Test Error\"", "\"ERROR\"", "\"Test Error\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Test Debug" + + " write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Test Debug write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Test Debug write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "TestDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelTestDebugWriteFrameworkDebug() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Test Debug write Framework Debug", "TestDebug", "FrameworkDebug", "\"Test Framework Debug\"", "\"\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Test Debug" + + " write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Test Debug write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Test Debug write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "TestDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Info\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelTestDebugWriteFrameworkInformation() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Test Debug write Framework Information", "TestDebug", "FrameworkInformation", "\"Test Framework Info\"", "\"\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Test Debug" + + " write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Test Debug write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Test Debug write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "TestDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"TSDBG\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Debug\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelTestDebugWriteTestDebug() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Test Debug write Test Debug", "TestDebug", "TestDebug", "\"Test Test Debug\"", "\"TSDBG\"", "\"Test Test Debug\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Test Debug" + + " write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Test Debug write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Test Debug write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "TestDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Information\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"TSINF\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Information\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelTestDebugWriteTestInformation() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Test Debug write Test Information", "TestDebug", "TestInformation", "\"Test Test Information\"", "\"TSINF\"", "\"Test Test Information\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Test Debug" + + " write Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Test Debug write Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Test Debug write Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "TestDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Error\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"ERROR\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Error\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelTestDebugWriteError() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Test Debug write Error", "TestDebug", "Error", "\"Test Error\"", "\"ERROR\"", "\"Test Error\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Test Infor" + + "mation write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Test Information write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Test Information write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "TestInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelTestInformationWriteFrameworkDebug() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Test Information write Framework Debug", "TestInformation", "FrameworkDebug", "\"Test Framework Debug\"", "\"\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Test Infor" + + "mation write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Test Information write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Test Information write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "TestInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Info\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelTestInformationWriteFrameworkInformation() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Test Information write Framework Information", "TestInformation", "FrameworkInformation", "\"Test Framework Info\"", "\"\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Test Infor" + + "mation write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Test Information write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Test Information write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "TestInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelTestInformationWriteTestDebug() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Test Information write Test Debug", "TestInformation", "TestDebug", "\"Test Test Debug\"", "\"\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Test Infor" + + "mation write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Test Information write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Test Information write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "TestInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Information\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"TSINF\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Test Information\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelTestInformationWriteTestInformation() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Test Information write Test Information", "TestInformation", "TestInformation", "\"Test Test Information\"", "\"TSINF\"", "\"Test Test Information\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Test Infor" + + "mation write")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Test Information write")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Test Information write")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "TestInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Error\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"ERROR\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Error\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelTestInformationWrite() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Test Information write", "TestInformation", "Error", "\"Test Error\"", "\"ERROR\"", "\"Test Error\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Error writ" + + "e Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Error write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Error write Framework Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelErrorWriteFrameworkDebug() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Error write Framework Debug", "Error", "FrameworkDebug", "\"Test Framework Debug\"", "\"\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Error writ" + + "e Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Error write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Error write Framework Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "FrameworkInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Info\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelErrorWriteFrameworkInformation() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Error write Framework Information", "Error", "FrameworkInformation", "\"Test Framework Info\"", "\"\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Error writ" + + "e Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Error write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Error write Test Debug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestDebug")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelErrorWriteTestDebug() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Error write Test Debug", "Error", "TestDebug", "\"Test Test Debug\"", "\"\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Error writ" + + "e Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Error write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Error write Test Information")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "TestInformation")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Test Information\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelErrorWriteTestInformation() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Error write Test Information", "Error", "TestInformation", "\"Test Test Information\"", "\"\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log only outputs levels equal to higher than the level selected: Level Error writ" + + "e Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Level Error write Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:example description", "Level Error write Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Log Level", "Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write Level", "Error")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Error\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Type", "\"ERROR\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Output", "\"Test Error\"")] + public virtual void LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected_LevelErrorWriteError() + { +#line 6 +this.LogOnlyOutputsLevelsEqualToHigherThanTheLevelSelected("Level Error write Error", "Error", "Error", "\"Test Error\"", "\"ERROR\"", "\"Test Error\"", ((string[])(null))); +#line hidden + } + + public virtual void LogOutputCanBeDirectedToConsoleOrACustomOutputStream(string description, string writeToConsole, string testToolLog, string testString, string consoleLineType, string receiverLineType, string consoleOutput, string testLogOutput, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Log output can be directed to Console or a custom output stream", null, exampleTags); +#line 39 +this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 40 + testRunner.Given(string.Format("I have configured Log WriteToConsole to {0}", writeToConsole), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 41 + testRunner.And(string.Format("I have {0} Log TestToolLog delegate", testToolLog), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 42 + testRunner.And("I set Log to level FrameworkDebug", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 43 + testRunner.When(string.Format("I call Log.WriteLine with level FrameworkDebug and string {0}", testString), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 44 + testRunner.Then(string.Format("Log text receiver contains a line starting with {0} and ending with {1}", receiverLineType, testLogOutput), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 45 + testRunner.And(string.Format("the console stdout contains a line starting with {0} and ending with {1}", consoleLineType, consoleOutput), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log output can be directed to Console or a custom output stream: WriteToConsole T" + + "rue - TestToolLog not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "WriteToConsole True - TestToolLog not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Description", "WriteToConsole True - TestToolLog not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write To Console", "true")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log", "not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Console Line Type", "\"FKDBG\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Receiver Line Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"\"")] + public virtual void LogOutputCanBeDirectedToConsoleOrACustomOutputStream_WriteToConsoleTrue_TestToolLogNotConfigured() + { +#line 39 +this.LogOutputCanBeDirectedToConsoleOrACustomOutputStream("WriteToConsole True - TestToolLog not configured", "true", "not configured", "\"Test Framework Debug\"", "\"FKDBG\"", "\"\"", "\"Test Framework Debug\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log output can be directed to Console or a custom output stream: WriteToConsole F" + + "alse - TestToolLog not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "WriteToConsole False - TestToolLog not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Description", "WriteToConsole False - TestToolLog not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write To Console", "false")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log", "not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Console Line Type", "\"FKDBG\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Receiver Line Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"\"")] + public virtual void LogOutputCanBeDirectedToConsoleOrACustomOutputStream_WriteToConsoleFalse_TestToolLogNotConfigured() + { +#line 39 +this.LogOutputCanBeDirectedToConsoleOrACustomOutputStream("WriteToConsole False - TestToolLog not configured", "false", "not configured", "\"Test Framework Debug\"", "\"FKDBG\"", "\"\"", "\"Test Framework Debug\"", "\"\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log output can be directed to Console or a custom output stream: WriteToConsole T" + + "rue - TestToolLog configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "WriteToConsole True - TestToolLog configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Description", "WriteToConsole True - TestToolLog configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write To Console", "true")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log", "configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Console Line Type", "\"FKDBG\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Receiver Line Type", "\"FKDBG\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"Test Framework Debug\"")] + public virtual void LogOutputCanBeDirectedToConsoleOrACustomOutputStream_WriteToConsoleTrue_TestToolLogConfigured() + { +#line 39 +this.LogOutputCanBeDirectedToConsoleOrACustomOutputStream("WriteToConsole True - TestToolLog configured", "true", "configured", "\"Test Framework Debug\"", "\"FKDBG\"", "\"FKDBG\"", "\"Test Framework Debug\"", "\"Test Framework Debug\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log output can be directed to Console or a custom output stream: WriteToConsole F" + + "alse - TestToolLog configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "WriteToConsole False - TestToolLog configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Description", "WriteToConsole False - TestToolLog configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Write To Console", "false")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log", "configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test String", "\"Test Framework Debug\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Console Line Type", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Receiver Line Type", "\"FKDBG\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"Test Framework Debug\"")] + public virtual void LogOutputCanBeDirectedToConsoleOrACustomOutputStream_WriteToConsoleFalse_TestToolLogConfigured() + { +#line 39 +this.LogOutputCanBeDirectedToConsoleOrACustomOutputStream("WriteToConsole False - TestToolLog configured", "false", "configured", "\"Test Framework Debug\"", "\"\"", "\"FKDBG\"", "\"\"", "\"Test Framework Debug\"", ((string[])(null))); +#line hidden + } + + public virtual void LogOutputCanBeChangedInFlight(string description, string initialWriteToConsole, string secondWriteToConsole, string testToolLogInitiallyConfigured, string testToolLogSecondConfigured, string firstTestString, string secondTestString, string testLogOutput, string consoleOutput, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Log output can be changed in flight", null, exampleTags); +#line 53 +this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 54 + testRunner.Given("I set Log to level FrameworkDebug", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 55 + testRunner.And(string.Format("I have configured Log WriteToConsole to {0}", initialWriteToConsole), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 56 + testRunner.And(string.Format("I have {0} Log TestToolLog delegate", testToolLogInitiallyConfigured), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 57 + testRunner.And(string.Format("I call Log.WriteLine with level FrameworkDebug and string {0}", firstTestString), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 58 + testRunner.When(string.Format("I change Log WriteToConsole to {0}", secondWriteToConsole), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 59 + testRunner.And(string.Format("I have {0} Log TestToolLog delegate", testToolLogSecondConfigured), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 60 + testRunner.And(string.Format("I call Log.WriteLine with level FrameworkDebug and string {0}", secondTestString), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 61 + testRunner.Then(string.Format("Log text receiver contains a line starting with \"FKDBG\" and ending with {0}", testLogOutput), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 62 + testRunner.And(string.Format("the console stdout contains a line starting with \"FKDBG\" and ending with {0}", consoleOutput), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log output can be changed in flight: Test ToolLog configured then not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Test ToolLog configured then not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Description", "Test ToolLog configured then not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Initial Write To Console", "false")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Write To Console", "false")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log Initially Configured", "configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log Second Configured", "not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:First Test String", "\"My first string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Test String", "\"My second string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"My first string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"My second string\"")] + public virtual void LogOutputCanBeChangedInFlight_TestToolLogConfiguredThenNotConfigured() + { +#line 53 +this.LogOutputCanBeChangedInFlight("Test ToolLog configured then not configured", "false", "false", "configured", "not configured", "\"My first string\"", "\"My second string\"", "\"My first string\"", "\"My second string\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log output can be changed in flight: Test ToolLog configured then not configured " + + "while writing to console")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Test ToolLog configured then not configured while writing to console")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Description", "Test ToolLog configured then not configured while writing to console")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Initial Write To Console", "true")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Write To Console", "true")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log Initially Configured", "configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log Second Configured", "not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:First Test String", "\"My first string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Test String", "\"My second string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"My first string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"My first string\"")] + public virtual void LogOutputCanBeChangedInFlight_TestToolLogConfiguredThenNotConfiguredWhileWritingToConsole() + { +#line 53 +this.LogOutputCanBeChangedInFlight("Test ToolLog configured then not configured while writing to console", "true", "true", "configured", "not configured", "\"My first string\"", "\"My second string\"", "\"My first string\"", "\"My first string\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log output can be changed in flight: Test ToolLog not configured and Console outp" + + "ut then configured and no console output")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Test ToolLog not configured and Console output then configured and no console out" + + "put")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Description", "Test ToolLog not configured and Console output then configured and no console out" + + "put")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Initial Write To Console", "true")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Write To Console", "false")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log Initially Configured", "not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log Second Configured", "configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:First Test String", "\"My first string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Test String", "\"My second string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"My second string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"My first string\"")] + public virtual void LogOutputCanBeChangedInFlight_TestToolLogNotConfiguredAndConsoleOutputThenConfiguredAndNoConsoleOutput() + { +#line 53 +this.LogOutputCanBeChangedInFlight("Test ToolLog not configured and Console output then configured and no console out" + + "put", "true", "false", "not configured", "configured", "\"My first string\"", "\"My second string\"", "\"My second string\"", "\"My first string\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("Log output can be changed in flight: Test ToolLog not configured and not Console " + + "output then configured and console output")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Log")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Test ToolLog not configured and not Console output then configured and console ou" + + "tput")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Description", "Test ToolLog not configured and not Console output then configured and console ou" + + "tput")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Initial Write To Console", "false")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Write To Console", "true")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log Initially Configured", "not configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Test Tool Log Second Configured", "configured")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:First Test String", "\"My first string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Second Test String", "\"My second string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:TestLogOutput", "\"My second string\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:ConsoleOutput", "\"My first string\"")] + public virtual void LogOutputCanBeChangedInFlight_TestToolLogNotConfiguredAndNotConsoleOutputThenConfiguredAndConsoleOutput() + { +#line 53 +this.LogOutputCanBeChangedInFlight("Test ToolLog not configured and not Console output then configured and console ou" + + "tput", "false", "true", "not configured", "configured", "\"My first string\"", "\"My second string\"", "\"My second string\"", "\"My first string\"", ((string[])(null))); +#line hidden + } + } +} +#pragma warning restore +#endregion diff --git a/Utilities.UnitTests.net/RepositoryTests/RepositoryTestSteps.cs b/Utilities.UnitTests.net/RepositoryTests/RepositoryTestSteps.cs new file mode 100644 index 0000000..98c600a --- /dev/null +++ b/Utilities.UnitTests.net/RepositoryTests/RepositoryTestSteps.cs @@ -0,0 +1,213 @@ +namespace TeamControlium.Utilities.UnitTests +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Globalization; + using System.IO; + using System.Linq; + using System.Text.RegularExpressions; + using System.Threading; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using TechTalk.SpecFlow; + using static TeamControlium.Utilities.Detokenizer; + using static TeamControlium.Utilities.Log; + using static TeamControlium.Utilities.Repository; + + [Binding] + public sealed class RepositoryTestSteps + { + private readonly ScenarioContext _scenarioContext; + public RepositoryTestSteps(ScenarioContext scenarioContext) + { + _scenarioContext = scenarioContext; + } + + [BeforeFeature] + public static void BeforeFeature() + { + CurrentLoggingLevel = LogLevels.FrameworkDebug; + TestToolLog = (s) => { Debug.WriteLine(s); }; + WriteToConsole = false; + } + + [BeforeScenario()] + [Scope(Feature = "Repository Tests")] + public static void BeforeScenario() + { + ClearRepositoryAll(); + Detokenizer.CustomTokenProcessor = ProcessCustomDetokenizer; + } + + public static string ProcessCustomDetokenizer(char delimiter, string[] token) + { + string returnString = null; + + if (token[0] == "repository") + { + switch (token[1].ToLower().Trim()) + { + case "threadid": + { + returnString = Thread.CurrentThread.ManagedThreadId.ToString(); + } + break; + default: + throw new Exception($"Unknown repository token expression [{token[1]}]. Expected 'ThreadID'"); + } + } + return returnString; + } + + [Given(@"I clone Global test data to Local test data, ((?:not ){0,1})overwriting any existing")] + [When(@"I clone Global test data to Local test data, ((?:not ){0,1})overwriting any existing")] + public void GivenICloneGlobalTestDataToLocalTestDataOverwritingAnyExisting(string blankOrNot) + { + TryCloneGlobalToLocal(blankOrNot.Trim().ToLower() == ""); + } + + + + + [Given(@"I have saved string ""(.*)"" \(Item (.*)\) in Repository (?i)(local|global), Category ""(.*)"", Item Name ""(.*)""")] + [When(@"I have saved string ""(.*)"" \(Item (.*)\) in Repository (?i)(local|global), Category ""(.*)"", Item Name ""(.*)""")] + public void GivenIHaveSavedStringInRepositoryLocalCategoryItemName(string item, int savedItemIndex, string localOrGlobal, string categoryName, string itemName) + { + _scenarioContext[$"Saved-{savedItemIndex}"] = item; + if (localOrGlobal.ToLower().Trim() == "local") + { + ItemLocal[categoryName, itemName] = item; + } + else if (localOrGlobal.ToLower().Trim() == "global") + { + ItemGlobal[categoryName, itemName] = item; + } + else + { + Assert.Inconclusive($"Unrecognised GlobalDataItem ({ItemGlobal}). Should be Thread or Global to denote test data repo"); + } + } + + [Given(@"I have saved integer (.*) \(Item (.*)\) in Repository (?i)(local|global), Category ""(.*)"", Item Name ""(.*)""")] + [When(@"I have saved integer (.*) \(Item (.*)\) in Repository (?i)(local|global), Category ""(.*)"", Item Name ""(.*)""")] + public void GivenIHaveSavedIntegerInRepositoryLocalCategoryItemName(int item, int savedItemIndex, string localOrGlobal, string categoryName, string itemName) + { + _scenarioContext[$"Saved-{savedItemIndex}"] = item; + if (localOrGlobal.ToLower().Trim() == "local") + { + ItemLocal[categoryName, itemName] = item; + } + else if (localOrGlobal.ToLower().Trim() == "global") + { + ItemGlobal[categoryName, itemName] = item; + } + else + { + Assert.Inconclusive($"Unrecognised GlobalDataItem ({ItemGlobal}). Should be Thread or Global to denote test data repo"); + } + } + + + + [When(@"I recall \(Item (.*)\) from (?i)(local|global), Category ""(.*)"", Item Name ""(.*)""")] + public void WhenIRecallStringItemFromCategoryItemName(int recalledItemIndex, string localOrGlobal, string categoryName, string itemName) + { + bool isLocal = localOrGlobal.ToLower().Trim() == "local"; + bool success = false; + dynamic value = null; + if (isLocal) + { + success = TryGetItemLocal(categoryName, itemName, out value); + } + else if (localOrGlobal.ToLower().Trim() == "global") + { + success = TryGetItemGlobal(categoryName, itemName, out value); + } + + if (success) + _scenarioContext[$"Recalled-{recalledItemIndex}"] = value; + else + _scenarioContext[$"Recalled-{recalledItemIndex}"] = RepositoryLastTryException(); + } + + + [When(@"I recall \(Item (.*)\) from (?i)(local|global), Category ""(.*)"", Item Name ""(.*)"" as a \[""(.*)""]")] + public void WhenIRecallStringItemFromLocalCategoryItemName(int recalledItemIndex, string localOrGlobal, string categoryName, string itemName, string requiredType) + { + bool isLocal = localOrGlobal.ToLower().Trim() == "local"; + bool success = false; + dynamic value = null; + object[] parameters = new object[] { categoryName, itemName, null }; + var gash = typeof(Repository).GetMethods(); + var mi = typeof(Repository).GetMethods().Where(method => (method.Name == (isLocal ? "TryGetItemLocal" : "TryGetItemGlobal") && method.IsGenericMethod == true && method.GetParameters().Length==3)); + var fooRef = mi.First().MakeGenericMethod(Type.GetType(requiredType)); + success = (bool)fooRef.Invoke(null, parameters); + if (success) + { + value = (dynamic)parameters[2]; + } + if (success) + _scenarioContext[$"Recalled-{recalledItemIndex}"] = value; + else + _scenarioContext[$"Recalled-{recalledItemIndex}"] = RepositoryLastTryException(); + } + + + [When(@"I clear the (?i)(local|global) repository")] + public void WhenIClearTheLocalTestData(string localOrGlobal) + { + if (localOrGlobal.ToLower().Trim() == "local") + { + ClearRepositoryLocal(); + } + else + { + ClearRepositoryGlobal(); + } + } + + + + [Then(@"the recalled (.*) value matches the saved (.*) value")] + public void ThenTheRecalledValueMatchesTheSavedValue(int recalledIndex, int savedIndex) + { + if (!_scenarioContext.ContainsKey($"Saved-{savedIndex}")) + Assert.Inconclusive($"No [Saved-{savedIndex}] scenario context key"); + if (!_scenarioContext.ContainsKey($"Recalled-{recalledIndex}")) + Assert.Inconclusive($"No [Recalled-{recalledIndex}] scenario context key"); + + Assert.AreEqual(_scenarioContext[$"Saved-{savedIndex}"], _scenarioContext[$"Recalled-{recalledIndex}"], "Verify recalled [{0}] (Actual) value ({1}) matches saved [{2}] (Expected) value ({3})", recalledIndex, _scenarioContext[$"Recalled-{recalledIndex}"], savedIndex, _scenarioContext[$"Saved-{savedIndex}"]); + } + + [Then(@"the recalled (.*) value is an exception with innermost exception message ""(.*)""")] + public void ThenTheRecalledValueIsError(int recalledIndex, string rawErrorText) + { + object dynError = _scenarioContext[$"Recalled-{recalledIndex}"]; + string errorText = Detokenize(rawErrorText); + + Assert.IsInstanceOfType(dynError, typeof(Exception)); + + Exception exception = (Exception)_scenarioContext[$"Recalled-{recalledIndex}"]; + while (exception.InnerException != null) exception = exception.InnerException; + + string expectedText = (new string(errorText.Where(c => char.IsLetter(c) || char.IsDigit(c)).ToArray())).Replace(" ", "").Trim(); + string actualText = (new string(exception.Message.Where(c => char.IsLetter(c) || char.IsDigit(c)).ToArray())).Replace(" ", "").Trim(); + + + Assert.AreEqual(expectedText, actualText); + } + + + [Then(@"an Exception is thrown with text ""(.*)""")] + public void ThenAnExceptionIsThrownWithText(string exceptionText) + { + if (RepositoryLastTryException()!=null) + { + // Assert.AreEqual(exceptionText, RepositoryLastTryException(), ) + } + } + + + + } +} \ No newline at end of file diff --git a/Utilities.UnitTests.net/RepositoryTests/RepositoryTests.feature b/Utilities.UnitTests.net/RepositoryTests/RepositoryTests.feature new file mode 100644 index 0000000..ccd08ea --- /dev/null +++ b/Utilities.UnitTests.net/RepositoryTests/RepositoryTests.feature @@ -0,0 +1,159 @@ +Feature: Repository Tests + In order to test Repository + As a test automator + I want to be able to save and recall test data + + Scenario Outline: 1.0.0 - Save and recall a string to Repository + Given I have saved string (Item 1) in Repository , Category , Item Name + When I recall (Item 1) from , Category , Item Name + Then the recalled 1 value matches the saved 1 value + Examples: + | Repository | Data Item | Category Name | Item Name | + | Local | "My data" | "MyCategory" | "MyItem" | + | Global | "My data" | "MyCategory" | "MyItem" | + + Scenario Outline: 1.0.1 - Save and recall two strings from same Category + Given I have saved string (Item 1) in Repository , Category , Item Name + And I have saved string (Item 2) in Repository , Category , Item Name + When I recall (Item 1) from , Category , Item Name + And I recall (Item 2) from , Category , Item Name + Then the recalled 1 value matches the saved 1 value + And the recalled 2 value matches the saved 2 value + Examples: + | Repository | Data Item1 | Data Item2 | Category Name | Item Name1 | Item Name2 | + | Local | "My data one" | "My data two" | "MyCategory" | "My Item one" | "My Item two" | + | Global | "My data one" | "My data two" | "MyCategory" | "My Item one" | "My Item two" | + + + + Scenario Outline: 1.0.2 - Save and recall two strings from different Categories + Given I have saved string (Item 1) in Repository , Category , Item Name + And I have saved string (Item 2) in Repository , Category , Item Name + When I recall (Item 1) from , Category , Item Name + And I recall (Item 2) from , Category , Item Name + Then the recalled 1 value matches the saved 1 value + And the recalled 2 value matches the saved 2 value + Examples: + | Repository | Data Item1 | Data Item2 | Category Name1 | Category Name2 | Item Name1 | Item Name2 | + | Local | "My data one" | "My data two" | "MyCategory one" | "MyCategory two" | "My Item one" | "My Item two" | + | Global | "My data one" | "My data two" | "MyCategory one" | "MyCategory two" | "My Item one" | "My Item two" | + + Scenario Outline: 1.0.3 - Save and recall two strings using Local and Global repositories + Given I have saved string (Item 1) in Repository , Category , Item Name + And I have saved string (Item 2) in Repository , Category , Item Name + When I recall (Item 1) from , Category , Item Name + And I recall (Item 2) from , Category , Item Name + Then the recalled 1 value matches the saved 1 value + And the recalled 2 value matches the saved 2 value + Examples: + | Repository1 | Repository2 | Data Item1 | Data Item2 | Category Name1 | Category Name2 | Item Name1 | Item Name2 | + | Local | Global | "My data one" | "My data two" | "MyCategory" | "MyCategory" | "My Item" | "My Item" | + + + Scenario Outline: 1.0.4 - Save and recall an integer to Repository + Given I have saved integer (Item 1) in Repository , Category , Item Name + When I recall (Item 1) from , Category , Item Name + Then the recalled 1 value matches the saved 1 value + Examples: + | Repository | Data Item | Category Name | Item Name | + | Local | 23 | "MyCategory" | "MyItem" | + | Global | 23 | "MyCategory" | "MyItem" | + + + Scenario Outline: 1.0.5 - Save and recall one string and one int from same Category + Given I have saved string (Item 1) in Repository , Category , Item Name + And I have saved integer (Item 2) in Repository , Category , Item Name + When I recall (Item 1) from , Category , Item Name + And I recall (Item 2) from , Category , Item Name + Then the recalled 1 value matches the saved 1 value + And the recalled 2 value matches the saved 2 value + Examples: + | Repository | Data Item1 | Data Item2 | Category Name | Item Name1 | Item Name2 | + | Local | "My data one" | 24 | "MyCategory" | "My Item one" | "My Item two" | + | Global | "My data one" | 24 | "MyCategory" | "My Item one" | "My Item two" | + + Scenario Outline: 1.0.6 - Change a string value in test data + Given I have saved string (Item 1) in Repository , Category , Item Name + And I have saved string (Item 2) in Repository , Category , Item Name + When I recall (Item 1) from , Category , Item Name + Then the recalled 1 value matches the saved 2 value + Examples: + | Repository | Data Item1 | Data Item2 | Category Name | Item Name | Item Name | + | Local | "My data one" | "My data two" | "MyCategory" | "MyItem one" | "MyItem two" | + | Global | "My data one" | "My data two" | "MyCategory" | "MyItem one" | "MyItem two" | + + Scenario Outline: 1.0.7 - Change an integer value in test data + Given I have saved integer (Item 1) in Repository , Category , Item Name + And I have saved integer (Item 2) in Repository , Category , Item Name + When I recall (Item 1) from , Category , Item Name + Then the recalled 1 value matches the saved 2 value + Examples: + | Repository | Data Item1 | Data Item2 | Category Name | Item Name | Item Name | + | Local | 23 | 65 | "MyCategory" | "MyItem one" | "MyItem two" | + | Global | 55 | 93 | "MyCategory" | "MyItem one" | "MyItem two" | + + + Scenario Outline: 1.0.8 - Change an integer value to a string value in test data + Given I have saved integer (Item 1) in Repository , Category , Item Name + And I have saved string (Item 2) in Repository , Category , Item Name + When I recall (Item 1) from , Category , Item Name + Then the recalled 1 value matches the saved 2 value + Examples: + | Repository | Data Item1 | Data Item2 | Category Name | Item Name | Item Name | + | Local | 23 | "Im a string now" | "MyCategory" | "MyItem one" | "MyItem two" | + | Global | 55 | "Im a string now" | "MyCategory" | "MyItem one" | "MyItem two" | + + Scenario Outline: 1.0.9 - Recall a strongly typed String + Given I have saved string (Item 1) in Repository , Category , Item Name + When I recall (Item 1) from , Category , Item Name as a ["System.String"] + Then the recalled 1 value matches the saved 1 value + Examples: + | Repository | Data Item | Category Name | Item Name | + | Local | "My data" | "MyCategory" | "MyItem" | + | Global | "My data" | "MyCategory" | "MyItem" | + + + Scenario Outline: 1.1.0 - Correct error if I try to get a string as an integer + Given I have saved string (Item 1) in Repository , Category , Item Name + When I recall (Item 1) from , Category , Item Name as a ["System.Int32"] + Then the recalled 1 value is an exception with innermost exception message "Expected type [Int32] but got type System.String" + Examples: + | Repository | Data Item | Category Name | Item Name | + | Local | "My data" | "MyCategory" | "MyItem" | + | Global | "My data" | "MyCategory" | "MyItem" | + + + Scenario Outline: 1.1.1 - Verify Local and Global repositories can be cleared + Given I have saved string (Item 1) in Repository , Category , Item Name + When I clear the repository + And I recall (Item 1) from , Category , Item Name + Then the recalled 1 value is an exception with innermost exception message + Examples: + | Repository | Data Item | Category Name | Item Name | Exception Text | + | Local | "My data" | "MyCategory" | "MyItem" | "Category name My Category does not exist in Local (ThreadID 4) repository. Category name must be valid and exist." | + | Global | "My data" | "MyCategory" | "MyItem" | "Category name MyCategory does not exist in Global repository. Category name must be valid and exist" | + + + Scenario: 1.2.0 - Clone Global test data to Local, overwriting any existing data + Given I have saved string "Saved to Global" (Item 1) in Repository Global, Category "MyCat", Item Name "MyItem1" + And I have saved string "Saved to Local" (Item 2) in Repository Local, Category "MyCat", Item Name "MyItem2" + And I clone Global test data to Local test data, overwriting any existing + When I recall (Item 1) from Global, Category "MyCat", Item Name "MyItem1" + And I recall (Item 2) from Local, Category "MyCat", Item Name "MyItem1" + Then the recalled 1 value matches the saved 1 value + And the recalled 2 value matches the saved 1 value + + Scenario: 1.2.1 - Verify data is not overwritten if requested + Given I have saved string "Saved to Global" (Item 1) in Repository Global, Category "MyCat", Item Name "MyItem1" + And I have saved string "Saved to Local" (Item 2) in Repository Local, Category "MyCat", Item Name "MyItem2" + When I clone Global test data to Local test data, not overwriting any existing + Then an Exception is thrown with text "Wobble" + + Scenario: 1.2.2 - Verify values are cloned not references + Given I have saved string "My cloned Data" (Item 1) in Repository Global, Category "MyCat", Item Name "MyItem1" + And I clone Global test data to Local test data, overwriting any existing + When I have saved string "My new Global Data" (Item 2) in Repository Global, Category "MyCat", Item Name "MyItem1" + And I recall (Item 1) from Global, Category "MyCat", Item Name "MyItem1" + And I recall (Item 2) from Local, Category "MyCat", Item Name "MyItem1" + Then the recalled 1 value matches the saved 2 value + And the recalled 2 value matches the saved 1 value \ No newline at end of file diff --git a/Utilities.UnitTests.net/RepositoryTests/RepositoryTests.feature.cs b/Utilities.UnitTests.net/RepositoryTests/RepositoryTests.feature.cs new file mode 100644 index 0000000..59feb34 --- /dev/null +++ b/Utilities.UnitTests.net/RepositoryTests/RepositoryTests.feature.cs @@ -0,0 +1,1124 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by SpecFlow (http://www.specflow.org/). +// SpecFlow Version:3.1.0.0 +// SpecFlow Generator Version:3.1.0.0 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ +#region Designer generated code +#pragma warning disable +namespace Utilities.UnitTests.net.RepositoryTests +{ + using TechTalk.SpecFlow; + using System; + using System.Linq; + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.1.0.0")] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute()] + public partial class RepositoryTestsFeature + { + + private static TechTalk.SpecFlow.ITestRunner testRunner; + + private Microsoft.VisualStudio.TestTools.UnitTesting.TestContext _testContext; + + private string[] _featureTags = ((string[])(null)); + +#line 1 "RepositoryTests.feature" +#line hidden + + public virtual Microsoft.VisualStudio.TestTools.UnitTesting.TestContext TestContext + { + get + { + return this._testContext; + } + set + { + this._testContext = value; + } + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute()] + public static void FeatureSetup(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext testContext) + { + testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); + TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Repository Tests", "\tIn order to test Repository\r\n\tAs a test automator\r\n\tI want to be able to save an" + + "d recall test data", ProgrammingLanguage.CSharp, ((string[])(null))); + testRunner.OnFeatureStart(featureInfo); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupAttribute()] + public static void FeatureTearDown() + { + testRunner.OnFeatureEnd(); + testRunner = null; + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute()] + public virtual void TestInitialize() + { + if (((testRunner.FeatureContext != null) + && (testRunner.FeatureContext.FeatureInfo.Title != "Repository Tests"))) + { + global::Utilities.UnitTests.net.RepositoryTests.RepositoryTestsFeature.FeatureSetup(null); + } + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute()] + public virtual void TestTearDown() + { + testRunner.OnScenarioEnd(); + } + + public virtual void ScenarioInitialize(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) + { + testRunner.OnScenarioInitialize(scenarioInfo); + testRunner.ScenarioContext.ScenarioContainer.RegisterInstanceAs(_testContext); + } + + public virtual void ScenarioStart() + { + testRunner.OnScenarioStart(); + } + + public virtual void ScenarioCleanup() + { + testRunner.CollectScenarioErrors(); + } + + public virtual void _1_0_0_SaveAndRecallAStringToRepository(string repository, string dataItem, string categoryName, string itemName, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.0.0 - Save and recall a string to Repository", null, exampleTags); +#line 6 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 7 + testRunner.Given(string.Format("I have saved string {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem, repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 8 + testRunner.When(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2}", repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 9 + testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.0 - Save and recall a string to Repository: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item", "\"My data\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem\"")] + public virtual void _1_0_0_SaveAndRecallAStringToRepository_Local() + { +#line 6 + this._1_0_0_SaveAndRecallAStringToRepository("Local", "\"My data\"", "\"MyCategory\"", "\"MyItem\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.0 - Save and recall a string to Repository: Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item", "\"My data\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem\"")] + public virtual void _1_0_0_SaveAndRecallAStringToRepository_Global() + { +#line 6 + this._1_0_0_SaveAndRecallAStringToRepository("Global", "\"My data\"", "\"MyCategory\"", "\"MyItem\"", ((string[])(null))); +#line hidden + } + + public virtual void _1_0_1_SaveAndRecallTwoStringsFromSameCategory(string repository, string dataItem1, string dataItem2, string categoryName, string itemName1, string itemName2, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.0.1 - Save and recall two strings from same Category", null, exampleTags); +#line 15 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 16 + testRunner.Given(string.Format("I have saved string {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem1, repository, categoryName, itemName1), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 17 + testRunner.And(string.Format("I have saved string {0} (Item 2) in Repository {1}, Category {2}, Item Name {3}", dataItem2, repository, categoryName, itemName2), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 18 + testRunner.When(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2}", repository, categoryName, itemName1), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 19 + testRunner.And(string.Format("I recall (Item 2) from {0}, Category {1}, Item Name {2}", repository, categoryName, itemName2), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 20 + testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 21 + testRunner.And("the recalled 2 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.1 - Save and recall two strings from same Category: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "\"My data one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "\"My data two\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name1", "\"My Item one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name2", "\"My Item two\"")] + public virtual void _1_0_1_SaveAndRecallTwoStringsFromSameCategory_Local() + { +#line 15 + this._1_0_1_SaveAndRecallTwoStringsFromSameCategory("Local", "\"My data one\"", "\"My data two\"", "\"MyCategory\"", "\"My Item one\"", "\"My Item two\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.1 - Save and recall two strings from same Category: Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "\"My data one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "\"My data two\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name1", "\"My Item one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name2", "\"My Item two\"")] + public virtual void _1_0_1_SaveAndRecallTwoStringsFromSameCategory_Global() + { +#line 15 + this._1_0_1_SaveAndRecallTwoStringsFromSameCategory("Global", "\"My data one\"", "\"My data two\"", "\"MyCategory\"", "\"My Item one\"", "\"My Item two\"", ((string[])(null))); +#line hidden + } + + public virtual void _1_0_2_SaveAndRecallTwoStringsFromDifferentCategories(string repository, string dataItem1, string dataItem2, string categoryName1, string categoryName2, string itemName1, string itemName2, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.0.2 - Save and recall two strings from different Categories", null, exampleTags); +#line 29 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 30 + testRunner.Given(string.Format("I have saved string {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem1, repository, categoryName1, itemName1), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 31 + testRunner.And(string.Format("I have saved string {0} (Item 2) in Repository {1}, Category {2}, Item Name {3}", dataItem2, repository, categoryName2, itemName2), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 32 + testRunner.When(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2}", repository, categoryName1, itemName1), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 33 + testRunner.And(string.Format("I recall (Item 2) from {0}, Category {1}, Item Name {2}", repository, categoryName2, itemName2), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 34 + testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 35 + testRunner.And("the recalled 2 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.2 - Save and recall two strings from different Categories: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "\"My data one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "\"My data two\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name1", "\"MyCategory one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name2", "\"MyCategory two\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name1", "\"My Item one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name2", "\"My Item two\"")] + public virtual void _1_0_2_SaveAndRecallTwoStringsFromDifferentCategories_Local() + { +#line 29 + this._1_0_2_SaveAndRecallTwoStringsFromDifferentCategories("Local", "\"My data one\"", "\"My data two\"", "\"MyCategory one\"", "\"MyCategory two\"", "\"My Item one\"", "\"My Item two\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.2 - Save and recall two strings from different Categories: Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "\"My data one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "\"My data two\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name1", "\"MyCategory one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name2", "\"MyCategory two\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name1", "\"My Item one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name2", "\"My Item two\"")] + public virtual void _1_0_2_SaveAndRecallTwoStringsFromDifferentCategories_Global() + { +#line 29 + this._1_0_2_SaveAndRecallTwoStringsFromDifferentCategories("Global", "\"My data one\"", "\"My data two\"", "\"MyCategory one\"", "\"MyCategory two\"", "\"My Item one\"", "\"My Item two\"", ((string[])(null))); +#line hidden + } + + public virtual void _1_0_3_SaveAndRecallTwoStringsUsingLocalAndGlobalRepositories(string repository1, string repository2, string dataItem1, string dataItem2, string categoryName1, string categoryName2, string itemName1, string itemName2, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.0.3 - Save and recall two strings using Local and Global repositories", null, exampleTags); +#line 41 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 42 + testRunner.Given(string.Format("I have saved string {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem1, repository1, categoryName1, itemName1), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 43 + testRunner.And(string.Format("I have saved string {0} (Item 2) in Repository {1}, Category {2}, Item Name {3}", dataItem2, repository2, categoryName2, itemName2), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 44 + testRunner.When(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2}", repository1, categoryName1, itemName1), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 45 + testRunner.And(string.Format("I recall (Item 2) from {0}, Category {1}, Item Name {2}", repository2, categoryName2, itemName2), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 46 + testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 47 + testRunner.And("the recalled 2 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.3 - Save and recall two strings using Local and Global repositories: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository1", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository2", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "\"My data one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "\"My data two\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name1", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name2", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name1", "\"My Item\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name2", "\"My Item\"")] + public virtual void _1_0_3_SaveAndRecallTwoStringsUsingLocalAndGlobalRepositories_Local() + { +#line 41 + this._1_0_3_SaveAndRecallTwoStringsUsingLocalAndGlobalRepositories("Local", "Global", "\"My data one\"", "\"My data two\"", "\"MyCategory\"", "\"MyCategory\"", "\"My Item\"", "\"My Item\"", ((string[])(null))); +#line hidden + } + + public virtual void _1_0_4_SaveAndRecallAnIntegerToRepository(string repository, string dataItem, string categoryName, string itemName, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.0.4 - Save and recall an integer to Repository", null, exampleTags); +#line 53 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 54 + testRunner.Given(string.Format("I have saved integer {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem, repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 55 + testRunner.When(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2}", repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 56 + testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.4 - Save and recall an integer to Repository: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item", "23")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem\"")] + public virtual void _1_0_4_SaveAndRecallAnIntegerToRepository_Local() + { +#line 53 + this._1_0_4_SaveAndRecallAnIntegerToRepository("Local", "23", "\"MyCategory\"", "\"MyItem\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.4 - Save and recall an integer to Repository: Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item", "23")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem\"")] + public virtual void _1_0_4_SaveAndRecallAnIntegerToRepository_Global() + { +#line 53 + this._1_0_4_SaveAndRecallAnIntegerToRepository("Global", "23", "\"MyCategory\"", "\"MyItem\"", ((string[])(null))); +#line hidden + } + + public virtual void _1_0_5_SaveAndRecallOneStringAndOneIntFromSameCategory(string repository, string dataItem1, string dataItem2, string categoryName, string itemName1, string itemName2, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.0.5 - Save and recall one string and one int from same Category", null, exampleTags); +#line 63 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 64 + testRunner.Given(string.Format("I have saved string {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem1, repository, categoryName, itemName1), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 65 + testRunner.And(string.Format("I have saved integer {0} (Item 2) in Repository {1}, Category {2}, Item Name {3}", dataItem2, repository, categoryName, itemName2), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 66 + testRunner.When(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2}", repository, categoryName, itemName1), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 67 + testRunner.And(string.Format("I recall (Item 2) from {0}, Category {1}, Item Name {2}", repository, categoryName, itemName2), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 68 + testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 69 + testRunner.And("the recalled 2 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.5 - Save and recall one string and one int from same Category: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "\"My data one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "24")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name1", "\"My Item one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name2", "\"My Item two\"")] + public virtual void _1_0_5_SaveAndRecallOneStringAndOneIntFromSameCategory_Local() + { +#line 63 + this._1_0_5_SaveAndRecallOneStringAndOneIntFromSameCategory("Local", "\"My data one\"", "24", "\"MyCategory\"", "\"My Item one\"", "\"My Item two\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.5 - Save and recall one string and one int from same Category: Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "\"My data one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "24")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name1", "\"My Item one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name2", "\"My Item two\"")] + public virtual void _1_0_5_SaveAndRecallOneStringAndOneIntFromSameCategory_Global() + { +#line 63 + this._1_0_5_SaveAndRecallOneStringAndOneIntFromSameCategory("Global", "\"My data one\"", "24", "\"MyCategory\"", "\"My Item one\"", "\"My Item two\"", ((string[])(null))); +#line hidden + } + + public virtual void _1_0_6_ChangeAStringValueInTestData(string repository, string dataItem1, string dataItem2, string categoryName, string itemName, string itemName1, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.0.6 - Change a string value in test data", null, exampleTags); +#line 75 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 76 + testRunner.Given(string.Format("I have saved string {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem1, repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 77 + testRunner.And(string.Format("I have saved string {0} (Item 2) in Repository {1}, Category {2}, Item Name {3}", dataItem2, repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 78 + testRunner.When(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2}", repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 79 + testRunner.Then("the recalled 1 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.6 - Change a string value in test data: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "\"My data one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "\"My data two\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem two\"")] + public virtual void _1_0_6_ChangeAStringValueInTestData_Local() + { +#line 75 + this._1_0_6_ChangeAStringValueInTestData("Local", "\"My data one\"", "\"My data two\"", "\"MyCategory\"", "\"MyItem one\"", "\"MyItem two\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.6 - Change a string value in test data: Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "\"My data one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "\"My data two\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem two\"")] + public virtual void _1_0_6_ChangeAStringValueInTestData_Global() + { +#line 75 + this._1_0_6_ChangeAStringValueInTestData("Global", "\"My data one\"", "\"My data two\"", "\"MyCategory\"", "\"MyItem one\"", "\"MyItem two\"", ((string[])(null))); +#line hidden + } + + public virtual void _1_0_7_ChangeAnIntegerValueInTestData(string repository, string dataItem1, string dataItem2, string categoryName, string itemName, string itemName1, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.0.7 - Change an integer value in test data", null, exampleTags); +#line 85 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 86 + testRunner.Given(string.Format("I have saved integer {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem1, repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 87 + testRunner.And(string.Format("I have saved integer {0} (Item 2) in Repository {1}, Category {2}, Item Name {3}", dataItem2, repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 88 + testRunner.When(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2}", repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 89 + testRunner.Then("the recalled 1 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.7 - Change an integer value in test data: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "23")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "65")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem two\"")] + public virtual void _1_0_7_ChangeAnIntegerValueInTestData_Local() + { +#line 85 + this._1_0_7_ChangeAnIntegerValueInTestData("Local", "23", "65", "\"MyCategory\"", "\"MyItem one\"", "\"MyItem two\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.7 - Change an integer value in test data: Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "55")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "93")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem two\"")] + public virtual void _1_0_7_ChangeAnIntegerValueInTestData_Global() + { +#line 85 + this._1_0_7_ChangeAnIntegerValueInTestData("Global", "55", "93", "\"MyCategory\"", "\"MyItem one\"", "\"MyItem two\"", ((string[])(null))); +#line hidden + } + + public virtual void _1_0_8_ChangeAnIntegerValueToAStringValueInTestData(string repository, string dataItem1, string dataItem2, string categoryName, string itemName, string itemName1, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.0.8 - Change an integer value to a string value in test data", null, exampleTags); +#line 96 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 97 + testRunner.Given(string.Format("I have saved integer {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem1, repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 98 + testRunner.And(string.Format("I have saved string {0} (Item 2) in Repository {1}, Category {2}, Item Name {3}", dataItem2, repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 99 + testRunner.When(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2}", repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 100 + testRunner.Then("the recalled 1 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.8 - Change an integer value to a string value in test data: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "23")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "\"Im a string now\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem two\"")] + public virtual void _1_0_8_ChangeAnIntegerValueToAStringValueInTestData_Local() + { +#line 96 + this._1_0_8_ChangeAnIntegerValueToAStringValueInTestData("Local", "23", "\"Im a string now\"", "\"MyCategory\"", "\"MyItem one\"", "\"MyItem two\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.8 - Change an integer value to a string value in test data: Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item1", "55")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item2", "\"Im a string now\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem one\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem two\"")] + public virtual void _1_0_8_ChangeAnIntegerValueToAStringValueInTestData_Global() + { +#line 96 + this._1_0_8_ChangeAnIntegerValueToAStringValueInTestData("Global", "55", "\"Im a string now\"", "\"MyCategory\"", "\"MyItem one\"", "\"MyItem two\"", ((string[])(null))); +#line hidden + } + + public virtual void _1_0_9_RecallAStronglyTypedString(string repository, string dataItem, string categoryName, string itemName, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.0.9 - Recall a strongly typed String", null, exampleTags); +#line 106 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 107 + testRunner.Given(string.Format("I have saved string {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem, repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 108 + testRunner.When(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2} as a [\"System.String\"]", repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 109 + testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.9 - Recall a strongly typed String: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item", "\"My data\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem\"")] + public virtual void _1_0_9_RecallAStronglyTypedString_Local() + { +#line 106 + this._1_0_9_RecallAStronglyTypedString("Local", "\"My data\"", "\"MyCategory\"", "\"MyItem\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.0.9 - Recall a strongly typed String: Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item", "\"My data\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem\"")] + public virtual void _1_0_9_RecallAStronglyTypedString_Global() + { +#line 106 + this._1_0_9_RecallAStronglyTypedString("Global", "\"My data\"", "\"MyCategory\"", "\"MyItem\"", ((string[])(null))); +#line hidden + } + + public virtual void _1_1_0_CorrectErrorIfITryToGetAStringAsAnInteger(string repository, string dataItem, string categoryName, string itemName, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.1.0 - Correct error if I try to get a string as an integer", null, exampleTags); +#line 116 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 117 + testRunner.Given(string.Format("I have saved string {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem, repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 118 + testRunner.When(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2} as a [\"System.Int32\"]", repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 119 + testRunner.Then("the recalled 1 value is an exception with innermost exception message \"Expected t" + + "ype [Int32] but got type System.String\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.1.0 - Correct error if I try to get a string as an integer: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item", "\"My data\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem\"")] + public virtual void _1_1_0_CorrectErrorIfITryToGetAStringAsAnInteger_Local() + { +#line 116 + this._1_1_0_CorrectErrorIfITryToGetAStringAsAnInteger("Local", "\"My data\"", "\"MyCategory\"", "\"MyItem\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.1.0 - Correct error if I try to get a string as an integer: Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item", "\"My data\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem\"")] + public virtual void _1_1_0_CorrectErrorIfITryToGetAStringAsAnInteger_Global() + { +#line 116 + this._1_1_0_CorrectErrorIfITryToGetAStringAsAnInteger("Global", "\"My data\"", "\"MyCategory\"", "\"MyItem\"", ((string[])(null))); +#line hidden + } + + public virtual void _1_1_1_VerifyLocalAndGlobalRepositoriesCanBeCleared(string repository, string dataItem, string categoryName, string itemName, string exceptionText, string[] exampleTags) + { + string[] tagsOfScenario = exampleTags; + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.1.1 - Verify Local and Global repositories can be cleared", null, exampleTags); +#line 126 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 127 + testRunner.Given(string.Format("I have saved string {0} (Item 1) in Repository {1}, Category {2}, Item Name {3}", dataItem, repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 128 + testRunner.When(string.Format("I clear the {0} repository", repository), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 129 + testRunner.And(string.Format("I recall (Item 1) from {0}, Category {1}, Item Name {2}", repository, categoryName, itemName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 130 + testRunner.Then(string.Format("the recalled 1 value is an exception with innermost exception message {0}", exceptionText), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.1.1 - Verify Local and Global repositories can be cleared: Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Local")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item", "\"My data\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Exception Text", "\"Category name My Category does not exist in Local (ThreadID 4) repository. Categ" + + "ory name must be valid and exist.\"")] + public virtual void _1_1_1_VerifyLocalAndGlobalRepositoriesCanBeCleared_Local() + { +#line 126 + this._1_1_1_VerifyLocalAndGlobalRepositoriesCanBeCleared("Local", "\"My data\"", "\"MyCategory\"", "\"MyItem\"", "\"Category name My Category does not exist in Local (ThreadID 4) repository. Categ" + + "ory name must be valid and exist.\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.1.1 - Verify Local and Global repositories can be cleared: Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("VariantName", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Repository", "Global")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Data Item", "\"My data\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Category Name", "\"MyCategory\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Item Name", "\"MyItem\"")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("Parameter:Exception Text", "\"Category name MyCategory does not exist in Global repository. Category name must" + + " be valid and exist\"")] + public virtual void _1_1_1_VerifyLocalAndGlobalRepositoriesCanBeCleared_Global() + { +#line 126 + this._1_1_1_VerifyLocalAndGlobalRepositoriesCanBeCleared("Global", "\"My data\"", "\"MyCategory\"", "\"MyItem\"", "\"Category name MyCategory does not exist in Global repository. Category name must" + + " be valid and exist\"", ((string[])(null))); +#line hidden + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.2.0 - Clone Global test data to Local, overwriting any existing data")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + public virtual void _1_2_0_CloneGlobalTestDataToLocalOverwritingAnyExistingData() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.2.0 - Clone Global test data to Local, overwriting any existing data", null, ((string[])(null))); +#line 137 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 138 + testRunner.Given("I have saved string \"Saved to Global\" (Item 1) in Repository Global, Category \"My" + + "Cat\", Item Name \"MyItem1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 139 + testRunner.And("I have saved string \"Saved to Local\" (Item 2) in Repository Local, Category \"MyCa" + + "t\", Item Name \"MyItem2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 140 + testRunner.And("I clone Global test data to Local test data, overwriting any existing", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 141 + testRunner.When("I recall (Item 1) from Global, Category \"MyCat\", Item Name \"MyItem1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 142 + testRunner.And("I recall (Item 2) from Local, Category \"MyCat\", Item Name \"MyItem1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 143 + testRunner.Then("the recalled 1 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 144 + testRunner.And("the recalled 2 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.2.1 - Verify data is not overwritten if requested")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + public virtual void _1_2_1_VerifyDataIsNotOverwrittenIfRequested() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.2.1 - Verify data is not overwritten if requested", null, ((string[])(null))); +#line 146 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 147 + testRunner.Given("I have saved string \"Saved to Global\" (Item 1) in Repository Global, Category \"My" + + "Cat\", Item Name \"MyItem1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 148 + testRunner.And("I have saved string \"Saved to Local\" (Item 2) in Repository Local, Category \"MyCa" + + "t\", Item Name \"MyItem2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 149 + testRunner.When("I clone Global test data to Local test data, not overwriting any existing", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 150 + testRunner.Then("an Exception is thrown with text \"Wobble\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()] + [Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute("1.2.2 - Verify values are cloned not references")] + [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("FeatureTitle", "Repository Tests")] + public virtual void _1_2_2_VerifyValuesAreClonedNotReferences() + { + string[] tagsOfScenario = ((string[])(null)); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.2.2 - Verify values are cloned not references", null, ((string[])(null))); +#line 152 + this.ScenarioInitialize(scenarioInfo); +#line hidden + bool isScenarioIgnored = default(bool); + bool isFeatureIgnored = default(bool); + if ((tagsOfScenario != null)) + { + isScenarioIgnored = tagsOfScenario.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((this._featureTags != null)) + { + isFeatureIgnored = this._featureTags.Where(__entry => __entry != null).Where(__entry => String.Equals(__entry, "ignore", StringComparison.CurrentCultureIgnoreCase)).Any(); + } + if ((isScenarioIgnored || isFeatureIgnored)) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 153 + testRunner.Given("I have saved string \"My cloned Data\" (Item 1) in Repository Global, Category \"MyC" + + "at\", Item Name \"MyItem1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 154 + testRunner.And("I clone Global test data to Local test data, overwriting any existing", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 155 + testRunner.When("I have saved string \"My new Global Data\" (Item 2) in Repository Global, Category " + + "\"MyCat\", Item Name \"MyItem1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 156 + testRunner.And("I recall (Item 1) from Global, Category \"MyCat\", Item Name \"MyItem1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 157 + testRunner.And("I recall (Item 2) from Local, Category \"MyCat\", Item Name \"MyItem1\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 158 + testRunner.Then("the recalled 1 value matches the saved 2 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 159 + testRunner.And("the recalled 2 value matches the saved 1 value", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + } +} +#pragma warning restore +#endregion diff --git a/Utilities.UnitTests.net/Settings.StyleCop b/Utilities.UnitTests.net/Settings.StyleCop new file mode 100644 index 0000000..bb05f99 --- /dev/null +++ b/Utilities.UnitTests.net/Settings.StyleCop @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Utilities.UnitTests.net/SpecflowHooks.cs b/Utilities.UnitTests.net/SpecflowHooks.cs new file mode 100644 index 0000000..1565383 --- /dev/null +++ b/Utilities.UnitTests.net/SpecflowHooks.cs @@ -0,0 +1,33 @@ +// +// Copyright (c) Licensed under the MIT License. See LICENSE file in the project root for full license information. +// +namespace TeamControlium.Utilities.UnitTests +{ + using System.IO; + using System.Threading; + using TechTalk.SpecFlow; + + /// + /// Specflow Hooks file containing before/after event handlers. + /// For additional details on SpecFlow hooks see http://go.specflow.org/doc-hooks + /// + [Binding] + public sealed class SpecflowHooks + { + /// + /// Called by Specflow before each Scenario is executed + /// + /// Scenario Contextual data + [BeforeScenario] + public void BeforeScenario(ScenarioContext scenarioContext) + { + // Set logging level to maximum incase debug is needed. + Log.CurrentLoggingLevel = Log.LogLevels.FrameworkDebug; + scenarioContext.Add("consoleOut", new StringWriter()); + scenarioContext.Add("currentThreadID", Thread.CurrentThread.ManagedThreadId); + } + + } + + +} diff --git a/Utilities.UnitTests.net/Utilities.UnitTests.net.csproj b/Utilities.UnitTests.net/Utilities.UnitTests.net.csproj new file mode 100644 index 0000000..65700b8 --- /dev/null +++ b/Utilities.UnitTests.net/Utilities.UnitTests.net.csproj @@ -0,0 +1,23 @@ + + + + netcoreapp3.1 + + false + + + + + + + + + + + + + + + + + diff --git a/Utilities.net.csproj b/Utilities.net.csproj deleted file mode 100644 index b3e1491..0000000 --- a/Utilities.net.csproj +++ /dev/null @@ -1,117 +0,0 @@ - - - - - Debug - AnyCPU - {F8AF7786-9221-4B50-A12C-F8A5779671D4} - Library - Properties - TeamControlium.Utilities - TeamControlium.Utilities - v4.6.1 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - bin\Release\TeamControlium.Utilities.xml - - - - packages\HtmlAgilityPack.1.7.0\lib\Net45\HtmlAgilityPack.dll - True - - - - packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - True - - - - - - - - - - - - packages\SpecFlow.2.2.1\lib\net45\TechTalk.SpecFlow.dll - True - - - - - - - True - True - Detokenizer.feature - - - - - - - - True - True - Logger.feature - - - - True - True - TestData.feature - - - - - - Designer - - - SpecFlowSingleFileGenerator - Detokenizer.feature.cs - - - - SpecFlowSingleFileGenerator - Logger.feature.cs - - - SpecFlowSingleFileGenerator - TestData.feature.cs - - - - - - - - - - - - - \ No newline at end of file diff --git a/Utilities.net.nuspec b/Utilities.net.nuspec index 7b871e9..638f64a 100644 --- a/Utilities.net.nuspec +++ b/Utilities.net.nuspec @@ -2,7 +2,7 @@ TeamControlium.Utilities - 1.0.1 + 2.0.0 Team Controlium Utilities Team Controlium contributors Team Controlium contributors @@ -11,7 +11,7 @@ https://avatars1.githubusercontent.com/u/26261715 false General test automation utilities primarily for use within the Team Controlium suite and associated frameworks - TestData updated to handle and convert string int/float type mismatches + Major re-write of all components. Copyright 2018 - Mat Walker and the Team Controlium contributors Test Automation diff --git a/Utilities.net.sln b/Utilities.net.sln index 0adf879..fed4f88 100644 --- a/Utilities.net.sln +++ b/Utilities.net.sln @@ -1,9 +1,22 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29806.167 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utilities.net", "Utilities.net.csproj", "{F8AF7786-9221-4B50-A12C-F8A5779671D4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Utilities.net", "Utilities.net\Utilities.net.csproj", "{9B8EC52E-142B-453F-A851-72295A79DF55}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Utilities.UnitTests.net", "Utilities.UnitTests.net\Utilities.UnitTests.net.csproj", "{7DEB60F0-99C9-4918-B748-00BDCA20AD16}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D703446B-7B56-4EF7-899D-B179B2DE4231}" + ProjectSection(SolutionItems) = preProject + Settings.StyleCop = Settings.StyleCop + EndProjectSection +EndProject +Project("{7CF6DF6D-3B04-46F8-A40B-537D21BCA0B4}") = "Documentation", "Documentation\Documentation.shfbproj", "{24CCE119-E46F-4577-B518-55CB69152B9F}" + ProjectSection(ProjectDependencies) = postProject + {9B8EC52E-142B-453F-A851-72295A79DF55} = {9B8EC52E-142B-453F-A851-72295A79DF55} + {7DEB60F0-99C9-4918-B748-00BDCA20AD16} = {7DEB60F0-99C9-4918-B748-00BDCA20AD16} + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,13 +24,23 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F8AF7786-9221-4B50-A12C-F8A5779671D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F8AF7786-9221-4B50-A12C-F8A5779671D4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F8AF7786-9221-4B50-A12C-F8A5779671D4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F8AF7786-9221-4B50-A12C-F8A5779671D4}.Release|Any CPU.Build.0 = Release|Any CPU - {F8AF7786-9221-4B50-A12C-F8A5779671D4}.Release|Any CPU.Deploy.0 = Release|Any CPU + {9B8EC52E-142B-453F-A851-72295A79DF55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9B8EC52E-142B-453F-A851-72295A79DF55}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9B8EC52E-142B-453F-A851-72295A79DF55}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9B8EC52E-142B-453F-A851-72295A79DF55}.Release|Any CPU.Build.0 = Release|Any CPU + {7DEB60F0-99C9-4918-B748-00BDCA20AD16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7DEB60F0-99C9-4918-B748-00BDCA20AD16}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7DEB60F0-99C9-4918-B748-00BDCA20AD16}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7DEB60F0-99C9-4918-B748-00BDCA20AD16}.Release|Any CPU.Build.0 = Release|Any CPU + {24CCE119-E46F-4577-B518-55CB69152B9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {24CCE119-E46F-4577-B518-55CB69152B9F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {24CCE119-E46F-4577-B518-55CB69152B9F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {24CCE119-E46F-4577-B518-55CB69152B9F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {8A1C5D3B-D775-4F6A-A188-C5FBAF583B87} + EndGlobalSection EndGlobal diff --git a/Utilities.net.xml b/Utilities.net.xml new file mode 100644 index 0000000..b022dad --- /dev/null +++ b/Utilities.net.xml @@ -0,0 +1,470 @@ + + + + Utilities.net + + + + + Processes given strings to process and resolve all tokens in passed strings. + + + + + Character to use as an escape char. + + Defined as a string incase it itself has to be escaped in the Regular Expression pattern + + + + Character defining the start of a Token to be processed. + + Must NOT be the same as the escape character. + Is a string incase it needs to be escaped for Regular Expression pattern. + + + + Character defining the end of a Token to be processed. + + Must NOT be the same as the escape character or the start token character. + Is a string incase it needs to be escaped for Regular Expression pattern. + + + + Regular Expression pattern defining the start of a Token to be processed. + + Should contain a negative look-behind to enable escaping. + + + + Regular Expression pattern defining the end of a Token to be processed. + + Should contain a negative look-behind to enable escaping. + + + + Default token delimiter. Delimiter is used to partition token verb and body and is the default for field partitions within a token body. + + + + + Collection of delimiters split by thread. Allows different threads to use different delimiters if required. + + + + + Gets or sets delegate for processing custom tokens if required. If set, delegate is called before internal token processing to allow overriding if required. + + Assigned delegate must take char (delimiter being used) and the token (split into an array using delimiter as separator) and return the resolved token text. + If the token cannot be resolved, delegate should return a null. Any exception should be allowed to ripple up to enable the Utilities Detokenizer to handle + the error. + + + + Gets or sets the default delimiter within tokens. + + This is used as the delimiter when separating token verb from body and is the default token when token verb processors split their required fields. + Is thread-safe; if a Thread changes the token delimiter the change only affects Detokenizer calls for that thread. + + + + Gets initialized instance of the .NET Random generator. Used when resolving {random tokens. + + + + + Process passed string and return after resolving all tokens. + + String possibly containing tokens. + Passed string with all valid tokens resolved. + + + + Processes parses and processes passed in token and returns the resolution result. Token must be trimmed of its start/end indicators. + + Token to be processed + Result of processing passed in token. + A token must at least contain a single element, the verb. This tells the processor what processing is required to resolve the token. The total number + of elements in the token depends on the verb. As an example the random token requires three fields (examples assume delimiter is a ;): verb;type;format or length. IE. "random;digits;5" returns + 5 random digits. "random;date(01-01-1980,31-12-1980);dd MMM yy" returns a random 1980 date such as 09 JUN 80. + + + + Process a 'random' token and return result + + Body part of token. Format depends on type of random being executed. + Token resolution result + + + + Process a 'date' token and return result. + + Consists of date offset process and required output format. + Required date in specified format. + + + + Returns formatted start or end date of financial year date passed in is within. + + Date within required financial year and required return format. + True - returns date start of financial year, False - returns date end of financial year. + Start or end date of financial year date is within. + + + + Returns random floating point number on or between the minimum and maximum limits + + Maximum and minimum limits of random selection. + Random floating point number + + + + Returns random floating point number on or between the minimum and maximum limits + + Minimum limit + Maximum limit + Random floating point number + + + + Returns random date on or between the minimum and maximum limits + + String containing minimum and maximum dates in required format + Random dates between the two given dates, inclusive. + + + + Returns random date on or between the minimum and maximum limits + + Minimum date of random selection + Maximum date of random selection + Random dates between the two given dates, inclusive. + + + + Returns a valid random Australian TFN + + Random valid TFN + + + + Represents result of a Token search for a given string + + + + + Holds all characters preceding any found token in given string. Holds ALL characters from given string if no token found. + + + + + Holds all characters following found token in given string. + + + + + Innermost token found in given string + + + + + Indicates if a token was found or not + + + + + Initializes a new instance of the class. + Takes a string that may or may not contain token/s. If string contains token/s, innermost (from left) token is identified + + String to be processed + + + + Gets all characters preceding any found token in given string. Returns ALL characters from given string if no token found. + + + + + Gets all characters following found token in given string. + + + + + Gets Innermost token found in given string + + + + + Gets a value indicating whether a token was found + + + + + Manages logging information. Created from scratch rather than using an OffTheShelf (NLog, Log4Net etc) to keep footprint as small as possible while ensuring + logging is formatted, along with functionality, exactly as we want. + + + + + Used to keep track of time since first call to Logger class made. + + + + + Different threads will be sending logging information to Log. So, when building a Log string (IE. Calls to .DoWrite to build a Log + string) the string relating to the correct thread is appended to. + + + + + Indicates whether an error has been written to the event log. Allows suppressing of further errors to prevent log blow-out. + + + + + Used for locking during a DoWriteLine. To ensure thread safety, only a single thread at a time is + permitted to call DoWriteLine at any one time. + + + + + Used for locking during a DoWriteLine. To ensure thread safety, only a single thread at a time is + permitted to call DoWrite at any one time. + + + + + Initializes static members of the class. + Instantiates an instant of the Log static class. Starts the main Stopwatch running for timing information in log data. + + + + + Levels of logging - Verbose (Maximum) to Exception (Minimum). If level of text being written to + logging is equal to, or higher than the current LoggingLevel the text is written.
+ This is used to filter logging so that only entries to log are made if the level of the write is equal + or greater than the logging level set by LoggingLevel. +
+
+ + + Data written to log if LoggingLevel is FrameworkDebug and WriteLogException is FrameworkDebug or higher + + + + + Data written to log if LoggingLevel is FrameworkInformation and WriteLogException is FrameworkInformation or higher + + + + + Data written to log if LoggingLevel is TestDebug and WriteLogException is TestDebug or higher + + + + + Data written to log if LoggingLevel is TestInformation and WriteLogException is TestInformation or Error + + + + + Data always written to results + + + + + Gets or sets Logging level. Lowest is Error (least amount of log data written - only writes at + level Error are written to the log). Most data is written to + the log if level set is FrameworkDebug. + + Default is FrameworkDebug + + + + Gets or sets a value indicating whether log data is written to Console.
+ If true debug data is written to the Console (STDOUT)
+ If false and has been defined, no log data is written to Console. If has + NOT been defined, WriteToConsole false is ignored and output is STILL written to Console.
+
+ + The default is true (log data to be written to the console) + +
+ + + Gets or sets delegate to write debug data to if WriteToConsole is false. + + + Note. If the delegate throws an exception, allow the exception to ripple up. Log class will handle the exception and write details to + the OS event logging system. + + + + + + Resets the logger elapsed timer to zero + + + + + Writes details of a caught exception to the active debug log at level Error + + + If current error logging level is FrameworkDebug the full + exception is written, including stack-trace etc.
+ With any other Log Level only the exception message is written if an exception is thrown during write, Logger + attempts to write the error details if able. +
+ Exception being logged + + + catch (InvalidHostURI ex) + { + // Log exception and abort the test - we cant talk to the remote Selenium server + Logger.WriteLogException(ex,"Connecting to Selenium host"); + toolWrapper.AbortTest("Cannot connect to remote Selenium host"); + } + + +
+ + + Writes details of a caught exception to the active debug log at level Error + + + If current error logging level is FrameworkDebug the full + exception is written, including stack trace details etc.
+ With any other Log Level only the exception message is written if an exception is thrown during write, Logger + attempts to write the error details if able. +
+ Exception being logged + Additional string format text to show when logging exception + Arguments shown in string format text + + + catch (InvalidHostURI ex) + { + // Log exception and abort the test - we cant talk to the remote Selenium server + Logger.WriteLogException(ex,"Given up trying to connect to [{0}]",Wherever); + toolWrapper.AbortTest("Cannot connect to remote Selenium host"); + } + + +
+ + + Writes a line of data to the active debug log with no line termination + + Level of text being written (See for usage of the Log Level) + Text to be written + String formatting arguments (if any) + WriteLog a line of data from our test: + + Logger.WriteLn(LogLevels.TestDebug, "Select member using key (Member: {0})","90986754332"); + code> + + + + Writes a line of data to the active debug log. + Data can be formatted in the standard string.format syntax. If an exception is thrown during write, Logger + attempts to write the error details if able. + + Level of text being written (See for usage of the Log Level) + Text to be written + String formatting arguments (if any) + WriteLogException a line of data from our test: + + Logger.WriteLogLine(LogLevels.TestDebug, "Select member using key (Member: {0})","90986754332"); + + If arguments are passed in but there is an error formatting the text line during resolution of the arguments they will be ignored and the text line written out without arguments. + + + + Writes given Text to a text file, optionally auto versioning (adding (n) to filename) OR + overwriting. + + + No exception is raised if there is any problem, but details of error is written to Logger log + + Full path and filename to use + If true and file exists. (n) is added to auto-version. If false and file exists, it is overwritten if able + Text to write + + + + Does writing of the logged exception + + Stack frame passed in by caller. Used to get method base details + Exception being reported + Optional text + Optional text arguments + + + + Gets class-type and Method name of passed MethodBase class. + + MethodBase of class + Formatted string containing Type.Method + + + + Appends text to currently active line. If the start of line, text is pre-pended with Line header information + + MethodBase of class calling Logger class + Level of debug text to be written + Text string to be written + Text is written if TypeOfWrite is equal to, or higher the current Logging Level + + + + Appends text to currently active line and writes line to active log. If new line, text is pre-pended with Line header information + + MethodBase of class calling Logger class + Level of debug text to be written + Text string to be written + Text is written if TypeOfWrite is equal to, or higher the current Logging Level + + + + Constructs and returns a log-file pre-amble. Preamble is {Log Type} - [{Time}][{Elapsed}] [Calling Type.Method]: + + Reference to calling method + Type of write + + GetPreAmple(methodBase, LogLevel.TestDebug) returns "TSDBG - [15:34:45][00012.33] [MyTestClass.MyMethod]:" + + Line pre-amble text + + + + Returns debug line initial token based on LogLevel of text being written + + Log Level to obtain text for + Textual representation for Debug log line pre-amble + + + + + + + + + Actual storage of data. Three dimensional dictionary. + 1st dimension is the ThreadID storing data for the identified specific thread. + 2nd dimension is the data category + 3rd dimension is the data item name + Data is stored as dynamic objects enabling storage of anything and runtime changes of item location types as well as varying types in the repository. + + + + + When data is stored in the Global repository (IE. Seen by all threads) the threadID used is -1. + + + + + Returns the last exception were a TryGetRunCategoryOptions returned false + + +
+
diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..d4585da --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,4 @@ +## +## Dont ignore anything in this folder. It is the Documentation, generated by Sandcastle and used by GitHub. +## +## \ No newline at end of file diff --git a/docs/WebKI.xml b/docs/WebKI.xml index feb00d0..f1d544f 100644 --- a/docs/WebKI.xml +++ b/docs/WebKI.xml @@ -1,38 +1,144 @@  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + diff --git a/docs/WebTOC.xml b/docs/WebTOC.xml index 0b5f450..7ad2da1 100644 --- a/docs/WebTOC.xml +++ b/docs/WebTOC.xml @@ -1,28 +1,116 @@  - - - - - - - + + + + + + + + + + + + - - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fti/FTI_100.json b/docs/fti/FTI_100.json index 8b754f5..7ad427b 100644 --- a/docs/fti/FTI_100.json +++ b/docs/fti/FTI_100.json @@ -1 +1 @@ -{"details":[131073,327683,393219,458754,655361,720899,983041,1048577,1245186],"debug":[131073,196610,327684,393217,458753,655361,720902,917505,1245186,1376257],"defined":[196610,720898,917506],"description":[196609,262145,327681,524289,720898,1179650,1245185],"date":[851969],"define":[1048577],"documentation":[1048577,1179649],"dll":[131073,262145,393217,458753,589825,655361,786433,720897,917505,983041,1376257],"data":[131073,196614,262149,327683,589826,655363,720905,917508,1376258],"default":[1,589825,917505,1048578],"delegate":[131074,196609,720897],"documented":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257],"describe":[524289],"disk":[1048577]} \ No newline at end of file +{"details":[589827,720898,1769473,2490371,2621443,2818049,3932162,6094849],"data":[393221,589833,1769473,1835014,2031618,2293762,2490371,4980740,6094851],"dynamicitems":[262147,524290,2424837,2949128,3014659,5046275,5177346,5636097],"documentation":[65537,131074,196613,262145,327684,393217,458757,524289,589825,655364,720897,786434,851975,917509,983041,1048577,1114116,1179652,1245188,1310725,1441797,1507333,1572871,1638401,1703941,1769473,1835009,1900546,1966086,2031617,2097156,2162689,2228225,2293761,2359300,2424834,2490369,2555905,2621441,2686977,2752517,2818049,2883588,2949123,3014658,3080193,3145729,3211268,3276805,3407878,3342341,3473410,3538945,3604482,3670017,3735557,3801094,3866629,3932161,3997702,4063235,4128770,4194308,4259846,4325380,4390913,4456454,4521990,4587525,4653060,4718595,4784134,4849670,4915201,4980737,5046274,5177345,5242884,5308417,5373958,5505029,5570561,5636097,5701633,5767170,5832708,5898241,5963781,6029317,6094849],"defaulttokendelimitercurrentthread":[65538,2162689,3145729],"description":[262145,393217,524289,589826,983041,1638401,1835009,2162690,2228225,2490369,2686977,2949123,3080193,3145729,3538945,3670017,3932161,4390913,4915201,5177345,5570561,5636098,5767171,5898241],"default":[1,65538,262145,2162689,2293761,2686977,2949121,3145729,4980737,5767169],"determines":[262145,2686977,2949121,5767169],"delimiter":[65539,2162689,3145729,5701634],"dll":[65537,131073,196609,327681,393217,458753,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1703937,1769473,1900545,1966081,2031617,2097153,2162689,2293761,2359297,2424833,2555905,2621441,2752513,2818049,2883585,2949121,3014657,3211265,3276801,3407873,3342337,3473409,3604481,3735553,3801089,3866625,3997697,4063233,4128769,4194305,4259841,4325377,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5046273,5242881,5308417,5373953,5505025,5701633,5767169,5832705,5963777,6029313,6094849],"dynamic":[262147,524290,2424835,2949128,3014660,5046276,5177346,5636097],"delegate":[589825,1769474,1835009,2162690,3145730,5701636],"debug":[589830,720897,1769473,1835010,2031617,2490372,2621441,3932162,4980737,6094849],"detokenize":[983041,1048578,2162689],"dictionary":[1245186,1310726,4325381,4587526,5242882,5832709],"defined":[589826,1835010,4980738],"detokenizer":[65539,983043,1048578,2162692,3145731,5636097,5701635]} \ No newline at end of file diff --git a/docs/fti/FTI_101.json b/docs/fti/FTI_101.json index a50b52d..f2e5e29 100644 --- a/docs/fti/FTI_101.json +++ b/docs/fti/FTI_101.json @@ -1 +1 @@ -{"explorer":[1048577],"exists":[983042],"editor":[1048577],"equal":[262146,1179650],"entries":[262145,1179649],"enumeration":[262146,1179649],"enum":[262145],"examples":[393217,458753,655361,1376257],"exception":[131075,262145,327685,393227,458762,655361,720901,983041,1179649,1245188],"enumerations":[1179649],"event":[131073],"elapsed":[327681,786433,720897],"ensuring":[720897,1179649],"exactly":[720897,1179649],"elements":[1048577],"exposes":[196609,327681,720897],"entered":[1310721],"error":[196610,262146,327683,393219,458755,589826,655361,720901,983041,1114114,1245186]} \ No newline at end of file +{"enumerations":[5636097],"enumeration":[393217,5636097],"examples":[720897,2031617,2621441,6094849],"enable":[5701633],"error":[393218,589829,720899,1835010,2293762,2490371,2621443,2818049,3932162,5111810,5701633,6094850],"exists":[2818050],"exactly":[589825,5636097],"equals":[262145,2686977,2949121,5767169],"exposes":[262145,589825,983041,1835009,2162689,2490369,2686977,2949121,3145729,4915201,5767169],"entries":[393217,5636097],"equal":[262145,393218,2686977,2949121,5636098,5767169],"ensuring":[589825,5636097],"enum":[393217],"elapsed":[589825,2490369,5308417],"event":[1769473],"exception":[393217,589829,720905,786435,1769475,2490373,2621450,2686977,2818049,3932164,5636097,5701633,5767169,6094849],"entered":[5439489]} \ No newline at end of file diff --git a/docs/fti/FTI_102.json b/docs/fti/FTI_102.json index ad50da2..03347ce 100644 --- a/docs/fti/FTI_102.json +++ b/docs/fti/FTI_102.json @@ -1 +1 @@ -{"folder":[1048582],"follow":[1],"frameworkinformation":[262147],"formatted":[327681,655361,720898,1179649],"filter":[262145,1179649],"formatting":[655361,1376257],"filename":[327681,720897,983045,1048577],"frameworkdebug":[196609,262147,393217,458753,589826,720897],"following":[196609,327681,720897,1048577],"format":[327681,393218,655361,720897],"file":[327681,720897,983043,1048590],"footprint":[720897,1179649],"false":[131073,196611,720899,917506,983041],"functionality":[720897,1179649],"files":[1048580]} \ No newline at end of file +{"finalize":[262145,2686977,2949121,5767169],"file":[589825,2490369,2818051],"free":[262145,2686977,2949121,5767169],"frameworkinformation":[393219],"func":[5701634],"fields":[65537],"false":[589827,786433,1769473,1835011,2686977,2818049,4980738,5767169],"format":[589825,2490369,2621442,6094849],"follow":[1],"formatted":[589826,2490369,5636097,6094849],"filename":[589825,2490369,2818052],"functionality":[589825,5636097],"footprint":[589825,5636097],"filter":[393217,5636097],"function":[262145,2686977,2949121,5767169],"formatting":[2031617,6094850],"frameworkdebug":[393219,589825,720897,1835009,2293762,2621441],"following":[262145,589825,983041,1835009,2162689,2490369,2686977,2949121,3145729,4915201,5767169]} \ No newline at end of file diff --git a/docs/fti/FTI_103.json b/docs/fti/FTI_103.json index 3c8b6a9..616fef3 100644 --- a/docs/fti/FTI_103.json +++ b/docs/fti/FTI_103.json @@ -1 +1 @@ -{"getting":[1048578],"given":[327681,393217,720897,983041],"gets":[131073,196611,589825,720899,917505],"greater":[262145,1179649],"guide":[1048577],"general":[1114113]} \ No newline at end of file +{"given":[589825,2162689,2490369,2621441,2818049,5636097],"general":[5111809],"gets":[65537,262145,589827,1769473,1835011,2162690,2293761,2686977,2949121,3145730,4980737,5701633,5767169],"getcategorylocal":[2686977,5242885,5767169],"getitemordefaultlocal":[1441799,2686978,4784136,5570563,5767170],"greater":[393217,5636097],"garbage":[262145,2686977,2949121,5767169],"gethashcode":[262145,2686977,2949121,5767169],"getitemglobal":[196615,2097158,2686980,5373960,5767172,5898245,6029319],"generic":[262145,1310725,4325380,4587525,5832708],"getitemordefaultglobal":[2686978,2752519,4390915,4456456,5767170],"getcategoryglobal":[1245189,2686977,5767169],"gettype":[262145,2686977,2949121,5767169],"getitemlocal":[1179654,1507335,1966088,2686980,3080197,3276807,5767172]} \ No newline at end of file diff --git a/docs/fti/FTI_104.json b/docs/fti/FTI_104.json index 50b3479..6614a04 100644 --- a/docs/fti/FTI_104.json +++ b/docs/fti/FTI_104.json @@ -1 +1 @@ -{"hierarchy":[720897],"history":[524290,851969,1048577],"handle":[131073],"help":[1048583],"higher":[262148,1179649],"host":[393217,458754]} \ No newline at end of file +{"host":[720898,2621441],"higher":[393220,5636097],"hash":[262145,2686977,2949121,5767169],"hascategoryglobal":[2686977,2883589,5767169],"hierarchy":[589825,2162689,2949121,5767169],"hascategorylocal":[1114117,2686977,5767169],"handle":[1769473,5701633]} \ No newline at end of file diff --git a/docs/fti/FTI_105.json b/docs/fti/FTI_105.json index 6585de9..b8a68a7 100644 --- a/docs/fti/FTI_105.json +++ b/docs/fti/FTI_105.json @@ -1 +1 @@ -{"icons":[1048577],"information":[720897,1048578,1179649],"inheritance":[720897],"including":[393217,458753],"images":[1048579],"indicating":[196609,720897,917505],"included":[1048577],"ignored":[196609,720897,917505],"invalidhosturi":[393217,458753],"items":[851969,1048577]} \ No newline at end of file +{"itemglobal":[3473411,4915201,5767169],"itemname":[196611,327683,458755,851971,1179651,1441795,1507331,1572867,1703939,1966083,2097155,2359299,2752515,3276803,3407875,3342339,3735555,3801091,3866627,3997699,4259843,4456451,4521987,4784131,4849667,5373955,5963779,6029315],"information":[589825,5636097],"inherited":[262150,2686982,2949126,5767174],"indicating":[589825,1835009,4980737],"itemlocal":[3604483,4915201,5767169],"initializes":[2424833,2555905,2949121,5767169],"item":[327683,458755,524290,851971,1572867,2359299,2949122,3014661,3407875,3342339,3735555,3801091,4521987,4849667,5046277,5177347,5963779],"internal":[2162689,3145729,5701633],"inheritance":[589825,2162689,2949121,5767169],"instance":[262145,2424833,2555905,2686977,2949122,5767170],"islocal":[2424835],"ignored":[589825,1835009,4980737,6094849],"invalidhosturi":[720897,2621441],"including":[720897,2621441]} \ No newline at end of file diff --git a/docs/fti/FTI_107.json b/docs/fti/FTI_107.json index 4bd1c8f..91eff54 100644 --- a/docs/fti/FTI_107.json +++ b/docs/fti/FTI_107.json @@ -1 +1 @@ -{"key":[655361,1376257]} \ No newline at end of file +{"key":[2031617,6094849]} \ No newline at end of file diff --git a/docs/fti/FTI_108.json b/docs/fti/FTI_108.json index 51f9822..8b4ee95 100644 --- a/docs/fti/FTI_108.json +++ b/docs/fti/FTI_108.json @@ -1 +1 @@ -{"loglevel":[655363,1376259],"logexception":[327682,393221,458757,720898,1245187],"logger":[196610,327682,393218,458754,655363,786433,720900,917506,983041,1376258],"level":[196611,262147,327682,393219,458755,589827,655362,720901,1179651,1245186,1376258],"levels":[262145,1179649],"log":[131076,196616,262150,327687,393221,458757,589832,655367,720910,786434,917509,983043,1179651,1245188,1376263],"logged":[393217,458753],"looking":[1310721],"log4net":[720897,1179649],"load":[1114113],"loglevels":[262147,589827,655365,1179649,1376261],"link":[1],"language":[1048577],"logging":[131073,196609,262148,393218,458753,589825,720899,1179654],"life":[524289],"layout":[1048581],"longer":[1310721],"list":[1245185],"logo":[1048578],"line":[327683,655362,720899,1376259],"logofile":[1048577],"locate":[1310721],"links":[524289],"logginglevel":[262150,1179650],"lay":[1048577],"library":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257],"lowest":[196609,589825,720897],"like":[1048577]} \ No newline at end of file +{"logger":[589826,720898,2031617,2490370,2621442,2818049,5308417,6094850],"license":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2818049,2752513,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5177345,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849],"loglevels":[393218,2031620,2293762,5636097,6094852],"log":[393222,589837,720901,1769476,1835016,2031623,2293767,2490375,2621445,2818051,3932164,4980741,5308418,5636099,6094855],"logging":[393220,589827,720897,1769473,1835009,2293761,2621442,5636102],"list":[1638401,2228225,3080193,3538945,3670017,3932161,4390913,5177345,5570561,5898241],"library":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849],"logged":[720897,2621441],"level":[393219,589829,720899,1835011,2031618,2293763,2490370,2621443,3932162,5636099,6094850],"line":[589827,2031619,2490371,6094852],"load":[5111809],"lowest":[589825,1835009,2293761],"logginglevel":[393222,5636098],"link":[1],"longer":[5439489],"looking":[5439489],"locate":[5439489],"levels":[393217,5636097],"loglevel":[2031618,6094850],"log4net":[589825,5636097]} \ No newline at end of file diff --git a/docs/fti/FTI_109.json b/docs/fti/FTI_109.json index c75af88..019a75c 100644 --- a/docs/fti/FTI_109.json +++ b/docs/fti/FTI_109.json @@ -1 +1 @@ -{"method":[393217,458753,655361,786433,983041,1245185,1376257],"methods":[327682,720897],"missing":[1179649],"message":[393217,458753],"misspelled":[1310721],"media":[1048577],"manages":[720897,1179649],"member":[262145,655362,1376258],"markup":[1048577],"members":[196609,262145,327681,720897],"manage":[1048577],"maximum":[262145,1179649],"minimum":[262145,1179649],"maml":[1048578],"medialinkinline":[1048577],"mediallink":[1048577],"microsoft":[1048577]} \ No newline at end of file +{"members":[262145,393217,589825,983041,1835009,2162689,2490369,2686977,2949121,3145729,4915201,5767169],"member":[393217,2031618,6094850],"manages":[589825,5636097],"method":[131073,196609,327681,458753,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1900545,1966081,2031617,2097153,2228225,2359297,2621441,2752513,2818049,2883585,3080193,3211265,3276801,3342337,3407873,3538945,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,5242881,5308417,5373953,5505025,5570561,5832705,5898241,5963777,6029313,6094849],"misspelled":[5439489],"missing":[131073,196612,327683,458756,655363,786433,851974,917508,1114115,1179651,1245187,1310724,1441796,1507332,1572870,1703940,1900545,1966085,2097155,2359299,2424833,2752516,2883587,2949122,3014657,3211267,3276804,3407877,3342340,3473409,3604481,3735556,3801093,3866628,3997701,4063234,4128769,4194307,4259845,4325379,4456453,4521989,4587524,4653059,4718594,4784133,4849669,5046273,5242883,5373957,5505028,5767169,5832707,5963780,6029316],"minimum":[393217,5636097],"message":[720897,2621441],"mit":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2818049,2752513,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5177345,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849],"methods":[262146,589825,983042,2162689,2490370,2686978,2949121,5767169],"maximum":[393217,5636097],"memberwiseclone":[262145,2686977,2949121,5767169]} \ No newline at end of file diff --git a/docs/fti/FTI_110.json b/docs/fti/FTI_110.json index 1e946e9..46c838f 100644 --- a/docs/fti/FTI_110.json +++ b/docs/fti/FTI_110.json @@ -1 +1 @@ -{"net":[131074,262146,393218,458754,589826,655362,786434,720898,917506,983042,1376258],"namespace":[131074,196609,262146,327681,393218,458754,589826,655362,786434,720898,917506,983042,1179649,1245185,1376258],"nlog":[720897,1179649],"notinheritable":[720897]} \ No newline at end of file +{"new":[2424833,2555905,2949121,5767169],"namespace":[65538,131074,196610,262145,327682,393218,458754,524289,589826,655362,720898,786434,851970,917506,983041,1048578,1114114,1179650,1245186,1310722,1441794,1507330,1572866,1638401,1703938,1769474,1835009,1900546,1966082,2031618,2097154,2162690,2228225,2293762,2359298,2424834,2490369,2555906,2621442,2686977,2752514,2818050,2883586,2949122,3014658,3080193,3145729,3211266,3276802,3342338,3407874,3473410,3538945,3604482,3670017,3735554,3801090,3866626,3932161,3997698,4063234,4128770,4194306,4259842,4325378,4390913,4456450,4521986,4587522,4653058,4718594,4784130,4849666,4915201,4980738,5046274,5177345,5242882,5308418,5373954,5505026,5570561,5636097,5701634,5767170,5832706,5898241,5963778,6029314,6094850],"null":[5701633],"nlog":[589825,5636097],"net":[65538,131074,196610,327682,393218,458754,589826,655362,720898,786434,851970,917506,1048578,1114114,1179650,1245186,1310722,1441794,1507330,1572866,1703938,1769474,1900546,1966082,2031618,2097154,2162690,2293762,2359298,2424834,2555906,2621442,2752514,2818050,2883586,2949122,3014658,3211266,3276802,3407874,3342338,3473410,3604482,3735554,3801090,3866626,3997698,4063234,4128770,4194306,4259842,4325378,4456450,4521986,4587522,4653058,4718594,4784130,4849666,4980738,5046274,5242882,5308418,5373954,5505026,5701634,5767170,5832706,5963778,6029314,6094850]} \ No newline at end of file diff --git a/docs/fti/FTI_111.json b/docs/fti/FTI_111.json index 19e56cf..ca0067b 100644 --- a/docs/fti/FTI_111.json +++ b/docs/fti/FTI_111.json @@ -1 +1 @@ -{"offtheshelf":[720897,1179649],"occurred":[1114113],"one":[1048577],"order":[1048577],"organize":[1048577],"object":[327681,393220,655363,720898,1245185,1376259],"output":[196609,720897,917505],"overwriting":[327681,720897,983041],"optionally":[327681,720897,983041],"overwritten":[983041],"overload":[393217,458753,1245185]} \ No newline at end of file +{"offtheshelf":[589825,5636097],"overload":[196609,327681,458753,720897,851969,1179649,1441793,1507329,1572865,1638401,1966081,2097153,2228225,2359297,2621441,2752513,3014657,3080193,3276801,3342337,3407873,3538945,3670017,3735553,3801089,3932161,4390913,4456449,4521985,4784129,4849665,5046273,5177345,5373953,5570561,5898241,5963777,6029313],"optionally":[589825,2490369,2818049],"output":[589825,1835009,4980737],"overwritten":[2818049],"overriding":[2162689,3145729,5701633],"object":[262155,327686,458759,589826,1179650,1245186,1310726,1638402,2031618,2097154,2162689,2228226,2359302,2490369,2621443,2686995,2949132,3276802,3342343,3473410,3538946,3604482,3670018,3735559,3801096,3932161,4325381,4587526,4849672,5242882,5767188,5832709,5963783,6029314,6094850],"occurred":[5111809],"overwriting":[589825,2490369,2818049],"operations":[262145,2686977,2949121,5767169],"overwriteexistingitems":[655363,917507,1703939,3211267,3866627,3997699,4063235,4194307,4259843,4653059,4718595,5505027]} \ No newline at end of file diff --git a/docs/fti/FTI_112.json b/docs/fti/FTI_112.json index 9950831..0f4460c 100644 --- a/docs/fti/FTI_112.json +++ b/docs/fti/FTI_112.json @@ -1 +1 @@ -{"possible":[720897,1179649],"params":[393217,655361,1376257],"persists":[1114113],"property":[131075,589827,917507,1048577],"properties":[196610,720897,1048577],"page":[524289,1048577,1114113,1310724],"path":[983041],"public":[131074,262146,393218,458754,589826,655362,786434,720898,917506,983042,1376258],"paramarray":[393217,655361,1376257],"point":[1048577],"place":[1048577],"parameters":[393217,458753,655361,983041,1376257],"project":[524291,1048584],"problem":[983041]} \ No newline at end of file +{"property":[65538,1769474,2293762,3014658,3473410,3604482,4980738,5046274,5177345,5701634],"preliminary":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3407873,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5177345,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849],"process":[983041,1048577,2162690,5636097],"properties":[524290,589825,1835010,2162689,2949121,3145730,4915202,5767169],"perform":[262145,2686977,2949121,5767169],"param":[196609,327682,458755,655361,851971,917506,1114113,1179649,1245185,1310722,1441793,1507329,1572867,1703939,1966082,2097153,2359298,2424833,2752513,2883585,3211266,3276802,3407874,3342339,3735554,3801091,3866627,3997699,4063233,4194306,4259843,4325378,4456450,4521986,4587522,4653057,4718593,4784130,4849667,5242881,5373954,5505026,5832706,5963778,6029314],"page":[5111809,5439492],"possible":[589825,5636097],"processors":[65537],"parameters":[196610,327681,458753,655361,720897,851970,917505,1048577,1114113,1179649,1245185,1310721,1441794,1507330,1572866,1703937,1966082,2031617,2097153,2359297,2424833,2621441,2752514,2818049,2883585,2949121,3014657,3211265,3276801,3407874,3342337,3735553,3801089,3866625,3997697,4063233,4194305,4259841,4325377,4456450,4521986,4587521,4653057,4718593,4784130,4849665,5046273,5242881,5373954,5505025,5832705,5963777,6029313,6094849],"processing":[2162690,3145730,5701634],"processes":[2162689,5636097],"public":[65537,131073,196609,327681,393217,458753,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1703937,1769473,1900545,1966081,2031617,2097153,2162689,2293761,2359297,2424833,2555905,2621441,2752513,2818049,2883585,2949121,3014657,3211265,3276801,3407873,3342337,3473409,3604481,3735553,3801089,3866625,3997697,4063233,4128769,4194305,4259841,4325377,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5046273,5242881,5308417,5373953,5505025,5701633,5767169,5832705,5963777,6029313,6094849],"params":[2031617,2621441,6094849],"path":[2818049],"problem":[2818049],"persists":[5111809],"passed":[983041,1048578,2162690,5636097,6094849],"possibly":[1048577]} \ No newline at end of file diff --git a/docs/fti/FTI_114.json b/docs/fti/FTI_114.json index 336cdb6..490bd2b 100644 --- a/docs/fti/FTI_114.json +++ b/docs/fti/FTI_114.json @@ -1 +1 @@ -{"resources":[524289,851969,1048577],"resettimer":[327681,786435,720897],"results":[262145],"replace":[1048577],"remove":[1048578],"remote":[393218,458754],"raised":[983041],"release":[851969],"resets":[327681,786433,720897],"released":[851969],"removing":[1048577],"referenced":[1048577],"redirected":[1],"requested":[1310721],"ripple":[131073],"removed":[1048577],"remarks":[131073,393217,458753,589825,917505,983041],"reference":[131073,196609,262145,327681,393217,458753,589825,655361,786433,720897,917505,983041,1048577,1245185,1376257]} \ No newline at end of file +{"repository":[131075,196614,262146,327685,458758,524289,655365,786435,851976,917510,1114117,1179653,1245189,1310726,1441798,1507334,1572872,1638402,1703942,1900547,1966087,2097157,2228226,2359301,2424836,2555908,2686979,2752518,2883589,2949127,3014659,3080194,3211269,3276806,3342342,3407879,3473411,3538946,3604483,3670018,3735558,3801095,3866630,3997703,4063236,4128771,4194309,4259847,4325381,4390914,4456455,4521991,4587526,4653061,4718596,4784135,4849671,4915203,5046275,5177345,5242885,5373959,5505030,5570562,5636098,5767175,5832709,5898242,5963782,6029318],"remarks":[65537,720897,1769473,2293761,2621441,2818049,4980737,5701633,6094849],"resolution":[6094849],"resettimer":[589825,2490369,5308418],"return":[196609,655361,786433,851969,917505,983041,1048578,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1966081,2097153,2162689,2752513,2883585,3276801,3407873,3735553,3801089,3997697,4259841,4456449,4521985,4587521,4653057,4784129,4849665,5242881,5373953,5505025,5701634,5963777,6029313],"represents":[262145,2686977,2949121,5767169],"results":[393217],"raised":[2818049],"redirected":[1],"returned":[786433,2686977,5767169],"returns":[196609,262145,655361,786434,851969,917505,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1966081,2097153,2686978,2752513,2883585,2949121,3276801,3407873,3735553,3801089,3997697,4259841,4456449,4521985,4587521,4653057,4784129,4849665,5242881,5373953,5505025,5767170,5963777,6029313],"reference":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2818049,2752513,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5177345,5242881,5308417,5373953,5505025,5570561,5701633,5767169,5832705,5898241,5963777,6029313,6094849],"resets":[589825,2490369,5308417],"resources":[262145,2686977,2949121,5767169],"repositorylasttryexception":[786435,2686977,5767169],"ripple":[1769473,5701633],"reclaimed":[262145,2686977,2949121,5767169],"resolved":[1048577,5701634],"resolve":[2162689,5636097],"resolving":[983041,1048577,2162689],"remote":[720898,2621442],"requested":[5439489],"required":[65537,2162690,3145730,5701634]} \ No newline at end of file diff --git a/docs/fti/FTI_115.json b/docs/fti/FTI_115.json index 8771823..2280c2d 100644 --- a/docs/fti/FTI_115.json +++ b/docs/fti/FTI_115.json @@ -1 +1 @@ -{"section":[524289],"sub":[393217,458753,655361,786433,983041,1376257],"small":[720897,1179649],"started":[1048579],"stack":[393217,458753],"set":[131074,196609,262145,589827,720897,917506,1048577,1179649],"summary":[1179649],"starting":[1048577],"string":[131075,327682,393222,655365,720898,983046,1245185,1376260],"sample":[1048577],"system":[131073,393219,458753,655362,720897,983043,1376258],"sorry":[1114113,1310721],"sort":[65537],"sets":[131073,196611,589825,720899,917505],"store":[1048577],"stdout":[196609,720897,917505],"server":[393217,458753],"syntax":[131073,262145,327681,393217,458753,589825,655362,786433,720898,917505,983041,1376257],"search":[65537,1310721],"studio":[1048577],"solution":[1048578],"shown":[393217,1048577],"scratch":[720897,1179649],"suggestion":[1048577],"sandcastle":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048580,1114113,1179649,1245185,1310721,1376257],"specific":[524289],"selenium":[393218,458755],"select":[524289,655361,1376257],"site":[1114113],"static":[131073,393217,458753,589825,655361,786433,720897,917505,983041,1376257],"source":[1048577],"standard":[327681,655361,720897],"shared":[131073,393217,458753,589825,655361,786433,917505,983041,1376257]} \ No newline at end of file +{"small":[589825,5636097],"setcategoryglobal":[2686977,4325381,5767169],"stack":[720897,2621441],"selenium":[720899,2621442],"send":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2818049,2752513,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5177345,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849],"site":[5111809],"sets":[65537,589827,1769473,1835011,2162690,2293761,3145730,4980737,5701633],"static":[65537,131073,196609,327681,458753,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1703937,1769473,1900545,1966081,2031617,2097153,2162689,2293761,2359297,2621441,2752513,2818049,2883585,3211265,3276801,3407873,3342337,3473409,3604481,3735553,3801089,3866625,3997697,4063233,4128769,4194305,4259841,4325377,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5242881,5308417,5373953,5505025,5701633,5832705,5963777,6029313,6094849],"subject":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3407873,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5177345,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849],"split":[65537,5701633],"sort":[1376257],"safe":[65537],"standard":[589825,2490369,6094849],"server":[720897,2621441],"setcategorylocal":[2686977,5767169,5832709],"specified":[262145,2686977,2949121,5767169],"scratch":[589825,5636097],"separator":[5701633],"set":[65537,393217,589825,1769473,1835009,2162689,2293762,3014657,3145729,4980737,5046273,5636097,5701634],"shown":[2621441],"shallow":[262145,2686977,2949121,5767169],"setitemlocal":[2359302,2686978,3342343,3538947,5767170],"serves":[262145,2686977,2949121,5767169],"system":[196613,327688,458767,589825,655364,720897,851982,917514,1048577,1114116,1179652,1245188,1310738,1441797,1507333,1572878,1703951,1769473,1966092,2031618,2097156,2162689,2359304,2424834,2621443,2752517,2818051,2883588,2949121,3014660,3211272,3276810,3407878,3342351,3735562,3801106,3866639,3997714,4063235,4194312,4259858,4325390,4456460,4521990,4587538,4653060,4718595,4784140,4849682,5046274,5242884,5373964,5505034,5767169,5832718,5963786,6029322,6094850],"summary":[131073,196609,327681,458753,655361,851969,917505,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1703937,1900545,1966081,2097153,2359297,2752513,2883585,2949121,3014657,3211265,3276801,3407873,3342337,3473409,3604481,3735553,3801089,3866625,3997697,4063233,4128769,4194305,4259841,4325377,4456449,4521985,4587521,4653057,4718593,4784129,4849665,5046273,5242881,5373953,5505025,5767169,5832705,5963777,6029313],"string":[196615,262145,327686,458766,524291,589826,851986,917510,983041,1048583,1114117,1179654,1245191,1310732,1441799,1507335,1572882,1638403,1703948,1769474,1966096,2031619,2097158,2162689,2228230,2359302,2490370,2621445,2687013,2752519,2818052,2883589,2949124,3014664,3080198,3211269,3276814,3342350,3407880,3538947,3670022,3735559,3801104,3866636,3932161,3997710,4194309,4259854,4325386,4390915,4456464,4521992,4587532,4784144,4849680,5046276,5177347,5242887,5373968,5505030,5570563,5701636,5767205,5832714,5898246,5963783,6029326,6094852],"syntax":[65537,131073,196609,327681,393217,458753,589826,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1703937,1769473,1900545,1966081,2031617,2097153,2162689,2293761,2359297,2424833,2490369,2555905,2621441,2752513,2818049,2883585,2949121,3014657,3211265,3276801,3407873,3342337,3473409,3604481,3735553,3801089,3866625,3997697,4063233,4128769,4194305,4259841,4325377,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5046273,5242881,5308417,5373953,5505025,5701633,5767169,5832705,5963777,6029313,6094850],"sorry":[5111809,5439489],"stdout":[589825,1835009,4980737],"separating":[65537],"setitemglobal":[327686,458759,1638403,2686978,5767170],"strings":[2162690,5636098],"select":[2031617,6094849],"search":[1376257,5439489]} \ No newline at end of file diff --git a/docs/fti/FTI_116.json b/docs/fti/FTI_116.json index 42bb23a..b61afaa 100644 --- a/docs/fti/FTI_116.json +++ b/docs/fti/FTI_116.json @@ -1 +1 @@ -{"teamcontrolium":[131074,196609,262146,327681,393218,458754,589826,655363,786434,720899,917506,983042,1179650,1245185,1376259],"test":[393217,458753,655361,1376257],"topics":[524289,1048581],"termination":[327681,720897,1376257],"toolwrapper":[393217,458753],"type":[131073,196609,327681,393219,458753,589825,655363,720897,917505,983043,1376259],"transform":[1048578],"topic":[1,1048577],"try":[1114113,1310721],"trying":[393217],"true":[196609,720897,917506,983041],"title":[65537,524289],"testdebug":[262147,655361,1376257],"table":[1048577],"throws":[131073],"text":[262146,327682,393221,655362,720898,983046,1179650,1376258],"thrown":[327681,393217,458753,655361,720897],"top":[196609,327681,720898,1245185,1310721],"trace":[393217,458753],"typo":[1310721],"talk":[393217,458753],"testinformation":[262147],"timer":[327681,786433,720897],"testtoollog":[131075,196611,720899,917506],"textstring":[655363,1376259],"todo":[524291,851971,1048577]} \ No newline at end of file +{"tokens":[65537,983041,1048579,2162692,3145730,5636097,5701633],"thread":[65539],"trycloneitemlocaltoglobal":[2686977,3997703,5767169],"top":[262145,524289,589826,983041,1638401,1835009,2162690,2228225,2490369,2686977,2949123,3080193,3145729,3538945,3670017,3932161,4390913,4915201,5177345,5439489,5570561,5767171,5898241],"typo":[5439489],"toolwrapper":[720897,2621441],"trying":[2621441],"testtoollog":[589827,1769474,1835011,4980738],"token":[65540,2162689,3145729,5701636],"trygetcategoryglobal":[2686977,4587526,5767169],"topic":[1,65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2818049,2752513,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5177345,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849],"test":[720897,2031617,2621441,6094849],"testdebug":[393219,2031617,6094849],"trycloneitemglobaltolocal":[2686977,4259847,5767169],"type":[65537,196611,262146,327682,458755,589825,655362,720897,786433,851973,917507,983041,1048578,1114114,1179650,1245186,1310723,1441795,1507331,1572869,1703939,1769473,1835009,1966084,2031619,2097154,2162689,2293761,2359298,2490369,2424833,2621443,2686978,2818051,2752515,2883586,2949123,3014659,3145729,3211266,3276803,3407876,3342339,3473409,3604481,3735555,3801092,3866627,3997700,4063233,4194306,4259844,4325378,4456452,4521988,4587523,4653058,4718593,4784132,4849668,4915201,4980737,5046274,5242882,5373956,5505027,5701633,5767170,5832706,5963779,6029315,6094851],"trygetitemglobal":[1572873,2228229,2686980,3407880,3801096,5767172,5963783],"tryclonecategorylocaltoglobal":[2686977,5505030,5767169],"textstring":[2031618,6094850],"trace":[720897,2621441],"trycloneglobaltolocal":[2686977,4653061,5767169],"trygetcategorylocal":[1310726,2686977,5767169],"trygetitemlocal":[851977,2686980,3670021,3735559,4521992,4849672,5767172],"timer":[589825,2490369,5308417],"throws":[1769473],"testinformation":[393219],"typeparam":[196609,851969,1441793,1507329,1572865,1966081,2752513,2949121,3407873,4456449,4521985,4784129,5373953],"trygetruncategoryoptions":[786433,2686977,5767169],"tokenisedstring":[1048578],"tryclonelocaltoglobal":[655365,2686977,5767169],"teamcontrolium":[65540,131077,196616,262147,327687,393220,458760,524291,589829,655367,720900,786437,851978,917512,983043,1048580,1114119,1179655,1245191,1310728,1376257,1441800,1507336,1572874,1638403,1703944,1769476,1835011,1900549,1966089,2031621,2097159,2162693,2228227,2293764,2359303,2424837,2490371,2555908,2621444,2686979,2752520,2818052,2883591,2949127,3014661,3080195,3145731,3211271,3276808,3342344,3407881,3473413,3538947,3604485,3670019,3735560,3801097,3866632,3932163,3997705,4063238,4128773,4194311,4259849,4325383,4390915,4456457,4521993,4587528,4653063,4718598,4784137,4849673,4915203,4980740,5046277,5111809,5177347,5242887,5308420,5373961,5439489,5505032,5570563,5636099,5701636,5767174,5832711,5898243,5963784,6029320,6094853],"tostring":[262145,2686977,2949121,5767169],"termination":[589825,2031617,2490369],"title":[1376257],"text":[393218,589826,2031618,2490370,2621444,2818053,5636098,5701633,6094852],"try":[262145,2686977,2949121,5111809,5439489,5767169],"tryclonecategoryglobaltolocal":[917510,2686977,5767169],"thrown":[589825,720897,2490369,2621441,6094849],"true":[589825,1835009,2818049,4980738],"talk":[720897,2621441]} \ No newline at end of file diff --git a/docs/fti/FTI_117.json b/docs/fti/FTI_117.json index 868d943..2af975c 100644 --- a/docs/fti/FTI_117.json +++ b/docs/fti/FTI_117.json @@ -1 +1 @@ -{"unlike":[1048577],"utilities":[131076,196609,262148,327681,393220,458756,589828,655365,786436,720901,917508,983044,1179650,1245185,1376261],"using":[655361,720897,1048577,1179649,1376257],"used":[262145,1048577,1179649],"url":[1310721],"usage":[655361,1376257],"update":[1048577]} \ No newline at end of file +{"used":[65537,393217,5636097,5701633],"using":[589825,2031617,5636097,5701633,6094849],"utilities":[65541,131078,196617,262146,327688,393221,458761,524290,589830,655368,720901,786438,851979,917513,983042,1048581,1114120,1179656,1245192,1310729,1376257,1441801,1507337,1572875,1638402,1703945,1769477,1835010,1900550,1966090,2031622,2097160,2162694,2228226,2293765,2359304,2424838,2490370,2555909,2621445,2686978,2752521,2818053,2883592,2949128,3014662,3080194,3145730,3211272,3276809,3342345,3407882,3473414,3538946,3604486,3670018,3735561,3801098,3866633,3932162,3997706,4063239,4128774,4194312,4259850,4325384,4390914,4456458,4521994,4587529,4653064,4718599,4784138,4849674,4915202,4980741,5046278,5111809,5177346,5242888,5308421,5373962,5439489,5505033,5570562,5636098,5701638,5767175,5832712,5898242,5963785,6029321,6094854],"url":[5439489],"usage":[2031617,6094849]} \ No newline at end of file diff --git a/docs/fti/FTI_118.json b/docs/fti/FTI_118.json index 983911f..c411d3b 100644 --- a/docs/fti/FTI_118.json +++ b/docs/fti/FTI_118.json @@ -1 +1 @@ -{"various":[524289],"version":[131073,262145,393217,458753,524293,589825,655361,786433,720897,851972,917505,983042,1048577,1376257],"verbose":[262145,1179649],"visual":[1048577],"versioning":[327681,720897,983041],"void":[393217,458753,655361,786433,983041,1376257],"value":[131073,196609,262145,589825,720897,917506]} \ No newline at end of file +{"versioning":[589825,2490369,2818049],"verbose":[393217,5636097],"valid":[1048577],"void":[131073,327681,458753,720897,1703937,1900545,2031617,2359297,2621441,2818049,3211265,3342337,3866625,4063233,4128769,4194305,4325377,4718593,5308417,5832705,6094849],"verb":[65538],"value":[65537,196609,393217,589825,655361,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1769473,1835009,1966081,2097153,2293761,2752513,2883585,3014657,3276801,3407873,3473409,3604481,3735553,3801089,3997697,4259841,4456449,4521985,4587521,4653057,4784129,4849665,4980738,5046273,5242881,5373953,5505025,5701633,5963777,6029313],"version":[65537,131073,196609,327681,393217,458753,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1703937,1769473,1900545,1966081,2031617,2097153,2162689,2293761,2359297,2424833,2555905,2621441,2752513,2818050,2883585,2949121,3014657,3211265,3276801,3407873,3342337,3473409,3604481,3735553,3801089,3866625,3997697,4063233,4128769,4194305,4259841,4325377,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5046273,5242881,5308417,5373953,5505025,5701633,5767169,5832705,5963777,6029313,6094849]} \ No newline at end of file diff --git a/docs/fti/FTI_119.json b/docs/fti/FTI_119.json index 46ff9f1..5cc3722 100644 --- a/docs/fti/FTI_119.json +++ b/docs/fti/FTI_119.json @@ -1 +1 @@ -{"writetoconsole":[131074,196611,720899,917508],"writeln":[1376257],"write":[131074,196609,262149,327683,393218,458754,655363,720900,983041,1179649,1376260],"web":[1310721],"writes":[196609,327685,393217,458753,589825,655361,720902,983041,1245186,1376257],"welcome":[524289,1048577],"writetexttofile":[327681,720897,983043],"writeline":[327681,655364,720897],"want":[720897,1179649],"written":[196615,262151,393218,458754,589827,655362,720903,917509,983041,1179650,1376258],"wanted":[1048577]} \ No newline at end of file +{"writetoconsole":[589827,1769474,1835011,4980739],"write":[393217,589827,720898,1769474,1835009,2490370,2621442,2818049,5636097,6094850],"web":[5439489],"writelogexception":[393220,589826,720900,2490370,2621444,3932163,6094849],"writeln":[2031617],"want":[589825,5636097],"writelog":[589825,2031619,2490369],"written":[393223,589831,720898,1835015,2031618,2293763,2621442,2818049,4980741,5636098,6094851],"writes":[589830,720897,1835009,2031617,2293761,2490373,2621441,2818049,3932162,6094849],"writelogline":[589825,2490369,6094851],"writetexttofile":[589825,2490369,2818050]} \ No newline at end of file diff --git a/docs/fti/FTI_120.json b/docs/fti/FTI_120.json deleted file mode 100644 index 6f5323d..0000000 --- a/docs/fti/FTI_120.json +++ /dev/null @@ -1 +0,0 @@ -{"xml":[1048577]} \ No newline at end of file diff --git a/docs/fti/FTI_122.json b/docs/fti/FTI_122.json index d0a8a21..21f0fa2 100644 --- a/docs/fti/FTI_122.json +++ b/docs/fti/FTI_122.json @@ -1 +1 @@ -{"zero":[327681,786433,720897]} \ No newline at end of file +{"zero":[589825,2490369,5308417]} \ No newline at end of file diff --git a/docs/fti/FTI_97.json b/docs/fti/FTI_97.json index 291b7ef..8f11f48 100644 --- a/docs/fti/FTI_97.json +++ b/docs/fti/FTI_97.json @@ -1 +1 @@ -{"attempts":[327681,393217,458753,655361,720897],"added":[983041,1048577],"adding":[327681,720897,983041,1048577],"available":[1310721],"args":[393219,655363,1048577,1376259],"assistance":[1048577],"abort":[393217,458753],"arguments":[393217,655361,1376257],"assembly":[131073,262145,393217,458753,589825,655361,786433,720897,917505,983041,1048577,1376257],"address":[1310721],"additional":[393217],"argument":[1048577],"appear":[1048577],"auto":[327681,720897,983042],"automatically":[1],"autoversion":[983043],"aborttest":[393217,458753],"administrator":[1114113],"active":[327684,393217,458753,655361,720900,1245186,1376257],"able":[327681,393217,458753,655361,720897,983041],"add":[524290,851969,1048578],"allow":[131073],"action":[131075]} \ No newline at end of file +{"allowed":[5701633],"array":[5701633],"arguments":[2031617,2621441,6094852],"assembly":[65537,131073,196609,327681,393217,458753,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1703937,1769473,1900545,1966081,2031617,2097153,2162689,2293761,2359297,2424833,2555905,2621441,2752513,2818049,2883585,2949121,3014657,3211265,3276801,3342337,3407873,3473409,3604481,3735553,3801089,3866625,3997697,4063233,4128769,4194305,4259841,4325377,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5046273,5242881,5308417,5373953,5505025,5701633,5767169,5832705,5963777,6029313,6094849],"allow":[1769473,2162689,3145729,5701633],"able":[589825,720897,2490369,2621441,2818049,6094849],"adding":[589825,2490369,2818049],"address":[5439489],"action":[1769474],"active":[589828,720897,2031617,2490372,2621441,3932162,6094849],"added":[2818049],"aborttest":[720897,2621441],"automatically":[1],"args":[2031618,2621442,6094850],"abort":[720897,2621441],"autoversion":[2818050],"attempts":[589825,720897,2490369,2621441,6094849],"auto":[589825,2490369,2818050],"assigned":[5701633],"available":[5439489],"allows":[262145,2686977,2949121,5767169],"administrator":[5111809],"additional":[2621441],"affects":[65537]} \ No newline at end of file diff --git a/docs/fti/FTI_98.json b/docs/fti/FTI_98.json index 8db1b3d..346c0ad 100644 --- a/docs/fti/FTI_98.json +++ b/docs/fti/FTI_98.json @@ -1 +1 @@ -{"boolean":[917506,983042],"buildaction":[1048577],"bool":[917505,983041],"box":[1310721],"builde":[1048578]} \ No newline at end of file +{"bool":[655362,851969,917506,1114113,1310721,1572865,1703937,2424833,2818049,2883585,3211265,3407873,3735553,3801089,3866625,3997698,4063233,4194305,4259842,4521985,4587521,4653058,4718593,4849665,4980737,5505026,5963777],"boolean":[655365,851969,917510,1114113,1310721,1572865,1703941,2424834,2818049,2883585,3211268,3407873,3735553,3801089,3866629,3997703,4063235,4194308,4259847,4521985,4587521,4653061,4718595,4849665,4980737,5505030,5963777],"body":[65537],"box":[5439489]} \ No newline at end of file diff --git a/docs/fti/FTI_99.json b/docs/fti/FTI_99.json index a514bdd..249baa4 100644 --- a/docs/fti/FTI_99.json +++ b/docs/fti/FTI_99.json @@ -1 +1 @@ -{"console":[196612,720900,917509],"contact":[1114113],"contentlayout":[1048577],"caught":[327682,393217,458753,720898,1245186],"check":[1310721],"compiled":[1048577],"catch":[393217,458753],"contains":[1048577],"current":[262145,393217,458753,1179649],"comments":[1048577],"changing":[1048577],"connect":[393218,458753],"classes":[1179649],"change":[851969,1048577],"contents":[1048577],"code":[1376257],"copy":[131073,262145,393218,458754,589825,655362,786433,720897,917505,983041,1376258],"currentlogginglevel":[196609,589827,720897],"create":[1048577],"conceptual":[1048583],"connecting":[458753],"class":[65537,131075,196610,262145,327682,393218,458754,524289,589826,655362,720900,786434,851969,917506,983042,1048577,1114113,1179650,1245186,1310721,1376258],"content":[1048587],"cant":[393217,458753],"contain":[1310721],"changes":[524290,851969],"created":[720897,1179649],"choice":[1048577]} \ No newline at end of file +{"comments":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2818049,2752513,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5177345,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849],"collections":[1310725,4325380,4587525,5832708],"created":[589825,5636097],"console":[589828,1835012,4980741],"called":[2162689,3145729,5701633],"clonecategoryglobaltolocal":[2686977,3211269,5767169],"constructors":[2949121,5767169],"changes":[65537],"char":[65538,5701635],"currentlogginglevel":[589825,1835009,2293762],"code":[2031617],"contain":[5439489],"class":[65537,131073,196609,262145,327681,458753,524289,589826,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1769474,1835009,1900545,1966081,2031617,2097153,2162690,2228225,2293761,2359297,2424834,2490369,2555906,2621441,2686977,2818049,2752513,2883585,2949123,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5177345,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767171,5832705,5898241,5963777,6029313,6094849],"cloneglobaltolocal":[2686977,4063236,5767169],"calls":[65537],"clearrepositoryall":[1900547,2686977,5767169],"categoryname":[458755,851971,917507,1245187,1310723,1572867,1703939,1966083,3211267,3276803,3342339,3801091,3866627,3997699,4194307,4259843,4456451,4587523,4784131,4849667,5242883,5373955,5505027,6029315],"classes":[5636097],"clonecategorylocaltoglobal":[2686977,4194309,5767169],"clearrepositorylocal":[2686977,4128771,5767169],"connecting":[720897],"creates":[262145,2686977,2949121,5767169],"cant":[720897,2621441],"clearrepositoryglobal":[131075,2686977,5767169],"current":[262148,393217,720897,2621441,2686980,2949124,5636097,5767172],"check":[5439489],"cleanup":[262145,2686977,2949121,5767169],"category":[1114115,1310723,2883587,3014658,4325379,4587523,5832707],"caught":[589826,720897,2490370,2621441,3932162],"change":[65538,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3407873,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5177345,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849],"ctor":[2424833],"connect":[720897,2621442],"constructor":[2424833,2555905],"cloneitemlocaltoglobal":[2686977,3866630,5767169],"customtokenprocessor":[2162689,3145729,5701634],"copy":[65537,131073,196609,262145,327681,393217,458753,589825,655361,720898,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1703937,1769473,1900545,1966081,2031618,2097153,2162689,2293761,2359297,2424833,2555905,2621442,2686977,2752513,2818049,2883585,2949122,3014657,3211265,3276801,3407873,3342337,3473409,3604481,3735553,3801089,3866625,3997697,4063233,4128769,4194305,4259841,4325377,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5046273,5242881,5308417,5373953,5505025,5701633,5767170,5832705,5963777,6029313,6094850],"cloneitemglobaltolocal":[1703942,2686977,5767169],"containing":[1048577],"clonelocaltoglobal":[2686977,4718596,5767169],"catch":[720897,2621441],"contact":[5111809],"collection":[262145,2686977,2949121,5767169],"custom":[2162689,3145729,5701633]} \ No newline at end of file diff --git a/docs/fti/FTI_Files.json b/docs/fti/FTI_Files.json index 1cdc32f..8224ef0 100644 --- a/docs/fti/FTI_Files.json +++ b/docs/fti/FTI_Files.json @@ -1 +1 @@ -["A Sandcastle Documented Class Library - Redirect\u0000index.html\u000018","A Sandcastle Documented Class Library - Search\u0000search.html\u000014","Log.TestToolLog Property\u0000html/05b35a51-d7bf-318a-283e-b726721b2d99.htm\u0000130","Log Properties\u0000html/54c361a4-7a28-7653-7b74-1ef19ca316d6.htm\u0000161","Log.LogLevels Enumeration\u0000html/181039e9-026c-b903-0493-ffc93e8294cb.htm\u0000193","Log Methods\u0000html/6efe7d11-f7c0-fb9e-df46-9de555b2bdcb.htm\u0000155","Log.LogException Method (Exception, String, Object[])\u0000html/1b7db609-a123-dcf1-965c-e3582fac0013.htm\u0000263","Log.LogException Method (Exception)\u0000html/56439bd9-cdf5-1530-890e-b214f535cce8.htm\u0000198","Version History\u0000html/892c2f0d-e24d-4226-b036-4b77342b64bf.htm\u000078","Log.CurrentLoggingLevel Property\u0000html/7d4e9056-63ff-ae08-457c-f844227342c7.htm\u0000120","Log.WriteLine Method\u0000html/721beb29-ec09-9349-3b54-1df02ddac494.htm\u0000219","Log Class\u0000html/206106b2-7463-8cdd-beb3-c358dd3726b2.htm\u0000368","Log.ResetTimer Method\u0000html/df1e78f6-f8c1-7652-f5d3-abbe5c625a81.htm\u000060","Version 1.0.0.0\u0000html/e098fb13-fbbf-4a28-8c23-d2ff16b6a519.htm\u000045","Log.WriteToConsole Property\u0000html/ea31371a-3e90-68f5-5890-59b2806840f6.htm\u0000155","Log.WriteTextToFile Method\u0000html/8d56f9fd-8f97-bc2e-cd0a-04be09174e7f.htm\u0000174","Welcome to the [TODO: Add project name]\u0000html/9467656b-fe91-445f-b442-bef71966f452.htm\u0000387","General Error\u0000html/GeneralError.htm\u000035","TeamControlium.Utilities Namespace\u0000html/fbd4e8e5-43a0-8d5d-dcea-8f8e54f8da45.htm\u0000143","Log.LogException Method\u0000html/eeb7b2bf-4f84-5b02-16f5-e81a6d39b26a.htm\u000062","Page Not Found\u0000html/PageNotFound.htm\u000069","Log.Write Method\u0000html/f60b67bc-0876-89ab-76b5-03d30a8320f4.htm\u0000195"] \ No newline at end of file +["TeamControlium - Utilities library - Redirect\u0000index.html\u000018","Detokenizer.DefaultTokenDelimiterCurrentThread Property\u0000html/217a21e7-004f-d7d3-836d-38789b56b59a.htm\u0000140","Repository.ClearRepositoryGlobal Method\u0000html/37e582ea-f48c-aa47-ef00-ed08d75a96f8.htm\u000086","Repository.GetItemGlobal(T) Method (String)\u0000html/370ad403-3d74-930d-131c-8d54aaa421ae.htm\u0000186","DynamicItems(dynamic) Methods\u0000html/200ae307-645e-17ef-b834-1715b0435514.htm\u0000173","Repository.SetItemGlobal Method (String, Object)\u0000html/3ac723ab-f331-7600-8049-4ba074dbb7bb.htm\u0000166","Log.LogLevels Enumeration\u0000html/181039e9-026c-b903-0493-ffc93e8294cb.htm\u0000212","Repository.SetItemGlobal Method (String, String, Object)\u0000html/37f8a113-ed89-05cd-9476-53867b5f89c4.htm\u0000210","DynamicItems(dynamic) Properties\u0000html/3d2ba515-063d-5cac-c417-7b4855217ffc.htm\u000053","Log Class\u0000html/206106b2-7463-8cdd-beb3-c358dd3726b2.htm\u0000376","Repository.TryCloneLocalToGlobal Method\u0000html/41d8fce5-877d-b6d8-1803-bd5ac8e015b4.htm\u0000144","Log.WriteLogException Method (Exception)\u0000html/49706723-c508-606e-d3de-5905ace14979.htm\u0000209","Repository.RepositoryLastTryException Method\u0000html/4d91bc3a-0df9-7dd7-28e1-3197e79abe1a.htm\u0000100","Repository.TryGetItemLocal(T) Method (String, String, T)\u0000html/4a65d96f-4fd7-d8b9-b548-b33c0b1d3f18.htm\u0000295","Repository.TryCloneCategoryGlobalToLocal Method\u0000html/4ac463dc-cfbe-7889-840c-c441e4bb9488.htm\u0000184","Detokenizer Methods\u0000html/4d3865f4-e136-7d36-ad7e-6e7de6d4287a.htm\u000063","Detokenizer.Detokenize Method\u0000html/0dc14cf8-2f71-0876-55a3-3235040ad39d.htm\u0000108","Repository.HasCategoryLocal Method\u0000html/0a8cc7d3-f0ce-1cca-29ce-273d46b5486c.htm\u0000144","Repository.GetItemLocal Method (String)\u0000html/0b2d52f9-3a9c-41c6-e130-3ff99294b38f.htm\u0000149","Repository.GetCategoryGlobal Method\u0000html/1da9ba28-7f1c-013d-09e0-0b325425b450.htm\u0000156","Repository.TryGetCategoryLocal Method\u0000html/1454ecae-9238-a642-2768-f34e2bf0be38.htm\u0000231","TeamControlium - Utilities library - Search\u0000search.html\u000014","Repository.GetItemOrDefaultLocal(T) Method (String)\u0000html/45c7c852-b9f6-13cd-c584-69b44c59f51d.htm\u0000186","Repository.GetItemLocal(T) Method (String)\u0000html/139c8744-bc75-baa6-753d-adfe2d5e1c74.htm\u0000186","Repository.TryGetItemGlobal(T) Method (String, String, T)\u0000html/07090c72-b69c-1c32-f405-9e0efd408b2e.htm\u0000295","Repository.SetItemGlobal Method\u0000html/04be08a8-4313-ed27-21dc-87b159ec81a0.htm\u000058","Repository.CloneItemGlobalToLocal Method\u0000html/0da5ba89-67ea-3e85-1413-ccfc1fd3e07d.htm\u0000201","Log.TestToolLog Property\u0000html/05b35a51-d7bf-318a-283e-b726721b2d99.htm\u0000138","Log Properties\u0000html/54c361a4-7a28-7653-7b74-1ef19ca316d6.htm\u0000174","Repository.ClearRepositoryAll Method\u0000html/5ec2b6cb-a381-b173-ce54-0ab5ed14f65d.htm\u000086","Repository.GetItemLocal(T) Method (String, String)\u0000html/5c8fd456-51dd-03dd-06b2-7fb50786a266.htm\u0000232","Log.WriteLog Method\u0000html/0e8971a0-9d54-12e1-bf5c-b6671655ff2f.htm\u0000187","Repository.GetItemGlobal Method (String)\u0000html/6e5bc7b6-35ef-4256-4ebc-be753db2bb2e.htm\u0000149","Detokenizer Class\u0000html/5e42fb7b-fa08-d355-96c7-43c212894ecc.htm\u0000150","Repository.TryGetItemGlobal Method\u0000html/6e7bb03a-7419-c01d-db6b-49e4fbd5b700.htm\u000078","Log.CurrentLoggingLevel Property\u0000html/7d4e9056-63ff-ae08-457c-f844227342c7.htm\u0000133","Repository.SetItemLocal Method (String, Object)\u0000html/77c1c6a8-b356-27b2-cea4-3d343372f44a.htm\u0000166","Repository.DynamicItems(dynamic) Constructor\u0000html/82aa5e2d-c9d7-a0d3-7414-46ce091e9426.htm\u0000117","Log Methods\u0000html/6efe7d11-f7c0-fb9e-df46-9de555b2bdcb.htm\u0000178","Repository Constructor\u0000html/86e39027-aa53-814e-70e2-5bd9a624fa5d.htm\u000076","Log.WriteLogException Method (Exception, String, Object[])\u0000html/83ae4adb-e73a-de81-e262-e38b2b8c1777.htm\u0000260","Repository Methods\u0000html/5966480e-09e2-facb-8027-68708d7abf57.htm\u0000352","Repository.GetItemOrDefaultGlobal(T) Method (String)\u0000html/8b117c4f-e091-bdfb-361b-5776a64244d4.htm\u0000186","Log.WriteTextToFile Method\u0000html/8d56f9fd-8f97-bc2e-cd0a-04be09174e7f.htm\u0000175","Repository.HasCategoryGlobal Method\u0000html/93c6554a-7054-8638-71de-974eb65a569b.htm\u0000144","Repository.DynamicItems(dynamic) Class\u0000html/708c90f2-20ff-d123-f5eb-4b5867d57fdb.htm\u0000274","Repository.DynamicItems(dynamic).Item Property (String, String)\u0000html/91fb6c5b-ac9a-f4f5-4d65-3370ab26de81.htm\u0000136","Repository.GetItemLocal Method\u0000html/86e0300b-f62b-bdb1-e709-7e6c3712026c.htm\u000066","Detokenizer Properties\u0000html/880793de-1f5b-cd52-adba-367a59c1ea3e.htm\u000090","Repository.CloneCategoryGlobalToLocal Method\u0000html/95a4892c-cccd-9e30-118e-f37d6120288a.htm\u0000159","Repository.GetItemLocal Method (String, String)\u0000html/8e7fa88a-d476-d51f-7a10-dd31aff6ca9b.htm\u0000191","Repository.SetItemLocal Method (String, String, Object)\u0000html/8b1b2c60-9d3f-0970-0d50-57f00e8cf204.htm\u0000210","Repository.TryGetItemGlobal(T) Method (String, T)\u0000html/9698318c-6d57-0601-af75-d04c789e574e.htm\u0000243","Repository.ItemGlobal Property\u0000html/9bb44d16-ecb7-429b-484d-6377e036e757.htm\u000095","Repository.SetItemLocal Method\u0000html/ac16c754-757c-730a-06dc-0190fcfdf994.htm\u000058","Repository.ItemLocal Property\u0000html/ae62b700-f7c3-ee19-99ec-b86a859b4aaa.htm\u000095","Repository.TryGetItemLocal Method\u0000html/a773d703-d21c-49ec-3c68-59ec6d345d58.htm\u000078","Repository.TryGetItemLocal Method (String, Object)\u0000html/99deb021-cd1b-cc8d-1e3a-479f29e326b0.htm\u0000197","Repository.TryGetItemGlobal Method (String, String, Object)\u0000html/a5ee2fb4-0757-a0f4-75f2-a4edd02e6988.htm\u0000244","Repository.CloneItemLocalToGlobal Method\u0000html/b0b761a9-0159-eb8b-93b6-a6166c7b27ed.htm\u0000201","Log.WriteLogException Method\u0000html/ad217ed8-9da2-1934-c93b-56cc95822b0b.htm\u000085","Repository.TryCloneItemLocalToGlobal Method\u0000html/af07c612-54c4-db78-6810-21a44a5584b1.htm\u0000228","Repository.CloneGlobalToLocal Method\u0000html/9c6bb9d9-e851-5c5e-c05e-a49d188af51b.htm\u0000121","Repository.ClearRepositoryLocal Method\u0000html/b3a66e21-2327-a25b-75c6-82311f5cfb57.htm\u000086","Repository.CloneCategoryLocalToGlobal Method\u0000html/a722ab01-e762-50df-fe26-aeaff1fb98c9.htm\u0000159","Repository.TryCloneItemGlobalToLocal Method\u0000html/ae9b8432-f127-b916-8ede-6d4299548d05.htm\u0000228","Repository.SetCategoryGlobal Method\u0000html/b44df33c-484b-2252-cdb5-b107f8a50550.htm\u0000194","Repository.GetItemOrDefaultGlobal Method\u0000html/b4a3b715-06c4-1ea2-6f36-255a363c2040.htm\u000058","Repository.GetItemOrDefaultGlobal(T) Method (String, String)\u0000html/b0d2377d-f42a-2bd0-bc58-88e91085754d.htm\u0000232","Repository.TryGetItemLocal(T) Method (String, T)\u0000html/c17f93f2-ae6e-825c-9754-fc77da68278d.htm\u0000243","Repository.TryGetCategoryGlobal Method\u0000html/caf4eede-6624-512d-1a11-da99b8d7a7ed.htm\u0000231","Repository.TryCloneGlobalToLocal Method\u0000html/dfcb1cdd-1c04-9d7b-c373-ac4a822bb1cc.htm\u0000144","Repository.CloneLocalToGlobal Method\u0000html/b6f35abd-a60c-5ad1-e200-792ff60371ae.htm\u0000121","Repository.GetItemOrDefaultLocal(T) Method (String, String)\u0000html/dd54b56b-83ef-dbd9-d9b6-f0c539b007f8.htm\u0000232","Repository.TryGetItemLocal Method (String, String, Object)\u0000html/e5d9081b-9b2c-55c1-22ee-d12cc9fda600.htm\u0000244","Repository Properties\u0000html/c39f71f1-bff2-a24b-fb0e-972d72289bcc.htm\u000054","Log.WriteToConsole Property\u0000html/ea31371a-3e90-68f5-5890-59b2806840f6.htm\u0000159","Repository.DynamicItems(dynamic).Item Property (String)\u0000html/d3d74247-7c14-7855-357c-ed186e3c9222.htm\u0000123","General Error\u0000html/GeneralError.htm\u000035","DynamicItems(dynamic).Item Property\u0000html/f0042da8-e8fc-d14d-58c9-7de8fe0d1222.htm\u000055","Repository.GetCategoryLocal Method\u0000html/e00e4d47-e0c1-59e4-0655-696e3dd6276c.htm\u0000156","Log.ResetTimer Method\u0000html/df1e78f6-f8c1-7652-f5d3-abbe5c625a81.htm\u000078","Repository.GetItemGlobal(T) Method (String, String)\u0000html/e96f4ce5-1f17-31b6-3f2e-617b7e483010.htm\u0000232","Page Not Found\u0000html/PageNotFound.htm\u000069","Repository.TryCloneCategoryLocalToGlobal Method\u0000html/ebbb8874-c4f3-34bc-123e-4faab2c3240f.htm\u0000184","Repository.GetItemOrDefaultLocal Method\u0000html/eb4f51e7-e274-512f-faee-f03414fa3da6.htm\u000058","TeamControlium.Utilities Namespace\u0000html/fbd4e8e5-43a0-8d5d-dcea-8f8e54f8da45.htm\u0000171","Detokenizer.CustomTokenProcessor Property\u0000html/ec5d3e60-0b7f-b62d-04c3-d92a8414c82d.htm\u0000192","Repository Class\u0000html/b8eda563-8722-475c-8474-c2e1659750d0.htm\u0000416","Repository.SetCategoryLocal Method\u0000html/fc15baa5-aa22-4f81-4e32-b679170022e5.htm\u0000194","Repository.GetItemGlobal Method\u0000html/af77e9d2-eb38-9175-ff7b-c70ebb0e2893.htm\u000066","Repository.TryGetItemGlobal Method (String, Object)\u0000html/eec577e4-2014-f034-5d66-917ef98cec1b.htm\u0000197","Repository.GetItemGlobal Method (String, String)\u0000html/fd37a4d3-7823-9b42-9d97-79ed05dadc3b.htm\u0000191","Log.WriteLogLine Method\u0000html/ef9bcda1-dcb4-157b-1bbd-3179ebb26d0a.htm\u0000244"] \ No newline at end of file diff --git a/docs/html/04be08a8-4313-ed27-21dc-87b159ec81a0.htm b/docs/html/04be08a8-4313-ed27-21dc-87b159ec81a0.htm new file mode 100644 index 0000000..e0323d4 --- /dev/null +++ b/docs/html/04be08a8-4313-ed27-21dc-87b159ec81a0.htm @@ -0,0 +1,10 @@ +Repository.SetItemGlobal Method \ No newline at end of file diff --git a/docs/html/05b35a51-d7bf-318a-283e-b726721b2d99.htm b/docs/html/05b35a51-d7bf-318a-283e-b726721b2d99.htm index b5f7050..dd1feda 100644 --- a/docs/html/05b35a51-d7bf-318a-283e-b726721b2d99.htm +++ b/docs/html/05b35a51-d7bf-318a-283e-b726721b2d99.htm @@ -1,12 +1,17 @@ -Log.TestToolLog Property

LogTestToolLog Property

+Log.TestToolLog Property

LogTestToolLog Property

[This is preliminary documentation and is subject to change.]

Gets or sets delegate to write debug data to if WriteToConsole is false.

Namespace:  TeamControlium.Utilities
Assembly: -  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
public static Action<string> TestToolLog { get; set; }

Property Value

Type: ActionString
Remarks
+  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static Action<string> TestToolLog { get; set; }

Property Value

Type: ActionString
Remarks
Note. If the delegate throws an exception, allow the exception to ripple up. Log class will handle the exception and write details to the OS event logging system. -
See Also
\ No newline at end of file +
See Also
\ No newline at end of file diff --git a/docs/html/07090c72-b69c-1c32-f405-9e0efd408b2e.htm b/docs/html/07090c72-b69c-1c32-f405-9e0efd408b2e.htm new file mode 100644 index 0000000..2a69541 --- /dev/null +++ b/docs/html/07090c72-b69c-1c32-f405-9e0efd408b2e.htm @@ -0,0 +1,17 @@ +Repository.TryGetItemGlobal(T) Method (String, String, T)

RepositoryTryGetItemGlobalT Method (String, String, T)

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemGlobal``1(System.String,System.String,``0@)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static bool TryGetItemGlobal<T>(
+	string categoryName,
+	string itemName,
+	out T item
+)
+

Parameters

categoryName
Type: SystemString

[Missing <param name="categoryName"/> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemGlobal``1(System.String,System.String,``0@)"]

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemGlobal``1(System.String,System.String,``0@)"]

item
Type: T

[Missing <param name="item"/> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemGlobal``1(System.String,System.String,``0@)"]

Type Parameters

T

[Missing <typeparam name="T"/> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemGlobal``1(System.String,System.String,``0@)"]

Return Value

Type: Boolean

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemGlobal``1(System.String,System.String,``0@)"]

See Also
\ No newline at end of file diff --git a/docs/html/0a8cc7d3-f0ce-1cca-29ce-273d46b5486c.htm b/docs/html/0a8cc7d3-f0ce-1cca-29ce-273d46b5486c.htm new file mode 100644 index 0000000..677475d --- /dev/null +++ b/docs/html/0a8cc7d3-f0ce-1cca-29ce-273d46b5486c.htm @@ -0,0 +1,14 @@ +Repository.HasCategoryLocal Method

RepositoryHasCategoryLocal Method

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.HasCategoryLocal(System.String)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static bool HasCategoryLocal(
+	string category
+)

Parameters

category
Type: SystemString

[Missing <param name="category"/> documentation for "M:TeamControlium.Utilities.Repository.HasCategoryLocal(System.String)"]

Return Value

Type: Boolean

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.HasCategoryLocal(System.String)"]

See Also
\ No newline at end of file diff --git a/docs/html/0b2d52f9-3a9c-41c6-e130-3ff99294b38f.htm b/docs/html/0b2d52f9-3a9c-41c6-e130-3ff99294b38f.htm new file mode 100644 index 0000000..c8751f9 --- /dev/null +++ b/docs/html/0b2d52f9-3a9c-41c6-e130-3ff99294b38f.htm @@ -0,0 +1,14 @@ +Repository.GetItemLocal Method (String)

RepositoryGetItemLocal Method (String)

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal(System.String)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static Object GetItemLocal(
+	string itemName
+)

Parameters

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal(System.String)"]

Return Value

Type: Object

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal(System.String)"]

See Also
\ No newline at end of file diff --git a/docs/html/0da5ba89-67ea-3e85-1413-ccfc1fd3e07d.htm b/docs/html/0da5ba89-67ea-3e85-1413-ccfc1fd3e07d.htm new file mode 100644 index 0000000..fb9a797 --- /dev/null +++ b/docs/html/0da5ba89-67ea-3e85-1413-ccfc1fd3e07d.htm @@ -0,0 +1,16 @@ +Repository.CloneItemGlobalToLocal Method

RepositoryCloneItemGlobalToLocal Method

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.CloneItemGlobalToLocal(System.String,System.String,System.Boolean)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static void CloneItemGlobalToLocal(
+	string categoryName,
+	string itemName,
+	bool overwriteExistingItems
+)

Parameters

categoryName
Type: SystemString

[Missing <param name="categoryName"/> documentation for "M:TeamControlium.Utilities.Repository.CloneItemGlobalToLocal(System.String,System.String,System.Boolean)"]

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.CloneItemGlobalToLocal(System.String,System.String,System.Boolean)"]

overwriteExistingItems
Type: SystemBoolean

[Missing <param name="overwriteExistingItems"/> documentation for "M:TeamControlium.Utilities.Repository.CloneItemGlobalToLocal(System.String,System.String,System.Boolean)"]

See Also
\ No newline at end of file diff --git a/docs/html/0dc14cf8-2f71-0876-55a3-3235040ad39d.htm b/docs/html/0dc14cf8-2f71-0876-55a3-3235040ad39d.htm new file mode 100644 index 0000000..59c113d --- /dev/null +++ b/docs/html/0dc14cf8-2f71-0876-55a3-3235040ad39d.htm @@ -0,0 +1,16 @@ +Detokenizer.Detokenize Method

DetokenizerDetokenize Method

[This is preliminary documentation and is subject to change.]

+ Process passed string and return after resolving all tokens. +

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static string Detokenize(
+	string tokenisedString
+)

Parameters

tokenisedString
Type: SystemString
String possibly containing tokens.

Return Value

Type: String
Passed string with all valid tokens resolved.
See Also
\ No newline at end of file diff --git a/docs/html/0e8971a0-9d54-12e1-bf5c-b6671655ff2f.htm b/docs/html/0e8971a0-9d54-12e1-bf5c-b6671655ff2f.htm new file mode 100644 index 0000000..ec5461e --- /dev/null +++ b/docs/html/0e8971a0-9d54-12e1-bf5c-b6671655ff2f.htm @@ -0,0 +1,19 @@ +Log.WriteLog Method

LogWriteLog Method

[This is preliminary documentation and is subject to change.]

+ Writes a line of data to the active debug log with no line termination +

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static void WriteLog(
+	LogLogLevels logLevel,
+	string textString,
+	params Object[] args
+)

Parameters

logLevel
Type: TeamControlium.UtilitiesLogLogLevels
Level of text being written (See LogLogLevels for usage of the Log Level)
textString
Type: SystemString
Text to be written
args
Type: SystemObject
String formatting arguments (if any)
Examples
WriteLog a line of data from our test: +
C#
Logger.WriteLn(LogLevels.TestDebug, "Select member using key (Member: {0})","90986754332");
code>
See Also
\ No newline at end of file diff --git a/docs/html/139c8744-bc75-baa6-753d-adfe2d5e1c74.htm b/docs/html/139c8744-bc75-baa6-753d-adfe2d5e1c74.htm new file mode 100644 index 0000000..c7823b9 --- /dev/null +++ b/docs/html/139c8744-bc75-baa6-753d-adfe2d5e1c74.htm @@ -0,0 +1,15 @@ +Repository.GetItemLocal(T) Method (String)

RepositoryGetItemLocalT Method (String)

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal``1(System.String)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static T GetItemLocal<T>(
+	string itemName
+)
+

Parameters

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal``1(System.String)"]

Type Parameters

T

[Missing <typeparam name="T"/> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal``1(System.String)"]

Return Value

Type: T

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal``1(System.String)"]

See Also
\ No newline at end of file diff --git a/docs/html/1454ecae-9238-a642-2768-f34e2bf0be38.htm b/docs/html/1454ecae-9238-a642-2768-f34e2bf0be38.htm new file mode 100644 index 0000000..818f969 --- /dev/null +++ b/docs/html/1454ecae-9238-a642-2768-f34e2bf0be38.htm @@ -0,0 +1,15 @@ +Repository.TryGetCategoryLocal Method

RepositoryTryGetCategoryLocal Method

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.TryGetCategoryLocal(System.String,System.Collections.Generic.Dictionary{System.String,System.Object}@)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static bool TryGetCategoryLocal(
+	string categoryName,
+	out Dictionary<string, Object> category
+)

Parameters

categoryName
Type: SystemString

[Missing <param name="categoryName"/> documentation for "M:TeamControlium.Utilities.Repository.TryGetCategoryLocal(System.String,System.Collections.Generic.Dictionary{System.String,System.Object}@)"]

category
Type: System.Collections.GenericDictionaryString, Object

[Missing <param name="category"/> documentation for "M:TeamControlium.Utilities.Repository.TryGetCategoryLocal(System.String,System.Collections.Generic.Dictionary{System.String,System.Object}@)"]

Return Value

Type: Boolean

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.TryGetCategoryLocal(System.String,System.Collections.Generic.Dictionary{System.String,System.Object}@)"]

See Also
\ No newline at end of file diff --git a/docs/html/181039e9-026c-b903-0493-ffc93e8294cb.htm b/docs/html/181039e9-026c-b903-0493-ffc93e8294cb.htm index edfb2e7..cc811d4 100644 --- a/docs/html/181039e9-026c-b903-0493-ffc93e8294cb.htm +++ b/docs/html/181039e9-026c-b903-0493-ffc93e8294cb.htm @@ -1,4 +1,4 @@ -Log.LogLevels Enumeration

LogLogLevels Enumeration

+Log.LogLevels Enumeration

LogLogLevels Enumeration

[This is preliminary documentation and is subject to change.]

Levels of logging - Verbose (Maximum) to Exception (Minimum). If level of text being written to logging is equal to, or higher than the current LoggingLevel the text is written.
This is used to filter logging so that only entries to log are made if the level of the write is equal @@ -7,16 +7,23 @@ Namespace:  TeamControlium.Utilities
Assembly: -  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
public enum LogLevels
Members
+  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public enum LogLevels
Members
  Member nameValueDescription
FrameworkDebug0 - Data written to log if LoggingLevel is FrameworkDebug and Write is FrameworkDebug or higher + Data written to log if LoggingLevel is FrameworkDebug and WriteLogException is FrameworkDebug or higher
FrameworkInformation1 - Data written to log if LoggingLevel is FrameworkInformation and Write is FrameworkInformation or higher + Data written to log if LoggingLevel is FrameworkInformation and WriteLogException is FrameworkInformation or higher
TestDebug2 - Data written to log if LoggingLevel is TestDebug and Write is TestDebug or higher + Data written to log if LoggingLevel is TestDebug and WriteLogException is TestDebug or higher
TestInformation3 - Data written to log if LoggingLevel is TestInformation and Write is TestInformation or Error + Data written to log if LoggingLevel is TestInformation and WriteLogException is TestInformation or Error
Error4 Data always written to results -
See Also
\ No newline at end of file +
See Also
\ No newline at end of file diff --git a/docs/html/1b7db609-a123-dcf1-965c-e3582fac0013.htm b/docs/html/1b7db609-a123-dcf1-965c-e3582fac0013.htm deleted file mode 100644 index 115cb58..0000000 --- a/docs/html/1b7db609-a123-dcf1-965c-e3582fac0013.htm +++ /dev/null @@ -1,24 +0,0 @@ -Log.LogException Method (Exception, String, Object[])

LogLogException Method (Exception, String, Object)

- Writes details of a caught exception to the active debug log at level Error

- Namespace: -  TeamControlium.Utilities
- Assembly: -  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
public static void LogException(
-	Exception ex,
-	string text,
-	params Object[] args
-)

Parameters

ex
Type: SystemException
Exception being logged
text
Type: SystemString
Additional string format text to show when logging exception
args
Type: SystemObject
Arguments shown in string format text
Remarks
- If current error logging level is FrameworkDebug the full - exception is written, including stack trace details etc.
- With any other Log Level only the exception message is written if an exception is thrown during write, Logger - attempts to write the error details if able. -
Examples
C#
catch (InvalidHostURI ex)
-{
-  // Log exception and abort the test - we cant talk to the remote Selenium server
-  Logger.LogException(ex,"Given up trying to connect to [{0}]",Wherever);
-  toolWrapper.AbortTest("Cannot connect to remote Selenium host");
-}
See Also
\ No newline at end of file diff --git a/docs/html/1da9ba28-7f1c-013d-09e0-0b325425b450.htm b/docs/html/1da9ba28-7f1c-013d-09e0-0b325425b450.htm new file mode 100644 index 0000000..ba5abab --- /dev/null +++ b/docs/html/1da9ba28-7f1c-013d-09e0-0b325425b450.htm @@ -0,0 +1,14 @@ +Repository.GetCategoryGlobal Method

RepositoryGetCategoryGlobal Method

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.GetCategoryGlobal(System.String)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static Dictionary<string, Object> GetCategoryGlobal(
+	string categoryName
+)

Parameters

categoryName
Type: SystemString

[Missing <param name="categoryName"/> documentation for "M:TeamControlium.Utilities.Repository.GetCategoryGlobal(System.String)"]

Return Value

Type: DictionaryString, Object

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.GetCategoryGlobal(System.String)"]

See Also
\ No newline at end of file diff --git a/docs/html/200ae307-645e-17ef-b834-1715b0435514.htm b/docs/html/200ae307-645e-17ef-b834-1715b0435514.htm new file mode 100644 index 0000000..bd27cf9 --- /dev/null +++ b/docs/html/200ae307-645e-17ef-b834-1715b0435514.htm @@ -0,0 +1,10 @@ +DynamicItems(dynamic) Methods

DynamicItemsdynamic Methods

[This is preliminary documentation and is subject to change.]

The RepositoryDynamicItemsdynamic generic type exposes the following members.

Methods
+   + NameDescription
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
See Also
\ No newline at end of file diff --git a/docs/html/206106b2-7463-8cdd-beb3-c358dd3726b2.htm b/docs/html/206106b2-7463-8cdd-beb3-c358dd3726b2.htm index 95f58ea..7979c17 100644 --- a/docs/html/206106b2-7463-8cdd-beb3-c358dd3726b2.htm +++ b/docs/html/206106b2-7463-8cdd-beb3-c358dd3726b2.htm @@ -1,11 +1,11 @@ -Log Class

Log Class

+Log Class

Log Class

[This is preliminary documentation and is subject to change.]

Manages logging information. Created from scratch rather than using an OffTheShelf (NLog, Log4Net etc) to keep footprint as small as possible while ensuring logging is formatted, along with functionality, exactly as we want.
Inheritance Hierarchy
SystemObject
  TeamControlium.UtilitiesLog

Namespace:  TeamControlium.Utilities
Assembly: -  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
public static class Log

The Log type exposes the following members.

Properties
+  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static class Log

The Log type exposes the following members.

Properties
  NameDescription
Public propertyStatic memberCurrentLoggingLevel
Gets or sets Logging level. Lowest is Error (least amount of log data written - only writes at @@ -16,20 +16,27 @@
Public propertyStatic memberWriteToConsole
Gets or sets a value indicating whether log data is written to Console.
If true debug data is written to the Console (STDOUT)
- If false and [!:Logger.TestToolLog] has been defined, no log data is written to Console. If [!:Logger.TestToolLog] has + If false and TestToolLog has been defined, no log data is written to Console. If TestToolLog has NOT been defined, WriteToConsole false is ignored and output is STILL written to Console.
Top
Methods
  - NameDescription
Public methodStatic memberCode exampleLogException(Exception)
- Writes details of a caught exception to the active debug log at level Error
Public methodStatic memberCode exampleLogException(Exception, String, Object)
- Writes details of a caught exception to the active debug log at level Error
Public methodStatic memberResetTimer
+
NameDescription
Public methodStatic memberResetTimer
Resets the logger elapsed timer to zero -
Public methodStatic memberCode exampleWrite
+
Public methodStatic memberCode exampleWriteLog
Writes a line of data to the active debug log with no line termination -
Public methodStatic memberCode exampleWriteLine
+
Public methodStatic memberCode exampleWriteLogException(Exception)
+ Writes details of a caught exception to the active debug log at level Error
Public methodStatic memberCode exampleWriteLogException(Exception, String, Object)
+ Writes details of a caught exception to the active debug log at level Error
Public methodStatic memberCode exampleWriteLogLine
Writes a line of data to the active debug log. Data can be formatted in the standard string.format syntax. If an exception is thrown during write, Logger attempts to write the error details if able.
Public methodStatic memberWriteTextToFile
Writes given Text to a text file, optionally auto versioning (adding (n) to filename) OR overwriting. -
Top
See Also
\ No newline at end of file +
Top
See Also
\ No newline at end of file diff --git a/docs/html/217a21e7-004f-d7d3-836d-38789b56b59a.htm b/docs/html/217a21e7-004f-d7d3-836d-38789b56b59a.htm new file mode 100644 index 0000000..8a27280 --- /dev/null +++ b/docs/html/217a21e7-004f-d7d3-836d-38789b56b59a.htm @@ -0,0 +1,15 @@ +Detokenizer.DefaultTokenDelimiterCurrentThread Property

DetokenizerDefaultTokenDelimiterCurrentThread Property

[This is preliminary documentation and is subject to change.]

+ Gets or sets the default delimiter within tokens. +

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static char DefaultTokenDelimiterCurrentThread { get; set; }

Property Value

Type: Char
Remarks
This is used as the delimiter when separating token verb from body and is the default token when token verb processors split their required fields. + Is thread-safe; if a Thread changes the token delimiter the change only affects Detokenizer calls for that thread.
See Also
\ No newline at end of file diff --git a/docs/html/370ad403-3d74-930d-131c-8d54aaa421ae.htm b/docs/html/370ad403-3d74-930d-131c-8d54aaa421ae.htm new file mode 100644 index 0000000..2000110 --- /dev/null +++ b/docs/html/370ad403-3d74-930d-131c-8d54aaa421ae.htm @@ -0,0 +1,15 @@ +Repository.GetItemGlobal(T) Method (String)

RepositoryGetItemGlobalT Method (String)

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.GetItemGlobal``1(System.String)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static T GetItemGlobal<T>(
+	string itemName
+)
+

Parameters

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.GetItemGlobal``1(System.String)"]

Type Parameters

T

[Missing <typeparam name="T"/> documentation for "M:TeamControlium.Utilities.Repository.GetItemGlobal``1(System.String)"]

Return Value

Type: T

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.GetItemGlobal``1(System.String)"]

See Also
\ No newline at end of file diff --git a/docs/html/37e582ea-f48c-aa47-ef00-ed08d75a96f8.htm b/docs/html/37e582ea-f48c-aa47-ef00-ed08d75a96f8.htm new file mode 100644 index 0000000..46bb0d2 --- /dev/null +++ b/docs/html/37e582ea-f48c-aa47-ef00-ed08d75a96f8.htm @@ -0,0 +1,12 @@ +Repository.ClearRepositoryGlobal Method \ No newline at end of file diff --git a/docs/html/37f8a113-ed89-05cd-9476-53867b5f89c4.htm b/docs/html/37f8a113-ed89-05cd-9476-53867b5f89c4.htm new file mode 100644 index 0000000..9cdd8e4 --- /dev/null +++ b/docs/html/37f8a113-ed89-05cd-9476-53867b5f89c4.htm @@ -0,0 +1,16 @@ +Repository.SetItemGlobal Method (String, String, Object)

RepositorySetItemGlobal Method (String, String, Object)

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.SetItemGlobal(System.String,System.String,System.Object)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static void SetItemGlobal(
+	string categoryName,
+	string itemName,
+	Object item
+)

Parameters

categoryName
Type: SystemString

[Missing <param name="categoryName"/> documentation for "M:TeamControlium.Utilities.Repository.SetItemGlobal(System.String,System.String,System.Object)"]

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.SetItemGlobal(System.String,System.String,System.Object)"]

item
Type: SystemObject

[Missing <param name="item"/> documentation for "M:TeamControlium.Utilities.Repository.SetItemGlobal(System.String,System.String,System.Object)"]

See Also
\ No newline at end of file diff --git a/docs/html/3ac723ab-f331-7600-8049-4ba074dbb7bb.htm b/docs/html/3ac723ab-f331-7600-8049-4ba074dbb7bb.htm new file mode 100644 index 0000000..d3200d1 --- /dev/null +++ b/docs/html/3ac723ab-f331-7600-8049-4ba074dbb7bb.htm @@ -0,0 +1,15 @@ +Repository.SetItemGlobal Method (String, Object)

RepositorySetItemGlobal Method (String, Object)

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.SetItemGlobal(System.String,System.Object)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static void SetItemGlobal(
+	string itemName,
+	Object item
+)

Parameters

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.SetItemGlobal(System.String,System.Object)"]

item
Type: SystemObject

[Missing <param name="item"/> documentation for "M:TeamControlium.Utilities.Repository.SetItemGlobal(System.String,System.Object)"]

See Also
\ No newline at end of file diff --git a/docs/html/3d2ba515-063d-5cac-c417-7b4855217ffc.htm b/docs/html/3d2ba515-063d-5cac-c417-7b4855217ffc.htm new file mode 100644 index 0000000..a9a0e8e --- /dev/null +++ b/docs/html/3d2ba515-063d-5cac-c417-7b4855217ffc.htm @@ -0,0 +1,10 @@ +DynamicItems(dynamic) Properties \ No newline at end of file diff --git a/docs/html/41d8fce5-877d-b6d8-1803-bd5ac8e015b4.htm b/docs/html/41d8fce5-877d-b6d8-1803-bd5ac8e015b4.htm new file mode 100644 index 0000000..d8be115 --- /dev/null +++ b/docs/html/41d8fce5-877d-b6d8-1803-bd5ac8e015b4.htm @@ -0,0 +1,14 @@ +Repository.TryCloneLocalToGlobal Method

RepositoryTryCloneLocalToGlobal Method

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.TryCloneLocalToGlobal(System.Boolean)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static bool TryCloneLocalToGlobal(
+	bool overwriteExistingItems
+)

Parameters

overwriteExistingItems
Type: SystemBoolean

[Missing <param name="overwriteExistingItems"/> documentation for "M:TeamControlium.Utilities.Repository.TryCloneLocalToGlobal(System.Boolean)"]

Return Value

Type: Boolean

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.TryCloneLocalToGlobal(System.Boolean)"]

See Also
\ No newline at end of file diff --git a/docs/html/45c7c852-b9f6-13cd-c584-69b44c59f51d.htm b/docs/html/45c7c852-b9f6-13cd-c584-69b44c59f51d.htm new file mode 100644 index 0000000..dfc5803 --- /dev/null +++ b/docs/html/45c7c852-b9f6-13cd-c584-69b44c59f51d.htm @@ -0,0 +1,15 @@ +Repository.GetItemOrDefaultLocal(T) Method (String)

RepositoryGetItemOrDefaultLocalT Method (String)

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.GetItemOrDefaultLocal``1(System.String)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static T GetItemOrDefaultLocal<T>(
+	string itemName
+)
+

Parameters

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.GetItemOrDefaultLocal``1(System.String)"]

Type Parameters

T

[Missing <typeparam name="T"/> documentation for "M:TeamControlium.Utilities.Repository.GetItemOrDefaultLocal``1(System.String)"]

Return Value

Type: T

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.GetItemOrDefaultLocal``1(System.String)"]

See Also
\ No newline at end of file diff --git a/docs/html/49706723-c508-606e-d3de-5905ace14979.htm b/docs/html/49706723-c508-606e-d3de-5905ace14979.htm new file mode 100644 index 0000000..44af9ea --- /dev/null +++ b/docs/html/49706723-c508-606e-d3de-5905ace14979.htm @@ -0,0 +1,25 @@ +Log.WriteLogException Method (Exception)

LogWriteLogException Method (Exception)

[This is preliminary documentation and is subject to change.]

+ Writes details of a caught exception to the active debug log at level Error

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static void WriteLogException(
+	Exception ex
+)

Parameters

ex
Type: SystemException
Exception being logged
Remarks
+ If current error logging level is FrameworkDebug the full + exception is written, including stack-trace etc.
+ With any other Log Level only the exception message is written if an exception is thrown during write, Logger + attempts to write the error details if able. +
Examples
C#
catch (InvalidHostURI ex)
+{
+  // Log exception and abort the test - we cant talk to the remote Selenium server
+  Logger.WriteLogException(ex,"Connecting to Selenium host");
+  toolWrapper.AbortTest("Cannot connect to remote Selenium host");
+}
See Also
\ No newline at end of file diff --git a/docs/html/4a65d96f-4fd7-d8b9-b548-b33c0b1d3f18.htm b/docs/html/4a65d96f-4fd7-d8b9-b548-b33c0b1d3f18.htm new file mode 100644 index 0000000..4e5c500 --- /dev/null +++ b/docs/html/4a65d96f-4fd7-d8b9-b548-b33c0b1d3f18.htm @@ -0,0 +1,17 @@ +Repository.TryGetItemLocal(T) Method (String, String, T)

RepositoryTryGetItemLocalT Method (String, String, T)

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemLocal``1(System.String,System.String,``0@)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static bool TryGetItemLocal<T>(
+	string categoryName,
+	string itemName,
+	out T item
+)
+

Parameters

categoryName
Type: SystemString

[Missing <param name="categoryName"/> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemLocal``1(System.String,System.String,``0@)"]

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemLocal``1(System.String,System.String,``0@)"]

item
Type: T

[Missing <param name="item"/> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemLocal``1(System.String,System.String,``0@)"]

Type Parameters

T

[Missing <typeparam name="T"/> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemLocal``1(System.String,System.String,``0@)"]

Return Value

Type: Boolean

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.TryGetItemLocal``1(System.String,System.String,``0@)"]

See Also
\ No newline at end of file diff --git a/docs/html/4ac463dc-cfbe-7889-840c-c441e4bb9488.htm b/docs/html/4ac463dc-cfbe-7889-840c-c441e4bb9488.htm new file mode 100644 index 0000000..594f1f2 --- /dev/null +++ b/docs/html/4ac463dc-cfbe-7889-840c-c441e4bb9488.htm @@ -0,0 +1,15 @@ +Repository.TryCloneCategoryGlobalToLocal Method

RepositoryTryCloneCategoryGlobalToLocal Method

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.TryCloneCategoryGlobalToLocal(System.String,System.Boolean)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static bool TryCloneCategoryGlobalToLocal(
+	string categoryName,
+	bool overwriteExistingItems
+)

Parameters

categoryName
Type: SystemString

[Missing <param name="categoryName"/> documentation for "M:TeamControlium.Utilities.Repository.TryCloneCategoryGlobalToLocal(System.String,System.Boolean)"]

overwriteExistingItems
Type: SystemBoolean

[Missing <param name="overwriteExistingItems"/> documentation for "M:TeamControlium.Utilities.Repository.TryCloneCategoryGlobalToLocal(System.String,System.Boolean)"]

Return Value

Type: Boolean

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.TryCloneCategoryGlobalToLocal(System.String,System.Boolean)"]

See Also
\ No newline at end of file diff --git a/docs/html/4d3865f4-e136-7d36-ad7e-6e7de6d4287a.htm b/docs/html/4d3865f4-e136-7d36-ad7e-6e7de6d4287a.htm new file mode 100644 index 0000000..876a3f8 --- /dev/null +++ b/docs/html/4d3865f4-e136-7d36-ad7e-6e7de6d4287a.htm @@ -0,0 +1,12 @@ +Detokenizer Methods

Detokenizer Methods

[This is preliminary documentation and is subject to change.]

The Detokenizer type exposes the following members.

Methods
+   + NameDescription
Public methodStatic memberDetokenize
+ Process passed string and return after resolving all tokens. +
Top
See Also
\ No newline at end of file diff --git a/docs/html/4d91bc3a-0df9-7dd7-28e1-3197e79abe1a.htm b/docs/html/4d91bc3a-0df9-7dd7-28e1-3197e79abe1a.htm new file mode 100644 index 0000000..4c51a60 --- /dev/null +++ b/docs/html/4d91bc3a-0df9-7dd7-28e1-3197e79abe1a.htm @@ -0,0 +1,14 @@ +Repository.RepositoryLastTryException Method

RepositoryRepositoryLastTryException Method

[This is preliminary documentation and is subject to change.]

+ Returns the last exception were a TryGetRunCategoryOptions returned false +

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static Exception RepositoryLastTryException()

Return Value

Type: Exception

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.RepositoryLastTryException"]

See Also
\ No newline at end of file diff --git a/docs/html/54c361a4-7a28-7653-7b74-1ef19ca316d6.htm b/docs/html/54c361a4-7a28-7653-7b74-1ef19ca316d6.htm index cd38b63..9986d40 100644 --- a/docs/html/54c361a4-7a28-7653-7b74-1ef19ca316d6.htm +++ b/docs/html/54c361a4-7a28-7653-7b74-1ef19ca316d6.htm @@ -1,4 +1,4 @@ -Log Properties

Log Properties

The Log type exposes the following members.

Properties
+Log Properties

Log Properties

[This is preliminary documentation and is subject to change.]

The Log type exposes the following members.

Properties
  NameDescription
Public propertyStatic memberCurrentLoggingLevel
Gets or sets Logging level. Lowest is Error (least amount of log data written - only writes at @@ -9,5 +9,12 @@
Public propertyStatic memberWriteToConsole
Gets or sets a value indicating whether log data is written to Console.
If true debug data is written to the Console (STDOUT)
- If false and [!:Logger.TestToolLog] has been defined, no log data is written to Console. If [!:Logger.TestToolLog] has - NOT been defined, WriteToConsole false is ignored and output is STILL written to Console.
Top
See Also
\ No newline at end of file + If false and TestToolLog has been defined, no log data is written to Console. If TestToolLog has + NOT been defined, WriteToConsole false is ignored and output is STILL written to Console.
Top
See Also
\ No newline at end of file diff --git a/docs/html/56439bd9-cdf5-1530-890e-b214f535cce8.htm b/docs/html/56439bd9-cdf5-1530-890e-b214f535cce8.htm deleted file mode 100644 index 0e6700a..0000000 --- a/docs/html/56439bd9-cdf5-1530-890e-b214f535cce8.htm +++ /dev/null @@ -1,20 +0,0 @@ -Log.LogException Method (Exception)

LogLogException Method (Exception)

- Writes details of a caught exception to the active debug log at level Error

- Namespace: -  TeamControlium.Utilities
- Assembly: -  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
public static void LogException(
-	Exception ex
-)

Parameters

ex
Type: SystemException
Exception being logged
Remarks
- If current error logging level is FrameworkDebug the full - exception is written, including stack-trace etc.
- With any other Log Level only the exception message is written if an exception is thrown during write, Logger - attempts to write the error details if able. -
Examples
C#
catch (InvalidHostURI ex)
-{
-  // Log exception and abort the test - we cant talk to the remote Selenium server
-  Logger.LogException(ex,"Connecting to Selenium host");
-  toolWrapper.AbortTest("Cannot connect to remote Selenium host");
-}
See Also
\ No newline at end of file diff --git a/docs/html/5966480e-09e2-facb-8027-68708d7abf57.htm b/docs/html/5966480e-09e2-facb-8027-68708d7abf57.htm new file mode 100644 index 0000000..a094ec1 --- /dev/null +++ b/docs/html/5966480e-09e2-facb-8027-68708d7abf57.htm @@ -0,0 +1,12 @@ +Repository Methods

Repository Methods

[This is preliminary documentation and is subject to change.]

The Repository type exposes the following members.

Methods
+   + NameDescription
Public methodStatic memberClearRepositoryAll
Public methodStatic memberClearRepositoryGlobal
Public methodStatic memberClearRepositoryLocal
Public methodStatic memberCloneCategoryGlobalToLocal
Public methodStatic memberCloneCategoryLocalToGlobal
Public methodStatic memberCloneGlobalToLocal
Public methodStatic memberCloneItemGlobalToLocal
Public methodStatic memberCloneItemLocalToGlobal
Public methodStatic memberCloneLocalToGlobal
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodStatic memberGetCategoryGlobal
Public methodStatic memberGetCategoryLocal
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodStatic memberGetItemGlobal(String)
Public methodStatic memberGetItemGlobal(String, String)
Public methodStatic memberGetItemGlobalT(String)
Public methodStatic memberGetItemGlobalT(String, String)
Public methodStatic memberGetItemLocal(String)
Public methodStatic memberGetItemLocal(String, String)
Public methodStatic memberGetItemLocalT(String)
Public methodStatic memberGetItemLocalT(String, String)
Public methodStatic memberGetItemOrDefaultGlobalT(String)
Public methodStatic memberGetItemOrDefaultGlobalT(String, String)
Public methodStatic memberGetItemOrDefaultLocalT(String)
Public methodStatic memberGetItemOrDefaultLocalT(String, String)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodStatic memberHasCategoryGlobal
Public methodStatic memberHasCategoryLocal
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodStatic memberRepositoryLastTryException
+ Returns the last exception were a TryGetRunCategoryOptions returned false +
Public methodStatic memberSetCategoryGlobal
Public methodStatic memberSetCategoryLocal
Public methodStatic memberSetItemGlobal(String, Object)
Public methodStatic memberSetItemGlobal(String, String, Object)
Public methodStatic memberSetItemLocal(String, Object)
Public methodStatic memberSetItemLocal(String, String, Object)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Public methodStatic memberTryCloneCategoryGlobalToLocal
Public methodStatic memberTryCloneCategoryLocalToGlobal
Public methodStatic memberTryCloneGlobalToLocal
Public methodStatic memberTryCloneItemGlobalToLocal
Public methodStatic memberTryCloneItemLocalToGlobal
Public methodStatic memberTryCloneLocalToGlobal
Public methodStatic memberTryGetCategoryGlobal
Public methodStatic memberTryGetCategoryLocal
Public methodStatic memberTryGetItemGlobal(String, Object)
Public methodStatic memberTryGetItemGlobal(String, String, Object)
Public methodStatic memberTryGetItemGlobalT(String, T)
Public methodStatic memberTryGetItemGlobalT(String, String, T)
Public methodStatic memberTryGetItemLocal(String, Object)
Public methodStatic memberTryGetItemLocal(String, String, Object)
Public methodStatic memberTryGetItemLocalT(String, T)
Public methodStatic memberTryGetItemLocalT(String, String, T)
Top
See Also
\ No newline at end of file diff --git a/docs/html/5c8fd456-51dd-03dd-06b2-7fb50786a266.htm b/docs/html/5c8fd456-51dd-03dd-06b2-7fb50786a266.htm new file mode 100644 index 0000000..0d670de --- /dev/null +++ b/docs/html/5c8fd456-51dd-03dd-06b2-7fb50786a266.htm @@ -0,0 +1,16 @@ +Repository.GetItemLocal(T) Method (String, String)

RepositoryGetItemLocalT Method (String, String)

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal``1(System.String,System.String)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static T GetItemLocal<T>(
+	string categoryName,
+	string itemName
+)
+

Parameters

categoryName
Type: SystemString

[Missing <param name="categoryName"/> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal``1(System.String,System.String)"]

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal``1(System.String,System.String)"]

Type Parameters

T

[Missing <typeparam name="T"/> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal``1(System.String,System.String)"]

Return Value

Type: T

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.GetItemLocal``1(System.String,System.String)"]

See Also
\ No newline at end of file diff --git a/docs/html/5e42fb7b-fa08-d355-96c7-43c212894ecc.htm b/docs/html/5e42fb7b-fa08-d355-96c7-43c212894ecc.htm new file mode 100644 index 0000000..5f4f821 --- /dev/null +++ b/docs/html/5e42fb7b-fa08-d355-96c7-43c212894ecc.htm @@ -0,0 +1,24 @@ +Detokenizer Class

Detokenizer Class

[This is preliminary documentation and is subject to change.]

+ Processes given strings to process and resolve all tokens in passed strings. +
Inheritance Hierarchy
SystemObject
  TeamControlium.UtilitiesDetokenizer

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static class Detokenizer

The Detokenizer type exposes the following members.

Properties
+   + NameDescription
Public propertyStatic memberCustomTokenProcessor
+ Gets or sets delegate for processing custom tokens if required. If set, delegate is called before internal token processing to allow overriding if required. +
Public propertyStatic memberDefaultTokenDelimiterCurrentThread
+ Gets or sets the default delimiter within tokens. +
Top
Methods
+   + NameDescription
Public methodStatic memberDetokenize
+ Process passed string and return after resolving all tokens. +
Top
See Also
\ No newline at end of file diff --git a/docs/html/5ec2b6cb-a381-b173-ce54-0ab5ed14f65d.htm b/docs/html/5ec2b6cb-a381-b173-ce54-0ab5ed14f65d.htm new file mode 100644 index 0000000..90db9df --- /dev/null +++ b/docs/html/5ec2b6cb-a381-b173-ce54-0ab5ed14f65d.htm @@ -0,0 +1,12 @@ +Repository.ClearRepositoryAll Method \ No newline at end of file diff --git a/docs/html/6e5bc7b6-35ef-4256-4ebc-be753db2bb2e.htm b/docs/html/6e5bc7b6-35ef-4256-4ebc-be753db2bb2e.htm new file mode 100644 index 0000000..751f4ca --- /dev/null +++ b/docs/html/6e5bc7b6-35ef-4256-4ebc-be753db2bb2e.htm @@ -0,0 +1,14 @@ +Repository.GetItemGlobal Method (String)

RepositoryGetItemGlobal Method (String)

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.GetItemGlobal(System.String)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static Object GetItemGlobal(
+	string itemName
+)

Parameters

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.GetItemGlobal(System.String)"]

Return Value

Type: Object

[Missing <returns> documentation for "M:TeamControlium.Utilities.Repository.GetItemGlobal(System.String)"]

See Also
\ No newline at end of file diff --git a/docs/html/6e7bb03a-7419-c01d-db6b-49e4fbd5b700.htm b/docs/html/6e7bb03a-7419-c01d-db6b-49e4fbd5b700.htm new file mode 100644 index 0000000..291ae0a --- /dev/null +++ b/docs/html/6e7bb03a-7419-c01d-db6b-49e4fbd5b700.htm @@ -0,0 +1,10 @@ +Repository.TryGetItemGlobal Method \ No newline at end of file diff --git a/docs/html/6efe7d11-f7c0-fb9e-df46-9de555b2bdcb.htm b/docs/html/6efe7d11-f7c0-fb9e-df46-9de555b2bdcb.htm index b184fee..50ca425 100644 --- a/docs/html/6efe7d11-f7c0-fb9e-df46-9de555b2bdcb.htm +++ b/docs/html/6efe7d11-f7c0-fb9e-df46-9de555b2bdcb.htm @@ -1,16 +1,23 @@ -Log Methods

Log Methods

The Log type exposes the following members.

Methods
+Log Methods

Log Methods

[This is preliminary documentation and is subject to change.]

The Log type exposes the following members.

Methods
  - NameDescription
Public methodStatic memberCode exampleLogException(Exception)
- Writes details of a caught exception to the active debug log at level Error
Public methodStatic memberCode exampleLogException(Exception, String, Object)
- Writes details of a caught exception to the active debug log at level Error
Public methodStatic memberResetTimer
+
NameDescription
Public methodStatic memberResetTimer
Resets the logger elapsed timer to zero -
Public methodStatic memberCode exampleWrite
+
Public methodStatic memberCode exampleWriteLog
Writes a line of data to the active debug log with no line termination -
Public methodStatic memberCode exampleWriteLine
+
Public methodStatic memberCode exampleWriteLogException(Exception)
+ Writes details of a caught exception to the active debug log at level Error
Public methodStatic memberCode exampleWriteLogException(Exception, String, Object)
+ Writes details of a caught exception to the active debug log at level Error
Public methodStatic memberCode exampleWriteLogLine
Writes a line of data to the active debug log. Data can be formatted in the standard string.format syntax. If an exception is thrown during write, Logger attempts to write the error details if able.
Public methodStatic memberWriteTextToFile
Writes given Text to a text file, optionally auto versioning (adding (n) to filename) OR overwriting. -
Top
See Also
\ No newline at end of file +
Top
See Also
\ No newline at end of file diff --git a/docs/html/708c90f2-20ff-d123-f5eb-4b5867d57fdb.htm b/docs/html/708c90f2-20ff-d123-f5eb-4b5867d57fdb.htm new file mode 100644 index 0000000..9af364a --- /dev/null +++ b/docs/html/708c90f2-20ff-d123-f5eb-4b5867d57fdb.htm @@ -0,0 +1,19 @@ +Repository.DynamicItems(dynamic) Class

RepositoryDynamicItemsdynamic Class

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "T:TeamControlium.Utilities.Repository.DynamicItems`1"]

Inheritance Hierarchy
SystemObject
  TeamControlium.UtilitiesRepositoryDynamicItemsdynamic

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public class DynamicItems<dynamic>
+

Type Parameters

dynamic

[Missing <typeparam name="dynamic"/> documentation for "T:TeamControlium.Utilities.Repository.DynamicItems`1"]

The RepositoryDynamicItemsdynamic type exposes the following members.

Constructors
+   + NameDescription
Public methodRepositoryDynamicItemsdynamic
Initializes a new instance of the RepositoryDynamicItemsdynamic class
Top
Properties
Methods
+   + NameDescription
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
See Also
\ No newline at end of file diff --git a/docs/html/721beb29-ec09-9349-3b54-1df02ddac494.htm b/docs/html/721beb29-ec09-9349-3b54-1df02ddac494.htm deleted file mode 100644 index 47d7eb8..0000000 --- a/docs/html/721beb29-ec09-9349-3b54-1df02ddac494.htm +++ /dev/null @@ -1,18 +0,0 @@ -Log.WriteLine Method

LogWriteLine Method

- Writes a line of data to the active debug log. - Data can be formatted in the standard string.format syntax. If an exception is thrown during write, Logger - attempts to write the error details if able. -

- Namespace: -  TeamControlium.Utilities
- Assembly: -  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
public static void WriteLine(
-	LogLogLevels logLevel,
-	string textString,
-	params Object[] args
-)

Parameters

logLevel
Type: TeamControlium.UtilitiesLogLogLevels
Level of text being written (See [!:Logger.LogLevels] for usage of the Log Level)
textString
Type: SystemString
Text to be written
args
Type: SystemObject
String formatting arguments (if any)
Examples
Write a line of data from our test: -
C#
Logger.WriteLine(LogLevels.TestDebug, "Select member using key (Member: {0})","90986754332");
See Also
\ No newline at end of file diff --git a/docs/html/77c1c6a8-b356-27b2-cea4-3d343372f44a.htm b/docs/html/77c1c6a8-b356-27b2-cea4-3d343372f44a.htm new file mode 100644 index 0000000..3c404e2 --- /dev/null +++ b/docs/html/77c1c6a8-b356-27b2-cea4-3d343372f44a.htm @@ -0,0 +1,15 @@ +Repository.SetItemLocal Method (String, Object)

RepositorySetItemLocal Method (String, Object)

[This is preliminary documentation and is subject to change.]

[Missing <summary> documentation for "M:TeamControlium.Utilities.Repository.SetItemLocal(System.String,System.Object)"]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static void SetItemLocal(
+	string itemName,
+	Object item
+)

Parameters

itemName
Type: SystemString

[Missing <param name="itemName"/> documentation for "M:TeamControlium.Utilities.Repository.SetItemLocal(System.String,System.Object)"]

item
Type: SystemObject

[Missing <param name="item"/> documentation for "M:TeamControlium.Utilities.Repository.SetItemLocal(System.String,System.Object)"]

See Also
\ No newline at end of file diff --git a/docs/html/7d4e9056-63ff-ae08-457c-f844227342c7.htm b/docs/html/7d4e9056-63ff-ae08-457c-f844227342c7.htm index dba7969..df8704a 100644 --- a/docs/html/7d4e9056-63ff-ae08-457c-f844227342c7.htm +++ b/docs/html/7d4e9056-63ff-ae08-457c-f844227342c7.htm @@ -1,4 +1,4 @@ -Log.CurrentLoggingLevel Property

LogCurrentLoggingLevel Property

+Log.CurrentLoggingLevel Property

LogCurrentLoggingLevel Property

[This is preliminary documentation and is subject to change.]

Gets or sets Logging level. Lowest is Error (least amount of log data written - only writes at level Error are written to the log). Most data is written to the log if level set is FrameworkDebug. @@ -6,6 +6,11 @@ Namespace:  TeamControlium.Utilities
Assembly: -  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
public static LogLogLevels CurrentLoggingLevel { get; set; }

Property Value

Type: LogLogLevels
Remarks
Default is FrameworkDebug
See Also
\ No newline at end of file +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static LogLogLevels CurrentLoggingLevel { get; set; }

Property Value

Type: LogLogLevels
Remarks
Default is FrameworkDebug
See Also
\ No newline at end of file diff --git a/docs/html/82aa5e2d-c9d7-a0d3-7414-46ce091e9426.htm b/docs/html/82aa5e2d-c9d7-a0d3-7414-46ce091e9426.htm new file mode 100644 index 0000000..531e8af --- /dev/null +++ b/docs/html/82aa5e2d-c9d7-a0d3-7414-46ce091e9426.htm @@ -0,0 +1,14 @@ +Repository.DynamicItems(dynamic) Constructor

RepositoryDynamicItemsdynamic Constructor

[This is preliminary documentation and is subject to change.]

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public DynamicItems(
+	bool isLocal
+)

Parameters

isLocal
Type: SystemBoolean

[Missing <param name="isLocal"/> documentation for "M:TeamControlium.Utilities.Repository.DynamicItems`1.#ctor(System.Boolean)"]

See Also
\ No newline at end of file diff --git a/docs/html/83ae4adb-e73a-de81-e262-e38b2b8c1777.htm b/docs/html/83ae4adb-e73a-de81-e262-e38b2b8c1777.htm new file mode 100644 index 0000000..370ca28 --- /dev/null +++ b/docs/html/83ae4adb-e73a-de81-e262-e38b2b8c1777.htm @@ -0,0 +1,27 @@ +Log.WriteLogException Method (Exception, String, Object[])

LogWriteLogException Method (Exception, String, Object)

[This is preliminary documentation and is subject to change.]

+ Writes details of a caught exception to the active debug log at level Error

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public static void WriteLogException(
+	Exception ex,
+	string text,
+	params Object[] args
+)

Parameters

ex
Type: SystemException
Exception being logged
text
Type: SystemString
Additional string format text to show when logging exception
args
Type: SystemObject
Arguments shown in string format text
Remarks
+ If current error logging level is FrameworkDebug the full + exception is written, including stack trace details etc.
+ With any other Log Level only the exception message is written if an exception is thrown during write, Logger + attempts to write the error details if able. +
Examples
C#
catch (InvalidHostURI ex)
+{
+  // Log exception and abort the test - we cant talk to the remote Selenium server
+  Logger.WriteLogException(ex,"Given up trying to connect to [{0}]",Wherever);
+  toolWrapper.AbortTest("Cannot connect to remote Selenium host");
+}
See Also
\ No newline at end of file diff --git a/docs/html/86e0300b-f62b-bdb1-e709-7e6c3712026c.htm b/docs/html/86e0300b-f62b-bdb1-e709-7e6c3712026c.htm new file mode 100644 index 0000000..e7263c9 --- /dev/null +++ b/docs/html/86e0300b-f62b-bdb1-e709-7e6c3712026c.htm @@ -0,0 +1,10 @@ +Repository.GetItemLocal Method \ No newline at end of file diff --git a/docs/html/86e39027-aa53-814e-70e2-5bd9a624fa5d.htm b/docs/html/86e39027-aa53-814e-70e2-5bd9a624fa5d.htm new file mode 100644 index 0000000..6c78817 --- /dev/null +++ b/docs/html/86e39027-aa53-814e-70e2-5bd9a624fa5d.htm @@ -0,0 +1,12 @@ +Repository Constructor

Repository Constructor

[This is preliminary documentation and is subject to change.]

Initializes a new instance of the Repository class

+ Namespace: +  TeamControlium.Utilities
+ Assembly: +  Utilities.net (in Utilities.net.dll) Version: 1.0.0
Syntax
C#
public Repository()
See Also
\ No newline at end of file diff --git a/docs/html/880793de-1f5b-cd52-adba-367a59c1ea3e.htm b/docs/html/880793de-1f5b-cd52-adba-367a59c1ea3e.htm new file mode 100644 index 0000000..8e39ac0 --- /dev/null +++ b/docs/html/880793de-1f5b-cd52-adba-367a59c1ea3e.htm @@ -0,0 +1,14 @@ +Detokenizer Properties

Detokenizer Properties

[This is preliminary documentation and is subject to change.]

The Detokenizer type exposes the following members.

Properties
+   + NameDescription
Public propertyStatic memberCustomTokenProcessor
+ Gets or sets delegate for processing custom tokens if required. If set, delegate is called before internal token processing to allow overriding if required. +
Public propertyStatic memberDefaultTokenDelimiterCurrentThread
+ Gets or sets the default delimiter within tokens. +
Top
See Also
\ No newline at end of file diff --git a/docs/html/892c2f0d-e24d-4226-b036-4b77342b64bf.htm b/docs/html/892c2f0d-e24d-4226-b036-4b77342b64bf.htm deleted file mode 100644 index 67a05fe..0000000 --- a/docs/html/892c2f0d-e24d-4226-b036-4b77342b64bf.htm +++ /dev/null @@ -1,2 +0,0 @@ -Version History

Version History

The topics in this section describe the various changes made to the [TODO: Project Title] over the -life of the project.

Version History

Select a version below to see a description of its changes.

See Also