diff --git a/Implab.Fx/Implab.Fx.csproj b/Implab.Fx/Implab.Fx.csproj --- a/Implab.Fx/Implab.Fx.csproj +++ b/Implab.Fx/Implab.Fx.csproj @@ -73,7 +73,7 @@ - {f550f1f8-8746-4ad0-9614-855f4c4b7f05} + {F550F1F8-8746-4AD0-9614-855F4C4B7F05} Implab diff --git a/Implab.Test/Implab.Format.Test/Implab.Format.Test.csproj b/Implab.Test/Implab.Format.Test/Implab.Format.Test.csproj new file mode 100644 --- /dev/null +++ b/Implab.Test/Implab.Format.Test/Implab.Format.Test.csproj @@ -0,0 +1,45 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {4D364996-7ECD-4193-8F90-F223FFEA49DA} + Library + Implab.Format.Test + Implab.Format.Test + v4.5 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + + + full + true + bin\Release + prompt + 4 + false + + + + + ..\..\packages\NUnit.3.0.1\lib\net45\nunit.framework.dll + + + + + + + + + + \ No newline at end of file diff --git a/Implab.Test/Implab.Format.Test/JsonTests.cs b/Implab.Test/Implab.Format.Test/JsonTests.cs new file mode 100644 --- /dev/null +++ b/Implab.Test/Implab.Format.Test/JsonTests.cs @@ -0,0 +1,12 @@ +using NUnit.Framework; +using System; + +namespace Implab.Format.Test { + [TestFixture()] + public class JsonTests { + [Test()] + public void TestCase() { + } + } +} + diff --git a/Implab.Test/Implab.Format.Test/packages.config b/Implab.Test/Implab.Format.Test/packages.config new file mode 100644 --- /dev/null +++ b/Implab.Test/Implab.Format.Test/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Implab.mono.sln b/Implab.mono.sln --- a/Implab.mono.sln +++ b/Implab.mono.sln @@ -16,6 +16,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.Test.mono", "Implab.Test\Implab.Test.mono.csproj", "{2BD05F84-E067-4B87-9477-FDC2676A21C6}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.Format.Test", "Implab.Test\Implab.Format.Test\Implab.Format.Test.csproj", "{4D364996-7ECD-4193-8F90-F223FFEA49DA}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoPlay", "MonoPlay\MonoPlay.csproj", "{15DD7123-D504-4627-8B4F-D00C7F04D033}" EndProject Global @@ -50,6 +52,14 @@ Global {2BD05F84-E067-4B87-9477-FDC2676A21C6}.Release 4.5|Any CPU.Build.0 = Release 4.5|Any CPU {2BD05F84-E067-4B87-9477-FDC2676A21C6}.Release|Any CPU.ActiveCfg = Release|Any CPU {2BD05F84-E067-4B87-9477-FDC2676A21C6}.Release|Any CPU.Build.0 = Release|Any CPU + {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug 4.5|Any CPU.ActiveCfg = Debug|Any CPU + {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug 4.5|Any CPU.Build.0 = Debug|Any CPU + {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release 4.5|Any CPU.ActiveCfg = Release|Any CPU + {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release 4.5|Any CPU.Build.0 = Release|Any CPU + {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release|Any CPU.Build.0 = Release|Any CPU {F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Debug 4.5|Any CPU.ActiveCfg = Debug 4.5|Any CPU {F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Debug 4.5|Any CPU.Build.0 = Debug 4.5|Any CPU {F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU @@ -77,6 +87,7 @@ Global EndGlobalSection GlobalSection(NestedProjects) = preSolution {2BD05F84-E067-4B87-9477-FDC2676A21C6} = {BCA337C3-BFDC-4825-BBDB-E6D467E4E452} + {4D364996-7ECD-4193-8F90-F223FFEA49DA} = {BCA337C3-BFDC-4825-BBDB-E6D467E4E452} EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution Policies = $0 diff --git a/Implab/Components/RunnableComponent.cs b/Implab/Components/RunnableComponent.cs --- a/Implab/Components/RunnableComponent.cs +++ b/Implab/Components/RunnableComponent.cs @@ -5,79 +5,14 @@ namespace Implab.Components { public class RunnableComponent : Disposable, IRunnable, IInitializable { - class Automaton { - enum Operations { - Initialize, - Start, - Stop, - Fail, - Success, - Dispose - } - - static readonly EDFADefinition _def = new EDFADefinition(EnumAlphabet.FullAlphabet); - static readonly DFAStateDescriptior[] _states; - - static Automaton() { - var created = _def.AddState(); // initial state - var initializing = _def.AddState(); - var ready = _def.AddState(); - var starting = _def.AddState(); - var running = _def.AddState(); - var stopping = _def.AddState(); - var error = _def.AddState(); - var disposing = _def.AddState(); - var disposed = _def.AddState(new int[] { 0 }); - - _def.DefineTransition(created,initializing,(int)Operations.Initialize); - - _def.DefineTransition(initializing,ready,(int)Operations.Success); - _def.DefineTransition(initializing,error,(int)Operations.Fail); - - _def.DefineTransition(ready, starting, (int)Operations.Start); - _def.DefineTransition(ready, disposing, (int)Operations.Dispose); - _def.DefineTransition(starting, running, (int)Operations.Success); - _def.DefineTransition(starting, error, (int)Operations.Fail); - - _def.DefineTransition(running, stopping, (int)Operations.Stop); - _def.DefineTransition(running, error, (int)Operations.Fail); - - _def.DefineTransition(stopping, ready, (int)Operations.Success); - _def.DefineTransition(stopping, error, (int)Operations.Fail); - - _def.DefineTransition(disposing, disposed, (int)Operations.Success); - - _states = _def.States; - } - - int m_state; - - public Automaton() { - m_state = DFADefinitionBase.INITIAL_STATE; - } - - void Move(Operations op) { - - } - - public ExecutionState Current { - get { - return (ExecutionState)m_context.info; - } - } - } - - readonly Automaton m_automaton = new Automaton(); + IPromise m_pending; Exception m_lastError; protected RunnableComponent(bool initialized) { - if (initialized) - m_automaton.MoveTo(ExecutionState.Ready); - else - m_automaton.MoveTo(ExecutionState.Uninitialized); + } #region IInitializable implementation @@ -91,37 +26,7 @@ namespace Implab.Components { #region IRunnable implementation public IPromise Start() { - return Safe.InvokePromise(() => { - Promise promise; - lock (m_automaton) { - if (m_automaton.Current == ExecutionState.Starting) - return m_pending; - m_automaton.MoveTo(ExecutionState.Starting); - m_pending = promise = new Promise(); - } - - var start = Safe.InvokePromise(OnStart); - promise.On(null, null, start.Cancel); - start.On(promise.Resolve, promise.Reject, promise.CancelOperation); - - return promise.Then(() => { - lock(m_automaton) { - m_automaton.MoveTo(ExecutionState.Running); - m_pending = null; - } - - Run(); - }, err => { - if (BeginTransition(RUNNING_REQUIRE)) { - m_lastError = err; - CompleteTransition(FAILED_STATE); - throw new PromiseTransientException(err); - } - throw new OperationCanceledException(); - }, reason => { - throw new OperationCanceledException("The operation was cancelled", reason); - }); - }); + throw new NotImplementedException(); } protected virtual IPromise OnStart() { diff --git a/Implab/Implab.csproj b/Implab/Implab.csproj --- a/Implab/Implab.csproj +++ b/Implab/Implab.csproj @@ -105,14 +105,11 @@ - - - @@ -184,6 +181,9 @@ + + + diff --git a/Implab/JSON/JSONScanner.cs b/Implab/JSON/JSONScanner.cs --- a/Implab/JSON/JSONScanner.cs +++ b/Implab/JSON/JSONScanner.cs @@ -19,7 +19,7 @@ namespace Implab.JSON { /// Создает новый экземпляр сканнера /// public JSONScanner() - : base(JSONGrammar.Instance.JsonDFA) { + : base(JSONGrammar.Instance.JsonDFA.States, JSONGrammar.Instance.JsonDFA.Alphabet.GetTranslationMap()) { m_stringBuffer = new char[1024]; var dfa = JSONGrammar.Instance.JsonStringDFA; m_stringAlphabet = dfa.Alphabet.GetTranslationMap(); diff --git a/Implab/JSON/StringTranslator.cs b/Implab/JSON/StringTranslator.cs --- a/Implab/JSON/StringTranslator.cs +++ b/Implab/JSON/StringTranslator.cs @@ -35,7 +35,7 @@ namespace Implab.JSON { } public StringTranslator() - : base(JSONGrammar.Instance.JsonStringDFA) { + : base(JSONGrammar.Instance.JsonStringDFA.States, JSONGrammar.Instance.JsonStringDFA.Alphabet.GetTranslationMap()) { } public string Translate(string data) { diff --git a/Implab/Parsing/Alphabet.cs b/Implab/Parsing/Alphabet.cs deleted file mode 100644 --- a/Implab/Parsing/Alphabet.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Implab; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Implab.Parsing { - public class Alphabet: AlphabetBase { - - public Alphabet() - : base(char.MaxValue + 1) { - } - - public override int GetSymbolIndex(char symbol) { - return symbol; - } - - public override IEnumerable InputSymbols { - get { return Enumerable.Range(char.MinValue, char.MaxValue).Select(x => (char)x); } - } - } -} diff --git a/Implab/Parsing/AlphabetBase.cs b/Implab/Parsing/AlphabetBase.cs deleted file mode 100644 --- a/Implab/Parsing/AlphabetBase.cs +++ /dev/null @@ -1,100 +0,0 @@ -using Implab; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Implab.Parsing { - public abstract class AlphabetBase : IAlphabet { - public const int UNCLASSIFIED = 0; - - int m_nextId = 1; - readonly int[] m_map; - - public int Count { - get { return m_nextId; } - } - - protected AlphabetBase(int mapSize) { - m_map = new int[mapSize]; - } - - protected AlphabetBase(int[] map) { - Debug.Assert(map != null); - - m_map = map; - m_nextId = map.Max() + 1; - } - - public int DefineSymbol(T symbol) { - var index = GetSymbolIndex(symbol); - if (m_map[index] == UNCLASSIFIED) - m_map[index] = m_nextId++; - return m_map[index]; - } - - public int DefineClass(IEnumerable symbols) { - Safe.ArgumentNotNull(symbols, "symbols"); - symbols = symbols.Distinct(); - - foreach (var symbol in symbols) { - var index = GetSymbolIndex(symbol); - if (m_map[index] == UNCLASSIFIED) - m_map[GetSymbolIndex(symbol)] = m_nextId; - else - throw new InvalidOperationException(String.Format("Symbol '{0}' already in use", symbol)); - } - return m_nextId++; - } - - public List[] CreateReverseMap() { - return - Enumerable.Range(UNCLASSIFIED, Count) - .Select( - i => InputSymbols - .Where(x => i != UNCLASSIFIED && m_map[GetSymbolIndex(x)] == i) - .ToList() - ) - .ToArray(); - } - - public int[] Reclassify(IAlphabet newAlphabet, IEnumerable> classes) { - Safe.ArgumentNotNull(newAlphabet, "newAlphabet"); - Safe.ArgumentNotNull(classes, "classes"); - var reverseMap = CreateReverseMap(); - - int[] translationMap = new int[Count]; - - foreach (var scl in classes) { - // skip if the supper class contains the unclassified element - if (scl.Contains(UNCLASSIFIED)) - continue; - var range = new List(); - foreach (var cl in scl) { - if (cl < 0 || cl >= reverseMap.Length) - throw new ArgumentOutOfRangeException(String.Format("Class {0} is not valid for the current alphabet", cl)); - range.AddRange(reverseMap[cl]); - } - var newClass = newAlphabet.DefineClass(range); - foreach (var cl in scl) - translationMap[cl] = newClass; - } - - return translationMap; - } - - public int Translate(T symbol) { - return m_map[GetSymbolIndex(symbol)]; - } - - public abstract int GetSymbolIndex(T symbol); - - public abstract IEnumerable InputSymbols { get; } - - public int[] GetTranslationMap() { - return m_map; - } - } -} diff --git a/Implab/Parsing/CDFADefinition.cs b/Implab/Parsing/CDFADefinition.cs --- a/Implab/Parsing/CDFADefinition.cs +++ b/Implab/Parsing/CDFADefinition.cs @@ -1,29 +1,17 @@ -using Implab; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +namespace Implab.Parsing { + public class CDFADefinition : DFADefinition { + readonly CharAlphabet m_alphabet; -namespace Implab.Parsing { - public class CDFADefinition : DFADefinitionBase { - readonly Alphabet m_alphabet; - - public Alphabet Alphabet { + public CharAlphabet Alphabet { get { return m_alphabet; } } - public override int AlphabetSize { - get { return m_alphabet.Count; } - } - - public CDFADefinition(Alphabet alphabet): base() { - Safe.ArgumentNotNull(alphabet, "alphabet"); + public CDFADefinition(CharAlphabet alphabet): base(alphabet.Count) { m_alphabet = alphabet; } public CDFADefinition Optimize() { - var optimized = new CDFADefinition(new Alphabet()); + var optimized = new CDFADefinition(new CharAlphabet()); Optimize(optimized, m_alphabet, optimized.Alphabet); return optimized; diff --git a/Implab/Parsing/CharAlphabet.cs b/Implab/Parsing/CharAlphabet.cs new file mode 100644 --- /dev/null +++ b/Implab/Parsing/CharAlphabet.cs @@ -0,0 +1,23 @@ +using Implab; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Implab.Parsing { + public class CharAlphabet: IndexedAlphabetBase { + + public CharAlphabet() + : base(char.MaxValue + 1) { + } + + public override int GetSymbolIndex(char symbol) { + return symbol; + } + + public override IEnumerable InputSymbols { + get { return Enumerable.Range(char.MinValue, char.MaxValue).Select(x => (char)x); } + } + } +} diff --git a/Implab/Parsing/DFABuilder.cs b/Implab/Parsing/DFABuilder.cs --- a/Implab/Parsing/DFABuilder.cs +++ b/Implab/Parsing/DFABuilder.cs @@ -3,8 +3,6 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Implab.Parsing { /// @@ -118,7 +116,7 @@ namespace Implab.Parsing { if (m_root == null) m_root = token; m_idx++; - m_indexes[m_idx] = Alphabet.UNCLASSIFIED; + m_indexes[m_idx] = IndexedAlphabetBase.UNCLASSIFIED; m_firstpos = new HashSet(new[] { m_idx }); m_lastpos = new HashSet(new[] { m_idx }); Followpos(m_idx); @@ -134,7 +132,7 @@ namespace Implab.Parsing { )); stateMap[m_firstpos] = DefineState( dfa, m_firstpos); - Debug.Assert(stateMap[m_firstpos] == DFADefinitionBase.INITIAL_STATE); + Debug.Assert(stateMap[m_firstpos] == DFADefinition.INITIAL_STATE); var queue = new Queue>(); diff --git a/Implab/Parsing/DFADefinition.cs b/Implab/Parsing/DFADefinition.cs new file mode 100644 --- /dev/null +++ b/Implab/Parsing/DFADefinition.cs @@ -0,0 +1,262 @@ +using Implab; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; + +namespace Implab.Parsing { + public class DFADefinition : IDFADefinition { + readonly List m_states; + + public const int INITIAL_STATE = 1; + public const int UNREACHEBLE_STATE = 0; + + DFAStateDescriptior[] m_statesArray; + readonly int m_alpabetSize; + + public DFADefinition(int alphabetSize) { + m_states = new List(); + m_alpabetSize = alphabetSize; + + m_states.Add(new DFAStateDescriptior()); + } + + public DFAStateDescriptior[] States { + get { + if (m_statesArray == null) + m_statesArray = m_states.ToArray(); + return m_statesArray; + } + } + + public bool InitialStateIsFinal { + get { + return m_states[INITIAL_STATE].final; + } + } + + public int AddState() { + var index = m_states.Count; + m_states.Add(new DFAStateDescriptior { + final = false, + transitions = new int[AlphabetSize] + }); + m_statesArray = null; + + return index; + } + + public int AddState(int[] tag) { + var index = m_states.Count; + bool final = tag != null && tag.Length != 0; + m_states.Add(new DFAStateDescriptior { + final = final, + transitions = new int[AlphabetSize], + tag = final ? tag : null + }); + m_statesArray = null; + return index; + } + + public void DefineTransition(int s1,int s2, int symbol) { + Safe.ArgumentInRange(s1, 0, m_states.Count-1, "s1"); + Safe.ArgumentInRange(s2, 0, m_states.Count-1, "s2"); + Safe.ArgumentInRange(symbol, 0, AlphabetSize-1, "symbol"); + + m_states[s1].transitions[symbol] = s2; + } + + public void Optimize(IDFADefinition minimalDFA,IAlphabet sourceAlphabet, IAlphabet minimalAlphabet) { + Safe.ArgumentNotNull(minimalDFA, "minimalDFA"); + Safe.ArgumentNotNull(minimalAlphabet, "minimalAlphabet"); + + var setComparer = new CustomEqualityComparer>( + (x, y) => x.SetEquals(y), + (s) => s.Sum(x => x.GetHashCode()) + ); + + var arrayComparer = new CustomEqualityComparer( + (x,y) => (new HashSet(x)).SetEquals(new HashSet(y)), + (a) => a.Sum(x => x.GetHashCode()) + ); + + var optimalStates = new HashSet>(setComparer); + var queue = new HashSet>(setComparer); + + foreach (var g in Enumerable + .Range(INITIAL_STATE, m_states.Count-1) + .Select(i => new { + index = i, + descriptor = m_states[i] + }) + .Where(x => x.descriptor.final) + .GroupBy(x => x.descriptor.tag, arrayComparer) + ) { + optimalStates.Add(new HashSet(g.Select(x => x.index))); + } + + var state = new HashSet( + Enumerable + .Range(INITIAL_STATE, m_states.Count - 1) + .Where(i => !m_states[i].final) + ); + optimalStates.Add(state); + queue.Add(state); + + while (queue.Count > 0) { + var stateA = queue.First(); + queue.Remove(stateA); + + for (int c = 0; c < AlphabetSize; c++) { + var stateX = new HashSet(); + + for(int s = 1; s < m_states.Count; s++) { + if (stateA.Contains(m_states[s].transitions[c])) + stateX.Add(s); + } + + foreach (var stateY in optimalStates.ToArray()) { + if (stateX.Overlaps(stateY) && !stateY.IsSubsetOf(stateX)) { + var stateR1 = new HashSet(stateY); + var stateR2 = new HashSet(stateY); + + stateR1.IntersectWith(stateX); + stateR2.ExceptWith(stateX); + + optimalStates.Remove(stateY); + optimalStates.Add(stateR1); + optimalStates.Add(stateR2); + + if (queue.Contains(stateY)) { + queue.Remove(stateY); + queue.Add(stateR1); + queue.Add(stateR2); + } else { + queue.Add(stateR1.Count <= stateR2.Count ? stateR1 : stateR2); + } + } + } + } + } + + // строим карты соотвествия оптимальных состояний с оригинальными + + var initialState = optimalStates.Single(x => x.Contains(INITIAL_STATE)); + + // карта получения оптимального состояния по соотвествующему ему простому состоянию + int[] reveseOptimalMap = new int[m_states.Count]; + // карта с индексами оптимальных состояний + HashSet[] optimalMap = new HashSet[optimalStates.Count + 1]; + { + optimalMap[0] = new HashSet(); // unreachable state + optimalMap[1] = initialState; // initial state + foreach (var ss in initialState) + reveseOptimalMap[ss] = 1; + + int i = 2; + foreach (var s in optimalStates) { + if (s.SetEquals(initialState)) + continue; + optimalMap[i] = s; + foreach (var ss in s) + reveseOptimalMap[ss] = i; + i++; + } + } + + // получаем минимальный алфавит + + var minClasses = new HashSet>(setComparer); + var alphaQueue = new Queue>(); + alphaQueue.Enqueue(new HashSet(Enumerable.Range(0,AlphabetSize))); + + for (int s = 1 ; s < optimalMap.Length; s++) { + var newQueue = new Queue>(); + + foreach (var A in alphaQueue) { + if (A.Count == 1) { + minClasses.Add(A); + continue; + } + + // различаем классы символов, которые переводят в различные оптимальные состояния + // optimalState -> alphaClass + var classes = new Dictionary>(); + + foreach (var term in A) { + // ищем все переходы класса по символу term + var s2 = reveseOptimalMap[ + optimalMap[s].Select(x => m_states[x].transitions[term]).FirstOrDefault(x => x != 0) // первое допустимое элементарное состояние, если есть + ]; + + HashSet A2; + if (!classes.TryGetValue(s2, out A2)) { + A2 = new HashSet(); + newQueue.Enqueue(A2); + classes[s2] = A2; + } + A2.Add(term); + } + } + + if (newQueue.Count == 0) + break; + alphaQueue = newQueue; + } + + foreach (var A in alphaQueue) + minClasses.Add(A); + + var alphabetMap = sourceAlphabet.Reclassify(minimalAlphabet, minClasses); + + // построение автомата + + var states = new int[ optimalMap.Length ]; + states[0] = UNREACHEBLE_STATE; + + for(var s = INITIAL_STATE; s < states.Length; s++) { + var tags = optimalMap[s].SelectMany(x => m_states[x].tag ?? Enumerable.Empty()).Distinct().ToArray(); + if (tags.Length > 0) + states[s] = minimalDFA.AddState(tags); + else + states[s] = minimalDFA.AddState(); + } + + Debug.Assert(states[INITIAL_STATE] == INITIAL_STATE); + + for (int s1 = 1; s1 < m_states.Count; s1++) { + for (int c = 0; c < AlphabetSize; c++) { + var s2 = m_states[s1].transitions[c]; + if (s2 != UNREACHEBLE_STATE) { + minimalDFA.DefineTransition( + reveseOptimalMap[s1], + reveseOptimalMap[s2], + alphabetMap[c] + ); + } + } + } + + } + + public void PrintDFA(IAlphabet alphabet) { + + var reverseMap = alphabet.CreateReverseMap(); + + for (int i = 1; i < reverseMap.Length; i++) { + Console.WriteLine("C{0}: {1}", i, String.Join(",", reverseMap[i])); + } + + for (int i = 1; i < m_states.Count; i++) { + var s = m_states[i]; + for (int c = 0; c < AlphabetSize; c++) + if (s.transitions[c] != UNREACHEBLE_STATE) + Console.WriteLine("S{0} -{1}-> S{2}{3}", i, String.Join(",", reverseMap[c]), s.transitions[c], m_states[s.transitions[c]].final ? "$" : ""); + } + } + + public int AlphabetSize { + get; + } + } +} diff --git a/Implab/Parsing/DFADefinitionBase.cs b/Implab/Parsing/DFADefinitionBase.cs deleted file mode 100644 --- a/Implab/Parsing/DFADefinitionBase.cs +++ /dev/null @@ -1,260 +0,0 @@ -using Implab; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Implab.Parsing { - public abstract class DFADefinitionBase : IDFADefinition { - readonly List m_states; - - public const int INITIAL_STATE = 1; - public const int UNREACHEBLE_STATE = 0; - - DFAStateDescriptior[] m_statesArray; - - protected DFADefinitionBase() { - m_states = new List(); - - m_states.Add(new DFAStateDescriptior()); - } - - public DFAStateDescriptior[] States { - get { - if (m_statesArray == null) - m_statesArray = m_states.ToArray(); - return m_statesArray; - } - } - - public bool InitialStateIsFinal { - get { - return m_states[INITIAL_STATE].final; - } - } - - public int AddState() { - var index = m_states.Count; - m_states.Add(new DFAStateDescriptior { - final = false, - transitions = new int[AlphabetSize] - }); - - return index; - } - - public int AddState(int[] tag) { - var index = m_states.Count; - bool final = tag != null && tag.Length != 0; - m_states.Add(new DFAStateDescriptior { - final = final, - transitions = new int[AlphabetSize], - tag = final ? tag : null - }); - return index; - } - - public void DefineTransition(int s1,int s2, int symbol) { - Safe.ArgumentInRange(s1, 0, m_states.Count-1, "s1"); - Safe.ArgumentInRange(s2, 0, m_states.Count-1, "s2"); - Safe.ArgumentInRange(symbol, 0, AlphabetSize-1, "symbol"); - - m_states[s1].transitions[symbol] = s2; - } - - protected void Optimize(IDFADefinition minimalDFA,IAlphabet sourceAlphabet, IAlphabet minimalAlphabet) { - Safe.ArgumentNotNull(minimalDFA, "minimalDFA"); - Safe.ArgumentNotNull(minimalAlphabet, "minimalAlphabet"); - - var setComparer = new CustomEqualityComparer>( - (x, y) => x.SetEquals(y), - (s) => s.Sum(x => x.GetHashCode()) - ); - - var arrayComparer = new CustomEqualityComparer( - (x,y) => (new HashSet(x)).SetEquals(new HashSet(y)), - (a) => a.Sum(x => x.GetHashCode()) - ); - - var optimalStates = new HashSet>(setComparer); - var queue = new HashSet>(setComparer); - - foreach (var g in Enumerable - .Range(INITIAL_STATE, m_states.Count-1) - .Select(i => new { - index = i, - descriptor = m_states[i] - }) - .Where(x => x.descriptor.final) - .GroupBy(x => x.descriptor.tag, arrayComparer) - ) { - optimalStates.Add(new HashSet(g.Select(x => x.index))); - } - - var state = new HashSet( - Enumerable - .Range(INITIAL_STATE, m_states.Count - 1) - .Where(i => !m_states[i].final) - ); - optimalStates.Add(state); - queue.Add(state); - - while (queue.Count > 0) { - var stateA = queue.First(); - queue.Remove(stateA); - - for (int c = 0; c < AlphabetSize; c++) { - var stateX = new HashSet(); - - for(int s = 1; s < m_states.Count; s++) { - if (stateA.Contains(m_states[s].transitions[c])) - stateX.Add(s); - } - - foreach (var stateY in optimalStates.ToArray()) { - if (stateX.Overlaps(stateY) && !stateY.IsSubsetOf(stateX)) { - var stateR1 = new HashSet(stateY); - var stateR2 = new HashSet(stateY); - - stateR1.IntersectWith(stateX); - stateR2.ExceptWith(stateX); - - optimalStates.Remove(stateY); - optimalStates.Add(stateR1); - optimalStates.Add(stateR2); - - if (queue.Contains(stateY)) { - queue.Remove(stateY); - queue.Add(stateR1); - queue.Add(stateR2); - } else { - queue.Add(stateR1.Count <= stateR2.Count ? stateR1 : stateR2); - } - } - } - } - } - - // строим карты соотвествия оптимальных состояний с оригинальными - - var initialState = optimalStates.Single(x => x.Contains(INITIAL_STATE)); - - // карта получения оптимального состояния по соотвествующему ему простому состоянию - int[] reveseOptimalMap = new int[m_states.Count]; - // карта с индексами оптимальных состояний - HashSet[] optimalMap = new HashSet[optimalStates.Count + 1]; - { - optimalMap[0] = new HashSet(); // unreachable state - optimalMap[1] = initialState; // initial state - foreach (var ss in initialState) - reveseOptimalMap[ss] = 1; - - int i = 2; - foreach (var s in optimalStates) { - if (s.SetEquals(initialState)) - continue; - optimalMap[i] = s; - foreach (var ss in s) - reveseOptimalMap[ss] = i; - i++; - } - } - - // получаем минимальный алфавит - - var minClasses = new HashSet>(setComparer); - var alphaQueue = new Queue>(); - alphaQueue.Enqueue(new HashSet(Enumerable.Range(0,AlphabetSize))); - - for (int s = 1 ; s < optimalMap.Length; s++) { - var newQueue = new Queue>(); - - foreach (var A in alphaQueue) { - if (A.Count == 1) { - minClasses.Add(A); - continue; - } - - // различаем классы символов, которые переводят в различные оптимальные состояния - // optimalState -> alphaClass - var classes = new Dictionary>(); - - foreach (var term in A) { - // ищем все переходы класса по символу term - var s2 = reveseOptimalMap[ - optimalMap[s].Select(x => m_states[x].transitions[term]).FirstOrDefault(x => x != 0) // первое допустимое элементарное состояние, если есть - ]; - - HashSet A2; - if (!classes.TryGetValue(s2, out A2)) { - A2 = new HashSet(); - newQueue.Enqueue(A2); - classes[s2] = A2; - } - A2.Add(term); - } - } - - if (newQueue.Count == 0) - break; - alphaQueue = newQueue; - } - - foreach (var A in alphaQueue) - minClasses.Add(A); - - var alphabetMap = sourceAlphabet.Reclassify(minimalAlphabet, minClasses); - - // построение автомата - - var states = new int[ optimalMap.Length ]; - states[0] = UNREACHEBLE_STATE; - - for(var s = INITIAL_STATE; s < states.Length; s++) { - var tags = optimalMap[s].SelectMany(x => m_states[x].tag ?? Enumerable.Empty()).Distinct().ToArray(); - if (tags.Length > 0) - states[s] = minimalDFA.AddState(tags); - else - states[s] = minimalDFA.AddState(); - } - - Debug.Assert(states[INITIAL_STATE] == INITIAL_STATE); - - for (int s1 = 1; s1 < m_states.Count; s1++) { - for (int c = 0; c < AlphabetSize; c++) { - var s2 = m_states[s1].transitions[c]; - if (s2 != UNREACHEBLE_STATE) { - minimalDFA.DefineTransition( - reveseOptimalMap[s1], - reveseOptimalMap[s2], - alphabetMap[c] - ); - } - } - } - - } - - protected void PrintDFA(IAlphabet alphabet) { - - var reverseMap = alphabet.CreateReverseMap(); - - for (int i = 1; i < reverseMap.Length; i++) { - Console.WriteLine("C{0}: {1}", i, String.Join(",", reverseMap[i])); - } - - for (int i = 1; i < m_states.Count; i++) { - var s = m_states[i]; - for (int c = 0; c < AlphabetSize; c++) - if (s.transitions[c] != UNREACHEBLE_STATE) - Console.WriteLine("S{0} -{1}-> S{2}{3}", i, String.Join(",", reverseMap[c]), s.transitions[c], m_states[s.transitions[c]].final ? "$" : ""); - } - } - - public abstract int AlphabetSize { - get; - } - } -} diff --git a/Implab/Parsing/DFAutomaton.cs b/Implab/Parsing/DFAutomaton.cs --- a/Implab/Parsing/DFAutomaton.cs +++ b/Implab/Parsing/DFAutomaton.cs @@ -14,8 +14,8 @@ namespace Implab.Parsing { public T info; } - public const int INITIAL_STATE = DFADefinitionBase.INITIAL_STATE; - public const int UNREACHEBLE_STATE = DFADefinitionBase.UNREACHEBLE_STATE; + public const int INITIAL_STATE = DFADefinition.INITIAL_STATE; + public const int UNREACHEBLE_STATE = DFADefinition.UNREACHEBLE_STATE; protected ContextFrame m_context; Stack m_contextStack = new Stack(); diff --git a/Implab/Parsing/EDFADefinition.cs b/Implab/Parsing/EDFADefinition.cs --- a/Implab/Parsing/EDFADefinition.cs +++ b/Implab/Parsing/EDFADefinition.cs @@ -2,22 +2,17 @@ using System; namespace Implab.Parsing { - public class EDFADefinition : DFADefinitionBase where T : struct, IConvertible { + public class EDFADefinition : DFADefinition where T : struct, IConvertible { readonly EnumAlphabet m_alphabet; public EnumAlphabet Alphabet { get { return m_alphabet; } } - public EDFADefinition(EnumAlphabet alphabet) { - Safe.ArgumentNotNull(alphabet, "alphabet"); + public EDFADefinition(EnumAlphabet alphabet) : base(alphabet.Count) { m_alphabet = alphabet; } - public override int AlphabetSize { - get { return m_alphabet.Count; } - } - public void DefineTransition(int s1, int s2, T input) { DefineTransition(s1, s2, m_alphabet.Translate(input)); } diff --git a/Implab/Parsing/EnumAlphabet.cs b/Implab/Parsing/EnumAlphabet.cs --- a/Implab/Parsing/EnumAlphabet.cs +++ b/Implab/Parsing/EnumAlphabet.cs @@ -10,7 +10,7 @@ namespace Implab.Parsing { /// Алфавит символами которого являются элементы перечислений. /// /// Тип перечислений - public class EnumAlphabet : AlphabetBase where T : struct, IConvertible { + public class EnumAlphabet : IndexedAlphabetBase where T : struct, IConvertible { [SuppressMessage("Microsoft.Design", "CA1000:DoNotDeclareStaticMembersOnGenericTypes")] static readonly T[] _symbols; static readonly EnumAlphabet _fullAlphabet; diff --git a/Implab/Parsing/Grammar.cs b/Implab/Parsing/Grammar.cs --- a/Implab/Parsing/Grammar.cs +++ b/Implab/Parsing/Grammar.cs @@ -11,7 +11,6 @@ namespace Implab.Parsing { /// /// public abstract class Grammar where TGrammar: Grammar, new() { - Alphabet m_alphabet = new Alphabet(); static TGrammar _instance; public static TGrammar Instance{ @@ -22,8 +21,14 @@ namespace Implab.Parsing { } } + readonly CharAlphabet m_alphabet = new CharAlphabet(); + + public CharAlphabet Alphabet { + get { return m_alphabet; } + } + public SymbolToken UnclassifiedToken() { - return new SymbolToken(Alphabet.UNCLASSIFIED); + return new SymbolToken(CharAlphabet.UNCLASSIFIED); } public void DefineAlphabet(IEnumerable alphabet) { @@ -52,7 +57,7 @@ namespace Implab.Parsing { int TranslateOrAdd(char ch) { var t = m_alphabet.Translate(ch); - if (t == Alphabet.UNCLASSIFIED) + if (t == CharAlphabet.UNCLASSIFIED) t = m_alphabet.DefineSymbol(ch); return t; } @@ -63,7 +68,7 @@ namespace Implab.Parsing { int TranslateOrDie(char ch) { var t = m_alphabet.Translate(ch); - if (t == Alphabet.UNCLASSIFIED) + if (t == CharAlphabet.UNCLASSIFIED) throw new ApplicationException(String.Format("Symbol '{0}' is UNCLASSIFIED", ch)); return t; } diff --git a/Implab/Parsing/IAlphabet.cs b/Implab/Parsing/IAlphabet.cs --- a/Implab/Parsing/IAlphabet.cs +++ b/Implab/Parsing/IAlphabet.cs @@ -9,7 +9,11 @@ namespace Implab.Parsing { /// Алфавит. Множество символов, которые разбиты на классы, при этом классы имеют непрерывную нумерацию, /// что позволяет использовать их в качестве индексов массивов. /// - /// Далее вимволами алфавита будем называть классы исходных символов. + /// + /// Алфавит является сюрьективным отображением множества символов в множество индексов, это позволяет сократить размер таблицы переходов автомата + /// для входных символов, которые для него не различимы. + /// Далее символами алфавита будем называть классы исходных символов. + /// /// Тип символов. public interface IAlphabet { /// diff --git a/Implab/Parsing/IDFADefinition.cs b/Implab/Parsing/IDFADefinition.cs --- a/Implab/Parsing/IDFADefinition.cs +++ b/Implab/Parsing/IDFADefinition.cs @@ -31,6 +31,9 @@ namespace Implab.Parsing { /// /// Размер входного алфавита. /// + /// + /// Размер входного алфавита определяет количество возможных выходов из одного состояния. + /// int AlphabetSize { get; } } } diff --git a/Implab/Parsing/IndexedAlphabetBase.cs b/Implab/Parsing/IndexedAlphabetBase.cs new file mode 100644 --- /dev/null +++ b/Implab/Parsing/IndexedAlphabetBase.cs @@ -0,0 +1,107 @@ +using Implab; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Implab.Parsing { + /// + /// Indexed alphabet is the finite set of symbols where each symbol has a zero-based unique index. + /// + public abstract class IndexedAlphabetBase : IAlphabet { + public const int UNCLASSIFIED = 0; + + int m_nextId = 1; + readonly int[] m_map; + + public int Count { + get { return m_nextId; } + } + + protected IndexedAlphabetBase(int mapSize) { + m_map = new int[mapSize]; + } + + protected IndexedAlphabetBase(int[] map) { + Debug.Assert(map != null); + + m_map = map; + m_nextId = map.Max() + 1; + } + + public int DefineSymbol(T symbol) { + var index = GetSymbolIndex(symbol); + if (m_map[index] == UNCLASSIFIED) + m_map[index] = m_nextId++; + return m_map[index]; + } + + public int DefineClass(IEnumerable symbols) { + Safe.ArgumentNotNull(symbols, "symbols"); + symbols = symbols.Distinct(); + + foreach (var symbol in symbols) { + var index = GetSymbolIndex(symbol); + if (m_map[index] == UNCLASSIFIED) + m_map[GetSymbolIndex(symbol)] = m_nextId; + else + throw new InvalidOperationException(String.Format("Symbol '{0}' already in use", symbol)); + } + return m_nextId++; + } + + public List[] CreateReverseMap() { + return + Enumerable.Range(UNCLASSIFIED, Count) + .Select( + i => InputSymbols + .Where(x => i != UNCLASSIFIED && m_map[GetSymbolIndex(x)] == i) + .ToList() + ) + .ToArray(); + } + + public int[] Reclassify(IAlphabet newAlphabet, IEnumerable> classes) { + Safe.ArgumentNotNull(newAlphabet, "newAlphabet"); + Safe.ArgumentNotNull(classes, "classes"); + var reverseMap = CreateReverseMap(); + + int[] translationMap = new int[Count]; + + foreach (var scl in classes) { + // skip if the supper class contains the unclassified element + if (scl.Contains(UNCLASSIFIED)) + continue; + var range = new List(); + foreach (var cl in scl) { + if (cl < 0 || cl >= reverseMap.Length) + throw new ArgumentOutOfRangeException(String.Format("Class {0} is not valid for the current alphabet", cl)); + range.AddRange(reverseMap[cl]); + } + var newClass = newAlphabet.DefineClass(range); + foreach (var cl in scl) + translationMap[cl] = newClass; + } + + return translationMap; + } + + public virtual int Translate(T symbol) { + return m_map[GetSymbolIndex(symbol)]; + } + + public abstract int GetSymbolIndex(T symbol); + + public abstract IEnumerable InputSymbols { get; } + + /// + /// Gets the translation map from the index of the symbol to it's class this is usefull for the optimized input symbols transtaion. + /// + /// The translation map. + public int[] GetTranslationMap() { + return m_map; + } + } +} diff --git a/Implab/Parsing/Scanner.cs b/Implab/Parsing/Scanner.cs --- a/Implab/Parsing/Scanner.cs +++ b/Implab/Parsing/Scanner.cs @@ -39,11 +39,12 @@ namespace Implab.Parsing { int m_chunkSize = 1024; // 1k int m_limit = 10 * 1024 * 1024; // 10Mb - protected Scanner(CDFADefinition definition) { - Safe.ArgumentNotNull(definition, "definition"); + protected Scanner(DFAStateDescriptior[] states, int[] alphabet) { + Safe.ArgumentNotEmpty(states, "states"); + Safe.ArgumentNotNull(alphabet, "alphabet"); - m_states = definition.States; - m_alphabetMap = definition.Alphabet.GetTranslationMap(); + m_states = states; + m_alphabetMap = alphabet; Feed(new char[0]); } @@ -129,13 +130,13 @@ namespace Implab.Parsing { if (m_pointer >= m_bufferSize) return false; - m_currentState = m_states[CDFADefinition.INITIAL_STATE]; + m_currentState = m_states[DFADefinition.INITIAL_STATE]; m_tokenLen = 0; m_tokenOffset = m_pointer; - int nextState = CDFADefinition.UNREACHEBLE_STATE; + int nextState; do { nextState = m_currentState.transitions[m_previewCode]; - if (nextState == CDFADefinition.UNREACHEBLE_STATE) { + if (nextState == DFADefinition.UNREACHEBLE_STATE) { if (m_currentState.final) return true; else diff --git a/packages/NUnit.3.0.1/CHANGES.txt b/packages/NUnit.3.0.1/CHANGES.txt new file mode 100644 --- /dev/null +++ b/packages/NUnit.3.0.1/CHANGES.txt @@ -0,0 +1,924 @@ +NUnit 3.0.1 - December 1, 2015 + +Console Runner + + * The Nunit.Runners NuGet package was updated to become a meta-package that pulls in the NUnit.Console package + * Reinstated the --pause command line option that will display a message box allowing you to attach a debugger if the --debug option does not work + +Issues Resolved + + * 994 Add max number of Agents to the NUnit project file + * 1014 Ensure NUnit API assembly updates with MSI installs + * 1024 Added --pause flag to console runner + * 1030 Update Nunit.Runners package to 3.0 + * 1033 "No arguments were provided" with Theory and Values combination + * 1035 Check null arguments + * 1037 Async tests not working on Windows 10 Universal + * 1041 NUnit2XmlResult Writer is reporting Sucess when test fails + * 1042 NUnit2 reports on 3.0 is different than 2.6.4 + * 1046 FloatingPointNumerics.AreAlmostEqualUlps throws OverflowException + * 1049 Cannot select Generic tests from command line + * 1050 Do not expose System.Runtime.CompilerServices.ExtensionAttribute to public + * 1054 Create nuget feeds for CI builds on Appveyor + * 1055 nunit3 console runner --where option does not return error on invalid selection string + * 1060 Remove "Version 3" from NUnit Nuget Package + * 1061 Nunit30Settings.xml becomes corrupted + * 1062 Console.WriteLine statements in "OneTimeSetUp" and "OneTimeTearDown" annotated methods are not directed to the console when using nunit3-console.exe runner + * 1063 Error in Random Test + +NUnit 3.0.0 Final Release - November 15, 2015 + +Issues Resolved + + * 635 Mono 4.0 Support + +NUnit 3.0.0 Release Candidate 3 - November 13, 2015 + +Engine + + * The engine now only sets the config file for project.nunit to project.config if project.config exists. Otherwise, each assembly uses its own config, provided it is run in a separate AppDomain by itself. + + NOTE: It is not possible for multiple assemblies in the same AppDomain to use different configs. This is not an NUnit limitation, it's just how configs work! + +Issues Resolved + + * 856 Extensions support for third party runners in NUnit 3.0 + * 1003 Delete TeamCityEventHandler as it is not used + * 1015 Specifying .nunit project and --framework on command line causes crash + * 1017 Remove Assert.Multiple from framework + +NUnit 3.0.0 Release Candidate 2 - November 8, 2015 + +Engine + + * The IDriverFactory extensibility interface has been modified. + +Issues Resolved + + * 970 Define PARALLEL in CF build of nunitlite + * 978 It should be possible to determine version of NUnit using nunit console tool + * 983 Inconsistent return codes depending on ProcessModel + * 986 Update docs for parallel execution + * 988 Don't run portable tests from NUnit Console + * 990 V2 driver is passing invalid filter elements to NUnit + * 991 Mono.Options should not be exposed to public directly + * 993 Give error message when a regex filter is used with NUnit V2 + * 997 Add missing XML Documentation + * 1008 NUnitLite namespace not updated in the NuGet Packages + +NUnit 3.0.0 Release Candidate - November 1, 2015 + +Framework + + * The portable build now supports ASP.NET 5 and the new Core CLR. + + NOTE: The `nunit3-console` runner cannot run tests that reference the portable build. + You may run such tests using NUnitLite or a platform-specific runner. + + * `TestCaseAttribute` and `TestCaseData` now allow modifying the test name without replacing it entirely. + * The Silverlight packages are now separate downloads. + +NUnitLite + + * The NUnitLite runner now produces the same output display and XML results as the console runner. + +Engine + + * The format of the XML result file has been finalized and documented. + +Console Runner + + * The console runner program is now called `nunit3-console`. + * Console runner output has been modified so that the summary comes at the end, to reduce the need for scrolling. + +Issues Resolved + + * 59 Length of generated test names should be limited + * 68 Customization of test case name generation + * 404 Split tests between nunitlite.runner and nunit.framework + * 575 Add support for ASP.NET 5 and the new Core CLR + * 783 Package separately for Silverlight + * 833 Intermittent failure of WorkItemQueueTests.StopQueue_WithWorkers + * 859 NUnit-Console output - move Test Run Summary to end + * 867 Remove Warnings from Ignored tests + * 868 Review skipped tests + * 887 Move environment and settings elements to the assembly suite in the result file + * 899 Colors for ColorConsole on grey background are too light + * 904 InternalPreserveStackTrace is not supported on all Portable platforms + * 914 Unclear error message from console runner when assembly has no tests + * 916 Console runner dies when test agent dies + * 918 Console runner --where parameter is case sensitive + * 920 Remove addins\nunit.engine.api.dll from NuGet package + * 929 Rename nunit-console.exe + * 931 Remove beta warnings from NuGet packages + * 936 Explicit skipped tests not displayed + * 939 Installer complains about .NET even if already installed + * 940 Confirm or modify list of packages for release + * 947 Breaking API change in ValueSourceAttribute + * 949 Update copyright in NUnit Console + * 954 NUnitLite XML output is not consistent with the engine's + * 955 NUnitLite does not display the where clause + * 959 Restore filter options for NUnitLite portable build + * 960 Intermittent failure of CategoryFilterTests + * 967 Run Settings Report is not being displayed. + +NUnit 3.0.0 Beta 5 - October 16, 2015 + +Framework + + * Parameterized test cases now support nullable arguments. + * The NUnit framework may now be built for the .NET Core framework. Note that this is only available through building the source code. A binary will be available in the next release. + +Engine + + * The engine now runs multiple test assemblies in parallel by default + * The output XML now includes more information about the test run, including the text of the command used, any engine settings and the filter used to select tests. + * Extensions may now specify data in an identifying attribute, for use by the engine in deciding whether to load that extension. + + +Console Runner + + * The console now displays all settings used by the engine to run tests as well as the filter used to select tests. + * The console runner accepts a new option --maxagents. If multiple assemblies are run in separate processes, this value may be used to limit the number that are executed simultaneously in parallel. + * The console runner no longer accepts the --include and --exclude options. Instead, the new --where option provides a more general way to express which tests will be executed, such as --where "cat==Fast && Priority==High". See the docs for details of the syntax. + * The new --debug option causes NUnit to break in the debugger immediately before tests are run. This simplifies debugging, especially when the test is run in a separate process. + +Issues Resolved + + * 41 Check for zeroes in Assert messages + * 254 Finalize XML format for test results + * 275 NUnitEqualityComparer fails to compare IEquatable where second object is derived from T + * 304 Run test Assemblies in parallel + * 374 New syntax for selecting tests to be run + * 515 OSPlatform.IsMacOSX doesn't work + * 573 nunit-console hangs on Mac OS X after all tests have run + * 669 TeamCity service message should have assembly name as a part of test name. + * 689 The TeamCity service message "testFinished" should have an integer value in the "duration" attribute + * 713 Include command information in XML + * 719 We have no way to configure tests for several assemblies using NUnit project file and the common installation from msi file + * 735 Workers number in xml report file cannot be found + * 784 Build Portable Framework on Linux + * 790 Allow Extensions to provide data through an attribute + * 794 Make it easier to debug tests as well as NUnit itself + * 801 NUnit calls Dispose multiple times + * 814 Support nullable types with TestCase + * 818 Possible error in Merge Pull Request #797 + * 821 Wrapped method results in loss of result information + * 822 Test for Debugger in NUnitTestAssemblyRunner probably should not be in CF build + * 824 Remove unused System.Reflection using statements + * 826 Randomizer uniqueness tests fail randomly! + * 828 Merge pull request #827 (issue 826) + * 830 Add ability to report test results synchronously to test runners + * 837 Enumerators not disposed when comparing IEnumerables + * 840 Add missing copyright notices + * 844 Pull Request #835 (Issue #814) does not build in CF + * 847 Add new --process:inprocess and --inprocess options + * 850 Test runner fails if test name contains invalid xml characters + * 851 'Exclude' console option is not working in NUnit Lite + * 853 Cannot run NUnit Console from another directory + * 860 Use CDATA section for message, stack-trace and output elements of XML + * 863 Eliminate core engine + * 865 Intermittent failures of StopWatchTests + * 869 Tests that use directory separator char to determine platform misreport Linux on MaxOSX + * 870 NUnit Console Runtime Environment misreports on MacOSX + * 874 Add .NET Core Framework + * 878 Cannot exclude MacOSX or XBox platforms when running on CF + * 892 Fixed test runner returning early when executing more than one test run. + * 894 Give nunit.engine and nunit.engine.api assemblies strong names + * 896 NUnit 3.0 console runner not placing test result xml in --work directory + +NUnit 3.0.0 Beta 4 - August 25, 2015 + +Framework + + * A new RetryAttribute allows retrying of failing tests. + * New SupersetConstraint and Is.SupersetOf syntax complement SubsetConstraint. + * Tests skipped due to ExplicitAttribute are now reported as skipped. + +Engine + + * We now use Cecil to examine assemblies prior to loading them. + * Extensions are no longer based on Mono.Addins but use our own extension framework. + +Issues Resolved + + * 125 3rd-party dependencies should be downloaded on demand + * 283 What should we do when a user extension does something bad? + * 585 RetryAttribute + * 642 Restructure MSBuild script + * 649 Change how we zip packages + * 654 ReflectionOnlyLoad and ReflectionOnlyLoadFrom + * 664 Invalid "id" attribute in the report for case "test started" + * 685 In the some cases when tests cannot be started NUnit returns exit code "0" + * 728 Missing Assert.That overload + * 741 Explicit Tests get run when using --exclude + * 746 Framework should send events for all tests + * 747 NUnit should apply attributes even if test is non-runnable + * 749 Review Use of Mono.Addins for Engine Extensibility + * 750 Include Explicit Tests in Test Results + * 753 Feature request: Is.SupersetOf() assertion constraint + * 755 TimeOut attribute doesn't work with TestCaseSource Attribute + * 757 Implement some way to wait for execution to complete in ITestEngineRunner + * 760 Packaging targets do not run on Linux + * 766 Added overloads for True()/False() accepting booleans + * 778 Build and build.cmd scripts invoke nuget.exe improperly + * 780 Teamcity fix + * 782 No sources for 2.6.4 + +NUnit 3.0.0 Beta 3 - July 15, 2015 + +Framework + + * The RangeAttribute has been extended to support more data types including + uint, long and ulong + * Added platform support for Windows 10 and fixed issues with Windows 8 and + 8.1 support + * Added async support to the portable version of NUnit Framework + * The named members of the TestCaseSource and ValueSource attributes must now be + static. + * RandomAttribute has been extended to add support for new data types including + uint, long, ulong, short, ushort, float, byte and sbyte + * TestContext.Random has also been extended to add support for new data types including + uint, long, ulong, short, ushort, float, byte, sbyte and decimal + * Removed the dependency on Microsoft.Bcl.Async from the NUnit Framework assembly + targeting .NET 4.0. If you want to write async tests in .NET 4.0, you will need + to reference the NuGet package yourself. + * Added a new TestFixtureSource attribute which is the equivalent to TestCaseSource + but provides for instantiation of fixtures. + * Significant improvements have been made in how NUnit deduces the type arguments of + generic methods based on the arguments provided. + +Engine + + * If the target framework is not specified, test assemblies that are compiled + to target .NET 4.5 will no longer run in .NET 4.0 compatibility mode + + Console + + * If the console is run without arguments, it will now display help + +Issues Resolved + + * 47 Extensions to RangeAttribute + * 237 System.Uri .ctor works not properly under Nunit + * 244 NUnit should properly distinguish between .NET 4.0 and 4.5 + * 310 Target framework not specified on the AppDomain when running against .Net 4.5 + * 321 Rationalize how we count tests + * 472 Overflow exception and DivideByZero exception from the RangeAttribute + * 524 int and char do not compare correctly? + * 539 Truncation of string arguments + * 544 AsyncTestMethodTests for 4.5 Framework fails frequently on Travis CI + * 656 Unused parameter in Console.WriteLine found + * 670 Failing Tests in TeamCity Build + * 673 Ensure proper disposal of engine objects + * 674 Engine does not release test assemblies + * 679 Windows 10 Support + * 682 Add Async Support to Portable Framework + * 683 Make FrameworkController available in portable build + * 687 TestAgency does not launch agent process correctly if runtime type is not specified (i.e. v4.0) + * 692 PlatformAttribute_OperatingSystemBitNess fails when running in 32-bit process + * 693 Generic Test Method cannot determine type arguments for fixture when passed as IEnumerable + * 698 Require TestCaseSource and ValueSource named members to be static + * 703 TeamCity non-equal flowid for 'testStarted' and 'testFinished' messages + * 712 Extensions to RandomAttribute + * 715 Provide a data source attribute at TestFixture Level + * 718 RangeConstraint gives error with from and two args of differing types + * 723 Does nunit.nuspec require dependency on Microsoft.Bcl.Async? + * 724 Adds support for Nullable to Assert.IsTrue and Assert.IsFalse + * 734 Console without parameters doesn't show help + +NUnit 3.0.0 Beta 2 - May 12, 2015 + +Framework + + * The Compact Framework version of the framework is now packaged separately + and will be distributed as a ZIP file and as a NuGet package. + * The NUnit 2.x RepeatAttribute was added back into the framework. + * Added Throws.ArgumentNullException + * Added GetString methods to NUnit.Framework.Internal.RandomGenerator to + create repeatable random strings for testing + * When checking the equality of DateTimeOffset, you can now use the + WithSameOffset modifier + * Some classes intended for internal usage that were public for testing + have now been made internal. Additional classes will be made internal + for the final 3.0 release. + +Engine + + * Added a core engine which is a non-extensible, minimal engine for use by + devices and similar situations where reduced functionality is compensated + for by reduced size and simplicity of usage. See + https://github.com/nunit/dev/wiki/Core-Engine for more information. + +Issues Resolved + + * 22 Add OSArchitecture Attribute to Environment node in result xml + * 24 Assert on Dictionary Content + * 48 Explicit seems to conflict with Ignore + * 168 Create NUnit 3.0 documentation + * 196 Compare DateTimeOffsets including the offset in the comparison + * 217 New icon for the 3.0 release + * 316 NUnitLite TextUI Runner + * 320 No Tests found: Using parametrized Fixture and TestCaseSource + * 360 Better exception message when using non-BCL class in property + * 454 Rare registry configurations may cause NUnit to fail + * 478 RepeatAttribute + * 481 Testing multiple assemblies in nunitlite + * 538 Potential bug using TestContext in constructors + * 546 Enable Parallel in NUnitLite/CF (or more) builds + * 551 TextRunner not passing the NumWorkers option to the ITestAssemblyRunner + * 556 Executed tests should always return a non-zero duration + * 559 Fix text of NuGet packages + * 560 Fix PackageVersion property on wix install projects + * 562 Program.cs in NUnitLite NuGet package is incorrect + * 564 NUnitLite Nuget package is Beta 1a, Framework is Beta 1 + * 565 NUnitLite Nuget package adds Program.cs to a VB Project + * 568 Isolate packaging from building + * 570 ThrowsConstraint failure message should include stack trace of actual exception + * 576 Throws.ArgumentNullException would be nice + * 577 Documentation on some members of Throws falsely claims that they return `TargetInvocationException` constraints + * 579 No documentation for recommended usage of TestCaseSourceAttribute + * 580 TeamCity Service Message Uses Incorrect Test Name with NUnit2Driver + * 582 Test Ids Are Not Unique + * 583 TeamCity service messages to support parallel test execution + * 584 Non-runnable assembly has incorrect ResultState + * 609 Add support for integration with TeamCity + * 611 Remove unused --teamcity option from CF build of NUnitLite + * 612 MaxTime doesn't work when used for TestCase + * 621 Core Engine + * 622 nunit-console fails when use --output + * 628 Modify IService interface and simplify ServiceContext + * 631 Separate packaging for the compact framework + * 646 ConfigurationManager.AppSettings Params Return Null under Beta 1 + * 648 Passing 2 or more test assemblies targeting > .NET 2.0 to nunit-console fails + +NUnit 3.0.0 Beta 1 - March 25, 2015 + +General + + * There is now a master windows installer for the framework, engine and console runner. + +Framework + + * We no longer create a separate framework build for .NET 3.5. The 2.0 and + 3.5 builds were essentially the same, so the former should now be used + under both runtimes. + * A new Constraint, DictionaryContainsKeyConstraint, may be used to test + that a specified key is present in a dictionary. + * LevelOfParallelizationAttribute has been renamed to LevelOfParallelismAttribute. + * The Silverlight runner now displays output in color and includes any + text output created by the tests. + * The class and method names of each test are included in the output xml + where applicable. + * String arguments used in test case names are now truncated to 40 rather + than 20 characters. + +Engine + + * The engine API has now been finalized. It permits specifying a minimum + version of the engine that a runner is able to use. The best installed + version of the engine will be loaded. Third-party runners may override + the selection process by including a copy of the engine in their + installation directory and specifying that it must be used. + * The V2 framework driver now uses the event listener and test listener + passed to it by the runner. This corrects several outstanding issues + caused by events not being received and allows selecting V2 tests to + be run from the command-line, in the same way that V3 tests are selected. + +Console + + * The console now defaults to not using shadowcopy. There is a new option + --shadowcopy to turn it on if needed. + +Issues Resolved + + * 224 Silverlight Support + * 318 TestActionAttribute: Retrieving the TestFixture + * 428 Add ExpectedExceptionAttribute to C# samples + * 440 Automatic selection of Test Engine to use + * 450 Create master install that includes the framework, engine and console installs + * 477 Assert does not work with ArraySegment + * 482 nunit-console has multiple errors related to -framework option + * 483 Adds constraint for asserting that a dictionary contains a particular key + * 484 Missing file in NUnit.Console nuget package + * 485 Can't run v2 tests with nunit-console 3.0 + * 487 NUnitLite can't load assemblies by their file name + * 488 Async setup and teardown still don't work + * 497 Framework installer shold register the portable framework + * 504 Option --workers:0 is ignored + * 508 Travis builds with failure in engine tests show as successful + * 509 Under linux, not all mono profiles are listed as available + * 512 Drop the .NET 3.5 build + * 517 V2 FrameworkDriver does not make use of passed in TestEventListener + * 523 Provide an option to disable shadowcopy in NUnit v3 + * 528 V2 FrameworkDriver does not make use of passed in TestFilter + * 530 Color display for Silverlight runner + * 531 Display text output from tests in Silverlight runner + * 534 Add classname and methodname to test result xml + * 541 Console help doesn't indicate defaults + +NUnit 3.0.0 Alpha 5 - January 30, 2015 + +General + + * A Windows installer is now included in the release packages. + +Framework + + * TestCaseAttribute now allows arguments with default values to be omitted. Additionaly, it accepts a Platform property to specify the platforms on which the test case should be run. + * TestFixture and TestCase attributes now enforce the requirement that a reason needs to be provided when ignoring a test. + * SetUp, TearDown, OneTimeSetUp and OneTimeTearDown methods may now be async. + * String arguments over 20 characters in length are truncated when used as part of a test name. + +Engine + + * The engine is now extensible using Mono.Addins. In this release, extension points are provided for FrameworkDrivers, ProjectLoaders and OutputWriters. The following addins are bundled as a part of NUnit: + * A FrameworkDriver that allows running NUnit V2 tests under NUnit 3.0. + * ProjectLoaders for NUnit and Visual Studio projects. + * An OutputWriter that creates XML output in NUnit V2 format. + * DomainUsage now defaults to Multiple if not specified by the runner + +Console + + * New options supported: + * --testlist provides a list of tests to run in a file + * --stoponerror indicates that the run should terminate when any test fails. + +Issues Resolved + + * 20 TestCaseAttribute needs Platform property. + * 60 NUnit should support async setup, teardown, fixture setup and fixture teardown. + * 257 TestCaseAttribute should not require parameters with default values to be specified. + * 266 Pluggable framework drivers. + * 368 Create addin model. + * 369 Project loader addins + * 370 OutputWriter addins + * 403 Move ConsoleOptions.cs and Options.cs to Common and share... + * 419 Create Windows Installer for NUnit. + * 427 [TestFixture(Ignore=true)] should not be allowed. + * 437 Errors in tests under Linux due to hard-coded paths. + * 441 NUnit-Console should support --testlist option + * 442 Add --stoponerror option back to nunit-console. + * 456 Fix memory leak in RuntimeFramework. + * 459 Remove the Mixed Platforms build configuration. + * 468 Change default domain usage to multiple. + * 469 Truncate string arguments in test names in order to limit the length. + +NUnit 3.0.0 Alpha 4 - December 30, 2014 + +Framework + + * ApartmentAttribute has been added, replacing STAAttribute and MTAAttribute. + * Unnecessary overloads of Assert.That and Assume.That have been removed. + * Multiple SetUpFixtures may be specified in a single namespace. + * Improvements to the Pairwise strategy test case generation algorithm. + * The new NUnitLite runner --testlist option, allows a list of tests to be kept in a file. + +Engine + + * A driver is now included, which allows running NUnit 2.x tests under NUnit 3.0. + * The engine can now load and run tests specified in a number of project formats: + * NUnit (.nunit) + * Visual Studio C# projects (.csproj) + * Visual Studio F# projects (.vjsproj) + * Visual Studio Visual Basic projects (.vbproj) + * Visual Studio solutions (.sln) + * Legacy C++ and Visual JScript projects (.csproj and .vjsproj) are also supported + * Support for the current C++ format (.csxproj) is not yet available + * Creation of output files like TestResult.xml in various formats is now a + service of the engine, available to any runner. + +Console + + * The command-line may now include any number of assemblies and/or supported projects. + +Issues Resolved + + * 37 Multiple SetUpFixtures should be permitted on same namespace + * 210 TestContext.WriteLine in an AppDomain causes an error + * 227 Add support for VS projects and solutions + * 231 Update C# samples to use NUnit 3.0 + * 233 Update F# samples to use NUnit 3.0 + * 234 Update C++ samples to use NUnit 3.0 + * 265 Reorganize console reports for nunit-console and nunitlite + * 299 No full path to assembly in XML file under Compact Framework + * 301 Command-line length + * 363 Make Xml result output an engine service + * 377 CombiningStrategyAttributes don't work correctly on generic methods + * 388 Improvements to NUnitLite runner output + * 390 Specify exactly what happens when a test times out + * 396 ApartmentAttribute + * 397 CF nunitlite runner assembly has the wrong name + * 407 Assert.Pass() with ]]> in message crashes console runner + * 414 Simplify Assert overloads + * 416 NUnit 2.x Framework Driver + * 417 Complete work on NUnit projects + * 420 Create Settings file in proper location + +NUnit 3.0.0 Alpha 3 - November 29, 2014 + +Breaking Changes + + * NUnitLite tests must reference both the nunit.framework and nunitlite assemblies. + +Framework + + * The NUnit and NUnitLite frameworks have now been merged. There is no longer any distinction + between them in terms of features, although some features are not available on all platforms. + * The release includes two new framework builds: compact framework 3.5 and portable. The portable + library is compatible with .NET 4.5, Silverlight 5.0, Windows 8, Windows Phone 8.1, + Windows Phone Silverlight 8, Mono for Android and MonoTouch. + * A number of previously unsupported features are available for the Compact Framework: + - Generic methods as tests + - RegexConstraint + - TimeoutAttribute + - FileAssert, DirectoryAssert and file-related constraints + +Engine + + * The logic of runtime selection has now changed so that each assembly runs by default + in a separate process using the runtime for which it was built. + * On 64-bit systems, each test process is automatically created as 32-bit or 64-bit, + depending on the platform specified for the test assembly. + +Console + + * The console runner now runs tests in a separate process per assembly by default. They may + still be run in process or in a single separate process by use of command-line options. + * The console runner now starts in the highest version of the .NET runtime available, making + it simpler to debug tests by specifying that they should run in-process on the command-line. + * The -x86 command-line option is provided to force execution in a 32-bit process on a 64-bit system. + * A writeability check is performed for each output result file before trying to run the tests. + * The -teamcity option is now supported. + +Issues Resolved + + * 12 Compact framework should support generic methods + * 145 NUnit-console fails if test result message contains invalid xml characters + * 155 Create utility classes for platform-specific code + * 223 Common code for NUnitLite console runner and NUnit-Console + * 225 Compact Framework Support + * 238 Improvements to running 32 bit tests on a 64 bit system + * 261 Add portable nunitlite build + * 284 NUnitLite Unification + * 293 CF does not have a CurrentDirectory + * 306 Assure NUnit can write resultfile + * 308 Early disposal of runners + * 309 NUnit-Console should support incremental output under TeamCity + * 325 Add RegexConstraint to compact framework build + * 326 Add TimeoutAttribute to compact framework build + * 327 Allow generic test methods in the compact framework + * 328 Use .NET Stopwatch class for compact framework builds + * 331 Alpha 2 CF does not build + * 333 Add parallel execution to desktop builds of NUnitLite + * 334 Include File-related constraints and syntax in NUnitLite builds + * 335 Re-introduce 'Classic' NUnit syntax in NUnitLite + * 336 Document use of separate obj directories per build in our projects + * 337 Update Standard Defines page for .NET 3.0 + * 341 Move the NUnitLite runners to separate assemblies + * 367 Refactor XML Escaping Tests + * 372 CF Build TestAssemblyRunnerTests + * 373 Minor CF Test Fixes + * 378 Correct documentation for PairwiseAttribute + * 386 Console Output Improvements + +NUnit 3.0.0 Alpha 2 - November 2, 2014 + +Breaking Changes + + * The console runner no longer displays test results in the debugger. + * The NUnitLite compact framework 2.0 build has been removed. + * All addin support has been removed from the framework. Documentation of NUnit 3.0 extensibility features will be published in time for the beta release. In the interim, please ask for support on the nunit-discuss list. + +General + + * A separate solution has been created for Linux + * We now have continuous integration builds under both Travis and Appveyor + * The compact framework 3.5 build is now working and will be supported in future releases. + +New Features + + * The console runner now automatically detects 32- versus 64-bit test assemblies. + * The NUnitLite report output has been standardized to match that of nunit-console. + * The NUnitLite command-line has been standardized to match that of nunit-console where they share the same options. + * Both nunit-console and NUnitLite now display output in color. + * ActionAttributes now allow specification of multiple targets on the attribute as designed. This didn't work in the first alpha. + * OneTimeSetUp and OneTimeTearDown failures are now shown on the test report. Individual test failures after OneTimeSetUp failure are no longer shown. + * The console runner refuses to run tests build with older versions of NUnit. A plugin will be available to run older tests in the future. + +Issues Resolved + + * 222 Color console for NUnitLite + * 229 Timing failures in tests + * 241 Remove reference to Microslft BCL packages + * 243 Create solution for Linux + * 245 Multiple targets on action attributes not implemented + * 246 C++ tests do not compile in VS2013 + * 247 Eliminate trace display when running tests in debug + * 255 Add new result states for more precision in where failures occur + * 256 ContainsConstraint break when used with AndConstraint + * 264 Stacktrace displays too many entries + * 269 Add manifest to nunit-console and nunit-agent + * 270 OneTimeSetUp failure results in too much output + * 271 Invalid tests should be treated as errors + * 274 Command line options should be case insensitive + * 276 NUnit-console should not reference nunit.framework + * 278 New result states (ChildFailure and SetupFailure) break NUnit2XmlOutputWriter + * 282 Get tests for NUnit2XmlOutputWriter working + * 288 Set up Appveyor CI build + * 290 Stack trace still displays too many items + * 315 NUnit 3.0 alpha: Cannot run in console on my assembly + * 319 CI builds are not treating test failures as failures of the build + * 322 Remove Stopwatch tests where they test the real .NET Stopwatch + +NUnit 3.0.0 Alpha 1 - September 22, 2014 + +Breaking Changes + + * Legacy suites are no longer supported + * Assert.NullOrEmpty is no longer supported (Use Is.Null.Or.Empty) + +General + + * MsBuild is now used for the build rather than NAnt + * The framework test harness has been removed now that nunit-console is at a point where it can run the tests. + +New Features + + * Action Attributes have been added with the same features as in NUnit 2.6.3. + * TestContext now has a method that allows writing to the XML output. + * TestContext.CurrentContext.Result now provides the error message and stack trace during teardown. + * Does prefix operator supplies several added constraints. + +Issues Resolved + + * 6 Log4net not working with NUnit + * 13 Standardize commandline options for nunitlite runner + * 17 No allowance is currently made for nullable arguents in TestCase parameter conversions + * 33 TestCaseSource cannot refer to a parameterized test fixture + * 54 Store message and stack trace in TestContext for use in TearDown + * 111 Implement Changes to File, Directory and Path Assertions + * 112 Implement Action Attributes + * 156 Accessing multiple AppDomains within unit tests result in SerializationException + * 163 Add --trace option to NUnitLite + * 167 Create interim documentation for the alpha release + * 169 Design and implement distribution of NUnit packages + * 171 Assert.That should work with any lambda returning bool + * 175 Test Harness should return an error if any tests fail + * 180 Errors in Linux CI build + * 181 Replace NAnt with MsBuild / XBuild + * 183 Standardize commandline options for test harness + * 188 No output from NUnitLite when selected test is not found + * 189 Add string operators to Does prefix + * 193 TestWorkerTests.BusyExecutedIdleEventsCalledInSequence fails occasionally + * 197 Deprecate or remove Assert.NullOrEmpty + * 202 Eliminate legacy suites + * 203 Combine framework, engine and console runner in a single solution and repository + * 209 Make Ignore attribute's reason mandatory + * 215 Running 32-bit tests on a 64-bit OS + * 219 Teardown failures are not reported + +Console Issues Resolved (Old nunit-console project, now combined with nunit) + + * 2 Failure in TestFixtureSetUp is not reported correctly + * 5 CI Server for nunit-console + * 6 System.NullReferenceException on start nunit-console-x86 + * 21 NUnitFrameworkDriverTests fail if not run from same directory + * 24 'Debug' value for /trace option is deprecated in 2.6.3 + * 38 Confusing Excluded categories output + +NUnit 2.9.7 - August 8, 2014 + +Breaking Changes + + * NUnit no longer supports void async test methods. You should use a Task return Type instead. + * The ExpectedExceptionAttribute is no longer supported. Use Assert.Throws() or Assert.That(..., Throws) instead for a more precise specification of where the exception is expected to be thrown. + +New Features + + * Parallel test execution is supported down to the Fixture level. Use ParallelizableAttribute to indicate types that may be run in parallel. + * Async tests are supported for .NET 4.0 if the user has installed support for them. + * A new FileExistsConstraint has been added along with FileAssert.Exists and FileAssert.DoesNotExist + * ExpectedResult is now supported on simple (non-TestCase) tests. + * The Ignore attribute now takes a named parameter Until, which allows specifying a date after which the test is no longer ignored. + * The following new values are now recognized by PlatformAttribute: Win7, Win8, Win8.1, Win2012Server, Win2012ServerR2, NT6.1, NT6.2, 32-bit, 64-bit + * TimeoutAttribute is now supported under Silverlight + * ValuesAttribute may be used without any values on an enum or boolean argument. All possible values are used. + * You may now specify a tolerance using Within when testing equality of DateTimeOffset values. + * The XML output now includes a start and end time for each test. + +Issues Resolved + + * 8 [SetUpFixture] is not working as expected + * 14 CI Server for NUnit Framework + * 21 Is.InRange Constraint Ambiguity + * 27 Values attribute support for enum types + * 29 Specifying a tolerance with "Within" doesn't work for DateTimeOffset data types + * 31 Report start and end time of test execution + * 36 Make RequiresThread, RequiresSTA, RequiresMTA inheritable + * 45 Need of Enddate together with Ignore + * 55 Incorrect XML comments for CollectionAssert.IsSubsetOf + * 62 Matches(Constraint) does not work as expected + * 63 Async support should handle Task return type without state machine + * 64 AsyncStateMachineAttribute should only be checked by name + * 65 Update NUnit Wiki to show the new location of samples + * 66 Parallel Test Execution within test assemblies + * 67 Allow Expected Result on simple tests + * 70 EquivalentTo isn't compatible with IgnoreCase for dictioneries + * 75 Async tests should be supported for projects that target .NET 4.0 + * 82 nunit-framework tests are timing out on Linux + * 83 Path-related tests fail on Linux + * 85 Culture-dependent NUnit tests fail on non-English machine + * 88 TestCaseSourceAttribute documentation + * 90 EquivalentTo isn't compatible with IgnoreCase for char + * 100 Changes to Tolerance definitions + * 110 Add new platforms to PlatformAttribute + * 113 Remove ExpectedException + * 118 Workarounds for missing InternalPreserveStackTrace in mono + * 121 Test harness does not honor the --worker option when set to zero + * 129 Standardize Timeout in the Silverlight build + * 130 Add FileAssert.Exists and FileAssert.DoesNotExist + * 132 Drop support for void async methods + * 153 Surprising behavior of DelayedConstraint pollingInterval + * 161 Update API to support stopping an ongoing test run + +NOTE: Bug Fixes below this point refer to the number of the bug in Launchpad. + +NUnit 2.9.6 - October 4, 2013 + +Main Features + + * Separate projects for nunit-console and nunit.engine + * New builds for .NET 4.5 and Silverlight + * TestContext is now supported + * External API is now stable; internal interfaces are separate from API + * Tests may be run in parallel on separate threads + * Solutions and projects now use VS2012 (except for Compact framework) + +Bug Fixes + + * 463470 We should encapsulate references to pre-2.0 collections + * 498690 Assert.That() doesn't like properties with scoped setters + * 501784 Theory tests do not work correctly when using null parameters + * 531873 Feature: Extraction of unit tests from NUnit test assembly and calling appropriate one + * 611325 Allow Teardown to detect if last test failed + * 611938 Generic Test Instances disappear + * 655882 Make CategoryAttribute inherited + * 664081 Add Server2008 R2 and Windows 7 to PlatformAttribute + * 671432 Upgrade NAnt to Latest Release + * 676560 Assert.AreEqual does not support IEquatable + * 691129 Add Category parameter to TestFixture + * 697069 Feature request: dynamic location for TestResult.xml + * 708173 NUnit's logic for comparing arrays - use Comparer if it is provided + * 709062 "System.ArgumentException : Cannot compare" when the element is a list + * 712156 Tests cannot use AppDomain.SetPrincipalPolicy + * 719184 Platformdependency in src/ClientUtilities/util/Services/DomainManager.cs:40 + * 719187 Using Path.GetTempPath() causes conflicts in shared temporary folders + * 735851 Add detection of 3.0, 3.5 and 4.0 frameworks to PlatformAttribute + * 736062 Deadlock when EventListener performs a Trace call + EventPump synchronisation + * 756843 Failing assertion does not show non-linear tolerance mode + * 766749 net-2.0\nunit-console-x86.exe.config should have a element and also enable loadFromRemoteSources + * 770471 Assert.IsEmpty does not support IEnumerable + * 785460 Add Category parameter to TestCaseSourceAttribute + * 787106 EqualConstraint provides inadequate failure information for IEnumerables + * 792466 TestContext MethodName + * 794115 HashSet incorrectly reported + * 800089 Assert.Throws() hides details of inner AssertionException + * 848713 Feature request: Add switch for console to break on any test case error + * 878376 Add 'Exactly(n)' to the NUnit constraint syntax + * 882137 When no tests are run, higher level suites display as Inconclusive + * 882517 NUnit 2.5.10 doesn't recognize TestFixture if there are only TestCaseSource inside + * 885173 Tests are still executed after cancellation by user + * 885277 Exception when project calls for a runtime using only 2 digits + * 885604 Feature request: Explicit named parameter to TestCaseAttribute + * 890129 DelayedConstraint doesn't appear to poll properties of objects + * 892844 Not using Mono 4.0 profile under Windows + * 893919 DelayedConstraint fails polling properties on references which are initially null + * 896973 Console output lines are run together under Linux + * 897289 Is.Empty constraint has unclear failure message + * 898192 Feature Request: Is.Negative, Is.Positive + * 898256 IEnumerable for Datapoints doesn't work + * 899178 Wrong failure message for parameterized tests that expect exceptions + * 904841 After exiting for timeout the teardown method is not executed + * 908829 TestCase attribute does not play well with variadic test functions + * 910218 NUnit should add a trailing separator to the ApplicationBase + * 920472 CollectionAssert.IsNotEmpty must dispose Enumerator + * 922455 Add Support for Windows 8 and Windows 2012 Server to PlatformAttribute + * 928246 Use assembly.Location instead of assembly.CodeBase + * 958766 For development work under TeamCity, we need to support nunit2 formatted output under direct-runner + * 1000181 Parameterized TestFixture with System.Type as constructor arguments fails + * 1000213 Inconclusive message Not in report output + * 1023084 Add Enum support to RandomAttribute + * 1028188 Add Support for Silverlight + * 1029785 Test loaded from remote folder failed to run with exception System.IODirectory + * 1037144 Add MonoTouch support to PlatformAttribute + * 1041365 Add MaxOsX and Xbox support to platform attribute + * 1057981 C#5 async tests are not supported + * 1060631 Add .NET 4.5 build + * 1064014 Simple async tests should not return Task + * 1071164 Support async methods in usage scenarios of Throws constraints + * 1071343 Runner.Load fails on CF if the test assembly contains a generic method + * 1071861 Error in Path Constraints + * 1072379 Report test execution time at a higher resolution + * 1074568 Assert/Assume should support an async method for the ActualValueDelegate + * 1082330 Better Exception if SetCulture attribute is applied multiple times + * 1111834 Expose Random Object as part of the test context + * 1111838 Include Random Seed in Test Report + * 1172979 Add Category Support to nunitlite Runner + * 1203361 Randomizer uniqueness tests sometimes fail + * 1221712 When non-existing test method is specified in -test, result is still "Tests run: 1, Passed: 1" + * 1223294 System.NullReferenceException thrown when ExpectedExceptionAttribute is used in a static class + * 1225542 Standardize commandline options for test harness + +Bug Fixes in 2.9.6 But Not Listed Here in the Release + + * 541699 Silverlight Support + * 1222148 /framework switch does not recognize net-4.5 + * 1228979 Theories with all test cases inconclusive are not reported as failures + + +NUnit 2.9.5 - July 30, 2010 + +Bug Fixes + + * 483836 Allow non-public test fixtures consistently + * 487878 Tests in generic class without proper TestFixture attribute should be invalid + * 498656 TestCase should show array values in GUI + * 513989 Is.Empty should work for directories + * 519912 Thread.CurrentPrincipal Set In TestFixtureSetUp Not Maintained Between Tests + * 532488 constraints from ConstraintExpression/ConstraintBuilder are not reusable + * 590717 categorie contains dash or trail spaces is not selectable + * 590970 static TestFixtureSetUp/TestFixtureTearDown methods in base classes are not run + * 595683 NUnit console runner fails to load assemblies + * 600627 Assertion message formatted poorly by PropertyConstraint + * 601108 Duplicate test using abstract test fixtures + * 601645 Parametered test should try to convert data type from source to parameter + * 605432 ToString not working properly for some properties + * 606548 Deprecate Directory Assert in 2.5 and remove it in 3.0 + * 608875 NUnit Equality Comparer incorrectly defines equality for Dictionary objects + +NUnit 2.9.4 - May 4, 2010 + +Bug Fixes + + * 419411 Fixture With No Tests Shows as Non-Runnable + * 459219 Changes to thread princpal cause failures under .NET 4.0 + * 459224 Culture test failure under .NET 4.0 + * 462019 Line endings needs to be better controlled in source + * 462418 Assume.That() fails if I specify a message + * 483845 TestCase expected return value cannot be null + * 488002 Should not report tests in abstract class as invalid + * 490679 Category in TestCaseData clashes with Category on ParameterizedMethodSuite + * 501352 VS2010 projects have not been updated for new directory structure + * 504018 Automatic Values For Theory Test Parameters Not Provided For bool And enum + * 505899 'Description' parameter in both TestAttribute and TestCaseAttribute is not allowed + * 523335 TestFixtureTearDown in static class not executed + * 556971 Datapoint(s)Attribute should work on IEnumerable as well as on Arrays + * 561436 SetCulture broken with 2.5.4 + * 563532 DatapointsAttribute should be allowed on properties and methods + +NUnit 2.9.3 - October 26, 2009 + +Main Features + + * Created new API for controlling framework + * New builds for .Net 3.5 and 4.0, compact framework 3.5 + * Support for old style tests has been removed + * New adhoc runner for testing the framework + +Bug Fixes + + * 432805 Some Framework Tests don't run on Linux + * 440109 Full Framework does not support "Contains" + +NUnit 2.9.2 - September 19, 2009 + +Main Features + + * NUnitLite code is now merged with NUnit + * Added NUnitLite runner to the framework code + * Added Compact framework builds + +Bug Fixes + + * 430100 Assert.Catch should return T + * 432566 NUnitLite shows empty string as argument + * 432573 Mono test should be at runtime + +NUnit 2.9.1 - August 27, 2009 + +General + + * Created a separate project for the framework and framework tests + * Changed license to MIT / X11 + * Created Windows installer for the framework + +Bug Fixes + + * 400502 NUnitEqualityComparer.StreamsE­qual fails for same stream + * 400508 TestCaseSource attirbute is not working when Type is given + * 400510 TestCaseData variable length ctor drops values + * 417557 Add SetUICultureAttribute from NUnit 2.5.2 + * 417559 Add Ignore to TestFixture, TestCase and TestCaseData + * 417560 Merge Assert.Throws and Assert.Catch changes from NUnit 2.5.2 + * 417564 TimeoutAttribute on Assembly diff --git a/packages/NUnit.3.0.1/LICENSE.txt b/packages/NUnit.3.0.1/LICENSE.txt new file mode 100644 --- /dev/null +++ b/packages/NUnit.3.0.1/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2015 Charlie Poole + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/packages/NUnit.3.0.1/NOTICES.txt b/packages/NUnit.3.0.1/NOTICES.txt new file mode 100644 --- /dev/null +++ b/packages/NUnit.3.0.1/NOTICES.txt @@ -0,0 +1,5 @@ +NUnit 3.0 is based on earlier versions of NUnit, with Portions + +Copyright (c) 2002-2014 Charlie Poole or +Copyright (c) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or +Copyright (c) 2000-2002 Philip A. Craig diff --git a/packages/NUnit.3.0.1/NUnit.3.0.1.nupkg b/packages/NUnit.3.0.1/NUnit.3.0.1.nupkg new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6de5d1ec099c112fca2a2652b8a55148c7f99881 GIT binary patch literal 990994 zc$}1)b8u$Q+va0qV%vOT+qUf|wrx))wmq?J+qOBeGr@jeY}Na#-F
-4GWI(=W= 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 N6dEhpP9JCCDd?_>{ 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

BB?$xIvg_vK1hp>mEE_ok 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%0DfJ<}A+dYCcZFRc06q zms{Xln)lek=T8;DE!ut~9EI;5Cn+WivYIlw-%k`gX4tyM<52hKGOMc>i`rNPU{_m^ zVSW>mDmmcR5+)I|6z!1Tt8sE5GjeP~hP-1TBQg04`E=81j7jF2PGzRBq|*OBJGHES zM=s_+QtH}&!qRr>mvd?vPcr`u^9>PZF<;-rskN|w6pSsNSCdNIfR})MU9IDZm<~mk zS>~cA0c1VD0j7&m*_Q02z=bf2VPWYJ$034EzA}u-_*DZJl{oliV3~O)&TNT(i{r9C zIdPpe`wO=Js|E?w@16b<$Cdtrw$#dxOW@$ZwsS>`+Hq3HH#hH83!2?fOR(i%bW~nm zR}V#roD!C(!^47!YuY_#tJar=KZPThw!QcMv+Sj2!b=S!hIO~pH3gEkE=N*ul#0Qd z!fNYfYBX_?iJ(}X3PFz;-n}&YvvfGFTn0e5mXK${f>q?xcG*|WFwB_fj$SbuV$9c2 zC89-^N3&k7ZnFYy!lgy}%uJIiHs7=&~WS5)rh_fl^5}AMQhKop+bj8lcFcPqT zIg|wVw)BmIK+5GjLbh;+T*`uH+(Nd(r-8ik`1l>HTv>`a_FN2xAD=sG0=7TAPHeLr zE8DETX>oBMTwP0FIG@XQH;b~?9CUu}iaN_xyhkA$;ViK1xu=bqsf8Jx;s^Wa_iKzK z9x_ub$?D8V>{w|f!l#U93e=V|4@tKP@qBMLuP+Z!fic74Gj^dGX~VPGj_S{&u;mif z1+})Lm=R9m_ETadMBR{hst%z9ADgXuOi2v%8R7{&jn)TtGaNVomMJy0#Ex`^<73v; zYC>sR__T$$&2(gs(i)`OjPRmEl_zMTVdJ1v4oWzb?!+syD&XwsQEzkVt#=ye&YFh; z{icczNcT0aS#++;H4#SOUJ#c zLUbVtCdv(2f0z1;8xQW$GIT;gPfImXH@} z3>Hvn(5#TGlbGob#N7oNU4DxxDybdiiz?qGvK!!AaMj+TiZeHZ=Fn!yksfnmLR%%; zduo7c2#1HG#j1s{<;a`?*_6Hx6$o5}4%1#s6!@7V|E!Nh7Eo~LiXN%kbk)j*Yy6#D z^8(vw6h&BJ(k2xV_%&md4p#tcm

{-_=K2Ft2)1o0EV|6a9@a%VlkSJkfI44-0ey_mc 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
  • *Bs~NSZP&=mEQ<`KZU^5|uH`^Z?!} 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

    ^Y4$+A=Y$fAYkW@?r%vmb3O-l858l?j@qP^w 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≪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

    -68#f%ca}dM25b{}X+=q&*=&ef0 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 z

    + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which is the AssemblyName + + + + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + Waits for pending asynchronous operations to complete, if appropriate, + and returns a proper result of the invocation by unwrapping task results + + The raw result of the method invocation + The unwrapped result, if necessary + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + The CommandStage enumeration represents the defined stages + of execution for a series of TestCommands. The int _values + of the enum are used to apply decorators in the proper + order. Lower _values are applied first and are therefore + "closer" to the actual test execution. + + + No CommandStage is defined for actual invocation of the test or + for creation of the context. Execution may be imagined as + proceeding from the bottom of the list upwards, with cleanup + after the test running in the opposite order. + + + + + Use an application-defined default value. + + + + + Make adjustments needed before and after running + the raw test - that is, after any SetUp has run + and before TearDown. + + + + + Run SetUp and TearDown for the test. This stage is used + internally by NUnit and should not normally appear + in user-defined decorators. + + + + + Make adjustments needed before and after running + the entire test - including SetUp and TearDown. + + + + + TODO: Documentation needed for class + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext + + The context in which the test should run. + A TestResult + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run after Setup + + + + Overridden to run the one-time setup for a suite. + + The TestExecutionContext to be used. + A TestResult + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The test suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run before teardown. + + + + Overridden to run the teardown methods specified on the test. + + The TestExecutionContext to be used. + A TestResult + + + + SetUpTearDownCommand runs any SetUp methods for a suite, + runs the test and then runs any TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestActionCommand runs the BeforeTest actions for a test, + then runs the test and finally runs the AfterTestActions. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + TestActionItem represents a single execution of an + ITestAction. It is used to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + Overridden to call the inner command and adjust the result + in case all chlid results were inconclusive. + + + + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + A utility class to create TestCommands + + + + + Gets the command to be executed before any of + the child tests are run. + + A TestCommand + + + + Gets the command to be executed after all of the + child tests are run. + + A TestCommand + + + + Creates a test command for use in running this test. + + + + + + Creates a command for skipping a test. The result returned will + depend on the test RunState. + + + + + Builds the set up tear down list. + + Type of the fixture. + Type of the set up attribute. + Type of the tear down attribute. + A list of SetUpTearDownItems + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do setup, run all child + items and then do teardown. + + + + + A simplified implementation of .NET 4 CountdownEvent + for use in earlier versions of .NET. Only the methods + used by NUnit are implemented. + + + + + Construct a CountdownEvent + + The initial count + + + + Gets the initial count established for the CountdownEvent + + + + + Gets the current count remaining for the CountdownEvent + + + + + Decrement the count by one + + + + + Block the thread until the count reaches zero + + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and a thread is created on which to + run it. Subsequent calls come from the top level + item or its descendants on the proper thread. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The execution context + + + + + The test actions to be performed before and after this test + + + + + The test result + + + + + Execute the current work item, including any + child work items. + + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + TextMessageWriter writes constraint descriptions and messages + in displayable form as a text stream. It tailors the display + of individual message components to form the standard message + format of NUnit assertion failure messages. + + + + + Prefix used for the expected value line of a message + + + + + Prefix used for the actual value line of a message + + + + + Length of a message prefix + + + + + Construct a TextMessageWriter + + + + + Construct a TextMessageWriter, specifying a user message + and optional formatting arguments. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The result of the constraint that failed + + + + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given _values, including + a tolerance value on the expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in string comparisons + If true, clip the strings to fit the max line length + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Write the generic 'Expected' line for a constraint + + The constraint that failed + + + + Write the generic 'Expected' line for a given value + + The expected value + + + + Write the generic 'Expected' line for a given value + and tolerance. + + The expected value + The tolerance within which the test was made + + + + Write the generic 'Actual' line for a constraint + + The ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type argments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the spcified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representating the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + Get a Randomizer for a particular member, returning + one that has already been created if it exists. + This ensures that the same _values are generated + each time the tests are reloaded. + + + + + Get a randomizer for a particular parameter, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probablility a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + List of child results + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Test HasChildren before accessing Children to avoid + the creation of an empty collection. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + THe FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Add a child result + + The child result to be added + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + An internal class is used to hold settings and a stack + of these objects is pushed and popped as Save and Restore + are called. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + The current context, head of the list of saved contexts. + + + + + Gets the current context. + + The current context. + + + + Clear the current context. This is provided to + prevent "leakage" of the CallContext containing + the current context back to any runners. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set the working directory + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + Get the display name for a MethodInfo + + A MethodInfo + The display name + + + + Get the display name for a method with args + + A MethodInfo + Argument list for the method + The display name + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object deriving from MemberInfo + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object deriving from MemberInfo + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture + + + + + Set to true to suppress sorting this suite's contents + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + The attribute type to check for + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Gets the _values for an enumeration, using Enum.GetTypes + where available, otherwise through reflection. + + + + + + + Gets the ids of the _values for an enumeration, + using Enum.GetNames where available, otherwise + through reflection. + + + + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Initiate the test run. + + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + + + + Throws an with the message and arguments + that are passed in. This is used by the other Assert functions. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This is used by the other Assert functions. + + The message to initialize the with. + + + + Throws an . + This is used by the other Assert functions. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as ignored. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as Inconclusive. + + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + + + + Helper for Assert.AreEqual(double expected, double actual, ...) + allowing code generation to work consistently. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate does not throw an exception. + + A TestDelegate + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter ids for constraints and + asserts and avoiding conflict with the definition of + , from which it inherits much of its + behavior, in certain mock object frameworks. + + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to . + + The evaluated condition + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + Provides static methods to express the assumptions + that must be met for a test to give a meaningful + result. If an assumption is not met, the test + should produce an inconclusive result. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the + method throws an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + Attribute used to apply a category to a test + + + + + The name of the category + + + + + Construct attribute for a given category based on + a name. The name may not contain the characters ',', + '+', '-' or '!'. However, this is not checked in the + constructor since it would cause an error to arise at + as the test was loaded without giving a clear indication + of where the problem is located. The error is handled + in NUnitFramework.cs by marking the test as not + runnable. + + The name of the category + + + + Protected constructor uses the Type name as the name + of the category. + + + + + The name of the category + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParamterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. + + + + + Constructor with no cultures specified, for use + with named property syntax. + + + + + Constructor taking one or more cultures + + Comma-deliminted list of cultures + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + Used to mark a field for use as a datapoint when executing a theory + within the same fixture that requires an argument of the field's Type. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + ExplicitAttribute marks a test or test fixture so that it will + only be run if explicitly executed from the gui or command line + or if it is included by use of a filter. The test will not be + run simply because an enclosing suite is run. + + + + + Default constructor + + + + + Constructor with a reason + + The reason test is marked explicit + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. + + + + + Constructs the attribute giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. + + + + + Constructor with no included items specified, for use + with named property syntax. + + + + + Constructor taking one or more included items + + Comma-delimited list of included items + + + + Name of the item that is needed in order for + a test to run. Multiple items may be given, + separated by a comma. + + + + + Name of the item to be excluded. Multiple items + may be given, separated by a comma. + + + + + The reason for including or excluding the test + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No Parallelism is permitted + + + + + The test itself may be run in parallel with others at the same level + + + + + Descendants of the test may be run in parallel with one another + + + + + Descendants of the test down to the level of TestFixtures may be run in parallel + + + + + PropertyAttribute is used to attach information to a test as a name/value pair.. + + + + + Construct a PropertyAttribute with a name and string value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and int value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and double value + + The name of the property + The property value + + + + Constructor for derived classes that set the + property dictionary directly. + + + + + Constructor for use by derived classes that use the + name of the type as the property name. Derived classes + must ensure that the Type of the property value is + a standard type supported by the BCL. Any custom + types will cause a serialization Exception when + in the client. + + + + + Gets the property dictionary for this attribute + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + Get the collection of _values to be used as arguments. + + + + + RangeAttribute is used to supply a range of _values to an + individual parameter of a parameterized test. + + + + + Construct a range of ints using default step of 1 + + + + + + + Construct a range of ints specifying the step size + + + + + + + + Construct a range of unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + Construct a range of doubles + + + + + + + + Construct a range of floats + + + + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + SetUpFixtureAttribute is used to identify a SetUpFixture + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + Attribute used to identify a method that is called + immediately after each test is run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant + + + + + + Construct a TestCaseAttribute with a single argument + + + + + + Construct a TestCaseAttribute with a two arguments + + + + + + + Construct a TestCaseAttribute with a three arguments + + + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + Default constructor + + + + + Construct with a object[] representing a set of arguments. + In .NET 2.0, the arguments may later be separated into + type arguments and constructor arguments. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + Attribute used to identify a method that is called after + all the tests in a fixture have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + The collection of data to be returned. Must + be set by any derived attribute classes. + We use an object[] so that the individual + elements may have their type changed in GetData + if necessary + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + Construct with one argument + + + + + + Construct with two arguments + + + + + + + Construct with three arguments + + + + + + + + Construct with an array of arguments + + + + + + Get the collection of _values to be used as arguments + + + + + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + Portable libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + Specifies flags that control binding and the way in which the search for members + and types is conducted by reflection. + + + + + Specifies no binding flag. + + + + + Specifies that only members declared at the level of the supplied type's hierarchy + should be considered. Inherited members are not considered. + + + + + Specifies that instance members are to be included in the search. + + + + + Specifies that static members are to be included in the search. + + + + + Specifies that public members are to be included in the search. + + + + + Specifies that non-public members are to be included in the search. + + + + + Specifies that public and protected static members up the hierarchy should be + returned. Private static members in inherited classes are not returned. Static + members include fields, methods, events, and properties. Nested types are not + returned. + + + + + A MarshalByRefObject that lives forever + + + + + Some path based methods that we need even in the Portable framework which + does not have the System.IO.Path class + + + + + Windows directory separator + + + + + Alternate directory separator + + + + + A volume separator character. + + + + + Get the file name and extension of the specified path string. + + The path string from which to obtain the file name and extension. + The filename as a . If the last character of is a directory or volume separator character, this method returns . If is null, this method returns null. + + + + Provides NUnit specific extensions to aid in Reflection + across multiple frameworks + + + This version of the class allows direct calls on Type on + those platforms that would normally require use of + GetTypeInfo(). + + + + + Returns an array of generic arguments for the give type + + + + + + + Gets the constructor with the given parameter types + + + + + + + + Gets the constructors for a type + + + + + + + + + + + + + + + + + + + + + + + Gets declared or inherited interfaces on this type + + + + + + + Gets the member on a given type by name. BindingFlags ARE IGNORED. + + + + + + + + + Gets all members on a given type. BindingFlags ARE IGNORED. + + + + + + + + Gets field of the given name on the type + + + + + + + + Gets property of the given name on the type + + + + + + + + Gets property of the given name on the type + + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + + Gets public methods on the given type + + + + + + + Gets methods on a type + + + + + + + + Determines if one type can be implicitly converted from another + + + + + + + + Extensions to the various MemberInfo derived classes + + + + + Returns the get method for the given property + + + + + + + + Returns an array of custom attributes of the specified type applied to this member + + Portable throws an argument exception if T does not + derive from Attribute. NUnit uses interfaces to find attributes, thus + this method + + + + Returns an array of custom attributes of the specified type applied to this parameter + + + + + Returns an array of custom attributes of the specified type applied to this assembly + + + + + Extensions for Assembly that are not available in portable + + + + + DNX does not have a version of GetCustomAttributes on Assembly that takes an inherit + parameter since it doesn't make sense on Assemblies. This version just ignores the + inherit parameter. + + The assembly + The type of attribute you are looking for + Ignored + + + + + Gets the types in a given assembly + + + + + + + This class is a System.Diagnostics.Stopwatch on operating systems that support it. On those that don't, + it replicates the functionality at the resolution supported. + + + + + Gets the total elapsed time measured by the current instance, in milliseconds. + + + + + Gets a value indicating whether the Stopwatch timer is running. + + + + + Gets the current number of ticks in the timer mechanism. + + + If the Stopwatch class uses a high-resolution performance counter, GetTimestamp returns the current + value of that counter. If the Stopwatch class uses the system timer, GetTimestamp returns the current + DateTime.Ticks property of the DateTime.Now instance. + + A long integer representing the tick counter value of the underlying timer mechanism. + + + + Stops time interval measurement and resets the elapsed time to zero. + + + + + Starts, or resumes, measuring elapsed time for an interval. + + + + + Initializes a new Stopwatch instance, sets the elapsed time property to zero, and starts measuring elapsed time. + + A Stopwatch that has just begun measuring elapsed time. + + + + Stops measuring elapsed time for an interval. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + + + + Gets the frequency of the timer as the number of ticks per second. + + + + + Indicates whether the timer is based on a high-resolution performance counter. + + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a constraint + + + + + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. + + The actual value + True if the constraints both succeeded + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AttributeConstraint tests that a specified attribute is present + on a Type or other provider and that the value of the attribute + satisfies some other constraint. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. + + + + + The first constraint being combined + + + + + The second constraint being combined + + + + + Construct a BinaryConstraint from two other constraints + + The first constraint + The second constraint + + + + CollectionConstraint is the abstract base class for + constraints that operate on collections. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Determines whether the specified enumerable is empty. + + The enumerable. + + true if the specified enumerable is empty; otherwise, false. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Protected method to be implemented by derived classes + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + CollectionSubsetConstraint is used to determine whether + one collection is a subset of another + + + + + Construct a CollectionSubsetConstraint + + The collection that the actual value is expected to be a subset of + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + Try to remove an object from the tally + + The object to remove + True if successful, false if the object was not found + + + + Try to remove a set of objects from the tally + + The objects to remove + True if successful, false if any object was not found + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + Compare a Type T to an object + + + + + Abstract base class for constraints that compare _values to + determine if one is greater than, equal to or less than + the other. + + + + + The value against which a comparison is to be made + + + + + If true, less than returns success + + + + + if true, equal returns success + + + + + if true, greater than returns success + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + if set to true less succeeds. + if set to true equal succeeds. + if set to true greater succeeds. + String used in describing the constraint. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + A ConstraintResult + + + + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + + + + + + Returns the string representation of this constraint + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending Or + to the current constraint. + + + + + Resolves any pending operators and returns the resolved constraint. + + + + + ConstraintBuilder maintains the stacks that are used in + processing a ConstraintExpression. An OperatorStack + is used to hold operators that are waiting for their + operands to be reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + Initializes a new instance of the class. + + + + + Appends the specified operator to the expression by first + reducing the operator stack and then pushing the new + operator on the stack. + + The operator to push. + + + + Appends the specified constraint to the expression by pushing + it on the constraint stack. + + The constraint to push. + + + + Sets the top operator right context. + + The right context. + + + + Reduces the operator stack until the topmost item + precedence is greater than or equal to the target precedence. + + The target precedence. + + + + Resolves this instance, returning a Constraint. If the Builder + is not currently in a resolvable state, an exception is thrown. + + The resolved constraint + + + + Gets a value indicating whether this instance is resolvable. + + + true if this instance is resolvable; otherwise, false. + + + + + ConstraintExpression represents a compound constraint in the + process of being constructed from a series of syntactic elements. + + Individual elements are appended to the expression as they are + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + The ConstraintBuilder holding the elements recognized so far + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a string representation of the expression as it + currently stands. This should only be used for testing, + since it has the side-effect of resolving the expression. + + + + + + Appends an operator to the expression and returns the + resulting expression itself. + + + + + Appends a self-resolving operator to the expression and + returns a new ResolvableConstraintExpression. + + + + + Appends a constraint to the expression and returns that + constraint, which is associated with the current state + of the expression being built. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + With is currently a NOP - reserved for future use. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. + + The MessageWriter on which to display the message + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + ContainsConstraint tests a whether a string contains a substring + or a collection contains an object. It postpones the decision of + which test to use until the type of the actual argument is known. + This allows testing whether a string is contained in a collection + or as a substring of another string using the same syntax. + + + + + Initializes a new instance of the class. + + The _expected. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + EmptyConstraint tests a whether a string or collection is empty, + postponing the decision about which test is applied until the + type of the actual argument is known. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EndsWithConstraint can test whether a string ends + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + EqualConstraint is able to compare an actual value with the + expected value provided in its constructor. Two objects are + considered equal if both are null, or if both have the same + value. NUnit has special semantics for some object types. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to suppress string clipping + and return self. + + + + + Flag the constraint to compare arrays as collections + and return self. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + Switches the .Within() modifier to interpret its tolerance as + a distance in representable _values (see remarks). + + Self. + + Ulp stands for "unit in the last place" and describes the minimum + amount a given value can change. For any integers, an ulp is 1 whole + digit. For floating point _values, the accuracy of which is better + for smaller numbers and worse for larger numbers, an ulp depends + on the size of the number. Using ulps for comparison of floating + point results instead of fixed tolerances is safer because it will + automatically compensate for the added inaccuracy of larger numbers. + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in days. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in hours. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in minutes. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in seconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + + Self + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + The MessageWriter to write to + + + + Display the failure information for two collections that did not match. + + The MessageWriter on which to display + The expected collection. + The actual collection + The depth of this failure in a set of nested collections + + + + Displays a single line showing the types and sizes of the expected + and actual collections or arrays. If both are identical, the value is + only shown once. + + The MessageWriter on which to display + The expected collection or array + The actual collection or array + The indentation level for the message line + + + + Displays a single line showing the point in the expected and actual + arrays at which the comparison failed. If the arrays have different + structures or dimensions, both _values are shown. + + The MessageWriter on which to display + The expected array + The actual array + Index of the failure point in the underlying collections + The indentation level for the message line + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + ExactTypeConstraint is used to test that an object + is of the exact type provided in the constructor + + + + + Construct an ExactTypeConstraint for a given Type + + The expected Type. + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + Helper routines for working with floating point numbers + + + The floating point comparison code is based on this excellent article: + http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + + + "ULP" means Unit in the Last Place and in the context of this library refers to + the distance between two adjacent floating point numbers. IEEE floating point + numbers can only represent a finite subset of natural numbers, with greater + accuracy for smaller numbers and lower accuracy for very large numbers. + + + If a comparison is allowed "2 ulps" of deviation, that means the _values are + allowed to deviate by up to 2 adjacent floating point _values, which might be + as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. + + + + + Union of a floating point variable and an integer + + + The union's value as a floating point variable + + + The union's value as an integer + + + The union's value as an unsigned integer + + + Union of a double precision floating point variable and a long + + + The union's value as a double precision floating point variable + + + The union's value as a long + + + The union's value as an unsigned long + + + Compares two floating point _values for equality + First floating point value to be compared + Second floating point value t be compared + + Maximum number of representable floating point _values that are allowed to + be between the left and the right floating point _values + + True if both numbers are equal or close to being equal + + + Floating point _values can only represent a finite subset of natural numbers. + For example, the _values 2.00000000 and 2.00000024 can be stored in a float, + but nothing inbetween them. + + + This comparison will count how many possible floating point _values are between + the left and the right number. If the number of possible _values between both + numbers is less than or equal to maxUlps, then the numbers are considered as + being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + Compares two double precision floating point _values for equality + First double precision floating point value to be compared + Second double precision floating point value t be compared + + Maximum number of representable double precision floating point _values that are + allowed to be between the left and the right double precision floating point _values + + True if both numbers are equal or close to being equal + + + Double precision floating point _values can only represent a limited series of + natural numbers. For example, the _values 2.0000000000000000 and 2.0000000000000004 + can be stored in a double, but nothing inbetween them. + + + This comparison will count how many possible double precision floating point + _values are between the left and the right number. If the number of possible + _values between both numbers is less than or equal to maxUlps, then the numbers + are considered as being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + + Reinterprets the memory contents of a floating point value as an integer value + + + Floating point value whose memory contents to reinterpret + + + The memory contents of the floating point value interpreted as an integer + + + + + Reinterprets the memory contents of a double precision floating point + value as an integer value + + + Double precision floating point value whose memory contents to reinterpret + + + The memory contents of the double precision floating point value + interpreted as an integer + + + + + Reinterprets the memory contents of an integer as a floating point value + + Integer value whose memory contents to reinterpret + + The memory contents of the integer value interpreted as a floating point value + + + + + Reinterprets the memory contents of an integer value as a double precision + floating point value + + Integer whose memory contents to reinterpret + + The memory contents of the integer interpreted as a double precision + floating point value + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is greater than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + A ConstraintResult + + + + InstanceOfTypeConstraint is used to test that an object + is of the same type provided or derived from it. + + + + + Construct an InstanceOfTypeConstraint for the type provided + + The expected Type + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is less than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + MessageWriter is the abstract base for classes that write + constraint descriptions and messages in some form. The + class has separate methods for writing various components + of a message, allowing implementations to tailor the + presentation as needed. + + + + + Construct a MessageWriter given a culture + + + + + Abstract method to get the max line length + + + + + Method to write single line message with optional args, usually + written to precede the general failure message. + + The message to be written + Any arguments used in formatting the message + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The failing constraint result + + + + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given _values, including + a tolerance value on the Expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in locating the point where the strings differ + If true, the strings should be clipped to fit the line + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Returns the representation of a type as used in NUnitLite. + This is the same as Type.ToString() except for arrays, + which are displayed with their declared sizes. + + + + + + + Converts any control characters in a string + to their escaped representation. + + The string to be converted + The converted string + + + + Return the a string representation for a set of indices into an array + + Array of indices for which a string is needed + + + + Get an array of indices representing the point in a collection or + array corresponding to a single int index into the collection. + + The collection to which the indices apply + Index in the collection + Array of indices + + + + Clip a string to a given length, starting at a particular offset, returning the clipped + string with ellipses representing the removed parts + + The string to be clipped + The maximum permitted length of the result string + The point at which to start clipping + The clipped string + + + + Clip the expected and actual strings in a coordinated fashion, + so that they may be displayed together. + + + + + + + + + Shows the position two strings start to differ. Comparison + starts at the start index. + + The expected string + The actual string + The index in the strings at which comparison should start + Boolean indicating whether case should be ignored + -1 if no mismatch found, or the index where mismatch found + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + NoItemConstraint applies another constraint to each + item in a collection, failing if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + NotConstraint negates the effect of some other constraint + + + + + Initializes a new instance of the class. + + The base constraint to be negated. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + The Numerics class contains common operations on numeric _values. + + + + + Checks the type of the object, returning true if + the object is a numeric type. + + The object to check + true if the object is a numeric type + + + + Checks the type of the object, returning true if + the object is a floating point numeric type. + + The object to check + true if the object is a floating point numeric type + + + + Checks the type of the object, returning true if + the object is a fixed point numeric type. + + The object to check + true if the object is a fixed point numeric type + + + + Test two numeric _values for equality, performing the usual numeric + conversions and using a provided or default tolerance. If the tolerance + provided is Empty, this method may set it to a default tolerance. + + The expected value + The actual value + A reference to the tolerance in effect + True if the _values are equal + + + + Compare two numeric _values, performing the usual numeric conversions. + + The expected value + The actual value + The relationship of the _values to each other + + + + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + NUnitEqualityComparer encapsulates NUnit's handling of + equality tests between objects. + + + + + If true, all string comparisons will ignore case + + + + + If true, arrays will be treated as collections, allowing + those of different dimensions to be compared + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + Returns the default NUnitEqualityComparer + + + + + Gets and sets a flag indicating whether case should + be ignored in determining equality. + + + + + Gets and sets a flag indicating that arrays should be + compared as collections, without regard to their shape. + + + + + Gets the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depthy. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + Helper method to compare two arrays + + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + Represents a constraint that succeeds if all the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + Operator that tests for the presence of a particular attribute + on a type and optionally applies further tests to the attribute. + + + + + Construct an AttributeOperator for a particular Type + + The Type of attribute tested + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Abstract base class for all binary operators + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + The ConstraintOperator class is used internally by a + ConstraintBuilder to represent an operator that + modifies or combines constraints. + + Constraint operators use left and right precedence + _values to determine whether the top operator on the + stack should be reduced before pushing a new operator. + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + The syntax element preceding this operator + + + + + The syntax element following this operator + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + PrefixOperator takes a single constraint and modifies + it's action in some way. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Returns the constraint created by applying this + prefix to another constraint. + + + + + + + Operator used to test for the presence of a named Property + on an object and optionally apply further tests to the + value of that property. + + + + + Gets the name of the property to which the operator applies + + + + + Constructs a PropOperator for a particular named property + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. + + + + + Operator that tests that an exception is thrown and + optionally applies further tests to the exception. + + + + + Construct a ThrowsOperator + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a constraint + + + + + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. + + The actual value + True if either constraint succeeded + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + PropertyConstraint extracts a named property and uses + its value as the actual value for a chained constraint. + + + + + Initializes a new instance of the class. + + The name. + The constraint to apply to the property. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + PropertyExistsConstraint tests that a named property + exists on the object provided through Match. + + Originally, PropertyConstraint provided this feature + in addition to making optional tests on the value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + RegexConstraint can test whether a string matches + the pattern provided. + + + + + Initializes a new instance of the class. + + The pattern. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ResolvableConstraintExpression is used to represent a compound + constraint being constructed at a point where the last operator + may either terminate the expression or may have additional + qualifying constraints added to it. + + It is used, for example, for a Property element or for + an Exception element, either of which may be optionally + followed by constraints that apply to the property or + exception. + + + + + Create a new instance of ResolvableConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SomeItemsConstraint applies another constraint to each + item in a collection, succeeding if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + StartsWithConstraint can test whether a string starts + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. + + + + + The expected value + + + + + Indicates whether tests should be case-insensitive + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Test whether the constraint is satisfied by a given string + + The string to be tested + True for success, false for failure + + + + SubstringConstraint can test whether a string contains + the expected substring. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ThrowsConstraint is used to test the exception thrown by + a delegate by applying a constraint to it. + + + + + Initializes a new instance of the class, + using a constraint to be applied to the exception. + + A constraint to apply to the caught exception. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + Executes the code of the delegate and captures any exception. + If a non-null base constraint was provided, it applies that + constraint to the exception. + + A delegate representing the code to be tested + True if an exception is thrown and the constraint succeeds, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + The Tolerance class generalizes the notion of a tolerance + within which an equality test succeeds. Normally, it is + used with numeric types, but it can be used with any + type that supports taking a difference between two + objects and comparing that difference to a value. + + + + + Returns a default Tolerance object, equivalent to + specifying an exact match unless + is set, in which case, the + will be used. + + + + + Returns an empty Tolerance object, equivalent to + specifying an exact match even if + is set. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + Gets the for the current Tolerance + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Gets the value of the current Tolerance instance. + + + + + Returns a new tolerance, using the current amount as a percentage. + + + + + Returns a new tolerance, using the current amount in Ulps + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Modes in which the tolerance value for a comparison can be interpreted. + + + + + The tolerance was created with a value, without specifying + how the value would be used. This is used to prevent setting + the mode more than once and is generally changed to Linear + upon execution of the test. + + + + + The tolerance is used as a numeric range within which + two compared _values are considered to be equal. + + + + + Interprets the tolerance as the percentage by which + the two compared _values my deviate from each other. + + + + + Compares two _values based in their distance in + representable numbers. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Thrown when an assertion failed. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Thrown when a test executes inconclusively. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + GlobalSettings is a place for setting default _values used + by the framework in performing asserts. + + + + + Default tolerance for floating point equality + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued propeties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an oject of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Determines whether the specified , is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the actual value falls + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + The Iz class is a synonym for Is intended for use in VB, + which regards Is as a keyword. + + + + + The List class is a helper class with properties and methods + that supply a number of constraints used with lists and collections. + + + + + List.Map returns a ListMapper, which can be used to map + the original collection to another collection. + + + + + + + ListMapper is used to transform a collection used as an actual argument + producing another collection to be used in the assertion. + + + + + Construct a ListMapper based on a collection + + The collection to be transformed + + + + Produces a collection containing all the _values of a property + + The collection of property _values + + + + + The SpecialValue enum is used to represent TestCase arguments + that cannot be used as arguments to an Attribute. + + + + + Null represents a null value, which cannot be used as an + argument to an attriute under .NET 1.x + + + + + Basic Asserts on strings. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string is not found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + + + + The TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the test case. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Sets the expected result for the test + + The expected result + A modified TestCaseData + + + + Sets the name of the test case + + The modified TestCaseData instance + + + + Sets the description for the test case + being constructed. + + The description. + The modified TestCaseData instance. + + + + Applies a category to the test + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + Get the current test context. This is created + as needed. The user may save the context for + use within a test, but it should not be used + outside the test for which it is created. + + + + + Gets a TextWriter that will send output to the current test result. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + Creates a constraint specifying an expected exception + + + + + Creates a constraint specifying an exception with a given InnerException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNUllException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Env is a static class that provides some of the features of + System.Environment that are not available under all runtimes + + + + + The newline sequence in the current environment. + + + + + Path to the 'My Documents' folder + + + + + Directory used for file output if not specified on commandline. + + + + + PackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the engine and framework. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attache a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the frameowrk TestContext. + + + + + The name of the config to use in loading a project. + If not specified, the first config found is used. + + + + + Bool indicating whether the engine should determine the private + bin path by examining the paths to all the tests. Defaults to + true unless PrivateBinPath is specified. + + + + + The ApplicationBase to use in loading the tests. If not + specified, and each assembly has its own process, then the + location of the assembly is used. For multiple assemblies + in a single process, the closest common root directory is used. + + + + + Path to the config file to use in running the tests. + + + + + Bool flag indicating whether a debugger should be launched at agent + startup. Used only for debugging NUnit itself. + + + + + Indicates how to load tests across AppDomains. Values are: + "Default", "None", "Single", "Multiple". Default is "Multiple" + if more than one assembly is loaded in a process. Otherwise, + it is "Single". + + + + + The private binpath used to locate assemblies. Directory paths + is separated by a semicolon. It's an error to specify this and + also set AutoBinPath to true. + + + + + The maximum number of test agents permitted to run simultneously. + Ignored if the ProcessModel is not set or defaulted to Multiple. + + + + + Indicates how to allocate assemblies to processes. Values are: + "Default", "Single", "Separate", "Multiple". Default is "Multiple" + for more than one assembly, "Separate" for a single assembly. + + + + + Indicates the desired runtime to use for the tests. Values + are strings like "net-4.5", "mono-4.0", etc. Default is to + use the target framework for which an assembly was built. + + + + + Bool flag indicating that the test should be run in a 32-bit process + on a 64-bit system. By default, NUNit runs in a 64-bit process on + a 64-bit system. Ignored if set on a 32-bit system. + + + + + Indicates that test runners should be disposed after the tests are executed + + + + + Bool flag indicating that the test assemblies should be shadow copied. + Defaults to false. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + + A shim of the .NET interface for platforms that do not support it. + Used to indicate that a control can be the target of a callback event on the server. + + + + + Processes a callback event that targets a control. + + + + + + Returns the results of a callback event that targets a control. + + + + + + A shim of the .NET attribute for platforms that do not support it. + + + + diff --git a/packages/NUnit.3.0.1/lib/net20/nunit.framework.dll b/packages/NUnit.3.0.1/lib/net20/nunit.framework.dll new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3151a93fa006fdb7c13596d00d66ad0bd24a46b0 GIT binary patch literal 267776 zc%0}F?=naysJ&9zBqj!m*lZcIYB139>p00|&O5|D@{9^i!nQ9$nH5Ks_A5D?LK^Lvh}>YmvN;QPMczkd5krmCKL z>Uyf`si&TLs(Q()%MH^o3=976*kKsoH~4R%@$r9~;D3F`J@v+S5)Y00er*4T#vOe8 zy7JhQ1OGF@(Vrdr>7!3N$=@*cnB&F<8&4X$?xeAMEIVlIXZ>T3>#D0uPLz2p-_tPm zkD12qt5zSX@_oS=KQY4B6su-f*<4*JeF)iy%c{LBiTU1@m&3VSbx(Oq0 z{OY!t@#H39B&zUk^epP{kNX=VJg9au5AHa0&-TWHvnd8W)b33{FLs(Y5q&W3to%u$ zlnWsGWHV@iU#}Bl%&x4<$LY@;MPa))PQF1M_oYw)9N6d#wj`wgejJM z*3M__JhqJ{&S+!Yd}H_bq2557nk=7V#Pw6&Wtx@5YMuASvu16EjZscfo#d zu(P&51AJpv`ZJkMZ$oo~34mc!yYdGLbMrY+oHv(gKLLq8(-ghvDX)dv;;_Vyfi8`p z=EsYim&M-L%A*6)PNYtx;V>(P!(jx}k%z+~$PuGEhSvDELlyFNKAFw073D*)_w$k7 z$EiT$VtCAW9BvjP)J%#9P~F}lHex)~h&%u&DL_dAx)gvst2&0t$3t$NqHiBzSe<6y zVsL1j!H7j(pDE8m`au~mt6-qbxf{os4+Kc2XI}(<*N3s6tV?VJej=Kzj8z(!*w|(m z?Krkd>D;Bz*|E-SVgSSCCt!>_P?{n?{nWu^Bt#Y-@61 zFxHts*n@zu8JCEfadIn~VBlnI7|c)FfC2M6>C&*8d*Y5AI|iHGjWCR2O^HkbMp%MJ z*kG4!jq&a6Fj!BjMcbkQ?qm}5^33$4hFOFpSO zmJ)H?Tv5J;n&g>SEnUf3m~A)Y6R)?tJu%P)f#zoRFBKzV-X4H>Vi>jn0;UFD5W$QO0|KT7UJ}7<7zPB)2HDRFDH9Dt ze5Qh6%W6?^SuH9qt3}0SwWzqP78RG(qT;ezR9sezipy$Iaak=YE~`bwWwofdtQHlQ zRZ($S6&07&qT-TTR9sSvic4xyaY-#IE~!PuCAFxyq!tyI)S}{&T2x$8i;7EXQE^Ev zDlVx-#U)i#TvA2FCAFxyycQLg*P`O`T2x$Ki;Bx@QE_=KDlV@@#pSiAxV#n>m)D}= z@>*0}UWMiXq=`tmOMDxTrFAQRO1BXgIQ3GnVptvB4-bn8iACOECdmv=2cC9OYx>k&=fOfXVWy~be>fx?ORL^@7zin=IPPX|Z%9iHsyO zPOp#|KaogE12@78+bVe>1+mHPVckY)8MV5+PavLhc}tZR$KM}-eN#~{L%OcGu~_e` z2t#;U+eK)i7k`7SsnlL$1%tBekOr(H!74D$cnrr#-N1n|f2kcq6^rm1p(s+bu(yr1 zGuw9;hUG26@|VI-wtJMB_1}b4GA*eR@}^WJz@#lNO2Du?5`I{Bd8#P?1xV00jr3N_ zutw9#I~nx}r|%@z^gN8d$MoNTQi`3zYlU!Wv^lc6aN(7(;#4~7YmV2nn*#7+LG*Io z81mnOvP!KY*lJ=z1bNGG$JGVCY+iVUiX;VK};eX;NF4nk48T4JwLUKAXpJHqM~4f{dBWrV35Avn?%L zZzN^~C{Aug%0aEzpRzbT#z@6Yv!xX`i{)4fiU8~D#<4J0>z^rjpQQC9cH6o}o2|o$ z-HWJ9>@azc9APuiJsSWsxC;-)VYu8o1jqcL*tNUpF>V?6fSaIsgQd;66T9pTMDPv+ z)H!E`;T1@J`h=O|q?dde@lJfT)qPN>DA+ym9=n;Xue zrBRTaIye^=>2XOtJ4f~GG|@|_{!9p##@Cos6z|V`tZwY1VaFpvb%GU_x%Hb$CYLxQ{rBkCcDU@3kN@1<- z{Sd@Ie>F}o9e=Zq-)mTh6nePt{8Ip8cXf(r(AyVRuZ)D1PgjXJZ2IK{&wXK>B>9*X zQoL)j71Fk=%?jJ!RcA$7T5pCUW+;}oA}t&piRuEp3nF;9>h1+Y)3m0Uxk9YP+mCsw zW#Bn`n)t+n0E%a)Tb4PsA)cL@u*@Nm9f}pKY$28l&W5EVaN_dN*fLkf56`Vg3Y+#S zeMg|QmNL@?5ZTc0bixYm60aO^<15mR-Tf-bzBz9RpSxh$$3oe4k+O%(AQP`FW+;v) z*2@t3?P%dge0<>-hK0|16}M#AdMmfSAX?UY%T)VOzN(MZVLcHb1D;Ppf%RC6$3C(e z7wKxOx4U1V^OD?p?*LW)dMJNHwEX{w2vq*Xk@DAL1zL3l)~`ri?2;BoQQ~Du`)vl< zgs5^SC|ib^*!>Y?F2if)K*ox%XtEM+_a9|Fq3*D9=z5OVb!=w;$JOsBsvn@9z6aOsC|NfE zZTdv@x}>UJ)l$xUCFP)}e0zd634Ej;npWf@rWM0uvlWIHxy@JWQ~E8@&`wM>=9@Wx zheHSGyT(|?I<`{AI#2{Zh%4C{s=NTJycnvCp7PNsZ`|cD-Xl@Gg$i$>#`})L=ginQ zklJX(b*=oAgNL$mbJLs>W@F4d7I!$UHgB)&P#AOMDQ!zkp3+iYcrM+<`%Z{0He11K zSQGy_A$KSTWbU*z0@-7m;ivhCxw5A1!e-{<Fiv1Cu81?WRa7E!Fm$rI}HbB?;;Y5 zZL*$0k(g|T7KI}5FQn|7^Lo)xsZ=kOWnLcy3l5BI^sub#orx)Ktw<5otyN>*U5Qzx zbF0R#tVu0hTy+Yd%ifAEd&_R$M*;ScfPEEUUkO;O0E;DHKSlHXnC9omy!Tg#ILSwnt|3gzwm5oXzeqMAapPK$Wm||JNy{`?DZDcv(Ux^}qTGc; z+|AB+0W0C=Rxa3qYBTU`!`%^y`DiDE#)-)$G)g-bl>krUT4rVa(S}i&^AIWw+@6DM z|3%xd6OfdQz?z&)oW#Edj& z+}04GtHo9`m@x(@Q=pHmyW>HJ*n@7lh?JMMPP;{nQ(@H5f3!bkTc^13WeCH@Hj_=x zhCyZsdt1u1xo&A^&gTH+Y&-zq#f)Sl!IY?)Gsy(B^I*uLF?VC{3=kvk@hX<{`7LaHJc`_=q(@ zV|6$iQD!PNIW+W3DV+)gp}N9Ecl-2c!qGZmk`rL|iQ;^h$Jz0?3u<)zb=WZzbwblE zxURn*wSO?Sg$)~jQiORY;Hp`e;ch=PTF69QNIMq-8!Ow{fIja;0B=U@0UM-uTWndk zVBOG;9r;r`hRR=O>%Ak`dT%8Lr#$(a!5Lm|CTZl=p>7kvmizCrI(4BW4fYlVqSOZOV;Z(rt zK?)xwJ!nhl!`?EP>zNNeAAD}lF4D&=!Ok|hz!L0?n{hI(e=_!A#)Vn!B7_jTUo4EO zEU2y`n6b+xGPxDrK#Z*)(H&;}2;3)G7z^AdxveP$95A$gOtJN2k{C}ilVIz|xPJ;H zOR)9hABWKTF~RyKU{^&alh)Rcb+#WM&&$*iH=uOH5q8^!O~BF4ej<<;>E0Z&2r?r_ zO~-2PCqvmp{u2DHw8yv+TGClcPcr>qpjPZDQrCDlpd_2NBbJgj1Er-Tt`50{=im~M z-IjLASQ2JddqNpY-WDSZ$cV9|OU9CH^W#{ggyG_i28ZI!50!W$Dfc5OI(>bZ=!6J)v`2+y#TZHB@ta!0K`m|4E{W#6 z?U!lH6+vj}vI-*rlJz$Lh-<;om!dzNtz*qDY-)2LmLRhsR@@YKd3PI!jV&v1Ul?ow zHbV0axsH>Oy4>JLu>Enpjo>FcSYhmEO!QGS;~kx(=7+1TIePp%9XeZJHElNB_2*Yh zSh$H`_(>98xngTV2jj{69`SAtqZ^}tc}V*~3Pwv-&(>%oH(d;8T|vo~Hv zj#M>ar2rI}Wlvt%-gbGm5I1^&zqPU4lS8?OQiJg0%&}0CVaW!^ckol(+tR_@SU$`R z{-q)HG9Ab}D65)OTTUF2Oz$$ZY!pdw9YC{bGa?|hnNgLd8BuA5!cMxd+>9tRKT^I) z7bcof`Nj<8kcfPfc8krjR*o5wTUY>Ls;*n`46HUB2)oUDEJh|8D)!?nuR) zj+ESLwE`%Q_oVC()A+SsUmmCRB?IfrW4OLV7nw(EEi#W*FEX2|7nwF*WQuha%Zv9E zB#f*v6Dro2;)tr%MWX8^X0%*l0I_m$A;jip*M>Q>FOcJX!Dkt<+D(rt-T4h(| z@+XyQRU}my{d!d)f1$=zS*BB(lPZ8aEAGvT^pmYxWxgfL^meUTrMD%0rxAS%HM97; z#FV^+swWpMeU)F-A>L=b@^Y zQCN&oQI7XHDu+vTvZ)$m5jJUx<8ff zYOeD4W$+AH)eB_!OvzQs$8&_YR8i7QqF=%x`NT%Cc$@1y&bGn^yd7<`u;YVIM{V~jhTBaCe zcR@0Gqp{~2r@mtd%iLjLAx zo|i@gTcUx>qJhh!fh(ect0;+HCrufxzH zT8zrefT?=_qV>a-@FTEUNk)%weksZ-7Ft<8TpRjQqFn!bxq0ukmrW#|mkDkpZLd;MWfBoxm zN7uvI*gpRHHyC7Y?ZHH~(~ZLR(X)9yrCG1iJ;2|Dl6{W7pFwYMGUQdBg5l#Syh(?FepV}^;znR3dvT*MGT5rI zPNeV+I{aA*-=)JRL6~+IZGJa~eHG4e_+$*97=}+#;Z_a@*xOt6IGTr@UOoh+z}?7u z5PEkHhv6Lbt^&+iG~&EZ@iWONhfN&^vi?`F3z|vp5e9TA+IDBkH)DU7Z$XL2$@#Z}YdhX;DEA20TLK9OlWx&= zl@+P#N0wjOjl@Kj-&dEv3Nf9+{~C7s?Kqv5nzR-PQbLX=`x7KUlIvspcVJm+OtdQ; z%Uh1jW_Ars9J`|`@p9!k!x3R3F63PSqWE9ODyuRk;J7!v{Y^52K>}r`2~y1xd6rV= zK{GHX(_3b$Jo82{T;7WL?Nuwx2!jl%mbR?x=| zg23IF@#~N=OuZ>OW7Gd0^%n2DMjPIqXhMhnbB(qe*pD{I&=#YU_Kn}ilKdYaAK(t~ z@4?31OY-m-mWMa&iz;gv5s2*iKSYGZ)Kn6BpB~Jx&|8-%+VUw3;r|G+?xSp`$ZYnJ zg0cT&1CPQQZ68~hv1r^7{bi1i)W|XNhQ=5pzYm(8q5n8z#y0k2yFijPCSjiiKZCiC zm-lQl>;DAOcTDYR2p$F?#qd)+W-vElob3M;heUTnurN^>n`};*9aHIkMcU1FHJ3I|c^3Sc_4%5-mssW`nJaEPQ7oi`nJ zVOje%&t(&BG1)HPgn9KK@;PAxa|4v$Aj*0?`!Y$dzZp-Af(ESZ)5M5_NlCnFfN<|E zyx@Nf&3s7lJxoCn{;y2lJ9v0AO#}-g$&bL~-dB;yhslw@0DX)pw9fAjgA>;IhTs~& z4PH&EQ3NaZZ;@iROWDBE?{3k3v)|L>AO3U5uDA7FiWN8gn*i9ih5ZBQzl{A~LI36K zzXknQ7-ZgVie5_TJqp0Ax0Z^czPVeLW$}sss5raLP&OSm#rgdIGnm5KI0fUz#M#Xv z&J@DI-+Iei$5=UumD5-`!pbq$XBlgz#G0wGW)jv+#yTFcL@ze7I06X4UjKEJ^iU>! z&5~`fVN~-twBlLOiawX0F zt19YE-={`jLm*6t!AD-V!vyLQ} zowD(m7-SK&@JKrpU~`W;H!%b&o?R?C#e5FdfOb1$``dA$lWv!pg%#1xt-!NgcL)~8 zHKk{O;zTy@LyN4{tl}86KHmSuNS!lr@1K^TY96mh;2`p~k%lPb&RoWcCgU~pRA^Hd zjva23U2Nr+4>HiKnp4hkxlDtlAK-Z+B?Yxk>vu3F~Gjl6D8)Dh1mRmPC z*3mbVYN^GV^NGBYE9VIW$Mc$x8PC)A_}IZbUX9d`7|c*s%s4>u$Y3dqpH0X{ zf}f!e*+j4;4L+Q0-1ZVqf`tsR^B0R=bc;6UB6`2Xp(Pj!eEg;L8YFmQDy~JF zaid&nr$s2ZsUDZE&zo}9;-?H5h1UX?ABHRBC2$rF0xqPKwTn%H;kN&KO#XYCD2$1H zm*UEmvW~`dBACHHDvOUSjN0CMnyxcdC~13-;xugt=8dRWNkPiOfhMWZE~{9pRJ;5* z?Pi!#?Xrpr(~V$OBrdreRfy#{Hl+L&BchbQ14F?h_&dfdU&@<0Zysr&&9ad0+3LXS z&^QSZP6Nsy?^Mbl{buu!DTIWtjMIrWI^HVySp!3-1Cr%&|F$2{YI;bkk*rvl92^7) zBVa?1(D1cFVtf(mHK%O(f?8_O5Kj3iy7R>Er_DCph5UZn=}`I_tVD2cgA{*6a6fqa z{%o)o>kYCOTFbwK zV0v(hyt(-BV8$M{uVB<1q2}FiU)p8NJeKzXbf9=0cFOsp_shsLPKQ7+IfLZCQHANT zPP*r_2c+pCJt!iZ75D0!I0YA4-i`u9T7n2KrDlgyeg+9TQH>|t%Kw0AWoPqaEyy|QXW3{XHDVQ@-=KC!H2RWX-cYNRH`H$B4YgXiDkwGT z$Z(cY+vk5w+iwWlE+PY_69{3p0#EV(fJ64x>SG72x)~hSD072W;4rj;qcz0pyOB=9 zgU>c1ug5ufG}L8A$m>%~*gs$!%1;<%;w5@-Le)KE_)h}R&aTh;PZ_Ah<2e6m2mt>{ z4VsgHDO4~KhgqPUUwHc4wXb0=gJ4^5HP+)8QGNzT7Uop3i0xI~F;f4uH{>#t;Akm3yjepRki(g;^ijEPp7%JHVICW^DtQxa%Br}N>>t>h z-GZ7YYH7HC^u9)H@5hbd2Jm-{H8y}_MDKu7!VReNMZOC^n{3IL@wF+&=g1uHMxBq9 zgC7(f*CMFc{y$Ac7B_^9~F z9}y4hTikk*NnV~y+RRg)hkWMI zeX(rHl<)82b#C?kZj+TLjbfqlTadOf<~^sD7nUkz1?DEG${g|s!JFWNa(cU0=I~6- z9PHvQq8FQuPwqZsk}W$|IGKrOr^d5Q_Ta7zDIsJ!LGl?ZiI%JKect_}@AEp*7ocP6l^Z)OF>Wfk*Ixh$N>SOlj8i#H#wwGYeIOoDR_ncB@RXFD1FP zG6{(68da**BlG!dG@lP>4(IcyDU+{NE3G65rz1~B$zNeDGd@M{R-j=+-|aL^<>B!i zxTHva)T9Nm+er{Z^99L>UQvuF9UcHk+u{zRV?OhsZcgaGpx5N#^XQI>dBilHC-pel zWMQ)4JZ%3()Dn2VK$cRkU@zh3GcOH6by3~F$>yn@yH@enX3bx{UqU`5D;sjwmuqlV zTs#zC9XpxZ)K-2jAx&AN`$y*R<(K99A2-wo0VEsvCenAf2=aA-Qs6TEEwxOO z2LN{|z+DpXZ3XzY1bjyU$OCe^{|dInV>2=H6rwSOkOz-eJlKDQ52v2T5uFa^K|T2j zbY7o(tpj%fp2NLL%r`i)MKcB2hChW|#zW0;Dw{5hbKGrp%vdCH!h02wDd6T-q+NV@ z|EU^GM(R{{QFScY!O<E~&vmg>rXBaiUkK{Zaf8)f#l$@_uaW4~_x z2kG~!N-xuO81&%@nGO$2(e>ZM12_}5)MoiSsoOQ_Qy3qKYn9Ju9c+x=Dv#i%Be;1$ z#glrP9KciX?#_2{_K5Op=)W7s7}jl}oJXeU{T?#DPtgtry&Hds*CFw~_1}rn_zO`< z@GdFFzDxVjKP89(A#(n{nu&VvCd9vlh$i%l>c3S`?(W2UFhBoQ{G7rEq9pvZYZ~PKS=dkqRB4246mqD=7u{620hB z-|`%r%Mg>s8_AuKAo;4UMV575OemQNvWK-zi#RyBAHvH#8K z$x@X98-RBTgxsbfPe};cuQKEogsc`3Q&xuGRsnxe!@nVOi0M4PB_UtXI5$Yhof_vE z2|){3hFl^ccWInw5dsY)yI2MdD9~vd>tO||sw#pW(V(v?P*ued^pXbMsX+H@(9H-s zNmLoxM&b~CP=oFmhF%qi=v#H8&mV?f6^H0oY0w43(5vDQ{SFPM@iR69Q`!;eV!Md`jI-JKY5n>#b&Hg{&kZSKs7+muG!rZnQ_ z&PVrF>7FHXraK{fh0nv9{xlhL?y#6{8AI>GR>aJZF((a6Gh4=-A!&1gET65$WhV|h zb@>6Z_}fMAJt!+@gWt8F%>IMQZ5YS;&zN%Sf3K2-1?eaEs65jsPT>sbw4GWFiz+55 zI<|ii1?@h}uz-)0AtsTEKwOf^vL;)Xk;rkoRMlJAsSUwvP{*JrtG5GI-w$~M@*`}^ z`N82?Yy+xNN%<{$F`5rZi-y#L!_2|&Y-GIGNiJoa6Vco{>0OE^uA&!n%T6!b?2E*u z3kSRQ^ihu6ZMub+V|!ZwSl4KJZve(R?@g2`hbQ71u_m4L?XU+_`hD7nP*pmUPWOQF zO>L=}xl-s=XQ-5zXwL;ZI%BU-(!T!TRjn(mN!ZgzJBe;Hq1)GFHCi9pz&g`|?kLE1 zy5W%r2!}2=u_->djI^)1sbA1d&DJhQW$F&gmRp;Nt8<;e7wx@?+ZQ4dze8ym z?}EGcC!oiCJn*U2~-dE&ih!m~sMelv2h+>yH5~Ip;j#YaKr8^jzt8rAve5#J$ zuJ6OF3Z0R2UX0nMV^VyBkOEw;R0@5h*% z?f;!aKcT!4R)Ud;A$&?MmaWoNberMV_>d?U#0|FMx{!`BC$<_V_q~fu@M+QecO=v( zvzRk!i_M3wyxT@yLOz?vx8@~SLf#jo)9U*fR;N4-z4zDB{J;=_78YRn_$ftuH(RWG zz=U`$0#o@T`Ib`e14_H_Ks0uY+#z5j*MN)6b}HDI@duwx`CY8?thA}S9BA`ugJ z7IELsvWgrEJczwmpk9y-y^H4EdkbhW9e19%-nZ{zGfEHb~ivEylSS za?ClGB9Dli0IF9I@cE&V*^CBG^a9aM>U_0lwH>^V*`tm>k`rtDOABrJI8m0~uS(fD z`2--pR50Mfv`nT=SIs16z<&=Q^qI4>XrbC>GFM7U^F@)%n{033N;5=(52KF}#7M=b4>XG-OnGR5r|xv9bxeg+7&HJjYidzeLYwsc zNY_Oz&L$frd-eWlDBBXm`!3)Cch58$LoIzVLqLDAYlyy0!mt`+Cb@R++3?%ZactUA zzB<%BZQ_WP?ivsRjEux{*RDCL4?Tp!DOM)dG{qZZnK%a%3dK!yjj?;rBI7Wqnl-K7 ziG-#D0XdeTD;Z3Wt18_--rZOt+t4rD&@bC?j%>p@)Q0o0<_oY5(pNW5u05MLGSZIo zR6Ee4(KuzKE$6AWoTuAzF4q2Esx4uN+j1_omZzpC0I=xw2;(f*MAz%=Gx8$FO0>o1m>HWxf z@c0iwMrvlWZ}ptvtO<|KGf}Ld|p8Z1BY>339n? z@O2I77W_2Ge`A8Y$eI>gE~0$#d!-L7+5L}TjRYT+;)8x54sAedM(=I1@?!P@FtT=j zhhfA(8U)!WW!HBky}vR1T*B>t6j?v3?ghPe0_ks|mz)32c$Y{RJ(>M3!#X95o=SO- zVbdjyo zCzHJDND>)y_=Z{$Fhg>vC(i8dM-v$*LK!?r$>IxXDaa;4*`#zf__0^WCL}^81=*xB zDaab)zlyPo^&bQ|NF?8*ly6dfQkH<&u%Ke zf9Z}eyd8)+!U*2MNkfyxh#`?Xy7+(Ht4~*C%momXbNX9dp zi9!P+WfKHHL!ENzEzdN5eA=bSUwYGVBLb1rak%fqXn0tK2^rYnC!CHVgB&z8z;Wlh z7|dAEpB5}nG*G)Abvlk@yh7RurnRYVPr&f3%T9ZP>c+1#$%%_?SO#PNAZ){&y}`$) zd?J-i&&G%Epk_b80iEbLV#Yp+J?r@l%Xnxf|MB}dN5TIu!v8bi|E=&J->Ap8w;_wJ z!tDFeHx{?(^S(@8H0GUm6?vzi7eApq8+nNx%+xKIeH8(A4FTs6V37tCHrl~HVdyh< zurv&#Q|(}F7#e2>CqgI@n&!(0*G@2@`5=={aTjbK+OdO$ z)&@i5^;kVPJUi7rn<`9npkHm(ueNY5qcWZghXKBACbq2W{)4T0HF`d3Q9m3KwS#wg z7{JW$WR8_CwAd~UmpaEa*Cmd;!Az__ydmboct~fb{n5#q>uzvVetqB`O5f4pAqxX< zq)pt^!{)6_IuX_?sL9q!dwRYSN5Ej588#x4q%aC{YybqlHzf(_2#HzIHnef4ZwV}? za!hu-1kGk^S}box3QgJ0%CsAwp3cUd*27m4R$7SVmh1fs807(`sl9669s%xQ#P2D4 z&OM2_g9suDwxC^h3Ib-q=G}MNsw-rj1WgB*oi4o5hTo94yI+mw)FteEOTNNZ9}loM z;i@0>!+_d^jFOZdn{c6_lk82%NQ3Jz7MJqitLQ_nL&x2laOtJ_y9pQGd|U7&_=(pp zQ*s4M^iq965u`yA_3{}qoF8@Fn#E48mv`_9q63$^be?Ymg}F4w** zwC~)oRGtGnRJr^%o@;Uyn}nB&q1G0EEiWC{!Xu(wB2m(Wk|vZoM6s6B4u51%DiG~j zwL^8sbkv4s;nh(({I!;Q^_=&`66a!xQ%^Ycj5C69E|NGGNt_XcGlFp%80SKXbD_j( zAe;uq$qa;XQr6N0 zK-{1Yyr9vEF&o7cEV!B4&3WRmPC5N8m~}Qrp8_(y9EMuq$H9-%p?E422}W$wBxI;e z(GEW+3U*}Y?!0en_TvCx9A4c9Md{f{<NLm+Fge)gH04`l2yd;W#X|BU0ZHvcA(t;4ne;iNop> zjVSBdA&19_;y!w{Ny>3d%JKgjQW7mM z19$b#>Wh~S3ddr(6C(A^aDADSA6AlbLZq$}{uiVqJ=0$RV-4{a7kLG65toky?n69! zt4uDT5QT2Bg_k5$T9U_`NOh=OTv~W>Nj1iJeepUOsbY0$;ngMGD0qSKCNWaQ^3uY~ zOI@SMD-3>0Fj>96WO;qTvrb-P@Z*9>xxzHX8{@pn;HNZ``L=RS*%jNyUzy=&%#vdj zMGGv*R*5vlv_iL8>^7RWpli`@7p>b&sA7Yq2xoasn60^S5}kON8_>1n#GB z1UxR!T4U(4ZrYRv{|1t4HTQsDK-##)oNFp2w>3a-w%&r0N8YKxw>5sNYlX*4A^vgs zpkb8i(l$DaLbcozN-g(<)YCnw08dK5Q__7}y3Z)RvlM4K z7EKGEFEXtj3{^I`<_SUCsRBC$u0yrtq&S}JX3(G?Kk0ZcE*Lhe>?S(wj^Y-SnuSR^ zJd1wg-em3@JS;7ave-qO{RwA(!toeqmBd*kac)^fUB8NOrXY^HeLx*!(96AvFx*r2 zzKFGq+d=;*b-E#MFxXBAvn0&1gY&ELTqlGnyoAWu8K*JsjiaL(k#RE#4&Yd16=l1n zKFwf~u97WAyaG2XC!3X1P0tYuJ-^_U7-y!;W~Rz!CgI?(H`+LO#BH4)$(EaY03KBTQD%!UQLGyh(~$i`BI~71bC))qpl0DpMRPQyfYu=$Y$X zYNfCpZ@gkL6Ol}|)0J^-2?T~mK$s8L%RM{Zb3l>e7~<;_a5l|Aj$LT9{h26o(_O}* zl}im~<&N&v=yyJ|c}MCQ)5e%Qzt@E8*g@ca8ucf$FgM}PMh>4%7v`dMc_Q+;k7wE`+t&`A_6q82C=?v7`r}2Q*o2*BR#r^0WEqL+;Gi@QrkN zj|qkL<0$RC7(Y_K1RtrF-}>4*O1*yG z;n%^w(VWM9HtKrT(tZ_rqd%W$n{70_1+;2IPy7&f&z6%O#0Q=hqImuyzv47UzrfQR z-6N-s2~+vK9ptBT!Tk)~QDKd@MK0c^%cTlg(;+32#STKbe%-Iqn=qxgwpoIu5x;{7 z`IJdA(0B4ovJ9b%X_z|(_+nl{Ud+SOFh-JBE62x%Qx<(^fbRZ$kqp^J#Jok2?+8H-5Rceh7U8=ye0N8|uy;F4_^Tm;zV@n=Mn4{1jk5v>94o zmCoBUR+)|fNgGc+|Nlr^_04(V??pTSe|shge{TxmueVQ(zJc!VOQ3xf2+awEzZiUE zF=~?6FDhl49IIPnhH(PDN5=xuezb=VZX8u{Q_HG=N0fK|{tSP(8b1n;;y*+){~HhmVtwX>9^zdVLm zPBfHlatfaT@#PBWkSn?lbU7MZC>eFCGH`ry<}v8Xg@1t{ef0 z!Cf=J2eI3!;O@&aHhI?5<2X!+1&87JTE+yXbO183Oq^W2+8MqjbGz~TGh(E#TrA25 zqCoqUp)Nz_yT;XXm13Q?zy_`(A`tyYB@)=eE=xCkx-pmAFge zWGnm}W-M}*Nrr?sKhD>M(A{_sDkB?B(TmvSYw^+u-oeRBh)K6n%GYQ(^Hsc4b|Ue9 zj83wXGKFLNbK(m1bXml`cn*#)5VBehosQ&+VbQyB^lmbG3^3z3sb0Os*q$8KUvzM5 zaH}w=whDt1@Vo*%F99z|_eHgr2w5R)HOJTE5?f3W9O@}gH zQe_V7mzVydenIT=vGGX1ycG7!(Hg!=X0OO}ER*TsTG^(}^5(FkWma2sR)q(VAZ!0**20bDN9Z;X*8J`%pZ*hy)mj=+=#`{vew8@uKkC^P$DzQC5V40 z{4~UZqGg<%G@C47{e{^XoX9_+9ahHfIHC)Gr}h+WO3~yrIzw69p72pCU0Tn?fmOuO zbbwzG{E^xJih*{Hhp|YTt#i;CAYM2am{fclp4|rrkCrlIX>=x01PGmX6&oOGg^scd z4Y|5PYp%}CPH%K`E7OH^q8N8zvo?SWlrGl=Y4YZ_CaL$RZIGaB*}0WO56Zu5gk^^z`e^v7R`pS*Bd+hvbxgf}6SjWX zRfbiu(B62OmN^jWA0CrebJZ2pBXIpm2dhWpl~q2(?;lNPVwQe$MV?E|Lqp<;!A~H1 z`#g2~gYWrPz4D|jDX~m>JccR!BV)==ZlKzh)(pfL{Td40HtWMvrTowMbZO%NF|%Oo z7#e)j#^4PQk!l1{H$8z(FdS8j0epWt)?Nfp+tdDNpKx--hKY zdx$vN#j-rc_vYWijB31rBYH8$9x?0eIoYxRG{cCHTc9as**djD!v zybr{0T{CY)1pIy%qQKr;*}tDweRrO!MA(tL^Vw+~D(0_MF+ERHlQSgeWX$KL7~najayjdz>qO|cK;wNShxt?!8L6$ykFRPikq zX-7zN>2JJXmp8^45yNaOFopv)N7&mKu_`#3D35`vH)c$dSD5Z^YkCdEs%W$-IJ=|9 zGiX~)y!k)u5wr+bg!ZorZmg9S%f{o3BI$tn!5W=WQsxBwHp*fX!glC|HDIOT!Tk0P zeK7xY$N$qe&-A%`?vtO(w|>mIJddWoc6_o64@bnRFFZ&H^<}qQD~QR8-gjw4hIB8| z{O9bYjk$VCrq~lq%%9sNSuKzWvAkViVpIX&t+hH=8brD;60x`{1#v*+#`( zajxTdvp9M<3FzHtn#)9pCPjz}_;@)waB{q7@MR6X%;aB}wep7W8vlFD*vX+^)P83a zk4J!Cf)P;umwYO&yaw0cF1|SPd1yiYhKl^&=lsZ_Uu_gonRq5&lFpX5VMS#q$Dv8W z%z5NHRNrC$fSKt(q~uQSJM8AV+SpTcg0GLI1-5Nmc+DPDs^g^#H5@a+800k9(X_=- zD_5WbHj-iIM`3&fbyQ4#f|$;;YhfJyu^7jEECycH`e=;5d=v(qUVXZOyTXMZnuaounkW8sA+*hg#ZU0zQDHKLFn%;4wRS;-POmCRQQEjsjBG$&}6|?$A zb0|As>ql)j`e~&9(ptreubAfezM_1ue$wvh{qj2FkYiZK2+Q7`d;#uVU1zj~{J8h; zDkxI^45|T4Bt|d(s(0~@k5#^lM{)kTn0yz{p0x9)@nZCi^LAseqYZO4w2S=58YX_} zq%Fvfhq}HV3ZNGC1F)f7S7R_2BF)eUvH()|c$#aK_F$HA7L;(x$E`crWcA9UU+%AQ z_0+*N^l>041y+e+7 z5bdxXqpNxSrt!6S{mw?U+EWZ0+ins{yi06ck5j0W4IUVeyVt6hCqcwq5B^rbv4#Zv#$FZ50#XW)l7O@Vq!n#Uv|E+3 z0urp)CcK{$$H$QHeuFBTf5XqDLaU7Neo4O+^Dm4sIl_NGjvrl_gvydV@n>U9*@Q2Y zWmv)B1hxGN(*XZ^V}e>tqnYKZGgI}&@1YFK%Pc?Q;K2MjexGYdCr@%!i*>Tj-s4zj z+j|rpZz~|1(IU2dbiO-C#NY_akJ;fJ$b!_t4NEUm{x^!_`0WO=$qs3QoU@Fw=1~)Y z2K>Dk`fx_p_D{tT5PTjYywBl4`8@udhCgKAj~^kigX=K*^eW(Y5ZGG>Z_ zQ1;VGtt3&NMU;tQ_+7iPD9|Ps>(T2{NG^#l1YjeWyiKlH>p7(iwi0d!54A$WL zW^jI|nzAi61-vIA2`^KaSihY((U`PYy}4@AcZF~~26yVZ*`)k1Wkc@+xD~dXE6(40 z0nU{zpN&iNh*;#g!g`#Y-QGD6(Msm$ICq=W+$GN{;k_8=XSUGwzk#3TZpJHYPeBkL za#|}fMo5gWx_q@QTQjDWVxX92RZO$w87&IXA^}+iAP@0Ze2Z)&@>k1yfkyn_aH4$~ zKN2WUmEyC5=ybls%z7P zc+cU0?BsY8KOqro^>0SrTx^IW@)x^?dMmORlV={~OCiR4nX;#%OS&>+Ic*e9Rie*M z-s$L={dSUKzluiq17Qliz8A+=q^Mlu{Tm@gLAHS80D{P7a-Vo_$LXcY=?BQJD&Otm zq;%A{^esFKnH7VK{~>@%b5wyIXF3OmXj_GO#e*> z8OYlXG6C2tyQpn za7@efTrRB6+F489Q{~ylO91J`J^aA5DP#F7ab%Cv!Br+%N@n8z7XaA>_is@1 z73sm2CYy@O@FhEcij57B7msfqOooC7*D5n5>?7O%Vl4b9lN+fX5`g#JD~;|;j23La zFcup}-Olp|?dHB}&|OKGr`IAetfI?yQzc>N$?h%1<}c~Oac(Fm)tL!@TZ|v6E+*0F z2@Tu|i{z;xs$8I*O*R@rbfVS6HZ*^rce$a_s5>pXXqkeklo>+?EzTb0XQ@k9>NlzJ z8nKg+tygw>mw>3&}L z4(|0adO>6a#1tLdYd{R)-+;WVTTlY;%PiQDP%rt}9F^X?5o^E(P{D0e)ZuKM9ehg# zQ1rVAOCKNx>3s#Az4)eK|IIO_DhBqI@gxq8gsAc1-PQ5_anf4$SSz zp{Ase5#UHrmu0uEM0C7ynQ!ZFXNhoAdraQbK2q{yuMJNb7MhzzLQH=f{FI9Q=+8}` zD9U4zfNd%!xEESPk(+UUO<(KHdF@Crj<3t3wn)dRbFKp`%32&PYnCi)swj`EEbDT} z>r9Ls%D$oAjbVM_HDR%PiGH0|+2e0K^S4CC=>49B-x|XAszLrhX5QCHGTg1W85z~u zTD}c=$5&|(^7O==!(Ee~%R@q#fm)0^ITl}UBlM3&ReRAta7mVah~WJUlG2Dy&k z(Dm@|L~k=S0bg^+${#4PQxR-hLs5p!e4p7B2Y#SdTB$EZS?g>XCltLajesrdE?oh1LVN87#}&4_t-LS9l39w2 zOU>(!&ix+D{Z!%2!oXAb6>Wl>{=Hbz3@j;NQ22bO>HiSr_B~NAx_Wrzk7D%BG3R4> zOP%PMlD9vTc`0)XZwZ!rpWL~3DGGK;l1^2Csgk6Gjwah!t0h$h|2SH!>d2oEv%oh; z`YppahxpM?aU(fRD-^QH*>fPy?C1r?9iv-W3w9wupF@DOn_Vyg0FFJqP4r?y({^lr zL%uvJ301ov*_z`zD|7r2)4GIrT!L@1jO{spw_O(D1u^j7yKPI)jNQSrrtaLH8Kc2- z;$xrhnRk$&SOm_4v0}`I{Q&|d9~C@8qE{}MHDe)o4u0goU1qd_=Y!q$*`@1q5;E^K z#66F3$6a^ota(?*bh>$Cv6SOE@`mRxpG9?fYQn{{=Ka#pz9PazN_Isgu6-~$MJnSi%z;C~_T5dz+&fvCTqeGjRzaR8S))UcgB zC#Hez8aOcoj?=&qA+S>eKMeDntbwnDzzG_-T?0G3vZuj#_K?W21T}3Xe$fR{GI2o4 zYox0}q$b!Hpj_78eM+KL$zp3WcE{0OiHz+%fTH$cMq(smwaHIC{2XO>XV9M10>4Ja z$xiRVBt6ZtI47)8AunMz)CVGTE%2-!BNE}HckwGEY`M4K-hb`bA^lTxicio=9OCEI z{_It=b;z`F>6;|XX76BI+mE9RaISvCg!A!#K^lZyW6b*{G9=rDWhs+XuMz?HS1A9# zFj$W|>%GGxR{6>Y%P)<_#F>14N@X7UKPa>De_rNV=C)>VPeEIlc`N0rI$d%6=~8FP zdxaFOaVu~!rn^VKriHGApJ(Ugu$yD`a!UaeMRDm2(_I&fL_Zj-j{eOs2wrkRWidj` zp;%?)Z-=2jGz{`ELawQX6f?t$&8m8NC6|v*s7$X5LyKj|e?$uasug(s3RlAwJ6)rL zNLj-cYF*C04(-k2bglY4O>fiRu7rxWq)^cULIuU4WHF;cvUtVGFH-67*+$f_>k{yc zQdgVC#-uECeVN3|obu8B4(*E0Cp)cJ-W1;FQ2UWh725HlmnbD*r~W>Sn}P$Le}G3{ z+j>6#z9>1_OIz`&b+Nrw?M1VElnYX5d--?Z>uesfKX0Rz0}79i;?H9&dkeA|xB%N9 z$w*%s>rt@s<3tt_jz@1Jw(Acl<$I^v{56)5^feZ~Fz0Ph@%lR4i!yx}Wph1nPl9hZ zT}XRmynR=G0?UgO7p;@+KgoMr9UG=ekuD<*(jBR5+8a&pY0_Vy?&6skea=*BF(B$$ z1U$~j8U|FgvKHu79n-y6LMc?MBL_|GxBaQs2$7XI^?rvn~XoRxy}#i)YQ z%=Or||6}HkXdYzk9_`-R5G}4c~!oCI8*T;@;q%7y9+51JWx;{tM1IL#19w05ii!ow-gg{ zchew1to;BVh@-vWd>GH?)4svG2!}O>FJRgCVhk_BL-`9M0NN{`CiM@(e;IP>p8*wE z*}5`WA1|gx#6}1^?)@7pPvtbkxV#2@>%E@8cHUr${vPDn=drX+57wc-9ygi%$SXzp zn`vK3MaQ$rW zfzJV!NIRkd%>-Y?K|D(h;#qPpHCq8@OTZijm?Hsm6=1Gx58ngcjB{?wIxcR@x}jLG z78~@eYEU*=7-!nsQch96*qauNYj1PCFQ7|bXp_mi9~0hIJ>KyhjlkO73FnAS%4fsh|iyrf1Tq|-Pxkp&0cP%Otr&yFK1$-8Y?PviGVW;7#{Gm2;8H8P6V%E+vglCpVWTSOJKT>5j2bdvL=PLkZ9 ze^=B8j__{4Me#Mj*n|LrDm`Ke+{;im`YGh1{_EHmX&Lwn=IMO}muZIB{u{{7Q6cyy z*6b$YdESjUp7Efne2c6N9$k?Y7#50Gidwv{vc4&6vJcBfnWPT)i{?-~3nTCi9Dzra zUD{B_@2QCY3{b#- zE2f{Dd11kjl^-g6Lk4Uv`x{C z6WObvIpf)X0@m+D??+J66JWHNCt4?Z_fY`nG)TL~6*y159y&G?S({#(rS|wIBadGd z{aDV=AmuIc;}<9k<9z{qN75|+EyiyRjIk||Wxmgu;Koxv5{eAi>>iZDEq=560c^qp zHkmhcjEn>g&L8hu;hirUd^^sh9Hah`YX2q4)bGUPnTT!N26=5I8hU@n zWv7aU{OZ-aNb}I!)oQl1w8&h&_mGoN;zBGJEbLP09U8m*Vit7-J(ZOVQ-(g9YDDoV zt|N>$Jo8)>JPhdN`%y|+7~$n;lywb`6}~xyr{dla?~S3Oe{b^_n}Iz)BZWfmIpuj4 zJqO~aJ4w3r>+u@h({lU1n-U>*<0Bl_`sTbB5VyQH+Mm42{ETgyz7U>q3`4?mj->Yz zuD;%Ddd`^m?ID&aIbC*GI`0)*9(tPI+qmGoCp5HiDnj2;P-QoV_jbM**2VNw*sAJ` zO+Sg?m$`C&+9ZRku!g2zhgKdRLdO0P*tvxc$3K!JA}ZZw1lRunG5#sEo!wK>-B4&l zz04?_&ifxA?IK0mMN(YbT>*BNfISpo4++>)0ruo^XwsfCN$q^zMu|FYvX4%SxsqY^ zlZ7QVRX@cs4%eH{#GB>ko=rLub`t)(0$V1(rmK#yD;@@sSC{UHK0qVS>4mYIG4^Oa z*A~VkW96B;-FvA1iNpI*4hiQqU>9Zv8NA@HOoiqXyya>5doLp+XZ&sL>dLx zdkaNIkesv-{U`li=Tbx78S|&a=ze`6hWEsZql8V#N=+izYO3$IQrX$O1JMrW3ek^2 zv=fcaNuI6VAT?>OH^j`2BEOj3-7d_Wy1HAu-k*)D)0>zbq!qo`9REPvV(@u)lLQ^4 zLG*59Fn6lH$jSu+LDxt=&_2yEfCU-XYJHzgqzq1-8k$%Le@9H3qYiZD1R0qO_|Qja z(e^G5mzcnTzNj(g34#0l{uo+s@s~t6zl$UJxfS`j(fl9>6Wr2wS&_KBT9L?eVxh6@ zvQYPMo~*y{{%-3}sYL6wU(I?2cTUw`JCQX)nOZ`km@Z|kHJwz!ukWOSdfv7gD^6B* zjM1QGTL%kLCkGRgg6}}_$)$- zx(HBX6%Pl#gfjZ4p_AwS8l}Bn+60gxbL&F9Ct~{v%qS^Pbza7=bX-ec>u@%s>!kqR zcO8AN!!sPT01xp;^>oTm8h%>4bDS^3ydBsDbwU@%V5j#M$gC_Nt4&y|!c30!MmRV* zMln`7rsK2G)FGUj#N*a9@Vw(XY-hc|I~&-WBdFjx_yW2eESv_A27u6Y!E6fJk`dJN zYjw;4c*h)n(suCw5%(Y9QB~<5IDY5c$-Og^LM90_Nhpa@95Ryt31A>}L7JiXl-yR4P9_uk8{y&@{=+Ok&cYZup5_?^$^oLeS@b-&O5|9gIUp4>U_ zd*1V&e$IQ^`)=47TUa7eB`EscN=)S_mzYw)Z8H4W&1C}XyS64PyD2BW?3ew#yC+>M zJi5~0z^C2|(Z(3ZzhdKx+tiqczlR=D_Qw3Tc!!4g7H=L3ftEZ_Fe0yYz8>oj)xY!f zFYy}`zPzrBawO|Ylp_;UzZFyxuu1`|50js|A`KiKqJf(v9m*|Xp(SfpJ*It#o_Uhu^ zGVg5jmU;W+zoLC=0zQ0r=|SZUa=6R0-3#l`R(XaFRNfKUe@SOoH!&3*C#EBx6 zcj=>&Fjb@~;ggg6y+x|pRw}%Av-#$_9hn!l%T7ocwucVe(+k_Rqp;n6k73e9cI^n+ zZ71Y;ZgExwinA)#@P8pv30YOS27R!4jqD<8&;h%wK~L(sW)U}Ow9suj#U@`gm`*3i zqy20pd@lyka5+}MA?4|MjX%Pbpy=4BWu&D632M9K+PZ{@<7J@MKY(!U&V;5S3M&HR zzsOUA?On=K$qwZyJhX4L-F+0F<~&7nK`ssE04S`!3^bYUvS1KlZD)}c{UPz}?gln3t68pfD0MqJI$mhrk=4quLVJz1^116ge# z(y7Ec3~5d|gpdetgA_)qmu;#zbMye5>{nkmWXD0g780%g&$Q^cfy1NKJ%-wq1G_}4 zORj#QxJinZhC(&n95#%`VK(6P?@t-s^iJ3f)zk-GyVL9VhsRGs=$AWvGrnmr;i8&m zfke*H625i&*P6NYRNcz$2q?Z_!<#}EgLjt)x?j}9 zyB$O|tq1QYLzVVw-O%)fa6>g!!RudnfOnkt;N1v)#^Ba#oBk+VRMRxX`8-M9Jp1c= znw}!#&hwtUziEr%rljdfT;8~vR7aKF_9Dt`Qv9~(!EpQg7eCSTDoKHAx)r3yk#x|( ze|@289OG&$x$T9fks+6Xx>7SurR=u8FM&}waoeV*?+q8#^b$z=lVr|W%U|Y=oM`oF z&R^eXYNK=Xob%sq`Zv;_FR3Eg8U5WWAVtXcPhlVr^^l}|pU9;i@<$+FAo4g5`7Mz5 z5_y4#{0hj8L|)|~KLc_dk+*rskAXaf$cH@S`#>%r@)-~LE|8On+~OhM1adHu?|8`9 zfb2=+M;`KJAUhHHrH6bG$X`q#fA)~i0{JnK;d&SOB#@hltoD$92l7E8Qy%hRAg>{E zfQP&v$a9I@-$ULFSG2NL=x1e3Zzp9uha!8gC#n;hzl$df&!1!R)QjUMt>bQeM7Z65Ly zAiv^eCd_M&CCBXi#*chNgosytM3jifd_;_h+kHen5m)$#Vj|A=5pg0``-l=Ej`R_w zM9lFKWkgK!5uJ$`;v*77^zji%BFcS4IT5yxs377e!$Wi@;$t6CMZ^{#u^SPO`v{6$ zg&Kg|l@2BI8#np{JsIL$AJL15H9n#@5b3Oj_8@eahEjy4Yp4&Q@fxxT4be~mp^SzK z33XQwWw(c_U`o-P4_8wRst^PQDV6@Ira1-zAg*i@_)tsGb zx|#z!f;628ug?f?`?>0YciYjj)^% z$^PKB?b;QMR}=HAhxtR}`NTv9xS08kClXWUVfIgF<#6YL6VnSK*%}WVlb#mI_Vd7j z>9Mkddtl%6Ad$3EL;0Yt+;vpAj!M_j#dUPmj_e%C!wlF_5Hv_~CHAK?k#KW`z5>k6CQ<8!1Et?p*fZM=TL`O?LD$ zGfpmgO5~!)Oel`QHP5Gsnp?!`Eb0}P;d<33)bp5Z(LnuFta+PUc^y|qgT`(=IOn~F zci-e%b|RM%seNozl+}*Sj9fORVuQ04oGV_7wCYPE&~tmOR` z`VMdGt9>@;54{e2GJSChJPIwZt#|LTSle#-*{cS^sv&kFn}0?81;j)YP{svRD8=1v zBfrSVYo-PV=`J-&vaY+AQHXWbxdLc9`P19@IW8F3F zv3kGjI2S=jy+}<#^Ziw*D~AMr6DsU6pja);9_zlk`-*K(-8Q^$zUNGb%+_Nx%NCbq zi$)ypB97OHRu|E#5vyIqYK=I-MVz3r)Upb@Z=KYy(~G++LT$+aQ=2cEd!vB^P$+mE zt-Ww!*m^X*jt+Qb3e>OKhUTh0cLZ>j+U{9bo&m|~dhVH{RAjr|L#bl8XCRc|9DtI_ znA&FeQqN{MH8LpQI_V7Dol98RC;XuB3=;RlRz*)MyV)lJs-Q${Pb|sdZe`yh%}hyC zSYl=mhWeV>zVA2moxKZRF$lf~*?4SG63&)MFtvx!R!((-kl&S^Lxvc9F?Wf3BaCwx zT9>l`&ryYQxcXU$A6S!7N=Q@`^&WY9pON%g(1Fin`Yi0gXEA*a@4)96W@X+^KEcYd zX}=3c+6DR-R)*3&rEs$noA&8S=~_Wou}ICu-bcj6h}07B!4-x?e_&Su8_tXtsYM_h zB2tS%kixdLl`e~0jugpbE2Qiw@%u3Fr=_K5zkpqPxM+KuMkpJ2v#p)#(50+7q z@I5N(4iKvy>9e|7c8HXtc45dEEi=13;_l3+1EDfS0ie90Sgc+Q7Arg!HF8`mOD)&V zuy)RpV-p4>5l$U!)2{ZRw*T%i>z?hc49SAaL`)8q#Ua{f5t$y!E{njRElUKuPbN=@ zQk!vEn-Q2RF=%Fzf~Ax_eGrtTkcQr3^-^fivpf zU0GL@OjI9RWEeaVOBW=Q)gKgVh>5DvgbjrvnP|=cjZ})A3C+}TYMqg&-s7oU7L|!= zXH|#9D(#hhi-Muj1v0=zU*rbRnXG8&=H{hKLy4&9Qr+A&hj3Z;8P=xvJUY95Pgj53 zFFHQOA&?uBVco1I6jicao|U|Qh%EP;anAWiS^Yy`F*;k+Xe>{pY9Z%lQ_@X!aAn&~ z=rYQ$t*~oLea%%Bb!IYcm#4#(=}^}KrTYqz6)I-|&n4|lRWw-_jh5FH(rkL7G~BpO z{#F!rkuKPKj+QqpRVS^dH|mpC%JLK9dD-V0gD0QV*;pU9vL7I2(94#p!ve@Av$ny~ z=gVB5yoy2@VOv#jX%MY!=#>4*&0EHlK_k(4n1#dT-x?GL%S2@aE|M%sMQerKT|f}Mqi&5@9Py%I@m(2Dhd zibawe3ZqK99|f@eqg*2Ar^kr|uOrg1OVz4|P9mwEohk2>Nc|CGP=(J~1o_JGLs42b zOIfc&7s>SA%DMX_gsxN#HwGI=2&M!$C{vKV_XJx%?a5bEwFTLwgK_s|zVhEi$n0_w z^)lRhf%ogVONGdkn+|`A6|5lIH)5J<!{67CV22dxLUc3ioBo zeL37zLS?pqhhk(pR|3CL(cBF8Ey{hX{NdZO|CUtKxf^M^Sh=C8D|MX;em&ebsQFq@ z2k`CCp>(cIn`m+B?uxDclMHC38o1@NMAYUJks5%}hE74hn$ZeB5W{jzwt<@NWvO#) zwfg)!R;L%T|+BW? zM-bpAR5KYQjz{iNgSjy}KV1-n_4~JeU)0oPSI9wU4ceMq7Oj-cMc~1wOz%~05nQEf z&3Oz%G4#ql&H-Cup0IgMW3uZRz+GlKc@X-$3FS}(g&HCYjw-wZi1G0b-W7IlBYeAvxN~qP=fb_YOm&7}fj~W` zoQm_aH^~xdo&fpJqW(%}BhLyl6?U>NVx^vfoL*u%V~`I5d8_{_%cxh#@;xvccgmj z!-Ll~Jw%cn`NMB)dfRY)n;r!9NK$`%)aF~8c$`pu^y2rQt}BjI{~RCwX44xW=_W~R zRZKj1BQipyF~mha2ITi4AR`_UC*F;1ME+9gBKN?#-Lpg%d6ZC|(0CV-WgfB;$jgbu zZgoHb!x=>KRUVNEAXgIE-3wj@=d?rnwijhUBtIx@;oxa6GazpZD7HiHB>1 z-_n}9N2yzDs6;g92i!GK1|~Z~03~)tMRrEz?TqS@gJR=F!L#vl&CofXr%AU*eA4XD zAy`JCMXP1hvLT-BYIPp)WT?ldA+7VhK=kYJncQs}oZKRZ5zdY#WH|{~&m0D>jd-X(7GR>B%hKZ7K`$Rf7p%|Eq zfNJNqR6#H;Nz>gW*;QH$W865EmU~1dA~;C%p^F;4sRpw^0Zfwi(CZ6Vz7^RyGQRAg z^5ZmNvAGoBat~Y$aIFWz7FG5f58M~VdN#OV&FJh^O|CAub z52U;GI`~f&E%>dqvYVQqRrzOpH%XGGP)_eMbX9|3wOPss^K!x z0x)A`6GJ5nk@_6{^m!;GwX!{d%8taBdvr${`n|WA>Z($NG^ReJ1o;7`t9+4NJQUN5 zhw?Rj^)C|&dx;Z}wb`MreH6-S#H_2_Nms?z)bB4M;VfqM@>J7tO zJfuFh-S@lW4Ob7JemBFyZQ}|IIf-%a-(RXGg+)dx**-VC|8)1N#(DC)=J|}v(<^pX z3PS`ds6);wopo+Hx&QSc_rDl#>Yt!~-}WB*e8>H!6yC$stV;cY75xpIpJ%MWuhL#R zREuRdyJF7GTGG44Mckqhx4MX1_5R(bw(c8rIqwVh4Fw<*uE(dsRbV2y+~#t*O|!k- zMcl3tcen^T>ZSZ==tm7Tu_OrYbP4X%(pqO0laW#m;r?zpQ^ABR_^0oD<*uA zde7Zw;K7J$$*SfxV&hOCK5`LqjSZ1chQA9Qg!GxpR_*Z|Lu~a~v=Q;8yJPW(c1K}& z_N3lQ4a2Ipf006&VVn zxte9N7gnlary#;UN$Uq_#(asV{d}aXfCt(YxDcBMwu1-f z4kvsaXmjLKj&P={2s0}k_sChI`jH$b^e#=TIJf1JnWZ`|7b_^Pawr>wa1; zH-+;rHVtmZTj5kV!o$H~NCp;icnRVkwbgV_teXdIE|u8=NrHaE(HbL;oH3e5U=j5Y z7wf6FFfeGlJv|Wf+8qCI>h1Of?HIh%-v7KDf2C@0CnEKRXn&c%2RP35l*rm~q6LAR zkyx@h+iY*KQ>hj^E6}po!}EE$g1T8FCTWO&$`Iit*`ga?_syWKCFk3M_j}s3eh|? zLOm)f>!bD2d1bbGm}~#Qgx+Z!Q^@WNtZD{U_VGCS{MTNe_u9oEvhZ9JntFt<#$xdO+-4lj)o|5p-kdLpB5_Xh+0+>sJ_6CQ11`FM;(ERDP7^CFE+Ue>^X4Z78+ln7d2EiT(xA?8BBzjD;BV zY$+%%1t=U{#Pei9JsqVmsp<3vD--TZUVUwa(H^e+#XDpZWLZ4Q`bGpXGZQw~L#MQQ zo|tcE9~kB(xu6k>{~|JRb|7&kREcCFQCHLHJekMRaCGHqFjo+Xt~?XRu|wm~`HGV1 z+)xw`XCE2ns-F(WU0OR^P{}pSFBP6=BhH1RD|>-Qu?$yT>3OA>MpypP#XsTmOHYfg zJj2C56TlCR^3*3YKwH{9KCx&DX|KWyKz z!_IE=mLxKRpjjg}pPB1>X0C6qT;E=~zGvk6o{{VO$6Vh(=K7wV>w9{x?@777C*}H{ zo9laSuJ1XyzUSono|o%;Uas%?xxVM;_?ph)2F@*{kI+uDM%4xC>_S)8@Qb+VB*I>y z)~yN@Y26WlGOC*s$aLL)fn3y$4it3Vz(C2#fzi)WTtc;i-h7&f~hs7V$UE zXN@s54yZC3{Hye|SN>hn5B?TTrP#={HaM@#!4*fAktlER%3g|W55cKJL^ZLS(ZQ4x zXMIsW?{$UIKx^t}uSE80d)VxCwO#C$$YE`%y%MRe&9_$~!BR+1hmx|l&4>mXOiBm- zy+A#pf!a=VOcckBG|P^rreO+^f^KZ1(%B^Y(b5LLc2DydL=2QL#5BL$czv>@}i{(VyaJ{9urDKGM6@gr^O z0Gr3Pb2rInMruA$3~xGBK()dx6l>GzPSg_$^(0Z%L_MicPZ6~nQBQg6FzDWXjP;1M zO|q_7Im+v7ks2G}J&ADhhct=fKw`;MsNbX`rR;RRy*?AM?B+H_@VO@V+#@K6fFPm> zT=~4GjPr5sbA+2eRv{sdaf?KqeA-s?k17PljaEtj1a&lj>&KIH`h$O>FkKXhZm^uW zknX(Ot6y5pZ<0atC&3`H8Kq?#EKGNjvtmvlwwlj_Nzcg}ml&T#{QExB>y3S&5Nm6tUSX5D14m*gu1v6N)_x><%74!q?iUNHeUg$bVO~v zYE}Nvs*Q>k{JN_AJ^S;4v(JoN)8LFYQ=)!(^r)2j*Qn4M_}{~x5)6CF|1IoA!LS70 z(uNA24+Y-Iz8K;G_6$^F^MN>Yn?>hzIOjy%cdpQZ^9=9!ZwkTgK)!9J4#HhaxsVAJ zh~t5c*eNMYr(>4g@K3ibb`);re+wsvotND8)Ju9C+Uz1WYsAYgf)1=Zaev`i%Ca*d zEYCuVOUEr|HuivD#8Nbz%=b>wKFK{rv)y%GfzhpxyB@MUo6D=8!yfZ1!ve}iT2O4< zReur#KTWx)s7+@MJJLbuS5QjpuKg|J;2eID;T`h3G{A2*`OU=@1=+q2kGR&z{sg?l zEc7rNNO^_Z_blo|d=B@q7}uELzJ(kems4kP|Bw|QEVO)GXq)||_*c1#a8z0KH-b*TMSQB|WONG>s}Bb8A;QzM5=@7n?Y`%z7i-rsy}Zkuxo4@R zh7`Iyo>;3tALNO8aSnBP&I8XYca?fS0r_&+_7h-x#Qt!nInQSUVz>p&XV=^`LAOlu zAmtvNJ!`moe1M|IiTDfti8%LUpvQtXLzK^9(x)~fTAmLD43NO5wn(JrqN~U(&Xd18 z+Y_lY%IlRqkyG_p@(;CTbQL%DT3-qA(fzBg+>mEL(fkYSmrGc5N67CGE^SiRBZHjK z8{|0kDhDOvN^lI56swPbRqxbM5>=L3Cclj(x#42gSlsG-&G7$jR-&Jzg84+=ymppx z`}{~6MtdD&_~F=*8U7^6{@|smcD@Saw7P78xnog^W-8nc}BFj9SNM+@h9wK!YQnMkz z92Nvw0N!nE2e-qM>b@85Yer;IzQ}PIS)kZdYg0T(_X*&*3FPm)26kNc#&qAjQ1Axb zjfi*=Ws6lMBDEMdH=|T~Tz*J-U3cZIEmd{5vXk1-hu+0-f^xkgNFI`G=zu09SL&Gp zJKFpq?RW&uHAN*`fqajoJ&S*U(y3 z``+I;=~Y)BlF9QOi)F-6D#~vne3(G@y)yc?Jz^H`iPuJ~m3S>A1w`H#kEtq<5?j{h z5u~>tRaNEMIWuwB+1SK5yrvn0-O5LXdv+_W=2b}M8(*rQbJ5r=CcRkByJWXo_im zjGUGlIrR|hJpqzKmwEuiXEYr98gd50#0WhQww38xcqwzN9?oe3x8)l*FmW) z#F6c#EnAVw;lkWr+6pJ}Nc|_SFiyurky^{jBa32pui3X5e?01QDi&-ft*tH z3(K0BX3CP=L(Vx|$!10)5X#0m1r4}s{_6LUwpk+r)+RSPHN0Qa_MqjQ8lkQum2p=&fg(CkFDXw361h$~6a70W`b}u5xVpkRg>qk`!YJCq=&I~PRv4MFMrT*( znKQ@58^$rm@Hw`W3kQvK}t=?Tu(SSiq)(a&8tv9 zp9k7<3jpV6pub?_g`C;bYr9_rMN5(%gDJ~vsJ6GRcWv9D{d^Vj&+ewUGV9K~Oy^iO z2Y95869Kz-q6I86olR92g$mYfKau*%2Bn@OX5a)<}d|Q6~JI*7cD-p@oFWJBuYpcjL@8|LB z+DGw|{qSF^`|;OoJ{?2j*%9s)YSbA4RP$MoDgNbEX-%6a#p~U+N>dBxQCZ>?$s;DW z-O`qs8iUYZd-Y{fw-)=iX!$yKvP#{;;a?4|fwapOU7^yRyHD_Ahx-dZ{_g&QA8zLV zDcnyT#`n|zA>7RW7Val+nEf`S_Ngw<9rnIsE#n*3;~d<1&T74B1;{xe2uur%VK8R( zI@aCaVAz;AGPv&cLb{9n)*mFM5qdjB3sU2}#F4Hx@7;T_EkPCwM+Ubgd=|ZumP4@u zcO*1JmU%{(ePCs7ag$9IQAQV4z+1MF?=eizX#JjfN2-P_*|B3sTfIud8M{n_3aRbq z*16*&+f$8k>C;q;VYubQSz)6{Fxv`;4L`38vEc_mZTOAOzU7UW--O(^A6163TdOW9 z#PGb+Y+l6G--UK{pHu+?Js_~ng1=E9LRpwV$r|#?=SlIKYF}D`9X$#L*4BNNV~pC_1$+u zd&bmba-o^&j0ad8qps&pLir);O%_YB6s2fel|dZqA&)P&sGRsWSL&hTm0)!D8?JS7 zQC_365%6F-${>uReAdf+{Db9#T=JbxPL4*8a&y#WC$wkdTs@R<)~LleskUQ5-$SPz z4K)+C68%c#Fnp`T)Fst#d0mmPlrwcZ8+GcAh__!^6*8cwHy&hJVkY|8*{L%6bV2sK zQ9QH%oBWBb-iDt0%P6Rqrp!h|-P^4@az?v+JIsO2)`fpNn%kfN;!Ys;FTc~X6bBqKf{^fh3e(Z^B03R;Tn}QzkLpw?=t4_S3Mp4nmZlH zk$2=??#R2%lPU5jpTC9lXQxX4=4p^Qq>vjH*~2_o5I)|6^F&|(-hqfJ)^(T79}@|} zat;x6$f*F-8&mhOSnfqaPvSCCPIV`9(PRDHTL&NLFWuj7uNR*4&vK*3`Q9C|sL-PW z9eON0z-uEBiLFgaZ#bmj^&nI57?$?wUgpXawv!4?#~YDrqmt->2w%=?YSALkvB znj2PcM|0k=m*1St;B?)O+E{P%`?jOgqQX7%-^1O6?zg+?V4SEe6sbqBm1IEKX z;8Xl9Nb#r-P}Z(<>or*B`KrvF1(98D&bxag$sYclHT1hR96wEz=^~N+2yNjBv;|;P ztt(&WU@Y)r>A_iJjIq4L;5|AHR{9U(MG?WS2xItdMq9xbXc38jjf3JSajAYt9dkGmMa8D<7H|CsQqwt2xNZg$sb^(s`s2N-hg0cf;GGtj?)q}rM1PO&Q2F~# z`}oooBK15(i3Y5RM{9OmC5sdfUjL~Gk`1qm)YB1|p@}4CuyAx*PT$4ez{G>xxGmlV z?;x+Jnry+?;3TdNWcBIh3%kmp8%M)PKaRuxOB}sr92L27$eD!s(bn9{RS^f)CZhcJ zZop_2^H4Yy1r3Y;nyj0dj+W~tQ zaVA^4u#Yp$WOlPo7H?|g3)4=$;dk55c6DajrOxfQVPh}(+s3?rZDvRy`dGSDm zGtdsnJUO#hEYbJlwodu#sk`ko=bW2FjC6z13Hw|%FrD`gOqMnCP16~HL`A}U6Q2&1 zrS`=IsmBD*rdqqI3HCisLH}}v;j-;!_8eKG+3&_`t5NPg#=%nN{U^s85IaBHd<;xL zy}Eb)&D#|?dE$we>;Q5mSimsOD(# zjVqnD&BX;arAH|*wH{XwSQ~N6ISSsxO}z&{AiyX&v()xtwu3Rhi0EfL- zg@vVE+A&47%l=R$y#00T^S#G*2_){d7eXhZb5QUt&sQCkOV@(P&ZQDjg<^Qw^3M3` z>(!p@RH2$(>Z=G>_SI@U_mZ}oCm-e+&?)*p?)7}mYm0#-KHCTEH+fK>a%BX#qsQmU$nkP-^iV}YO{MvErc`lWIUTyv z^i7hsg3>S)hN=;i{f&1>#v7IM-Tr19>n<<~l&yd;@9$9V>2R!EvUhN-)LB8(fafcF zyBk*l4|Q?Cdyo})iiL{Q=DMGs65v-G_WA5~-Ni!eSaY3Z9FUvS;{Wker&TR8h= z#Je~b_WjzO3wy(C>T4~u*0>TV9n1WIA*}|3QdDC`xcj8TT-n7;eIH?G0G$(ud>+?8 z3F4#MB1|L${nPSazj?2@%vpU+? z;|Nz5aOzoPq4`e`cK(BuPu3{2`OhA1kVyT)uD3xStk%0#Q18!QxRbb5y&wDymC1)= z;Y>dj*7*x>h7{S(CD?{fsu!O6s@do56&SmBDJlo4bPgBcR7sST+@SiWpdOJ=*sjCe z!)f5ys~${`R9ctw(-k(gF0&~?A#-VzT1yJss%>{YR%Ul#XD%7z(E7EM(J;VKK&lu8k~E?E5&UT8 z(oFrPt`I1kGKN><>Tlj%)p6&jn+9jRQrk#Y#Y)o(m8`fAL`7;_M0bv#BiXH35P)3X{klyb{EcDgR*_H#$AgQ7~KQ+A%}IuGpTs4$j70GQeYEg{C<1J zhQFWFL%*%8q>dG}pE@I_-DMBJ4*vf?o1Kcgi_vSOYIBv;n-ZwH>ZlqA2f0;C$6Ar9 zLS?B87P}Di{3s1nszz%)GVzW#<1M z>MV!x`#ar|?x@ZpZXfzB(1)Pdrsg=&d@0sod-^*iEqii=zKkcBNEd|s&p39&$GKds z59Pw?3TF0Oq0`hwqOKG)*~zukF`hJ}66U6>I-}&9SykJc2gKwMB3f^djC+}_H=+JM zFrD|nQnLO?4+&<{8DJP`S|fKp6zW-wx%ntpU~xXjoP#wj-dBB&_Y516O4&vlWM*Mf zeXt#oONi-EA=24^AXgl9N(`!@mu>E^Sf!~F{j@C>%~(;DaLwT4r;RtmIw^8cU7qYl+dg zx|djLWiK12wavyYU(;Tx-OCpnzJ%8TO8;>HRGUe{;=HdN{@g>gp)-A`8UE}2j4u0@< zGaa+m55|-)S8B-yVbvt^E%kP*3!hw-S|VBZV4w5$>Rqhw5Xi1AOp^f4`zWg<(8~%#>NqEg_kYS}BCw0Y_rH$!A;52g)d08@+x5?P;)C-#WzaO4;qQ z7MrI6+a$cb=yzot|3Vz$=3=w~(SjhfWbgdOlg_+Uqh#JYFB8e5f`ZxtIa*==!7*ik zyup{U{i}^#`)y6qMmTrJ1Rf)4_x4 zaNn~@Y_c#5qnW(u`XlhbTiv38%%LLNgay%~In4tiLE5BRiA)cXUFfCHgwkoCk?hSL zIv!5+?-T)U`~)9YTWlx#OWei)&hDEO*?&lc?Vnk?ev$stZ~8=Id8ECcPU(wC+ELNW zvcTq4^E#QkXzC*Q#a>Qn1SQrx9>L4?Xgn%Mm#BK*EEBS6qL&c21hGN&ictLI*zz)3 z6*c4pDk7SZUBZr9ss7k4u2~|~_$B;N$)v&nSZi#)78A?Rz!rS#FfEJm*SlZ!4P}Vy z)U;wb*JHY)x(Q*YhDE(S&5t|Y)3lAM-u_t=?lOD}eyQP6YVAmkzyx5fEXMh|OoMHu zMk3p`$iXe4-|D7h?b$8E^a{2G|SQjF5*U%hMeYPJ7Yg{ZsK7|=Z4;9 zbER6mfkAClSS;1_Ace4)t8~iL34zRo5-@G8RiH2uZSJBLUsc?xVSJWzv!LZ)tY0pX zY5oEBa)S4*OZ9zgR*Y#ga7PsrRwZ4g1K%RqhE-9ghlQOVC5|i#BDIyKN-{?fjw!l@ zz#KRNhn-t-L=iCqDa|vPQcr%WO8a$>3Fk-5{YRn(%=JgC>w@i<&IReD9Wf&tD3Wf( z<6= znNXZF|B58~US)BefI0Cew(l*JjFpZrrB@Pz<1iN=cu(wO#?MmO8Q1vdCxyCk>A8i8Z z^r?jV2`Px^q+pnB`~X&`;^7S_pPkY(HJ-P!3X;8??ekQ^M&2j`#I38OT7R_Dsy;E2T| znM2|c##MFm#8fQgU@CC|V6fvnhgzFN5y z#tY@jrBLfhjAj~=Ah7jKz z{!Fe#AFl6w==fw+@TO?DpI1im7biMGFLX-TmI&&{WCP?7*(%X&S4zT zEoT9QK+9KBlj&knaZR>nk~{22Evh?6Y>-SROHp|c#)61+>?s{ms-(rFNm0E;Fh1(< zpS>)9|Bb#`%f6X_ZufNaotPAo1-5e+_oj3O_=JH^a_1=M>HJ4LX16j@)}>Me#6Tnw#5$Ip~tXwO*!eGui4PymTgj*FHY zUpK4(#?yxpt^YKd=wB-(=;%z&gr#<(G$QL>j*V6{9+|OWV_Z&`GO!#fVS+hs$7BME zRd%crk*dc&a@34CpQ)u5bDwWzrdaDU``S{(_(bA+mF9D*kLQ<0l~%{nm>jb*Me&%g z*|9bpkEVfve*&J+dI{>&3eW=cCORshkBjnj#Ybw4!btw**C%)^zD=xcuIq6&vY{rdI{r6+N(!E zc!IQDqbTLX{DtuC0Z7r$OiiWz$c$}9RcG+*0pRYzNH%R}wyR;)Ma*&asfMX@hqm8> zY1vuo52Qs?@-*DXT+l^D@S3{VrISy+L}f z8KL&Z^C*As@MJhTjT0WMj1#W7Qp%{9_*(9loV09+ zC8(Y5F1wU1mscCKXWYKPd7pBkEL^O+yg>D@#q*T7Xz^^`@b;KCcvcK$cakm0Q~BoF zyE2xXtM)uG_RoPMB-?{bha982pn}IyNGmYy4Lae)u2sc|EYcPuu$|SR!9>fBZ1ft# zo$h$p)#%!&;zix#tx!nEdy=ZYbSK%cWt@-#E@OB|#b3zzO194-n8frrJs0gd`cf#*99Vs>=%g#GTY5REn2XlkON`Vb;6NXn z+?ezN?-WW>Jc>A9Q(L2Jy{S<#`Zh&K4FyE^(5DX$zRL9Q8<>qnXlpShZkI{b<4I z>%F})*hRHawwXPupS-l|iD(~X!lu<2YhLyFAtN*^rq1oD&r1J^3Xxc3sEgNAQ2 zTY!qCd+vOItPUU5X&;XA8Y23o^A>$9d7QV$FqVS>FWcj4dFwcDuc3<<&sg5ws`{-i zY$Y3F23|h>AT4oFS7_)Y%_n z-QEb7WUyqct=46s8L;Qvp>iY27)c_A>>YvZ>G1^$6CQX#-jFX6ie)TanrL23Nm=Elbv%1l%S5=5CmxA8 z`V?m$_Y{YYi$rRLI_G>6H!~8gPvK{?97ejRI|^9@+vHI_4exO4Gx*6+|S+Lp)Yf5kIKrsl$oq)ZxUlI(?}ZKn}%Ld8rqLdh@jjg8?>hVLNw| z5~2SE5cDtk^qV#P%b>r;;bt)RbK({EMu_qz0-`1GG@`p-ar zpQisz(LZ3RaYVO*1JHywm%7VbzwInhtzwI66|cIj;&VTiFLW$lB9^ChEMKZvp0#rC zy-jn^1%l(?wEtxsT=L(?!2{ckg9qt*AbAE(52EbD2XY*g%Thg_)yUBRIIe6&%M1<- zv-q9EFEGxZHpCt8wR`oyVO6y>aIzJ?MDG=C&)lLpqp4=I%U)+`FqeBoB7GjQo%rPR=3ucCxNnP9T3)69{7zEr+s{=b`Yf z#_GJEOi%0Kda3|TdYoth4DEHX6()94b+DHG4L7W4S-{x_b<}#WD&Dz)34@U-Hk>eS zQc0H+#^K(CakrW<-1*|#YyJ7c503fb@ZfxLu+VQOQC|gKepP)PvU7dS_3G;`U0=vb z>!GTS=EFTtxetSTfm>e>=GNE3cJ;MbxAm|w$*Zr0s;ygAvTgty`a)IYN1*JcvFw&G zV?e06c9AN&g>K7S=(fy7!o5?4`LHnL@>ls>ymLMmdii`<=M%BC9-;E~2e_BGd3!u+ z1g(lJ6-u=oejTW)_W9Q}OF<1Y0_!Ju1%0QzMh!XtHr_~l6B0ds@E zAwgh45I8Id93BJ~+Dcbl9&{QTserAA)@2yzv?}MAl^Ag)1o!M$`^dH40JPEK?6=aL zeJtXdauH_2;t_`mD&Ste5R`ddYGr|Ip0>+468=g?aaweMv^Lwvkw?Ls4Y)v zbcH$!+B_Q7x-W>nf&jN1#q^y?Gc%$EX;4-vaGKZx4z;|kFp}PYX|_hRAe_2KRM-55 ztm-vKfzd?M`4_gxl*z>@rn)y34wr40@<5o^?NYCW@r0wm%=Xz=mWt9lXr|tU?+uuD zoHxSQfhh{pkq#voQc6S3$WKwYbp>K-6N)b4h7~RFC$hFs0j8sUR`@`@NOjJG?F`*K zH<_F!R|?*yYQeAC8jA&dzY+Sr)T!!1f)NnLurp#R&8*xcf#%!VM0U!)Ii?4jk3$u; z3l`ov*ikZAxP36uf&`dXBXpQw+*S!D@H^q|+x>r+#_!sv@q0m=>&-u)ogE{*&5hxr z1rRnr_{OMS!#{z3kOEA+M2>l0KLc1On*R+}$9k+_+FqzvOF&}Vj2ss#m>26}Qv3js z(`xcIq@w&4B6FF-$zpsg%wlW-v%N)2i{A>s&L=otH=*NPmj#eTP8;!@R)_LUqmRYTPD0^oX|9`H^LSC^>{ zVzvunwh!{X4sr`DV+$ju!gUsjQu{!NguQxY@0J2-exQ;c#C+Bb-q z&I2K;+)nqgBO40kI$}nQcT{}S0V2xE2q@Oa#@ovxVA4RvVHu}NAu-OqphBTEe_N(! zZXhOTL16Gjkae#`icHgn%1SD=6QI3m3!m>oo`ELm;sPqyxfC-~*g{k6d z{1!$#ckY}_G=B@@Je4Ya=a8o?Cj*{|T+ch`Dc7TN|g zT&n723q#%x!rfHS?l>Wb;2RR0L)M;ohgjnYWPJu$4;ELSp)dB<=4T7`2mPTioE7f8 zL>5L35&MzBGd_diWPtm^yyhl&b+{KrJ9E1z%`=rH2*5K-t>&$UGR;k65UNe$;!`v| zJRXThDNdEf;&wciN??~?S?I{iRK{(b9mV2S|4uS6SSr7CJRVKXz`25KFT%Zpl@JXx)ift3t_G0mETbXJW2;!>GSXrHJTpvGvlveb6ytc70?d4fYF2{h zId}jpw9lu1A2NYqg3LhC`K;3e42~xObcKq9?=g6rWS0FC{k}voQn5c%Aj|Wta{>(R zBGJo4&QU|9bobb{jVhxSVPD(ARCg&xxv;zqO}H7;d`ve7Eh5L>7|0U0y6z% zP)T#vc^*Y1+m93zWjG%@G`kP60|adgWHO@agtN{M1X@h*&Z25f0BvPY1sVrKReLm8 z*{i0|W?nMJv!bfqCF+I%3S<49y77yuIRnRvu|;aRXe{2vKd$}DA(6{UJbQ-Erq6WB+={kWkx58KM&#taPb zrgJaN?O0~2G=>v6+DoZ7sRQ15PAOFfk1_3ekYKdO2xFTK-Fp8A_6Dq9qC8LV z1?Bm|P&S<9FG5(n=2sI|7|Hs4mvyjwOK@hEF~jPX7jhH}^Cuq{uM#zut&N*>u1U%~ z)08b=8=wxK&E3Vjw%yLg^}^S`*Wm4KT&wn?eyxkT8&cg2fY|I1ZE>TmNTeEND&G;Q zJ!5K*if7Qf8=|M$*MV)~&S_td02DTthFsoyzv|dT?A=Gye$};V^91+y{Z|34H|w1$ z_@<8(#{=dofdUZ`EjNPhJNM+T^%fHUs)&1w7Qj4?DiqPy>(tiEwQARDAD2#3ao6fa zl_ycAIH}0^{@_%VO@-Rt8SfC(rq;liIt4MjbC4HaPKF8{NI3p=#VR zjbjb{me*}4w}Ok=dYk&WUH#mFpK93CT8EjT_0D$iUD(iyrRAz0K9+fzR-gh1_7Y{E ziiy<7n7%kr6|4VNCirgde25nO)|M-O*%t0%pyW*Yr;CIl(6I7Ws0;Po0=&&luzZks zxq!J%H7cYU*8!OP=!|^Pg6tF|U^_~ubeWsRC3Cl2*a0qbnO#*n->xb=Y=$+XK<6kP zzHnZCWJXM-B_6gfbFa6#iLbvxSgIs#Rgw{wWR0)A;T|cZY9hCTgE zxv*3F#;61&H4Q^`1lMO`={BBYAha_=qLYVd{qghMwkTR2WZu?YAbU^iL#lDX#-3`* z@U$*iccJv$C|g!Sdu*^_>SU7SxKTgyR)qEc)U8o5t-sej)5qO{a-4$~nVf&Z&7+Ws z(HP-7NtEP0z&7hLa%t1e^|d34XfKyYzbXcA`-1v^1Y*W(A8+lnpZu)|u?~h~hVjx2 zJA1{5tbaU`z=N+?q5Lh8ztI}aOi@DZgU-l9IwNJuUI%n6NjW`U7VC^4MPu=BK9k$6{vAt~`4WuN>^myS&3nh(n?GzRagkvsgRs^wP<^bMDl&8Z5p(lR z>w*H)GVKd4Gwp~P6>%ft-5Qj^5i(47uk6DYG$%}Dceby}wH#Q48Mc}8f=FI{StPH2 zG*T@4Yf=)**&m4t)JOP&`lobAOQpeb$|cEMr$T-&%X7;F^L-WDqH0Rv4S5?-7)hB% zwm@fG3@@sXT(w$f3$1@o+lN8Fsa9=yUzys*o!WA8W?{P0j6?&>V0DO%TKYv3eLra5 zv>(iE+Sdg(ULJP$Q*dUs8)TxDf7Lc>u|*DVi(j>q`7osj%%Z;ZQ;B`8fb`Ra6^DAe z#~pK8Dme)7T<3V6>o8CYj`l@MS7hWh+{4?5M_AoVUM1*`(QKhmL@l@^fQ@eeFpL#T z@8$-l|I@w`w+mnuOKmo_?q>3q0U}KLF@t-)kOjqf6s*JJT0;G4JVM&d^kfUj3A=~f zyeK&VIc+B=kUQlB++IMTgD3AWNH^{W;GLR!K@sywB@H}-c7dk|xTX zgW${6_~3mN0T9&C+4=$r5KF+yU9BX6$6_vvaiaus>64U8-^Eh}FT#BQsNm=B6#Qi_ zidFD(H~55L@IpWMc{>Gvg==FKyuuA03kHXB7ajckoq{joB3T8mbb~){1cIOK2ls7I zw(8)i9%%BtJQiKN{0CU1_tS-o{k_a+U9hL|-FJJ&J*8yPGnZ#q&9iM!m!TBwRh6*{ zA@UE&Y~Qg%wKnOwNw{a#^OaaXs;iRe@i$wje_O-oXWd*GUbihW?m&cpO8Dz#^v#}L z`&E4ty{BE@BtQ1ed0K`?E9K20>Bh|=+)Pq3{Nh;73h$+Mee-4E+SYr*8{=LQ-aU=e z41G_7;aXmCdx!thB755uV|g|_)zt)}iTqLUHHO@h8{WbF7MYXRQI$hwpx4^@KZc;2 zRr5#ONk0(?qei^fJy=E1f?G88w{yhX?9K-$(_SGrU#d)B-nmR)^2&6HE>m#iy&LJq zy_?oo+%jE`G97)u#L*!`8Fs~G>Q(i1{ptqx+p`{q$BaDc&k4^B89i1T#&Y@l>&bF# zI$%Zih-HhKL9z6MkWoHW;to8(IC%hWVoLY811DgNyg9Gw~UYaE}v@|3;W}HL1xSBPDbOwz<2H6IMy;! z{qP;d@Ag`JU#P=(Dnq@QfqMrrt^K|qVHwjG;d^8T-?RGT8~y{nul2>Zb`-t~YVIFs z8T*DFiCD&3f$!vQ`yFN({pfx(4bFG<0%g?<;1BNx_jBX%P3?oYdQHOjZn`JaeP!L2 z*_QDY(=a-O@3l>I%dj!y(mwYOiy7Bt?jL3u6UTz*wflT;Sw`EW>0>P8zSa27>I3?N zj>LD-5PWZ%G)m&n*bVNRYw^vVi0{6w;BdtO_>LI?J~Job+mr5(r{Oz;XqXG;1ar%@yOA$jO!tm#)nMpYZ4PP z&Le&?@dvU-Rxq^%J>h*D1lDBCHGTV|IS z?@sxPq}-7Qe9a2f@1FDFJ7f{+<-Ka~-^h|F7=&EEHyIdnBxp9TK`v%7u8SwI{P)85 z^ARlh6JHcE-f^IRbUZkJ+t7KCWrT))(qtJwMu9nQ9KKtpfWCsUKhhno=*0T{RQ??-G4J-0vF_WpZ<@|AJq&%D&r{i(n=IT_!3_CSo&yTiQ)zyGA~p<%WYelI3| zVJP91hoOWona$X{qkNua zYKKli?VKVp31jyYx6V%(zZ{A08HeHf&8V&OE#vx8;IKD)#8q9uvv3iV2pM+XFc^{O+H75c8>}u57b1~3AUjX`Z`@sDXd-tDP;6C=``v=C1 zpL<`v0AtfM3|$7tXelh-U$=bjC_*7Q);6sP9XVFIgmI$uyK~;q31j8R7B<#MD6eAM zkg-Nr358_PMT@o#*;hhQhC9FCwjnne)f&3HuYzL6i4qF+-!|k52^G-qp#Jdd0lfV0 z+82I3jS@o3G*l{MC^k;117%O6jL_dR3hK<*AKx9Z_cF>E!xxfrl$3(Y$>oPMxYWqB z0eZ9+;rbeV2z}jxJoGivgdVrI4f)jUYrM|fZqT#@zd1Tw zHK9-~pa!`TKnw>m+#q8QhWm!4J6J9R;J2(F%5#X(pW*&ei*yb#>Iu!OLpp~T4TMf+ zj+%@?gr-Qpi`8U5$F%U z)uV6DGnUft8OFCjLm$Z=R}fxcoJ6Si8s&E`p{6B(78(zTD`X!_?Gc-6Na!hn9@lqL z5Ng;*L9Y_}M*F=%XugKtB(&*71^tWAQTr?CYeI)<=o>;OOjgjhgnq76(D#HcAE=-o z2<>^ig8oCODx#p63Ft9fK}Cc<)KDiv&mE|sIHAQ;6;w*7o1>u4gy!z2px!3RWl&9Q zF3KfkqI6%9(7whhV^2aK^#OFeh9XM$%T z(-_}c#&?!6ozN9~DCi(UGfoIX?;fw98H9e*;bs!LK|`|%9e#j<<`QZvSJ1(PhD>xJ zq~%Y?+`4$EaG}L3Z(TeLR%!%Rr;+X zbh?ZoCH>A;DO+{x;>FVMJVLXNR?r26rma-rE+SOHbY5os*~Hk|cr2jHjZ5hF>Iy(t z8kf>9$=Ejh=-iY(gbRBh`->=MkFE za(TqKkkAA|k4jk&&=aye_c8x&{Dn~IDg|9e=-gGH{JU{Q7^$AY{5@$rNWa}yqE?Y(Gd|*tXUxa=i8k6ZapMD=2`w{9+o*x=h2xX5(kNeO#fZ@Wd_YaNf^!tNA z-nSZa=x4LNd}17;!X1lJ`plR|=m7S=FO0(oUBuG;%2-Tj+cDtzjj@c-(Xw41D!wt6 z6S`&va{G<3lF*;ouD>;oC1k9^sPUa~JfRbgR?rEAZs4f#ow1fsZ>IV?<7B4uS+>FN zj8p0N7TfiY##w}xvTlDg))Tskls_5g6Z*9RY1w96oQD>9Q5UqxUyW<&cLpg#p=%jK zZw+0qS^>upGjtQ7`I!+DTA{xc;r_=T<1c zN{e&juuV;JO%keRxS7*7HGORK)X=~wpzIw=5n4%}nb1H&XA`OmO(3*O)7-?^qebL!v%(9HD2X!f(&eItzJEj@#6<(r5~8pkLKNo0@J8HH9u? zs&70Hlp{l%={IONpi!Y$2$d|{)byn}D)gF#+MKWuexpNgGk>off&7gNeNM`A4}sq# z4Sg{S(7~ZE2z6#U4-I|Gv>eQ|92)wG(1!5}`h}FEMk>nfgi?%saVTxGcQ8jwLJfqj z7zk*2Xt<3$l>7nEQK9iR(pl>OY7XshBb|@+Kswiij30O*6g|7>}M(BqcK-Y)fAT(_cKsSWm zWLieIBHRt3x9B&2E&Lt`MI(SNAmxLhB0?XQZ)zGNp-zMrr2#z@s*E6iwI_qiqoFkY z-kGYPT0)zT+|<-H{CH?jLZ54BD8o(OuR^YwpALB+R>1Gg(5eVZH(FCMVPE6jPz(Kz+!ucD zO9**yAmyi_Q|Py~xnjau;ZH-S6WT)Pv(OoYme+&w^Uzs@#!dzFuh4mf<}&uLLl+Tx zo~iyO^e4vfw-JE0h5kyvbLh7{bPrQ@M<1jtCZ3?*bjDBwNcufVzs}-S`u$_XC$nY0 z)lh5Vli4qXyNWjnJxjlC;_V1}+`J_Gsze)OpCqA=!qwtEQZ8e--NgGUe+l^QE;USf;JZlY0x*n6+BN29UC9!tK{ZuWS7&-3$- zdGWr_^qtw;TiBDxoe2_sNTsr~!TVtmsWVutOk$Og-b$fjEut%=T&U73&f0 zCOOTbCs7c|X%-DOcnpQDoAp8GCDDh-E(I%0^e6fy87o{2CCVX+5+jK26=B7QaYRnZ zR85E;GbIqsA!;Nh6YVGE;=~R_t6NibvB5{v-i4|=iG3hB8;ia1Z6nZ4#(%=uSnOki z@A{9e4Zta>so2*>hj!Iz3CEg={cI-S)l(NMNgPase|gzcZY2)4(INF~kJVNjO=NNc zpcZH+<`Wr_>LL{q?MAiKLnFKqfHezkkP)@;qj%3 zn}{Zov3C=95Pc@3dFa(y|!Si_@2%niH#FK+Ehm~QKc~e zy@W#XU!wowuqGhk))(aA)+Zw2a>^h)zG>oT8yP8}3yw_}zY^iUbjJd=tI+v6p8WUQ zGen&&F4vXhoFU3YKa*LSDMH)vNIy0OpjbCcw6(?U{f^|Q%o6R0E;88@y<@6G^q8qK z(R8LNM2ndmZ1KFD$;GYD604Hd`ymA@v&A|@UznVUrVy2g^@v6?xe_g5awj^@#qB)|$7JbMATf6~i1xoRkcOrH6#9Dx4hh~1Lif4Wa5-xYD9q#oyEOaJ% zgw~)*S||G2$|&cXzBCqOi&t_ji7MC@ABT3euznI_h?cj++9k#jov(+rM{G>Ahs5@Z z@kAw^u=a@wr1h;6u=b1XZL6bxu9I-j4v3vddv{2C7KM>Lc0}xDrL*Dy+fXpc{XIHo zTuXV6cJiDw>D)dzt=a>pHOAt!Qz}mH$T%HGqT_9G`nm&7=l6RL6lIgTv3C2y@SNkG z?F$))v5d_gkKpQtQ#rsGbm=_J=NXdHI{)YB=-B`7I$f&Q z^|I8~VC=@)63{~&)#|AQ&ef@pUfC7t?q!+hn=uW&+yESBLa#S32*BeV6zUZUt_DS- z^qVbCQ|)m2S2j+)GjS?<;j~Ui@;b>A>Vnf(o;dwVQacj;+949vX|55A(#~Xbi>ox_ ztv4=c=GDIN-z1#&O~mQK!8rA)rR52Au}80jlk~4_oPM*#X{wz)&vP{>mb{MBu68(m zV2fM)R0+4ZtqM-h+2h&%xmqH6y+^fVlpeNAMd{fyw{Hke^=yoW_%%0eQWH4!5$rJ1+YfrEZ{e19I$YXX3G=pC#})E6Ym) ztFyDvoP!Rz==I^1@G8PRaRc_L!_h1DsiRR^-Ic5;vYx+&;5uoZ9}32?oDzCvT^$L8 z4BUc_wMtT#fjB3vp$9qcbY;?YvaISvRQ6=XG@SOEjb8c97T0h%1;2jC4$nj6h<_ zIxa$a{;YyanQJWKM+f(?O<^q+&*7>VoHjS(^kXxeE)T`&&Q>@b>4sD2fm7EUT$UcM zBh7Gnw9hgxeAL#Xqt;!){miO?N3quvABFkjaJzqu!{hB(7w?XKb@3=VyW!R!w)(@i zP2oM11_1j$+t6(I=lN~!Z z@Le80zVzrEw!`No+)oLlkHw{?ChYT~sT**0K7i6jW7gGaQ~06|?ulD>oJQJd=g;R^ z2hi+oX@%2igK%1&aRBv-t|;6G^cK?LcU0#ud3e+~ZBuAaaa)7NA0x;8G)iw)y@1kC zvIo!C#INhBU-haAo|$iXk#i18mm2Qj9Z~QYrE|LAbY!b%C^go6#qtYan!`Jkepl1P z%hpf%7yW!c`ahKBq)H8|f?1Wcl@OluAL?^)$bV!F;B;&#PWLC_^o<#(*S!Bj^}I^O zE$)d}S0@0pA?u+z83mo~6p}i}XgT{v0jDPN4la<_Kg8nnq8m2a^D-wjX4#-aWXY7&o9pRAT>jQe9#8is;t*>Na6nuOEOGEV=JaZc-ZtJN7P=oM3b zT0>e}o5IiOq=&un+*az1>o08ExnThC=+g(KuY1(>3Ifq+j6uK~rR@q2DEK|7G;RQ@ z;YR9Elzwf3U#Usf*w`xg{bF9_QRwx2lHMg}i87Mjsj-o-tDnagpqY%%!s!47r}Id9 zB?+e+vT@oatN@K735~QW@QK8I-dec;r7s=u*sE5>DLqg2BkzEZ`$wTyMzkG|(tk(e z74loBODNsgW)gbkCYi$tB%L*II(j8EssxR3Ia#I6YtCAAW33{?Pcs^V3eTm#RZ zT#H(T3u4RI-X!WOh9 zYbf~Kb+hZ{h7ve|QUScM$2HS)sgaC@?hCpj==!8^XN-_y{tw)a%sg3c=aRD5oUAZdLSAMwWI{4w?gdImC4NBZ`UqT`2WeMFj~aO;eAt(Umer!z3Eu4sCx+s50ZM64 z+`y1Q_>9+?9P#!26mN76B)xSs*m+ydJP8GO-ogh}_jUs%fsQE6C;hK%hkHwFpk=4k ze%g?aG0+9QvYynINP0Cq6z6|90gp7MUOCVCox$B3Uwz^A6Ih7XVSL77JZgKKb6Sn* zJg03Ou4jcUPIIywqEcN*+MKi%LQ*M8^0v&z6uS^_d|tw-f_@fQ z{TYD~-j<_7S5z8VA)jmDv{jW5Uc=-fcTxjRcaZ+y=-L#e$4Ppt1s-X9Mr$-z)tYrg zuRJBM4DR05TLMaLd<1X0;rCyBeBHqOmNqEu)~_l$B0Uq+QK|ThEL3W1db+p3e;($I z&l2-d&KHhjQJ(Jov~z5D&IHtxR*5)mOVWlYMe|>MGD`L2I36R{fj`v5J*iv`@3@FQ zb5OJ~x~^_hcv8Xd@`etVP_M>!T8v)r(Q`RUyO9-mF8MTiH_26S4aF%N(fXO)ZL4>X zV3K}8siTbdyBk^0MFyN69g0iE+o1Cmh)+L=>REussDL>w@!ni3mZ4X^RmOYgaojeP ze@x*v{wd>)Grn5DJ;9$rPJ3HkUq9Nq{;}S)epHWRbyV{wN4(!h80Vv(2a_~D{et)Z zH$Q&;s`vj@3is`n_y0bMM-@ilMpmpF`n-V8gz@$9%-E2t*5*O@%#b4gsyZf8^kv ztczanh*MY8?$iW)4OX9=$tRQRv?b&UVO1ec@z0i(cG1&A-@dR(s)t^?)@_O2Yt*JV zt|RQ@2KqQM#rTPG`2N ztM>xYjW^cz0=8aw56V5`(JNniB%$ana|%ia^u|9o?2(4j8sz%8tJV5C;3bbKpzi*f!sigIf2StoApj0r~$3B)41(=XV8?WTqw-n zr+4A{3#lH6r?N@RJfyD==v)_*I_rZLyiNzC-dyE+S5VAVV&@Kipn@*-%|ZjPmZ%7t z>N|i2;3pOv-XKlz0J~YNxIu}X2RO)LRVJ7PPjHOMd4dD*1m_!AX7Dsxw@+vcbnS3M z-w=HCAhm#&PLK88V5=ut1>i`Bzx8_X)Klx39(?iC#$W*UUi3&u4){lJ1hHKI>HR=5 zmyIC+^x&##2mwR6>KV*nI+xxM0TwYSVF89nu$?Q?5Ccwd*%%su8(cLFO~4bbdWL2| zX=st&kO177IutfGv;YBIEe%Pa5mQ=J8$&CQ#MQ;n7IfrFH>81VuEB=RU>sM0p&OXR zHPO%uEMtm@E->^4JGdqqGQn{svs;0oKe)~{(U1e4GBrZ6LEszLM8i-}13yR!NIuK9+^ z;BT&_hN-|#Z_!%A44`Ma7d+iC6NGckH_QPoxRx49K|0r3!vZjd=?f~i5X|P9Z&(7> za4j|b0Dk9MYghs9G35-{WLODaaqTdy0snFBHLL{=28)gv)`PZOHw>FVH?9YUEubIQ zOT*7#7}qDm4zP=0?t!^?GwtZdu|4l&hCtz$d@u5h^<4})i1-o`Qjj1~nLkKylr zU@{v|00UR7@eF9h6>mHTQn`|imq356G~*R8mMh(O1I*>hHr@j3xrQ6>g8f`$jQ7C> zu43b3@F&+);}h_KYk~1OP)$@YvySlvaOQG1{sRKIyp3-`JXe76Bk00qHvS88xnhmq zz;|5nMj$NWN;XQuPh4q6MJVG+H`)rC6HNlaq*jP*O;hJi6 z6r#Bn7@dVyOp~JO80!h?T<%79VI-Hg(L^m>DQnY#<7Cs z%Ac)NRBndwfyGXFuQ1LO z6n~308A^njTw9E#f(O?Q!#rN@1S&V5mpg&Veb39CK;@S3awkx^r9u$XwU|A|AB5&y zPL)>hSUHNVr={1$4~@HoGOnWzdxeW!&yD+p`&{pg`-Rs`7f`taf*fGcQHMi9 z9j@ob!-5ajJL3_7Ua8V+sd6EX#ipfyHkJ#mn8v41G#nE;G2QAbm`(@fTg@atns-F{1Gd=YbOy`8xTt^))2>)^|tA0^X1F5c}kGU5G zBiB)f%R(^Mvg%iaI41Aj&~!y;!&TjML+C|>ud|#?w}jzbdD3lR5?8k49bqY#o9V8w zn+p7u?QMD>9OCjpy2bR=)5r8s_z2E>L6cHU{ zdMN~R#hTs-O_&n~9k^0WAB8?#4~?IMJg%b-UxZ0an+p<6UxnpdsU{$9;d*Ek z#G_nC9VGEG6^tL##UzXOm{t|^LVCh-o{Gyvdc`%+q=+AxoFj&tRQlicB7F+aH$f3H zg@;Wr*@zComf3XxwqhNwj-s8|AlR}Zdx(|rqoe3wc_nwlR8tj;Wc(RH6aI|gz;oiy z2vv!6q|S}9MdgCtMFG{hJX~g*G}U!kWU49p(7u4WSu0Gn#3-(sppMv*>qk>vu?yE8 zle3t~b;9H-=CaY&&3b8Y7sqgYGI)p+Sx);_7fs&cOg?r6=tb+*qZh4Lk5Qb@YQa}z zKH_?=V+KF*5!WU|kocBs2mUhV5Q}aY%%VNlOGCKm$o0t(DO!JOZ6v0JXve6Lm>ps{ zDhh}d57QWYUC%7Uil>O^=f+sk5USM@Cq`9J=TNQAI596&E7w?DPgDf-_O76b=xnC5 zq_^)ZG!YBAZkd{j)}J?<{SR$6|KG8lX07#R;_p^Dn+7v;aV*%MNcYda5f7`q7PH3vja#HLzxm$td$tU z)E>oJiOrc>v@i>;#bl<`77n1b*pas&fMhX;=$_z!KC!2W*7qmch-1R7HKT%-TlKSz zxFcK}QCm@ru*6=0cA`7ieN&p)oa>3HgP0wmt(Q(>Ay=N%NxV#R!o%HPm^zDhiONX} zoyEdPZ46z+SzLKlx{7PK-kN%dzi@pvrHkjeM4vw5pIkOR{lu?a4nA38^(c#K`wSHI zT=jegi;cKEeTIo?Tqd89Vs;dri7GJ2XSA3fLs#qjF_AuF#P>0loc$dNMA%5{^*C`P zR}-J{Vlh_>pJMSXSBlRh5yo27-e-!K&(+Omx;UAux6e!w#91`Jr$k)OHQ1+AjA^XR z-~zE-W7=zc-)5oMi^ml3y*RFdmR8V4u7lOT7tc1PYw1UHj24N1Smj(SzUFd3Qku}5 z^~P=2FA?iB(PB$QU#r*;6?Vt6|6et2LdSsbu`Cm3H=#3srokwmsZU6W-D)wvskR^1i1nJ$ z*ub0suvYY9D$2=|){3D_r8%x(oftz@1UKZ=L`rC88BvkXdU0Gct=AjGIb2Sr4PqHr zp0rVX!IkZ}Npz04$j!7xY)$moW~{4O*e158F*wcD0c;a{u-HZY44aTJS{XF8d-i$yGkcj^vt3X7fZzRYKbIETgX*msJH;N1M`e##rMY%g_KLNeYe!|T7|L|R(=6;0 zW0)R!I)Hs*bEfOruHYB3Ez{%dnn=Bv@Y(cNaTF6ioBk?JW9oro`^C9TxhS?@T*cHW z)+`(lH!|hKI)DS>4yGa$`%V0nX&#FGCLUqJcM=bZx0vvq#Dk)10$tbBz1R925+Am} zDgod1{>kUCIIE>)z0A;;iJMz$yQ*9~%2lpEDn8*Vu{$n`Nwfug$Mb|}n?#QTzTm+Nd{JhwZ%gJ_*4FN2aZ$3ib}x&oSnTg!b9Gn5jjX+Yd!6yQBJN1m*5_66WU{tCuZnk) zwe@*Te3z`P&ubz~(bng6(IG`!pVvjd6m5Op5X~vt`n(~=rf6&Mrr04xTZ1>n0V&!V zyd@4v(bnKCaeRulu5XJoQnYn_TU?T&9ltwbLL2S)-4Um@u^hkC`ai@KZM36uSNySp zwpGw|E&=HU5j~gR6TevHye~SmwJ1-zFM4xjJ3bJba=Dovi5Xl@rYGXCwzOyX9rmes zt1VqiRp4X&U!qg0w&tIS2Cj1bb1^nmTjejrgj8*nzYyD`YODOE*eO+8$8uyZYGm= z?;5@)-BK&`Rzg*@>I)7|Cz>=U7T$K-)xF*>P(MW20Q zbv2k0QLL%10oP}rcwHD%G>Rqansa^jNzz&0IZ4rV=wQ)1V>?|RCVY1!RhP&0&e%aW ziOJpWxv`^eKG!>A7u{+uPv5S(y<7plJ$2Tfq|$Yk&&-b+Wt!4;$5_stMG?Neb?2BS z2gUhj=&mshF(>%;sZdK_-Q5n_4(O|U%GFWK)V(31pPBpXz7mx~{FyncLbo{yYUOe(l*_G9Zg7QiLv?mm<%U-%H@rf*5f#df(p9r6H(F=C$42X{_gKEJPDjfs zPxc+F({pw89j^=H>g!vqo6R-Ucd~9dSAp+T-AArm{Y;(O$+F6meP`>Oxw`t6>P%dH zedp_nxrX{K(v@-*_%6{s=gQSD*L`M6>_5?WrLIb6i)Q<-(YbIvG_KVJa2<8{QP+rR zbHPO44Z4n8vwb(~`f@!qZqbe7I_j{k!V39WM}KEZf6x50&T<#0G_i~6XWa~14t9;f z`kqPWj|)V&-<^DS7+PnVc2*eCE}iwAs9hDtuuE5m)&dvB?DO5Fb7k5VbP%Z_ z(?RcYBwwb4;8RGEOb>%DASEz8Qm!E-GfghOgVdg>H0U8xH>OoCe<5Ws&2o8#l*L8_ zTfRpc%CxD=SKr;bF-*~MlHVTP1g58nc7A)g{POMm_UWcECB;?q`$adG>04qQzhAlb z71Z(DuUpJyAL8nFK(~s^+wV8s4kjVQ59wDfv)@78X(pf87^KTw@qUMNkC}ESwnBQr zmF9O?_aBo(%dSXjSE}HU48PxXRhW`Pvi-_*wW(k&yJ3Du`1!1DXoBw%o#p=Ebn|di zxz2Kb@I*+y>8Q?ff6yE{!E{VlkJb5o*l54wIxnWWAw_;CbiPb~rcCxbsS9O#<~+;q zRE5=ZM%SpTwVJb>_N^BCovD!XtS*`7T|4cW8 zNkFl`b>q2m^{;g$O#g%z_`cDt<;vB6(CuV$@h7Z|LNXvvQUt4P+fTUBb--6AJbRjCtKo>WcB;>vccE){XP znQBUlslbwqpZy%AHB9YX_xjb5eq#ETu-C7y^gEM&!d^co=_=FH;)8z9(w|(%{OUYkuyMc3*!ll6GHzuU`YHY7a}#w(C74*B*40KOc9;&r>on9WAJ9?A9RLnWRvzO8!1l6Rx8UzETQTHGe;;8&_?A ze`x^MA%_5I6qmDqkTi*_fq$s9KWbb>VXMPm~65HSljGjphT=)YeT7HXk1s%EG)o$glsc}*}D}{Nc30(4$o}ILq{MNRYe*1|KWsaw3YuGm`ZUSBK8dt9wr zK+5#jloy{SbmgknAjeeJM>t z2XD73XEwS5O~rB60{!<|=*)mT9fa z?qOyAL%D42_vwdm{cL;Ee>krNf5sb8VXjA1m}^ZBnq;Y(cDt>$)zqVcN}a9C1=p!i z=ja|*3ap^w3hGorH}fjwL^H3cd)x(oP0{(=trR%cs&)BW%xx_ue~x+RKToDI=52Cu%P*V2Kpfk4oQce85sE zwLjJMK1c1ANt2oK>P`<>E^Q?$0*g^CD

    jmbq5IO39H5wrq4jTqy-v#a3CJlTYh4 z;lICL%|(8*rS0k1l7O{V}Z0iKhZ~NJ&|AUX<<^ z19nOd*;Ko`-456*ZDl&w?Qy`bQg9B{({67A4oY{Kn)MO`%cLa(sb=R@4m>914x%%k z)66CCv?S%y*rIM?;8`g*SKAL4rPI0ETwj!~?Are{R2E0p_> zt0q#7!CEbsq%bPr($W}sNqRn*_T^HjG4Qf9a|m7K9n5Co3O_F`bhQ?)MH7BU&=i^+ z9H^;ra)c%sw|CV_ae>#YlpJ_n+BSst%&w?Y;0OPGjT_HJ;bsmIwMsbs>S}09EWPN^hbr+y(<+CwJ1ICuC&}L=RK+EFiWg| z;C-p}Fs;sqQtmJ<=R@fr&sk#kNIEmj(wCjmW9gMu>`&>NRqTo6J=_u-8u(ONGF+?k znIw;(IrUA=!gI-WgjUOQsc?kWm%pWjBeZgVOZSP2Nv~f>&Lg#)uOyF=TFzI}>XBLt zuceJ6wRw5XW~rE|Y@|hb(rf7&Q7Jf4oFDj)6g5h#^9@@CWisBIZ>2G#EOq8d@1*&o zw7$HTHWL-YMRoz;y|i-_U9Icv@}&3D!BLi3+8^*ia?P{UvOD0T6q%>h@<~d~({g^2 zcI9ck{#QDlr}g?@={BtezG*l<@U!%s3gnw7BgvyJDhd1|)#F+g_*F7Xu(zD8qUdhkxEvg|t6qWu9?_9uxk{KNE1}!hiXvsjf@UAa{AkI7{nJrUr6qA=YCXeE#&1yB5;5yWZ6S zc*uQ-%5CuMddfLOWj6RX#Gdj9Rt}$Az2vclbd}@ZNPEeXSPY+O8_Kho@R_zDpBFq@ zZ+RhYLBMBPy}XtyInW^QpdwdfM)@vnUBIirD0eKvDgonN`UM%~g+=rjHLH~qWRmwV zEo_w&~t##`2z0)pi)Ea&&Nm!eq01dCP&g~+2O&{bD9E>8-T?=X#x5P(^BEGDxg z6r(!Bo#kF<7?WQR&>VYBQ}S@}L5%#+M@nGCeOo9TY9cvYai$F9pTO zt(dmuVRdFIb;inM>YIQyjMXwd;0DrouKPia!D6GkKSkQX^-oZ&e3<22 z6a#|e5)04rt;O1QW3VH-5$ZwhKL;41{kkv^R4Gd0{8!!nW!;wO{3W8h8ZJBξ?

    =<> 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 diff --git a/packages/NUnit.3.0.1/lib/net20/nunit.framework.xml b/packages/NUnit.3.0.1/lib/net20/nunit.framework.xml new file mode 100644 --- /dev/null +++ b/packages/NUnit.3.0.1/lib/net20/nunit.framework.xml @@ -0,0 +1,16883 @@ + + + + nunit.framework + + + +

    + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the path from which the assembly defining a type was loaded. + + The Type. + The path. + + + + Gets the path from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the path to the directory from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which may be the + path to the assembly or the AssemblyName + + + + + + + Gets the assembly path from code base. + + Public for testing purposes + The code base. + + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace facility using the name of the log + to be written to and the trace level. + + The log name + The trace level + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a file. + + Path to the file to use + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the spcified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + Get the display name for a MethodInfo + + A MethodInfo + The display name + + + + Get the display name for a method with args + + A MethodInfo + Argument list for the method + The display name + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TestActionCommand runs the BeforeTest actions for a test, + then runs the test and finally runs the AfterTestActions. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + TestActionItem represents a single execution of an + ITestAction. It is used to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + TODO: Documentation needed for class + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext + + The context in which the test should run. + A TestResult + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run after Setup + + + + Overridden to run the one-time setup for a suite. + + The TestExecutionContext to be used. + A TestResult + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The test suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run before teardown. + + + + Overridden to run the teardown methods specified on the test. + + The TestExecutionContext to be used. + A TestResult + + + + SetUpTearDownCommand runs any SetUp methods for a suite, + runs the test and then runs any TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + Overridden to call the inner command and adjust the result + in case all chlid results were inconclusive. + + + + + + + The CommandStage enumeration represents the defined stages + of execution for a series of TestCommands. The int _values + of the enum are used to apply decorators in the proper + order. Lower _values are applied first and are therefore + "closer" to the actual test execution. + + + No CommandStage is defined for actual invocation of the test or + for creation of the context. Execution may be imagined as + proceeding from the bottom of the list upwards, with cleanup + after the test running in the opposite order. + + + + + Use an application-defined default value. + + + + + Make adjustments needed before and after running + the raw test - that is, after any SetUp has run + and before TearDown. + + + + + Run SetUp and TearDown for the test. This stage is used + internally by NUnit and should not normally appear + in user-defined decorators. + + + + + Make adjustments needed before and after running + the entire test - including SetUp and TearDown. + + + + + A utility class to create TestCommands + + + + + Gets the command to be executed before any of + the child tests are run. + + A TestCommand + + + + Gets the command to be executed after all of the + child tests are run. + + A TestCommand + + + + Creates a test command for use in running this test. + + + + + + Creates a command for skipping a test. The result returned will + depend on the test RunState. + + + + + Builds the set up tear down list. + + Type of the fixture. + Type of the set up attribute. + Type of the tear down attribute. + A list of SetUpTearDownItems + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and a thread is created on which to + run it. Subsequent calls come from the top level + item or its descendants on the proper thread. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + The TextCapture class intercepts console output and writes it + to the current execution context, if one is present on the thread. + If no execution context is found, the output is written to a + default destination, normally the original destination of the + intercepted output. + + + + + Construct a TextCapture object + + The default destination for non-intercepted output + + + + Gets the Encoding in use by this TextWriter + + + + + Writes a single character + + The char to write + + + + Writes a string + + The string to write + + + + Writes a string followed by a line terminator + + The string to write + + + + The dispatcher needs to do different things at different, + non-overlapped times. For example, non-parallel tests may + not be run at the same time as parallel tests. We model + this using the metaphor of a working shift. The WorkShift + class associates one or more WorkItemQueues with one or + more TestWorkers. + + Work in the queues is processed until all queues are empty + and all workers are idle. Both tests are needed because a + worker that is busy may end up adding more work to one of + the queues. At that point, the shift is over and another + shift may begin. This cycle continues until all the tests + have been run. + + + + + Construct a WorkShift + + + + + Event that fires when the shift has ended + + + + + Gets a flag indicating whether the shift is currently active + + + + + Gets a list of the queues associated with this shift. + + Used for testing + + + + Gets the list of workers associated with this shift. + + + + + Gets a bool indicating whether this shift has any work to do + + + + + Add a WorkItemQueue to the shift, starting it if the + shift is currently active. + + + + + Assign a worker to the shift. + + + + + + Start or restart processing for the shift + + + + + End the shift, pausing all queues and raising + the EndOfShift event. + + + + + Shut down the shift. + + + + + Cancel the shift without completing all work + + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do setup, run all child + items and then do teardown. + + + + + A simplified implementation of .NET 4 CountdownEvent + for use in earlier versions of .NET. Only the methods + used by NUnit are implemented. + + + + + Construct a CountdownEvent + + The initial count + + + + Gets the initial count established for the CountdownEvent + + + + + Gets the current count remaining for the CountdownEvent + + + + + Decrement the count by one + + + + + Block the thread until the count reaches zero + + + + + The EventPumpState enum represents the state of an + EventPump. + + + + + The pump is stopped + + + + + The pump is pumping events with no stop requested + + + + + The pump is pumping events but a stop has been requested + + + + + EventPump pulls events out of an EventQueue and sends + them to a listener. It is used to send events back to + the client without using the CallContext of the test + runner thread. + + + + + The handle on which a thread enqueuing an event with == true + waits, until the EventPump has sent the event to its listeners. + + + + + The downstream listener to which we send events + + + + + The queue that holds our events + + + + + Thread to do the pumping + + + + + The current state of the eventpump + + + + + Constructor + + The EventListener to receive events + The event queue to pull events from + + + + Gets or sets the current state of the pump + + + On volatile and , see + "http://www.albahari.com/threading/part4.aspx". + + + + + Gets or sets the name of this EventPump + (used only internally and for testing). + + + + + Dispose stops the pump + Disposes the used WaitHandle, too. + + + + + Start the pump + + + + + Tell the pump to stop after emptying the queue. + + + + + Our thread proc for removing items from the event + queue and sending them on. Note that this would + need to do more locking if any other thread were + removing events from the queue. + + + + + NUnit.Core.Event is the abstract base for all stored events. + An Event is the stored representation of a call to the + ITestListener interface and is used to record such calls + or to queue them for forwarding on another thread or at + a later time. + + + + + The Send method is implemented by derived classes to send the event to the specified listener. + + The listener. + + + + Gets a value indicating whether this event is delivered synchronously by the NUnit . + + If true, and if has been used to + set a WaitHandle, blocks its calling thread until the + thread has delivered the event and sets the WaitHandle. + + + + + + TestStartedEvent holds information needed to call the TestStarted method. + + + + + Initializes a new instance of the class. + + The test. + + + + Calls TestStarted on the specified listener. + + The listener. + + + + TestFinishedEvent holds information needed to call the TestFinished method. + + + + + Initializes a new instance of the class. + + The result. + + + + Calls TestFinished on the specified listener. + + The listener. + + + + Implements a queue of work items each of which + is queued as a WaitCallback. + + + + + Construct a new EventQueue + + + + + WaitHandle for synchronous event delivery in . + + Having just one handle for the whole implies that + there may be only one producer (the test thread) for synchronous events. + If there can be multiple producers for synchronous events, one would have + to introduce one WaitHandle per event. + + + + + + Gets the count of items in the queue. + + + + + Sets a handle on which to wait, when is called + for an with == true. + + + The wait handle on which to wait, when is called + for an with == true. + The caller is responsible for disposing this wait handle. + + + + + Enqueues the specified event + + The event to enqueue. + + + + Removes the first element from the queue and returns it (or null). + + + If true and the queue is empty, the calling thread is blocked until + either an element is enqueued, or is called. + + + + + If the queue not empty + the first element. + + + otherwise, if ==false + or has been called + null. + + + + + + + Stop processing of the queue + + + + + QueuingEventListener uses an EventQueue to store any + events received on its EventListener interface. + + + + + The EvenQueue created and filled by this listener + + + + + A test has started + + The test that is starting + + + + A test case finished + + Result of the test case + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + A TestWorker pulls work items from a queue + and executes them. + + + + + Event signaled immediately before executing a WorkItem + + + + + Event signaled immediately after executing a WorkItem + + + + + Construct a new TestWorker. + + The queue from which to pull work items + The name of this worker + The apartment state to use for running tests + + + + The name of this worker - also used for the thread + + + + + Indicates whether the worker thread is running + + + + + Our ThreadProc, which pulls and runs tests in a loop + + + + + Start processing work items. + + + + + Stop the thread, either immediately or after finishing the current WorkItem + + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The execution context + + + + + The test actions to be performed before and after this test + + + + + Indicates whether this WorkItem may be run in parallel + + + + + The test result + + + + + Execute the current work item, including any + child work items. + + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + ParallelWorkItemDispatcher handles execution of work items by + queuing them for worker threads to process. + + + + + Construct a ParallelWorkItemDispatcher + + Number of workers to use + + + + Enumerates all the shifts supported by the dispatcher + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + WorkItemQueueState indicates the current state of a WorkItemQueue + + + + + The queue is paused + + + + + The queue is running + + + + + The queue is stopped + + + + + A WorkItemQueue holds work items that are ready to + be run, either initially or after some dependency + has been satisfied. + + + + + Initializes a new instance of the class. + + The name of the queue. + + + + Gets the name of the work item queue. + + + + + Gets the total number of items processed so far + + + + + Gets the maximum number of work items. + + + + + Gets the current state of the queue + + + + + Get a bool indicating whether the queue is empty. + + + + + Enqueue a WorkItem to be processed + + The WorkItem to process + + + + Dequeue a WorkItem for processing + + A WorkItem or null if the queue has stopped + + + + Start or restart processing of items from the queue + + + + + Signal the queue to stop + + + + + Pause the queue for restarting later + + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + TextMessageWriter writes constraint descriptions and messages + in displayable form as a text stream. It tailors the display + of individual message components to form the standard message + format of NUnit assertion failure messages. + + + + + Prefix used for the expected value line of a message + + + + + Prefix used for the actual value line of a message + + + + + Length of a message prefix + + + + + Construct a TextMessageWriter + + + + + Construct a TextMessageWriter, specifying a user message + and optional formatting arguments. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The result of the constraint that failed + + + + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given _values, including + a tolerance value on the expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in string comparisons + If true, clip the strings to fit the max line length + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Write the generic 'Expected' line for a constraint + + The constraint that failed + + + + Write the generic 'Expected' line for a given value + + The expected value + + + + Write the generic 'Expected' line for a given value + and tolerance. + + The expected value + The tolerance within which the test was made + + + + Write the generic 'Actual' line for a constraint + + The ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type argments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + Get a Randomizer for a particular member, returning + one that has already been created if it exists. + This ensures that the same _values are generated + each time the tests are reloaded. + + + + + Get a randomizer for a particular parameter, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probablility a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + OSPlatform represents a particular operating system platform + + + + + Platform ID for Unix as defined by Microsoft .NET 2.0 and greater + + + + + Platform ID for Unix as defined by Mono + + + + + Platform ID for XBox as defined by .NET and Mono, but not CF + + + + + Platform ID for MacOSX as defined by .NET and Mono, but not CF + + + + + Get the OSPlatform under which we are currently running + + + + + Gets the actual OS Version, not the incorrect value that might be + returned for Win 8.1 and Win 10 + + + If an application is not manifested as Windows 8.1 or Windows 10, + the version returned from Environment.OSVersion will not be 6.3 and 10.0 + respectively, but will be 6.2 and 6.3. The correct value can be found in + the registry. + + The original version + The correct OS version + + + + Product Type Enumeration used for Windows + + + + + Product type is unknown or unspecified + + + + + Product type is Workstation + + + + + Product type is Domain Controller + + + + + Product type is Server + + + + + Construct from a platform ID and version + + + + + Construct from a platform ID, version and product type + + + + + Get the platform ID of this instance + + + + + Get the Version of this instance + + + + + Get the Product Type of this instance + + + + + Return true if this is a windows platform + + + + + Return true if this is a Unix or Linux platform + + + + + Return true if the platform is Win32S + + + + + Return true if the platform is Win32Windows + + + + + Return true if the platform is Win32NT + + + + + Return true if the platform is Windows CE + + + + + Return true if the platform is Xbox + + + + + Return true if the platform is MacOSX + + + + + Return true if the platform is Windows 95 + + + + + Return true if the platform is Windows 98 + + + + + Return true if the platform is Windows ME + + + + + Return true if the platform is NT 3 + + + + + Return true if the platform is NT 4 + + + + + Return true if the platform is NT 5 + + + + + Return true if the platform is Windows 2000 + + + + + Return true if the platform is Windows XP + + + + + Return true if the platform is Windows 2003 Server + + + + + Return true if the platform is NT 6 + + + + + Return true if the platform is NT 6.0 + + + + + Return true if the platform is NT 6.1 + + + + + Return true if the platform is NT 6.2 + + + + + Return true if the platform is NT 6.3 + + + + + Return true if the platform is Vista + + + + + Return true if the platform is Windows 2008 Server (original or R2) + + + + + Return true if the platform is Windows 2008 Server (original) + + + + + Return true if the platform is Windows 2008 Server R2 + + + + + Return true if the platform is Windows 2012 Server (original or R2) + + + + + Return true if the platform is Windows 2012 Server (original) + + + + + Return true if the platform is Windows 2012 Server R2 + + + + + Return true if the platform is Windows 7 + + + + + Return true if the platform is Windows 8 + + + + + Return true if the platform is Windows 8.1 + + + + + Return true if the platform is Windows 10 + + + + + Return true if the platform is Windows Server. This is named Windows + Server 10 to distinguish it from previous versions of Windows Server. + + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + PlatformHelper class is used by the PlatformAttribute class to + determine whether a platform is supported. + + + + + Comma-delimited list of all supported OS platform constants + + + + + Comma-delimited list of all supported Runtime platform constants + + + + + Default constructor uses the operating system and + common language runtime of the system. + + + + + Construct a PlatformHelper for a particular operating + system and common language runtime. Used in testing. + + OperatingSystem to be used + RuntimeFramework to be used + + + + Test to determine if one of a collection of platforms + is being used currently. + + + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Test to determine if the a particular platform or comma- + delimited set of platforms is in use. + + Name of the platform or comma-separated list of platform ids + True if the platform is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representating the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + List of child results + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Test HasChildren before accessing Children to avoid + the creation of an empty collection. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + THe FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Enumeration identifying a common language + runtime implementation. + + + + Any supported runtime framework + + + Microsoft .NET Framework + + + Microsoft .NET Compact Framework + + + Microsoft Shared Source CLI + + + Mono + + + Silverlight + + + MonoTouch + + + + RuntimeFramework represents a particular version + of a common language runtime implementation. + + + + + DefaultVersion is an empty Version, used to indicate that + NUnit should select the CLR version to use for the test. + + + + + Construct from a runtime type and version. If the version has + two parts, it is taken as a framework version. If it has three + or more, it is taken as a CLR version. In either case, the other + version is deduced based on the runtime type and provided version. + + The runtime type of the framework + The version of the framework + + + + Static method to return a RuntimeFramework object + for the framework that is currently in use. + + + + + The type of this runtime framework + + + + + The framework version for this runtime framework + + + + + The CLR version for this runtime framework + + + + + Return true if any CLR version may be used in + matching this RuntimeFramework object. + + + + + Returns the Display name for this framework + + + + + Parses a string representing a RuntimeFramework. + The string may be just a RuntimeType name or just + a Version or a hyphenated RuntimeType-Version or + a Version prefixed by 'versionString'. + + + + + + + Overridden to return the short name of the framework + + + + + + Returns true if the current framework matches the + one supplied as an argument. Two frameworks match + if their runtime types are the same or either one + is RuntimeType.Any and all specified version components + are equal. Negative (i.e. unspecified) version + components are ignored. + + The RuntimeFramework to be matched. + True on match, otherwise false + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + An internal class is used to hold settings and a stack + of these objects is pushed and popped as Save and Restore + are called. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + The current Principal. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + The current context, head of the list of saved contexts. + + + + + Gets the current context. + + The current context. + + + + Get the current context or return null if none is found. + + + + + Clear the current context. This is provided to + prevent "leakage" of the CallContext containing + the current context back to any runners. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set the working directory + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + Gets or sets the current for the Thread. + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Obtain lifetime service object + + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object implementing ICustomAttributeProvider + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture + + + + + Set to true to suppress sorting this suite's contents + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + The attribute type to check for + + + + ThreadUtility provides a set of static methods convenient + for working with threads. + + + + + Do our best to Kill a thread + + The thread to kill + + + + Do our best to kill a thread, passing state info + + The thread to kill + Info for the ThreadAbortException handler + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Gets the _values for an enumeration, using Enum.GetTypes + where available, otherwise through reflection. + + + + + + + Gets the ids of the _values for an enumeration, + using Enum.GetNames where available, otherwise + through reflection. + + + + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Add a child result + + The child result to be added + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Inserts environment element + + Target node + The new node + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + Gets the default level of parallel execution (worker threads) + + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Initiate the test run. + + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Marks a test that must run in a particular threading apartment state, causing it + to run in a separate thread if necessary. + + + + + Construct an ApartmentAttribute + + The apartment state that this test must be run under. You must pass in a valid apartment state. + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParamterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No Parallelism is permitted + + + + + The test itself may be run in parallel with others at the same level + + + + + Descendants of the test may be run in parallel with one another + + + + + Descendants of the test down to the level of TestFixtures may be run in parallel + + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + Portable libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + A MarshalByRefObject that lives forever + + + + + Obtains a lifetime service object to control the lifetime policy for this instance. + + + + + Provides NUnit specific extensions to aid in Reflection + across multiple frameworks + + + This version of the class supplies GetTypeInfo() on platforms + that don't support it. + + + + + GetTypeInfo gives access to most of the Type information we take for granted + on .NET Core and Windows Runtime. Rather than #ifdef different code for different + platforms, it is easiest to just code all platforms as if they worked this way, + thus the simple passthrough. + + + + + + + This class is a System.Diagnostics.Stopwatch on operating systems that support it. On those that don't, + it replicates the functionality at the resolution supported. + + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + The MessageWriter to write to + + + + Display the failure information for two collections that did not match. + + The MessageWriter on which to display + The expected collection. + The actual collection + The depth of this failure in a set of nested collections + + + + Displays a single line showing the types and sizes of the expected + and actual collections or arrays. If both are identical, the value is + only shown once. + + The MessageWriter on which to display + The expected collection or array + The actual collection or array + The indentation level for the message line + + + + Displays a single line showing the point in the expected and actual + arrays at which the comparison failed. If the arrays have different + structures or dimensions, both _values are shown. + + The MessageWriter on which to display + The expected array + The actual array + Index of the failure point in the underlying collections + The indentation level for the message line + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + FileExistsConstraint is used to determine if a file exists + + + + + Initializes a new instance of the class. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists + + + + + If true, the constraint will only check if files exist, not directories + + + + + If true, the constraint will only check if directories exist, not files + + + + + Initializes a new instance of the class that + will check files and directories. + + + + + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. + + if set to true [ignore directories]. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + A ConstraintResult + + + + Represents a constraint that succeeds if all the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. + + + + + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. + + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a constraint + + + + + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. + + The actual value + True if the constraints both succeeded + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AttributeConstraint tests that a specified attribute is present + on a Type or other provider and that the value of the attribute + satisfies some other constraint. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. + + + + + The first constraint being combined + + + + + The second constraint being combined + + + + + Construct a BinaryConstraint from two other constraints + + The first constraint + The second constraint + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation + + + + + CollectionConstraint is the abstract base class for + constraints that operate on collections. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Determines whether the specified enumerable is empty. + + The enumerable. + + true if the specified enumerable is empty; otherwise, false. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Protected method to be implemented by derived classes + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + CollectionSubsetConstraint is used to determine whether + one collection is a subset of another + + + + + Construct a CollectionSubsetConstraint + + The collection that the actual value is expected to be a subset of + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + Try to remove an object from the tally + + The object to remove + True if successful, false if the object was not found + + + + Try to remove a set of objects from the tally + + The objects to remove + True if successful, false if any object was not found + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + Compare a Type T to an object + + + + + Abstract base class for constraints that compare _values to + determine if one is greater than, equal to or less than + the other. + + + + + The value against which a comparison is to be made + + + + + If true, less than returns success + + + + + if true, equal returns success + + + + + if true, greater than returns success + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + if set to true less succeeds. + if set to true equal succeeds. + if set to true greater succeeds. + String used in describing the constraint. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + A ConstraintResult + + + + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + + + + + + Returns the string representation of this constraint + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending Or + to the current constraint. + + + + + Returns a DelayedConstraint with the specified delay time. + + The delay in milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + Resolves any pending operators and returns the resolved constraint. + + + + + ConstraintBuilder maintains the stacks that are used in + processing a ConstraintExpression. An OperatorStack + is used to hold operators that are waiting for their + operands to be reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + Initializes a new instance of the class. + + + + + Appends the specified operator to the expression by first + reducing the operator stack and then pushing the new + operator on the stack. + + The operator to push. + + + + Appends the specified constraint to the expression by pushing + it on the constraint stack. + + The constraint to push. + + + + Sets the top operator right context. + + The right context. + + + + Reduces the operator stack until the topmost item + precedence is greater than or equal to the target precedence. + + The target precedence. + + + + Resolves this instance, returning a Constraint. If the Builder + is not currently in a resolvable state, an exception is thrown. + + The resolved constraint + + + + Gets a value indicating whether this instance is resolvable. + + + true if this instance is resolvable; otherwise, false. + + + + + ConstraintExpression represents a compound constraint in the + process of being constructed from a series of syntactic elements. + + Individual elements are appended to the expression as they are + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + The ConstraintBuilder holding the elements recognized so far + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a string representation of the expression as it + currently stands. This should only be used for testing, + since it has the side-effect of resolving the expression. + + + + + + Appends an operator to the expression and returns the + resulting expression itself. + + + + + Appends a self-resolving operator to the expression and + returns a new ResolvableConstraintExpression. + + + + + Appends a constraint to the expression and returns that + constraint, which is associated with the current state + of the expression being built. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + With is currently a NOP - reserved for future use. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the a subpath of the expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is a subpath of the expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + ContainsConstraint tests a whether a string contains a substring + or a collection contains an object. It postpones the decision of + which test to use until the type of the actual argument is known. + This allows testing whether a string is contained in a collection + or as a substring of another string using the same syntax. + + + + + Initializes a new instance of the class. + + The _expected. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Creates a new DelayedConstraint + + The inner constraint to decorate + The time interval after which the match is performed + If the value of is less than 0 + + + + Creates a new DelayedConstraint + + The inner constraint to decorate + The time interval after which the match is performed, in milliseconds + The time interval used for polling, in milliseconds + If the value of is less than 0 + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a delegate + + The delegate whose value is to be tested + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + Overridden to wait for the specified delay period before + calling the base constraint with the dereferenced value. + + A reference to the value to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + Adjusts a Timestamp by a given TimeSpan + + + + + + + + Returns the difference between two Timestamps as a TimeSpan + + + + + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + EmptyConstraint tests a whether a string or collection is empty, + postponing the decision about which test is applied until the + type of the actual argument is known. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EndsWithConstraint can test whether a string ends + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + EqualConstraint is able to compare an actual value with the + expected value provided in its constructor. Two objects are + considered equal if both are null, or if both have the same + value. NUnit has special semantics for some object types. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to suppress string clipping + and return self. + + + + + Flag the constraint to compare arrays as collections + and return self. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + Switches the .Within() modifier to interpret its tolerance as + a distance in representable _values (see remarks). + + Self. + + Ulp stands for "unit in the last place" and describes the minimum + amount a given value can change. For any integers, an ulp is 1 whole + digit. For floating point _values, the accuracy of which is better + for smaller numbers and worse for larger numbers, an ulp depends + on the size of the number. Using ulps for comparison of floating + point results instead of fixed tolerances is safer because it will + automatically compensate for the added inaccuracy of larger numbers. + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in days. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in hours. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in minutes. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in seconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + + Self + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + ExactTypeConstraint is used to test that an object + is of the exact type provided in the constructor + + + + + Construct an ExactTypeConstraint for a given Type + + The expected Type. + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + Helper routines for working with floating point numbers + + + The floating point comparison code is based on this excellent article: + http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + + + "ULP" means Unit in the Last Place and in the context of this library refers to + the distance between two adjacent floating point numbers. IEEE floating point + numbers can only represent a finite subset of natural numbers, with greater + accuracy for smaller numbers and lower accuracy for very large numbers. + + + If a comparison is allowed "2 ulps" of deviation, that means the _values are + allowed to deviate by up to 2 adjacent floating point _values, which might be + as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. + + + + + Union of a floating point variable and an integer + + + The union's value as a floating point variable + + + The union's value as an integer + + + The union's value as an unsigned integer + + + Union of a double precision floating point variable and a long + + + The union's value as a double precision floating point variable + + + The union's value as a long + + + The union's value as an unsigned long + + + Compares two floating point _values for equality + First floating point value to be compared + Second floating point value t be compared + + Maximum number of representable floating point _values that are allowed to + be between the left and the right floating point _values + + True if both numbers are equal or close to being equal + + + Floating point _values can only represent a finite subset of natural numbers. + For example, the _values 2.00000000 and 2.00000024 can be stored in a float, + but nothing inbetween them. + + + This comparison will count how many possible floating point _values are between + the left and the right number. If the number of possible _values between both + numbers is less than or equal to maxUlps, then the numbers are considered as + being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + Compares two double precision floating point _values for equality + First double precision floating point value to be compared + Second double precision floating point value t be compared + + Maximum number of representable double precision floating point _values that are + allowed to be between the left and the right double precision floating point _values + + True if both numbers are equal or close to being equal + + + Double precision floating point _values can only represent a limited series of + natural numbers. For example, the _values 2.0000000000000000 and 2.0000000000000004 + can be stored in a double, but nothing inbetween them. + + + This comparison will count how many possible double precision floating point + _values are between the left and the right number. If the number of possible + _values between both numbers is less than or equal to maxUlps, then the numbers + are considered as being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + + Reinterprets the memory contents of a floating point value as an integer value + + + Floating point value whose memory contents to reinterpret + + + The memory contents of the floating point value interpreted as an integer + + + + + Reinterprets the memory contents of a double precision floating point + value as an integer value + + + Double precision floating point value whose memory contents to reinterpret + + + The memory contents of the double precision floating point value + interpreted as an integer + + + + + Reinterprets the memory contents of an integer as a floating point value + + Integer value whose memory contents to reinterpret + + The memory contents of the integer value interpreted as a floating point value + + + + + Reinterprets the memory contents of an integer value as a double precision + floating point value + + Integer whose memory contents to reinterpret + + The memory contents of the integer interpreted as a double precision + floating point value + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is greater than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. + + The MessageWriter on which to display the message + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + InstanceOfTypeConstraint is used to test that an object + is of the same type provided or derived from it. + + + + + Construct an InstanceOfTypeConstraint for the type provided + + The expected Type + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is less than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + MessageWriter is the abstract base for classes that write + constraint descriptions and messages in some form. The + class has separate methods for writing various components + of a message, allowing implementations to tailor the + presentation as needed. + + + + + Construct a MessageWriter given a culture + + + + + Abstract method to get the max line length + + + + + Method to write single line message with optional args, usually + written to precede the general failure message. + + The message to be written + Any arguments used in formatting the message + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The failing constraint result + + + + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given _values, including + a tolerance value on the Expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in locating the point where the strings differ + If true, the strings should be clipped to fit the line + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Returns the representation of a type as used in NUnitLite. + This is the same as Type.ToString() except for arrays, + which are displayed with their declared sizes. + + + + + + + Converts any control characters in a string + to their escaped representation. + + The string to be converted + The converted string + + + + Return the a string representation for a set of indices into an array + + Array of indices for which a string is needed + + + + Get an array of indices representing the point in a collection or + array corresponding to a single int index into the collection. + + The collection to which the indices apply + Index in the collection + Array of indices + + + + Clip a string to a given length, starting at a particular offset, returning the clipped + string with ellipses representing the removed parts + + The string to be clipped + The maximum permitted length of the result string + The point at which to start clipping + The clipped string + + + + Clip the expected and actual strings in a coordinated fashion, + so that they may be displayed together. + + + + + + + + + Shows the position two strings start to differ. Comparison + starts at the start index. + + The expected string + The actual string + The index in the strings at which comparison should start + Boolean indicating whether case should be ignored + -1 if no mismatch found, or the index where mismatch found + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + NoItemConstraint applies another constraint to each + item in a collection, failing if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + NotConstraint negates the effect of some other constraint + + + + + Initializes a new instance of the class. + + The base constraint to be negated. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + The Numerics class contains common operations on numeric _values. + + + + + Checks the type of the object, returning true if + the object is a numeric type. + + The object to check + true if the object is a numeric type + + + + Checks the type of the object, returning true if + the object is a floating point numeric type. + + The object to check + true if the object is a floating point numeric type + + + + Checks the type of the object, returning true if + the object is a fixed point numeric type. + + The object to check + true if the object is a fixed point numeric type + + + + Test two numeric _values for equality, performing the usual numeric + conversions and using a provided or default tolerance. If the tolerance + provided is Empty, this method may set it to a default tolerance. + + The expected value + The actual value + A reference to the tolerance in effect + True if the _values are equal + + + + Compare two numeric _values, performing the usual numeric conversions. + + The expected value + The actual value + The relationship of the _values to each other + + + + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + NUnitEqualityComparer encapsulates NUnit's handling of + equality tests between objects. + + + + + If true, all string comparisons will ignore case + + + + + If true, arrays will be treated as collections, allowing + those of different dimensions to be compared + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + Returns the default NUnitEqualityComparer + + + + + Gets and sets a flag indicating whether case should + be ignored in determining equality. + + + + + Gets and sets a flag indicating that arrays should be + compared as collections, without regard to their shape. + + + + + Gets the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depthy. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + Helper method to compare two arrays + + + + + Method to compare two DirectoryInfo objects + + first directory to compare + second directory to compare + true if equivalent, false if not + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + Operator that tests for the presence of a particular attribute + on a type and optionally applies further tests to the attribute. + + + + + Construct an AttributeOperator for a particular Type + + The Type of attribute tested + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Abstract base class for all binary operators + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + The ConstraintOperator class is used internally by a + ConstraintBuilder to represent an operator that + modifies or combines constraints. + + Constraint operators use left and right precedence + _values to determine whether the top operator on the + stack should be reduced before pushing a new operator. + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + The syntax element preceding this operator + + + + + The syntax element following this operator + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + PrefixOperator takes a single constraint and modifies + it's action in some way. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Returns the constraint created by applying this + prefix to another constraint. + + + + + + + Operator used to test for the presence of a named Property + on an object and optionally apply further tests to the + value of that property. + + + + + Gets the name of the property to which the operator applies + + + + + Constructs a PropOperator for a particular named property + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + Operator that tests that an exception is thrown and + optionally applies further tests to the exception. + + + + + Construct a ThrowsOperator + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a constraint + + + + + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. + + The actual value + True if either constraint succeeded + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether one path in canonical form is a subpath of another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + PropertyConstraint extracts a named property and uses + its value as the actual value for a chained constraint. + + + + + Initializes a new instance of the class. + + The name. + The constraint to apply to the property. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + PropertyExistsConstraint tests that a named property + exists on the object provided through Match. + + Originally, PropertyConstraint provided this feature + in addition to making optional tests on the value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + RegexConstraint can test whether a string matches + the pattern provided. + + + + + Initializes a new instance of the class. + + The pattern. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ResolvableConstraintExpression is used to represent a compound + constraint being constructed at a point where the last operator + may either terminate the expression or may have additional + qualifying constraints added to it. + + It is used, for example, for a Property element or for + an Exception element, either of which may be optionally + followed by constraints that apply to the property or + exception. + + + + + Create a new instance of ResolvableConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SomeItemsConstraint applies another constraint to each + item in a collection, succeeding if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + StartsWithConstraint can test whether a string starts + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. + + + + + The expected value + + + + + Indicates whether tests should be case-insensitive + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Test whether the constraint is satisfied by a given string + + The string to be tested + True for success, false for failure + + + + SubstringConstraint can test whether a string contains + the expected substring. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ThrowsConstraint is used to test the exception thrown by + a delegate by applying a constraint to it. + + + + + Initializes a new instance of the class, + using a constraint to be applied to the exception. + + A constraint to apply to the caught exception. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + Executes the code of the delegate and captures any exception. + If a non-null base constraint was provided, it applies that + constraint to the exception. + + A delegate representing the code to be tested + True if an exception is thrown and the constraint succeeds, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + The Tolerance class generalizes the notion of a tolerance + within which an equality test succeeds. Normally, it is + used with numeric types, but it can be used with any + type that supports taking a difference between two + objects and comparing that difference to a value. + + + + + Returns a default Tolerance object, equivalent to + specifying an exact match unless + is set, in which case, the + will be used. + + + + + Returns an empty Tolerance object, equivalent to + specifying an exact match even if + is set. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + Gets the for the current Tolerance + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Gets the value of the current Tolerance instance. + + + + + Returns a new tolerance, using the current amount as a percentage. + + + + + Returns a new tolerance, using the current amount in Ulps + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Modes in which the tolerance value for a comparison can be interpreted. + + + + + The tolerance was created with a value, without specifying + how the value would be used. This is used to prevent setting + the mode more than once and is generally changed to Linear + upon execution of the test. + + + + + The tolerance is used as a numeric range within which + two compared _values are considered to be equal. + + + + + Interprets the tolerance as the percentage by which + the two compared _values my deviate from each other. + + + + + Compares two _values based in their distance in + representable numbers. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + XmlSerializableConstraint tests whether + an object is serializable in xml format. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of this constraint + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate does not throw an exception. + + A TestDelegate + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + + + + Helper for Assert.AreEqual(double expected, double actual, ...) + allowing code generation to work consistently. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + + + + Throws an with the message and arguments + that are passed in. This is used by the other Assert functions. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This is used by the other Assert functions. + + The message to initialize the with. + + + + Throws an . + This is used by the other Assert functions. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as ignored. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as Inconclusive. + + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an oject of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued propeties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Determines whether the specified , is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + Asserts on Directories + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if the directories are not equal + Arguments to be used in formatting the message + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter ids for constraints and + asserts and avoiding conflict with the definition of + , from which it inherits much of its + behavior, in certain mock object frameworks. + + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to . + + The evaluated condition + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + Provides static methods to express the assumptions + that must be met for a test to give a meaningful + result. If an assumption is not met, the test + should produce an inconclusive result. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the + method throws an . + + The evaluated condition + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Attribute used to apply a category to a test + + + + + The name of the category + + + + + Construct attribute for a given category based on + a name. The name may not contain the characters ',', + '+', '-' or '!'. However, this is not checked in the + constructor since it would cause an error to arise at + as the test was loaded without giving a clear indication + of where the problem is located. The error is handled + in NUnitFramework.cs by marking the test as not + runnable. + + The name of the category + + + + Protected constructor uses the Type name as the name + of the category. + + + + + The name of the category + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. + + + + + Constructor with no cultures specified, for use + with named property syntax. + + + + + Constructor taking one or more cultures + + Comma-deliminted list of cultures + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + Used to mark a field for use as a datapoint when executing a theory + within the same fixture that requires an argument of the field's Type. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + ExplicitAttribute marks a test or test fixture so that it will + only be run if explicitly executed from the gui or command line + or if it is included by use of a filter. The test will not be + run simply because an enclosing suite is run. + + + + + Default constructor + + + + + Constructor with a reason + + The reason test is marked explicit + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. + + + + + Constructs the attribute giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. + + + + + Constructor with no included items specified, for use + with named property syntax. + + + + + Constructor taking one or more included items + + Comma-delimited list of included items + + + + Name of the item that is needed in order for + a test to run. Multiple items may be given, + separated by a comma. + + + + + Name of the item to be excluded. Multiple items + may be given, separated by a comma. + + + + + The reason for including or excluding the test + + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + PlatformAttribute is used to mark a test fixture or an + individual method as applying to a particular platform only. + + + + + Constructor with no platforms specified, for use + with named property syntax. + + + + + Constructor taking one or more platforms + + Comma-delimited list of platforms + + + + Causes a test to be skipped if this PlatformAttribute is not satisfied. + + The test to modify + + + + PropertyAttribute is used to attach information to a test as a name/value pair.. + + + + + Construct a PropertyAttribute with a name and string value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and int value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and double value + + The name of the property + The property value + + + + Constructor for derived classes that set the + property dictionary directly. + + + + + Constructor for use by derived classes that use the + name of the type as the property name. Derived classes + must ensure that the Type of the property value is + a standard type supported by the BCL. Any custom + types will cause a serialization Exception when + in the client. + + + + + Gets the property dictionary for this attribute + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + Get the collection of _values to be used as arguments. + + + + + RangeAttribute is used to supply a range of _values to an + individual parameter of a parameterized test. + + + + + Construct a range of ints using default step of 1 + + + + + + + Construct a range of ints specifying the step size + + + + + + + + Construct a range of unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + Construct a range of doubles + + + + + + + + Construct a range of floats + + + + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Marks a test that must run in the MTA, causing it + to run in a separate thread if necessary. + + On methods, you may also use MTAThreadAttribute + to serve the same purpose. + + + + + Construct a RequiresMTAAttribute + + + + + Marks a test that must run in the STA, causing it + to run in a separate thread if necessary. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + Summary description for SetCultureAttribute. + + + + + Construct given the name of a culture + + + + + + Summary description for SetUICultureAttribute. + + + + + Construct given the name of a culture + + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + SetUpFixtureAttribute is used to identify a SetUpFixture + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + Attribute used to identify a method that is called + immediately after each test is run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant + + + + + + Construct a TestCaseAttribute with a single argument + + + + + + Construct a TestCaseAttribute with a two arguments + + + + + + + Construct a TestCaseAttribute with a three arguments + + + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Comma-delimited list of platforms to run the test for + + + + + Comma-delimited list of platforms to not run the test for + + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + Default constructor + + + + + Construct with a object[] representing a set of arguments. + In .NET 2.0, the arguments may later be separated into + type arguments and constructor arguments. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + Attribute used to identify a method that is called after + all the tests in a fixture have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + Used on a method, marks the test with a timeout value in milliseconds. + The test will be run in a separate thread and is cancelled if the timeout + is exceeded. Used on a class or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + The collection of data to be returned. Must + be set by any derived attribute classes. + We use an object[] so that the individual + elements may have their type changed in GetData + if necessary + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + Construct with one argument + + + + + + Construct with two arguments + + + + + + + Construct with three arguments + + + + + + + + Construct with an array of arguments + + + + + + Get the collection of _values to be used as arguments + + + + + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Thrown when an assertion failed. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Thrown when a test executes inconclusively. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Asserts on Files + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the two Stream are the same. + Arguments to be used in formatting the message + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file exists. If it does not exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + + + + GlobalSettings is a place for setting default _values used + by the framework in performing asserts. + + + + + Default tolerance for floating point equality + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is a subpath of the expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + The Iz class is a synonym for Is intended for use in VB, + which regards Is as a keyword. + + + + + The List class is a helper class with properties and methods + that supply a number of constraints used with lists and collections. + + + + + List.Map returns a ListMapper, which can be used to map + the original collection to another collection. + + + + + + + ListMapper is used to transform a collection used as an actual argument + producing another collection to be used in the assertion. + + + + + Construct a ListMapper based on a collection + + The collection to be transformed + + + + Produces a collection containing all the _values of a property + + The collection of property _values + + + + + The SpecialValue enum is used to represent TestCase arguments + that cannot be used as arguments to an Attribute. + + + + + Null represents a null value, which cannot be used as an + argument to an attriute under .NET 1.x + + + + + Basic Asserts on strings. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string is not found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + + + + The TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the test case. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Sets the expected result for the test + + The expected result + A modified TestCaseData + + + + Sets the name of the test case + + The modified TestCaseData instance + + + + Sets the description for the test case + being constructed. + + The description. + The modified TestCaseData instance. + + + + Applies a category to the test + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + Get the current test context. This is created + as needed. The user may save the context for + use within a test, but it should not be used + outside the test for which it is created. + + + + + Gets a TextWriter that will send output to the current test result. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + Creates a constraint specifying an expected exception + + + + + Creates a constraint specifying an exception with a given InnerException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNUllException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Env is a static class that provides some of the features of + System.Environment that are not available under all runtimes + + + + + The newline sequence in the current environment. + + + + + Path to the 'My Documents' folder + + + + + Directory used for file output if not specified on commandline. + + + + + PackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the engine and framework. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attache a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the frameowrk TestContext. + + + + + The name of the config to use in loading a project. + If not specified, the first config found is used. + + + + + Bool indicating whether the engine should determine the private + bin path by examining the paths to all the tests. Defaults to + true unless PrivateBinPath is specified. + + + + + The ApplicationBase to use in loading the tests. If not + specified, and each assembly has its own process, then the + location of the assembly is used. For multiple assemblies + in a single process, the closest common root directory is used. + + + + + Path to the config file to use in running the tests. + + + + + Bool flag indicating whether a debugger should be launched at agent + startup. Used only for debugging NUnit itself. + + + + + Indicates how to load tests across AppDomains. Values are: + "Default", "None", "Single", "Multiple". Default is "Multiple" + if more than one assembly is loaded in a process. Otherwise, + it is "Single". + + + + + The private binpath used to locate assemblies. Directory paths + is separated by a semicolon. It's an error to specify this and + also set AutoBinPath to true. + + + + + The maximum number of test agents permitted to run simultneously. + Ignored if the ProcessModel is not set or defaulted to Multiple. + + + + + Indicates how to allocate assemblies to processes. Values are: + "Default", "Single", "Separate", "Multiple". Default is "Multiple" + for more than one assembly, "Separate" for a single assembly. + + + + + Indicates the desired runtime to use for the tests. Values + are strings like "net-4.5", "mono-4.0", etc. Default is to + use the target framework for which an assembly was built. + + + + + Bool flag indicating that the test should be run in a 32-bit process + on a 64-bit system. By default, NUNit runs in a 64-bit process on + a 64-bit system. Ignored if set on a 32-bit system. + + + + + Indicates that test runners should be disposed after the tests are executed + + + + + Bool flag indicating that the test assemblies should be shadow copied. + Defaults to false. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + + Enables compiling extension methods in .NET 2.0 + + + + diff --git a/packages/NUnit.3.0.1/lib/net40/nunit.framework.dll b/packages/NUnit.3.0.1/lib/net40/nunit.framework.dll new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c52b02df2cd3b0417b95117a85f51cb8532d2891 GIT binary patch literal 273408 zc%0;YcYGYh_4wZG-tJzJtdrzDSu&QJ%=(IK%V2Da7-NjFP46yXgDJrVyk^g)SV)K( zifwv{DFM+Tg&sm60YXSZH7$fDI!Oo#gb+f2nBOZiyL+b-kl*+F`|GEVeKYgs&CHuO zGjHC!DZA^U^E6%4Gz0#B^_8aGtMT7V?VJC4;eT!GeYM(Mi6=+h8{6f{QTrURyfku^ z?|s)l_~?;`9K3R+w|eBV!$$gRR*qc0a^&pY_a1q)cj#g5H8shxGLJoW)U;houC` zuE^q`cE98w0)Cu!QOww%zJ@UPuJ>?jWq(~@S&D>nddRwbE#n#njwo6zFgZ*Plf zTWt_pq5|*B83wiYH~oze?r2R*=1y_PfYTd;mT7Uvq8A&>Z9^aQHzT)F6tg}=uhRXY z@av9)7`?P5{I1R2A#@jzOwr>)*c}f)1%*5HUdjgn-HlWZUqF`mT%1$E#W~fuIIkKP=T+n4 zylPyWSB;DFs&R2%H7?Gp#>IKnxHzvG7w1*u;=F2HoL7yD^Qv)iUIiEDRd8`$gp1RK zI~{_$;U>z1$w&~86Xih_+gYBrvpj8QdD_lM+TDb^4FtV+bV`w`gaKYkCYvTg6d8=f z&fr)x5>#9YW7FlaGFUp@pxBy75MovEM2@YE1R=IIO6mK0m_Zb#a;d-@kXGf_?yrGq zji;)1|AoN6K@<}-2i9r%I=xV%Zzv?70gD6?r5ea*?P$^HdN5h$ItWt+z9Hp*Vlt&4 zP3eD&lrdH2nrO;3-y&sPr93{Gk^(byQCh20FC9X?REB{+6z&kZ5wA7evksvoKb7cK|n~d-nimtVVAq2#xC>mh5+|f@ygmm6ES&9NVua`+;nz z2B^$=$}{F7wOK7WO4C~)D71{$Fjh-)EhcF8HVmIGblJe?Py>k4eQ_KEaSrb$!%>`N zo3cQ&I|(4r!Y)+LydELBDMF%Uu#(F*Vg7_xdJJlhxRicTWrVv<7X6qJDSCkDG|qkNccWg$*o7S0wOQv`gt9wx<-X*6sE)=h-2>w7Ay_aDHF_$>Hh3%>5itIu2Tns{F9Mj(4TaptUtB0+$8^KC?H$W7r2Lz zcZ6O#9CFIR3T}S`#VpTB)ZlVXB7daIHYqtKv`J05PInhzox$FOo0V_4;wQ79GT zh+v~(o@oy2))MsdO1i#97iYSj5^fTzt2b?qIh$ktPBCqje>D7{qy;&UhB*Hm2Lw4R&oFqmH2083_uryA#CKh_rgIq^&jGSxslKJc2TQEcTuR}({eGaNa z)U&sF{drKGwoS7HtkyfR{B7aK=@_m%UO%LgY5$HDO9-IkZLIhlQJRv_%+g`-3Fw)hX$i`0Fc@c&%_{78N-`_l|$-H(S=m%1|aMVG<(}YjM-rJ?g zN9hKu)tUXV2XV}xq_I@2+!#Yb?1CuPf=3K%B0$`rL2O2v3wV>5(Hq!c&GSZs|c zy68erX(iMlXXcU);?F`$&S;T!-@(?ofJX!*X`@D^A#ka{Apm?3JOpMzMi||?d8v0Y z>LJI9(mWVr-Qy_D4%jufB=2XK=h{JHb@$&GeV^{V2ALGvg!^X*7q`%dRrW&RZpI!= z6(;`a+7ZDx`W&JPdC|q$W60YTiYqn=|4xBv5#-Lsk@*$)oSbmKEKBmGN>YF%|D+^e zRwT*7*fq5U!PvqvT^G|^3*L@2a$1C*V9LK>A&^pZVQsyg(40kPu401( z%?&^Wk7?=vrnNCGZ1;W43Q(-A}#X;4dV*$FbYozJ=a2fZtt+%KQ$KkC)OWkM1b|$a5>sLy@$HJ0Ioh z&e*y+7Dv?2@6*Vfnc>o={TQ39HR-vEvZOKwjIY9gf@A=>qa%Q#0u&{nT>;2bIT|OZ z(TJW>eS(GS(sJQCA5>TzHCu-RX}2gyjvgEfvx0s}EjvxM>_pK;sNRz}9!6IgR}}9( zW6J3v*CR^(Si+Q0qIXRp`RBc0l6V*_o+|i_Nb3Wn`2&!0)L-T)xi}yXH!35;2{NN( zq?#3zTpHAq3L3#do_BO@4bCr^KZ!Q)Pbl^G#8mlRO>Zyk9~@(O?_m_^8_9IO(e^+M zO4cyztOPO3X8He4f1|wyMnbH?$QUpW7;+xq*jxLPX2CQWrsf5q6||ANXpJPlU~RQ< z1+T53r+uJN51EP-@27&G!kmcn>^7Cq-m1{kszT4K3SCzfdR|rNMOC4fRfS$r6?%05 zB^kb*p#2k&4Q~QJq1`ZQ`k!DaYi>GAE%V&Hv6UTAgODkuE|ta9&j|1ALGVrr@HP?N zIfLMx8sObTcU%)YgBNjSZ`GF zA){CHz?@OZg0@POA|xtr#vIP-bD-<%#zZ}vj}3K)$4F)y8t(TcNDkcsptv*1F!Tv^ zac4rp&^HTMjpPj{AItjJ!c^tEhFp^v`oj3)?1H2)*VjQw-3Q>xAf>1CuslG&)dm`Z zO|rPpjxR`CX2*N9{>!=}NW_wiJrv4LM#|o-`yEDkF`MJKAX?##t0AdGzKjuH z&|oC&j<+S9(281ZNayH)#zyvk6Mg#=eSo@lHq*Ahqzyp5--@mc6?9cLpycXCo{3fw4~6x<0#ZW3Z6g5Dg7t37Da0y^k!U#jT044tG?!4!4)^UpAC( z4kS-UlIH`-=qW8geda8S@ji;;bt=5h0Ph@2t$hp)mY>=XoHt940W@jK^;2U?==Cvo z>liM6OkT>Hp|WR@I-6bJ2+PlTg9O28aEMu$uq4L=zNO1zP}TmkLrP8%+BblWR31vV*p z{yHedUC8+d3!fLVsL;(&>h%n%Z*Qjn+eyGo1(+GEMRe_oa@znXbJ9=PY zK8siOUE8ZVZ68@*f#wMsB-;LkyFJoWPZp6RblUAO=Yz3>c72D`ZaCmg3AT+59^wzzz~HTLETEz>W&AqXf)RT%W^S-$&-XlR_lVBH`{H zQ+?+hXs|V>1AVyc4!}A$q{5_LGZ2$(h(VLj#k|)-A#<{lkxB(dG zB&R+PUSV!b=_b>dwx&G*AZyL;054>$>(MPHgxT0P^*YSPV$&$K!i9u+IpkVkj8g#M z)Yz3O|50|Og1^YFQ1FX$?M)-g*i)QhZyHq&8EbDET@IrUe7a99v#y3zrG&I@4N>J{J}d$#s~n z&xAFBDK;$MZp`MdzRDfjy18^KOfPMsdmo`0ZF={f=osC5gOfX4&OJMab{*Ya6^m>p zl*Rby7>rOgsV{}qE=o4-B8Ani3b3mL?4|(ZK`QTLDi<)7iyY6nl?9vIs}e1kV+QWh-#+RqbMRX5sIKS%b_2m2%3I937s`K%0LpCg<%;; zWp@G(H8s#OMqh)OKNheiAde4{o(9}hI2syp{B^h%uc88$^tmu`^c2 z_Kv{z%-A3$Y=jVE$D8@#2E{N=x&>-?97XCN^v%(?KLnAVl|0I_b3_(3GZke zBc^*i_Ps=-w-SP@DI0rDhcpDz37uqNY{tlXt5AR)6G;Qnjh-J#H5pSuXK8dxm}&$t zuM9s9_^Si_My2}|rS2y+KHdQ{!woS1gSgzh%dR(+);~o!tlF)`touc29~@M>hl48X z_VC#1MTb>?_q0&yIzNSl7PJxU~dW7M*;ScD#gjwm8$?8 zDpx00SFQqZs9f!#6HPjCapcu6q`5^#tykh~xRB-hA(|M1St<a-Re<+9+8iOc_tc?ZGT+4-wS*?kgILb?SlpMaBB%az+>!b0yCRm&XQ6dZp~13sl!y zAp6=v1z0Enixhx7NaiC<=69LQh{8xg6?e9i!) zah||Q1*NXxoq*E>OWmWsLa8fvClZ+iw0I(rx}dYJC8?V%U5irp1SNIV9z~0G`8`V9 zn%bjJXjvs+e+iH#>bo0BlIjsjsxweZ(xi!!^nA?0*$Ao*O478gB&n?=>9yEqc2tsD zBuP=|k{kuKwM>j&%c3_bMJ<-1BzvV4HOkOQ>Xu1SB}0c{+xC6447HUEg}(bL@6kmB z32(qoksuCT#b+j(*5mnyHmB4H0a(eBiKwr1P{dGFZrfU{Y+LB@PPh0#3GJgeq1i0A zM8d+=H^Wy-c==kJ<9cM=z?C(}hnr9oL>?WamF?3+?fi9Yv)fR#On0n}#|k!WEH{&n zRv5z+HEdafVjcG6gz4VKcG{oKLkRHH_u1% zp&tK>08%T{!5ZN&Xz(G5IdNoFw@C}u6OjbCW9_8%%03q9BK=s!v6!VDcpSBB)l4eVfX!ER$Gs~B6_W3QbEUs!+GKkm?qomn&L?-k59m9{<)s||LKlkU2Ba1i)pjmlCf-;V_`r);Sd{9-Wm-; z>hSHn=FAAMN23Es=%h>wk|0ihV|duU><|d+SG8Jd7@zwPnxzdNqt1Y+VusRbx3Y5F zlc*eW{@2RMiYjBhqRPVt(lW5l!~W;Aw0xU7|1XrYg@|f0l|x;&#XgQ1n@)+WNv|9d_3zZmiV0sS517w${Zz{`Z?Z-RNsZKs_4{)qqmi2w7z zuM)qGiDyL)yicZqQ~KB-=ax7*Kf+LlLuzX2!D!$~#``NfC$V!or&`V9_-;9F&y?f# zNEv=mh98pdlhS=ky0;qTq%mLw-|i@jcuYx(ipnqmB95qxI6_98B;CuTdoh!|P6k&> zQqPj^F;e7|7BRqGDrCv>upnNI25spe-lW663|a=>E6-llmnllKIp}bYB)y;sYZNWHH(#HS=d#xSf#S~qG}d?Sr)0P zS*&Ipme1aXsyN3Y&f!t1HVESJik>g4(zCXVp4zHeoXE05FX(z+?w+`4Q_anZ?u!y+ zzsmhjf*xLNpOa!>T5@R%mwfk;4_1Odx615cA?$UsOVLq(&{znj8#26?3iDabO5pks zI8HRV_fT0Yl+O)T#Hz>@qIs~Wa1UqJi&417}79XGH^NM+4_X1M8xJ_0hnFXyDvv;5-aW;ehU)kD=)@ zWOx@~aE1!Ty$j2bFTzkeg}jTSd0r9?TpA5r77ctq8rT>OTpkTv5e-}!4O|rs{2&^* zIvTj9jOxDfDqdSr#p}wDug6fu5WH@{5WKGH5WH^CAxJT^Xqqf-58~c^mgZUa0pw&q zPbglnLVrXM;Cq#TGb#bg$^p%E#}K&i0CC~d%ITPpRP1M!v5$&~TJN}1bgA%5uZl4^ zxKWKvcPh^PMnO07aejegIs)SEwmk23mDIAoB<%pJ6=1altWf~+;FV`mC#K;Vw?w6B zd~XcutF@y2Xbmj01zNcA5(Z+Y>SLydo^_C^*zDl1cLUCRlQ|>P!(Z=4jjlquoe)UZ z3)4f-I-k<`DoxHo;}+&Nf-x7gwk}=9`FJ-0!ofMVSpXII?n)-0K^9Cm!)~TIni64& zlo*efJCo{7f02zxb_jM0z{YVog^{LzD8)$nBvF_jfa1*2AB4rqRafLI?zaYRmio#a~;iD;hM-W~KVOkb7d*8vZ zr@~ndufp(AVfYvoZsM?y?R`PeljdNvmkvVFx(j)ipm(>hBhE(eBEXzQea@ZBJ#D`1 zY2Q=*=zFqbov8q4O2AnPaFzs|tpI0Bz&Q#)9$&b-VjJCx-KK^Ej`u@sf=1HGgtj&C ze-!FuKf?Ad{TQ_|E9?CPT+?!IL!C_6?gB{IpR^06txol;c4WP(MN7zg(Mw9VLrk0S z?!ZRB69?2no#r?}8!4mdyxuIfhwVx|`z|a?^@$dRW4Mb^-0V;V6Z`J)a=dJ5_CQ1! ziaWER2~oVekz`fI80`1DyT48c2a!R}L_yn2#Gc)#@t_)*lkP6k)q3ns-iOVAqO>Ds zdJnce732LBYkV)VG2c?Jxj#cz>J~>@-cm%l4`2}WbJSH|?XRuZHap{?9hj-Y-3bTL z7Q&r}E`PT8Rs7}t46EWbiGnG&TZH#0V*Q4)885ThS*q*aZ#CTFuQxrcVaA|-L;ROH zK3yfp$Ue;oEjJgpfzf}Mw)IB#W4%5CcO15v|1gYwe5u6L9q)ILzIDRnI{zsEQVc(( zr2Eqo+A8lc>=GSy{>(&qY_c(>w@#q@ZfV=;XwV&7-bu8x3%tj%YSedX%+jj~+S#JU zYKZ6O*T<=~yr2ae%>3|rlYkAdSjkx4YmlU1C%}glhd64{SD;1BXp2Hl6!9a7h({x= zqDbTt7I#?Y%Z1wb`&E1QX#2mw{)hc5pkk#bu%Ua7!HvFRc3clEN{r3s8+dy6NgT$# z7~?$^$ZQ?=h_o$%m;R@aTtH{`MG|=WG!FFH0bX3&2V9r-FSzrjEZ$=$vk`3)9-OJeGAl|I7EJbQo99p_~&Y z2sc1^9#Pi9AlfsI7Xj;#%-d1o`c2^NenqWIbq&v;jK}`54%G=V%opqY0$}+kCWD5j zNHU1inl+ivnbd((qU&YI%kp3<>jJI>FdYrG*eo_m7vipq}c_m;=THqh<*;XNNMi zU7Ks3i_`A*FQUnH`mTnVR|Tx_Nky9v>dGs5Lqv~2j0LbxX{u9 z1LcbZ5nf8tV_Ky*@sR8kq5GF0>wbv3*%^9axE^jFiLO{oGs2xD&^!?T-T?m>j3E#F zwnFMi61`#{D(6VOF56=+GK0xhG&$4ltlV;uf<2YSxfD9+5$}KCF5 z{oW{CDlhSm2$FFu88o6}hUy(r)qkQB12$Bv<%a6D+)%BSi~RFaLF6mgT^3TwSoay< zQ1=aC-9@D1v;iaZrhF{xEy1q)UgdfMN!R`RQZhHF1$IZne=vNX6M4%L!@hO7YA$&Pn%gA?LQgR+-zfC=HZ;mF-|zfa4oh33^)*AK@P%1A_O63Ki z%*4C46KF4-g<-Q2hL+6XY}8?lEL2enzy2!1&mn=wb+oi`MXqB=WcP(M@Rvo1JRXVc zy0D@flkSL*YEC4%htbpkg)Mbw>u8B83b(3vRcB~akG*8|1gD@Z~`#Auv5szr<$ zEaHa2vKkwvko^VZI=&5(aW~QsCS={H*SwlI^=bx`E=Tf@74FsGc3&LSQuvny>>nqx z-IrkutT1)=ngCG`&m(kS62yZpng6=@abFV;b6)qQcwmi2>t z+uNkT(6#)AI66(q#GaI^@$q_e7kOF3&98967VpU?hseX%P91HQK8B7@lz9 zsfHiylmtvq5Xl_!UITA}&Czt;N#-!4Y7S;$E7673#$!s?>2&6l2~K9>&V;zrVD@jz zkRn1R5hRx}l6aa-o@v@8dZx*WzPyp8mp6D!rL>uLgiBB@?Ki&MqOiy&ITE|E!oNJ%a!Ph$GF1*meF7#Yvsr}2DOO*oz(qfEYEKAv}j z6gUz&f(BzWmyMLmJCR&IrCc^v<|09u6%T2W(R%|??Z=}`eZsbPfQ3qb5 zxVOQt|HE4OxPB;a}lAdk`wreMG0SNQV$3SUyd7<>l`W3J;(sFROL3`J`G%5HW z)ds>!^5wly`nh-E%GF8dM_Km98WwmGIpIEl$P|Euf7-^Em|m(P{HRn0SYd0J(mcg;O`Eer2|K1RaJYsX!X$7zPTf!5A{O^{GSWL))D zNz`>CA^tr?)P?s`)qbG*pxn=Je%=T8yjD9;5dlE=ig8t9h+$3|D?xt)5D525;w&OA z_Z~hB5a2O6-o!A&za-c^5avDs^~sLMh`w2Y+pr-=RjS6&Y0J;J}D@DaYn@Aj@KNf(l8-QLBhv5}p50?26!X>9;HIiNkL&iM+o zE@+Eq73kyu^t1w<5hVP+0v!}!{YHUS2B60k=&S(ri~=1KfSy1QzNA8jju`eR!aC%+ zG8zQUbl3%)@$5`xC(lkn-c>4+tMd`CW_JQR6WN)>PKU&ygJ5N2a}*u3(&a%eT^{7p zGH`j*@)pzy!SA+;K2sXuVm0Z#Gq}` z1Bf+f14pZ)h`VHNToeM>3dvwlNPnUf(w|5T^)>|{PfoZ80%mq|4C8KBakoq4I~0ID zFh@U+`A*S=yBJL_f56aQQA;4;-if%kh_1VE(ct)p4#CCCo#m@hj`i-)r5)vNS`^^i zigw>^Lwg=wFdon8=?WXQ6et3iqF|Zc85A_TF~2-M3Wb=|yaeKcbk>l0=b6-`TjXAd z;Y_IWPXrSEM~4Kv`fsHrVP7e@2loUJsu&j12I`wp&U|4h0x z;~a&rG$vi&KwYE@b8{w@O!h_M()oRCbJB3j?$GUg%re~)0Bh=Xd@eG%9PeZ#t0ZEI zc&CE)Ghi*O_D^U*Mx?YQt&TqBn=rI$=E^u)nV~Wc<6bYUXwf$Q&GqXUNNP=fX~LYe zg_Y>g6G8nNjC$j1D_BF%VCH2#?Qly86k40B*bwjEovhkHRWA*y>QpaBWoi$|mTQ}d z=cFy%*G65)Z<@DAo7;AzQ`0)GP4GGnRQ&Q~T&mxRtl+{(T)?UITcbRCjC}n>qwn*4 zBVT9W#$2_obNK&#*Wtxu*nb?ko{V&&2BUw!at@#Ojh!jXqk1`#(MFE>e6%+4O6Ifg zx7XoF3x-#8Ux;4!|10=<{suosEn2YvUr}3l6bBdM!>4R3!?7>?-ReSv*x_|mZ258x z2CHsudpd`-P;DJtQCDsyF};tFb3Hm)xm5ulL<+DoRSWpm`Tsr0zuBJ!dEq>JoLp#< zaeam8x|fWP?6TlwR9TNh)p||YdiKgx*|KGMTEm~b=*Fz_Z8Bzxj5#HUN%8#^3UIkn zjyC)6Qpvb3U82#)r81FRsFJDr%1V9=?uO;vKf~Ni?;jkxkMc%X5qdg?@cFQqQ(;@` z(8Di6AyZC^%eFY3_OlO!!n!{}Vg0h``Uf&pbJ8E@-WN&oTA-za-PM6cw`h)d2v1k-t`MLef}aEo0O|B z45*!val)ajL>OUH#755AyBR{olz(b{u+Y>?R|FJ?snT&i`74w4g(v~+nkukstH7?S z0=vEn?1n0^8>_%>3SrA6E2?b-MIy>Kf+7)P28+01u&g2*L62c8=BX8>kfNsU!WNZ~ z6NzB7LYIz>hxVFl!QFxE5gMi2Xj#=8^DuSM zb1^rRUou@{`V+7W+}w#|$J;!`nWlV6#-Rs`Qf5}Z{l?d8`#cz%$+T{(;birB{{#qq zPvc~o9XIMMnvw>)BAe6s@QH1ZTM+o-_6Sk>hcvbSQ@WqBNGSbFx}TxDOrCJ1lNZA8 zY*4a#iC(DJjP#bFZ3ncuy@V>TQsb1^R>x1E-^W<}!+)s5Gb(F5c%sO(K#!#k3V2E5NiOn0~gg ztoVq$r@7%0pn0cqT^_pI7ucWb{KbuB6NFj%Qlsr9Vn&N3v0ABS=|9+;B%@j+i3-z> zV3s8=+8hO|BaRIje|uw;@sDH3|FBWbt%e3`4g5}Gre51Tv@50w7?12~qWdJF8TB!p zT(j$B_-$=HG;Jwg4ccvcIbxx`6qHddBk}CRmmbuO9zx+13lmEl;`OmioP!C4Vkg>1 zm|ea2ZHCQI2V-Kb6$wp(vB9wnUC3a1Fjdt7&lk^=bvRMh;Y3-7Q)C@Zp*oy~ly8T1 zkiMExQn%>k$Vfd-Q}sYkfW|2!bvaGd<+PwKry})Vsk($AuFI)Zms6=OUscpa(7QhK zqwOKvfq9S%aCVN?SJspB&JCJRFX5c@wfUS%IG7tQ#T_T>Z#fhM%ndrP&7Ex4-#!3< zDDq1~7v>5Fv=FeM+xwuJ5U{0;{#IeYcw)gIslB`?doS3$=NzV=lYx#tx5M)hMz~c zJ&&Rg<1HjXuNFZ1>*;ah*BNhvgwcD{Z!oM;!sy+DHyJiw!suy(w-~mV%lK_rM$hj; zKcBO?66&@K?FBn2+OtaYDWaPEO!dkZJ@mUm@0eg_7qnq->fgbJxz+OD9!fh)e;%qP zN;_jjW@3Jms(5ekAXPjQFIbtlJXs42eFPb58k5qt|6!Pk|F6(raSlAA?IQ2j;d?QS zF-_Z*_T}&aE|s64x4e?(dR**l4X>uBDe4@+E*u|7>Ws(;iNa}SK-vTQDX2=fp zRF~QDTq0vdID;E{4!-o2f@~6$O)AI+ACQ4;LMCKVkWDI+f^0Ipn?8Lhp3WF5cht)t z`bsd%m|uHnH+{zM3-v_4|5{A<{5sMnex=d=l#aaQJ;d_wr`ba^*TAtcMDzcHqlQLH zJcdkeZRam@Oag@|?#Qz+Inz%BevS9j!@SKH=WWGg-nPs;}RvY9E=AyOtm@bfq+o8Gug z<41998vMn-T6RQvv|1N?=@@knBR?i%IFk}qYk@%)9>l?Z=ha{^V?cWvAnK{3c06ab z9>{q4wB>g?s@W6JJ!_na9}sQ)@`@a|Scl!A@9&Ovn6?x6c(+-kob*(DzzrzF)8{pb z)&sVlo7l0I*UQ?IgZ#&D8G){8ce;206T?%QwgwZ0LZT~{k_A`cTIm`7+PrhOT*C4rhix% z`i|)z8HOg9{xM-_l<6M_p#)nKX9rD`x6K4Inm5$xgu-^4Hh=XMEBJMq$OV0Mk8lq^ zXxUVLtOf0As&+MnbuN|hYS<0%Jub0fdB^Wf)vD2bdV|_w&q&`Z*xU_Z&u1Nh=~+ z1y$KtXimzN;|S=C)5A(clH`X&j&*>*=j0_LEg><>>b9pQ-`d}U%F)?zYiTqa6Jt3e zQfSJw7N+g^q_h*aniel4th5k&7`FRI5R`lBdf-*#7KWX+H_3a-o^v09xyOsT$eV&J z5-AAid6O*_X`?3ZSP2>qHaqQjg8{#7Wp=z5&8c0OxuLYzzo(q@=^#Zf&iejY(4l%! zP?CYD7bhAzQPGQn)V~p9aVq!kL?22WI(E^EQ!kC*UYvMg9rLy$*B-koy@K^=sm_xI zP|pEY14t5&meCuc(WDWeFy)g&tbm925&q%?_YwZ-{J*`AQ21ZIkFZ-%iFj5~j{OUt z+uw(51))(rDNJuMoku}RUntt&5>09)At@vru_NlnoLkLns+S`8T2%dyq9`*yNO7lMT#ZL_4OVIy4Hm zp3>p3v4{IP=eBNIV4G?o9$Y?)o)vw#;U5|9_<5-(8GLSC@uC1Z$^rvD9Ij6;Hv7e@wJ z3i%<5qpC1tbjXONkP-Vw7=axWuzovh028naxIe4L1f|#QhpzxDDs_z>)TA3}JD`Sw zY6=!SjOxvKVz*9NJ|a?2#p$WY<>Ro_QIQHXPz9V7Q-JWT;<{Lv*MX-N7ZM76tLy9t^iEH*_1h?3T^vU?mQ z{(I_>wrjX!R;O(nr0rNNrY%C-P^N8AR<=dRYm=-T$E@7)f5J-Q<+{g{cE0M+#+ES9~5=AOOtBeX4=EU zJ-Elz9vpc9@VEjzE&)$S_etqKtq`78y4*$3w-2N{5|er zWG)Oh*hQR$gtL%v8X4z6iF2UDx&A=v1_u((P{gq}-Bh;yGYz%yLoL?&lSyULZU@SO+WJ~|atyx(;%vD#Ag&z$jqVjDR&A0>(k`8+en05 ze2;0psDDI@^UI1GqO;i+hCR8Xbu!-?Y{Z>fM#c~#1M0XyrdS|TET9zhe(khsDNM_) zjZ48(hx`Ko-ImT+ri=kuNHH)x=zSMFn}e#x5|Z~raAZwKNuIAay-rlc={|75$l}2q zUg^CT{r;wtv!wkot&Pa>xg4C|poeQq(XO&B<|e%FpyYSb`RRE3Arbk$Mq7e6Om9|$ z!<&KnRxPX{c~8{a4#L5;hzHGFa0lWbvJcQBZ*0!X&{WED4y8);6=#-o_&741lRFI3 zA57_I#`w|oz3|a>`JJpQo7AhvQ*Cd1oN5vqmS-pD6F|-^2yUtihBEQDUPVZD2|N6} z)=l(n0bGltJ!l!NX;Ef+I}o3pdd;0pGdncNb=b=dE8UNee(Z=U{G0r;$JF3ehQ{bR zI<1YFz;7_1oShEtA#_KJt>Ol`cq28N$~(G6h9-j@gffX8@6l7H!{WhNwKE}~Ln)s% zq&)=pT6H?fLzg=-cMS05)`Yy=in~vYB(EormT&P1-S*~S>FlsPDjH5r|44aj`S;bI z+soz>vVYCe+E=OjhX%c$Pj}xgrvr>bV(w0m?+`%_Fpq?vgYdZwpBofQ3v8_C^N`13 zbbqr^-rr2hHw2wD_w^bk4li=1Ge*(QHpE{eqiDvMJXElagli~kv~LN9fQg?1uvc`S zE;J)!Cc4kW?Ylxv#^eOuXAnGNbf1MD17kRo?(YdaNr4ljlQF${K(f;i@1Kahf9i^_ zzWT}>ct=w*4L2n4b0x&IOkDEJ&~CVej!=kI+Ufi zUktIVXb3;l@Lf=5&W8p$zkPphfBXy&z*a2aK45354`gh_TZeRU9{@OY0ow}T(H>yS z9+2qYR(BW0GgZ0_ zv;Y;|Cp2{#IM+TBzX;j;6zRx%>0o&{aeQ2p-{{7D@-1l&cF`Itn%a`xFoq1X`#I95 zbwl0HGw`iOi8~`s2Vpj0K_Xk8WV3J!alYz??wY&MfLX7LF2pV!jTfHq{#Z^zbh=Sh zS`olm&fJ0`=4f&}V9O%EJ^;pJiJ)j+bCrmDwl%m0^ zw>CStnBnbOdKe-T2T>Bo;|Kim)B}1CNIN6z9mwjhQ)A(Yf_Q!(5MuF-xc~1j9VT_n z;ue`i0U)$zR;YuhLxLzXUze@PH)U&VXHvbLU6{_N6NR`1OS?Xtz=CpZP&ls(33Qi$ z$8v1^AZ0SLM{m%+C+mvScy69XOKz)!7UK?Y5i(2NMV3bIOB!Z&A@PIqZy#cqVF>2^ zY;IAL`qs_?SGHwaCtTT!wI6V9@1R(Cetcq}lOWVPI3};ItLxOuaDGbr%ZK6hYd#2Y z)-c*vGlDmc!n1iT#j*b55WQ)-y2-@%;44no1t(XrOu5B|DZE2s>g-!z<=JK3uW1fm zAEKL+-MBNAdzg2q)@&r<=I5KK^K~}k7Db-~lR@ zML0FC81x;bHN$B`xseSCwPkM-;e`dvSiXCmvgEthE&ee?6vpwBPB%6O46*dcdDQOL zNM3cl7Ld>W%DWy*{M&;ZqgM@MFW05WE@1-wi*qN?k>yvfZy!A^0n6 z-BA7%Qv`tvko8Xr2Acdi6S)QGzZeoSTaz+kp3>p?t%`FfQ@e;$@_aWzTW0Zz4YBUBVw2jA&lTa)t>eaMlABX zi1QezxKpB&PQ!eEC*arSSOt%e_PI2_`s*pHkIS>VK*wh@7`ihJXLdr735;0e-&!rL zY=5+297T3!el#k`D=9Mrc^nnN31M39E^*qj4mbZ_X$dy}-)#vt|No!v{b#@Z-hb2A z?ET}|pR2|k+8~he(D?XLhO@EzU5#FIIt#nPd+a|O{eNWtIq3fr``4rY&sg#O1oTTv zNmnc#_jqO3k8AhHvZV2Ic%0ovD4Xn`akhe!QRA$QnxhXj_5*8 zxPOL7Ie*9LcXCeec^_hw=;Am!Aq7IrWRLeODq&Ofp1%O*u&S8xXs9Wg4rnsDbkT(^ z;JqkyXj400!y9S1uZ0VzIQ>rER&-(G)EeGl5bVNrTT<`&po~UDTz8J5@tmM6sLWpn zMT|#6jEyv0rO}zT4E8DD?uj%kkpS;-z^*lBpsluyq$Hx6fZGkYW*06f3uDYKTtF6D zgl=}7K}VKx0awPLof%r7a5ZCwFV?#O7FoVHS#3 zA(w41^DUrIlQGhgZoBR@7#TB5OK*F#kujDQUjdF2+uZl)#%jhWjL>W2Js(AA&cxk! z4NXxVFH2w{^4}vBQOIrCj1^7BHrivMPOGA4_L{gR*-1l8Q(r-Odf(;k#;r8E^0#^` z+P}k3i3ZOyHcGpvo?X~h7jq^Uc4+B*r@E!HF&EkrW@saqC|jqAcJ#09&y!|4ETz=s{kUxYsFGX7=g!v^x7 zLLYKJqDD+_{dTtvm&Gb?8%hYyogH%BKnl0$`h;XrIL&TFnjhyb?{}%E`>N>-AM*+` zD_59uZc^_AM(^LSztDhpG!JbZ!slB9Io4Fy|BeV&ON5#BcTSrHK`XG6#vTLqooFc%G5tKzF-+FRdVmk+PFp%rq+M* zf`Ac%6a!>>M&<}y$4%hNuCGEBXrF0kp!=ARpB8_(U`xMlq_(O| zm*+)W#apSeCqNK2@`4@*U`A|9HqPcU2krpECL6&~I=Su$vax)S*!Ls<@u6MEJq-+sXpLZ7j&|1Z{4yU6{R-E4a^dkU8S!;!QmY#tT9a)c?> zsfsfLIA-!04;J?aG|Dm5!~~SVhB54nD2z{DERV@=$kQ>dY8WfN5#z{j#K7C)Uyt$r z*J041jibs-$uYmMb5@+_{Ou@pqLasE#eKqTwfls>s4~j&u8=U~#l>JSa?brSv%-+F zo|um{c8eJG9&+U3>c_zVZ}y)ZrQRFvLb<7_Z&K-UDwrpy0@FJh&E)xE^}4%~Ead|4 z(9qkqaomcS2@zh5Ubn5S*Ec)c1$%y`9sMxXPlEZQ?2FS`etSW_%Rg=h^-g<@w(l~Y zOJG@c3SW}{B%m4Z0DRLM$z>cVtwPhbj?C!7U-fqKF|qQulPS*gWAg1}bKKz1CnL@H zcJiEqHT__y7x@p>^kp=jozXz+`=QaqpmqSUmu;{2r$eM3>NfebzhpEGw(@h(hITTP zQ2M5|kdv%j4Fz8)sPc@4fsbW=-4_bvdQx;D$x7k`>!68RZV|78rt?Ms)GZ#vZxo9z zboJ6bak&n?Rq2aydZ%D@SdW&m7slB&%_(ZNqQ)MHO|mUK@Ts)=+z1N0^4GI9nXr%dCa8uL~(BIF#+b!9HXrY zEG^!#kP_50_c#>H$78^oY~n5ST6+3XHx2g@WK9d?gZx-iJ)bIBG~$tHlU}ydIg@1n zmTA58h5S%;KYghBE%og!+nb@uui4{gym_v1wT4b@OMcgc??D_(`jy4qQFSPmELAR*4UxfB!aE~V&b~iG^DA;^fp(xB8ojXbKmUB9PBtOYa>-!o# z;q}D$ab@{2fg~#7c+4a}OWNacVu0H6x8mE>x8iMjRT`>}ifF;cJz-2$_QCk)_)+EJ z`s!ba58ojjr5$%!_?|MJRz89DcT1mR|A>1h;Z!hUU_bHq8!Nw_o^LQqJK)FJ;@*z9 z8#Oz@?~Q*FCg=fNw-*P&$%@gGR7RhP(ZLvzF+*%*|9+d^MoTE2aTyH_(u<9kdsMi; zKv7kC2$j{RX`9S_3MIxzWYU8l!~FoiV5i63CwY5{2ec7)f5$>D5u<%F6VI4Rdn@Hx z8+T7Zy#T*xz4~1QQ~t1!L2&SpDHYe}4n?f@5Q_?JE1KhI_olq`6+!8>2IT*EgaXzj zeg@^QC0)XOE>2H`y@=WQS0R&6g_P4a0>-AlC|<}I9OcxTvhHc%y&mHs?h%!$kd*;K z1Ys95-I4f>Jj4G$;S{YN9fV-MPQrpbeY`y#NJ~JC0@O%Atpe04-tc!Uc&(A34{v-AE7mOBO{B;nOt`=?{tr`uUNXN;Y01&-vX$9k zUi)kOJ*NSA>7@rP?4VcRcMCrVk|&wiLXD)_eFLdB-F|f3<@hPbXb~H}KHtC6+JPes z@58vVmk9hW2HWl`)60~9!6^d2Jwta4nLAh?)QGxpt@{h)0e|m`KKujn^DOKM{_ior zv$4aRgFox=hlDYHM9K6&$LRGH!1{3j+)x2@1K_zaI;y?dIb3aVN|fn{(iVniVfegQ z5Iz9I=ZE3LF?>N7?!oX5T6wt}5O`q)F?|Sp9h;iMxxL(r0AobE=|4OU-^Ij2Vb1(ucFWC{yXE;&>d=0!2LTUVf7Oe z2XEz%)yB(uj^Uwd43lS(a6gap^TnUjZ~?KNYs4oDKZYPakbAhq7$PxVxA`eUr)o?S z#XvERD#nqrBdY*e320IP@{pXxH=esu&KmB&smCWkc)4$)(jvOBHlR$t9mfxiy8mEK zYTr8DThVl9aQ#4HxLXG6ZHDQtjS_PSs!0NK80zZaj1%rBadpq^NGXSUhM=x;D`eqK zL{ydOZ^BG<*CaA1%5Yx>9=TtT==+?0zeLWxY6pPLrUm$=OR<-~W|PUsFljfg3)@zA zyvt(29u;U^_%3}$xZlUducyY}h~5TVy&|ym0+x6=_S}s@@QN6I*X=VX&!6lDlTj3c zU7gOs7AKT`Ws~$nN=>huCQj3P5P+rc!%uf3t@7~K`vGQtC3gJ@GPC`I?6-(Qg6s>X zdsU2HKBvf|1N7lhNQfSHQ)a-n9!s&!yAAv8eZu`T&hG|dypCq&Sd-UD4a+lP3d$ih`D)?6gQVu!aE^M5zO<2(Pb&h z=X&orNRgK{Abo%!vYOl`Zjzo#bSCX7o2qmNRMI=iQvK5V7btH2r2;a37q#|js=$iK zcffc3C=gJso0obgTXYHw5lg>Q`JqV`+q;mG?S2(@)Gq9P)YC*4bwBE5)N8#TU>oz9 zPqgoyMEdx@1)dnm=3qhXeSsf#y&7kee2e8>6T=gOwr8T*BV`KPpg|cdq+jb#M!rI? zxw3c^xS|* zVjblh%_%GmWfka$S}&eSM%69p|Hs8|)Ln-Ybg0LX2FFmRb*6hgac`Di8V{4nC{(kD zkYpF$4LGiG!OM2}@Vf*z#^}|tdVEIHGTjD55#CM6gAPF{+?#nqAZ0-EVVX+s-hwRS zL%#lvdB1#rr^6^s8NG1mPNI&=8Oeb0|$$}}ImpMYbG;kaSg^AqJ;fETvq zrx6>3*|dNI(kn&1ntS;BABEqq`dhW)b9(X;$Chkmb=Q ztRL1v!V>@{6{h*80Zrb$=xwAbLGC}p%IqbvQxR+$iztgurT$JDlhK`v(UZh^GUn=S zscsj1R`+U1;;2AT3JoP>*CaM#_fOfpqBfeNv;N!tR$0^qO^*cyn5MV1lMOKFoB6m84YI1Qt;zj44%qucL(DMIg%$2=Yc~4$E8zS2 ze*)ZI%+MEk@NG#9aiAHdQ{A%4hq4Cu=1!+`EwLOd)@I=B<$(0Z3pS#dunq4Zv|d=? zIT$>_O_|qopNgX8tlt@*VHcZrR%>pD&5U!P$CVxcUt8m5b30U}eu0Gl5`P|y$#0u{ z56V6R`65q=h1rEycFH134^g8FzLNAXioI>|b27goMd~{yf3#&7eYAz|ExDa4KDd?i zrc573nM@Lm5xndBJ(Asc3##-;jJ}2)lsAAf)B80G-T);`m?Fbg+Vmccq3y1vUUz>J zqnEqztG6+Fr%xKQAnJE9`Eg)bf1awSA|=8+o7xW zH;wDpdM>3e(vC<%&v_Q2DJHbDj?{*4%XdU!IXDibA0(SRajKNnf z^0{nI5r;(Oj^&rWx+jKfLt0vQPr$0J9T=;Z76j4M4*2L`oZb|I5!yf_)OL48-2&9N zU}XL=c#{NV3!hoT#~|@Oz?T}HQv;>mq-4bg;om9Lx00x6Cuc#l#koTCKOx$RMrY-o zfO=;|_h7}Gtc&Tb1%4H*qebXhb+ou}r8ft8zB6VAX+;;-#@k7gkCWpa8wSk{K=d|- zKeHGdwB>?fsX9^iffkUd*J<<)mU;_{IO(5Q49(TTdr_GvK%@#X*!OvV;8o6EIP_nl z;W7*6z?W&f^u$o3=a*$Uzw;vb*=70J(flBXSFm^74TBfN_U_?cVD!zmncD8>hGX}1 zNxyLSG=rygqjc?Dl`j9TV(|K{qzL!lB_xVzQ^p)n1paUk0)x4}Nn5Z=(HJ9xH|w#l z;@Is^jPvh<;*;V2il!wJT0*@Wk8fU`gKhE}$)h#L;8JleyD1Pk{YdWXB#OxU239ZM zV0&+(d<2P2)kg$deQj?-_?bQ7y+sRHlRe(sD7DxhCXDRa6}8q~Scc6PJ(Hm8bZ<># z>uKDeyJY}KFASCM=)Qx+(A@s4eDQi~Wg{Wa%SNFipA!BDMRi!LExQm84t)?W)WkOw z5>f-G6T)!c!81stFU^2y_aNH%aSuUxfZ>BpGGiZ#;aO-1Ulsw7etCk_*@d?Wa_ZR% z2v`W(cWu0o8WI~K%((j}B%aEti*b2%`0a;UK5ba1i=GY~U>iuJ@MDMQuSG?SA5*3% z?_$!usOY%UVTrhVn8|yZ-b?cMMVK0?hibkWgqM{S<1GuSJx=J2R4rbEsJGh(p~@)i zAm5bk6#S+%VMJe(CN%kuv?KhFi)fF-;5vFY`uw0Wpk((6~uVB zMVQJr3U?*=ESMPResf5i@8wJ=#0;Vd!R0)`-0MlfB_^$YRoKrR| z=i)Xj-yHKdV1#*W75k$Dm7Ju9V3;o)_*>L4U{ZJ8qyk z>rXfg6F3ZgjMZ7g`ZGe8>U7^6y21Mxtiw-l8}tw);~J4W>yw3{yCs}|#v7C>1xg?k zJGmKDMM!CH1a*<9A`KApi_ZLLHU zdz#TuBb_sfXW~^didV}>5B1aFDheKCHx1$q zo&or4j4aqn_rM)y_aqiaCnL%!Ribpm`x_Q>vfSO8t~$(g*@HS2pp)0OZZGyfixiU$534ZIf(e9Tr34xpk&G_l?jC)>_>H0FAP(Sm~on1)Yr=IbmQ+r9J<#P)@) zZUx!n5X3Jc_h4W+TKNgCd;h?qPQ=Rk3<^KPq*7MOO1FHaI`tQ(^v4QBNO`WEhcoxR=K1BiaFZgNcDB)|?=h3Uy);e_E&j8+i z6}@ZiUV=9A2>$TNZ8G$4%&sHL`7+GC7*&tY!{Qihb=?S=l`cb@2~w4x!m;l4q!bQk ztkR`Hyc10w!l_E?J%vZWy#VX^1q#4M5Eb5+RPZ!>-PH6~BIG{+p`)8l3hJ^sMjFpW zLCoHG_X~g0rvKZ4(3*PTeueU26s)Gm(*zLE1aNhQj#Y{Y9Dn_trvGJGd4BW6z@9dI zSb*0MeLaKEMA5fg=-gJFcJ*znU*O;U_w$*?@WA1=F*Qm1Q1~$ z-*bJEjLBPYeW`CYPaYye*f;s0>kSHVL>XdT1hF;wtuYr7<_cNypg6=FHh5I?;887V z$L&^=cHAn-e^$oiA~AHjGzc|KhI!<2Q*GYiOH^meL`~JuzJ|`>ikP2NC#G6VcF>rn zL1UPNy@Y!k#*~o{BKRJYpXdCkNq3zp(1NtL4*){ipUJfM1!?c7miEqX$}p>dcT@x3 zIRJQpV&||3J6n^J{~IJGx!Ah6p?ACGSb2_`lM}PZp89%5g>NYA;27% zi@JBhqD~ozs56qm2-@Iwh)sjrA+lBN5O_iE>0n(D;v5nqoWo*eI5>ykW0n^oPGJPF z6bmd475>DDXepSj=ysC*Qw%^bm?A(p01%8agrWTz{9f*i2nZ;Toa589*|W6_%5$`J z6l_hq7|RW898Fbh98ZvzO6Cw0iJmR+AvgEvgl5(xMy`Bn*g3OcLevr?Z<_wq{Z!>#u*JuJa}xqY%{jD_DL{z0kt&j9qrwqH}Q^y&K-# zb5`dc4V6LXR)}>pVV(HE+?_F_XNG(TZf14P7XK{8#=e?9+NB^%_YrD;{cTTl?o3g~ zG~V`PXFjGf=uBa;7ZKJ0>sCEOl-)Mr>CTs93e$MPQnMHwC~J1pdoF;KKnh zi@>)C_-p`dK;V-E><@rL5O^;E-w%K(1YS$PPXnNZzzqZxlN3-#;0Xjw2Eebdnuijw zJ^+4!z}*Sh9031?!07}W7Xbf(z%~MQ1i%jwSVzF!0^nZ|_=S$Z{Q}@05%?Yfmj%GL z5%>%NdjjC=2)v(wR|UXV5O^a2?<>#q0s_8Vo@X}!-wA+EA@B$Sei{HDL*U*7v^x~= zZUoLCV0{3*9f9Ks=mx+m5ZFk-DFN_e1R|$xe|`Y$Md14c+%Ev0fWQ|Bcx(Xl5%?eh zdjsHs2)vbm>jL0@2)u-VmjuAw5qL5IuM2>45qJ~3Gh+~AeFC122k(I$FixZ_l5}fQHmQwz|RSANeH-~ z0H=q52M~}yPKJI#q2)64OA0NPp(`o0s|@u~Xge9YmO_*M4{`4SCslRDkKeg(_Pr^) z3$we-z*2T;>to8o?oxJHx+01V5s)INsHliOodMgpfV~8W#uhP_5KCf@8hcNo##pe% z#%fgTJ@zR4?)RMg$}EdXe*gdf^M}vAx#!$-&+YBpbI)bH#Vw(Drh%NbaQ3yM5<>ZE z`b`2Ak*56|f>^nP%nxbtjw`UBu&|7SgKSkCu1f48x_98O8gjg9fH10eOVmoP?-{aE z>(#oablH%;NFFq*JzD?Nz%y%jdt9NtPxd!f9;q8@#Ebb0jaFuZ45=T~iXG~*Fr(7Y;uu~zS9^~G4 zMK~jGkJP%uVbU8VCx>dPsA?*6qZeW?A*E}CdU->qvDlO4Xd zfwQd@Yu)ppLPF)QV|Q7%kX0$-)j$xI_bWNYXFcRu zi^0UHMg^5?paz9!Z&pELj4_>FRKCs9Nh*i^Hi~kJ{T9jw3UP(^v${`&#K0eTsm+o|667M zi+z(z4R%r)L65DR(;5ERbS~|+lv7$+n$kwau-8)i8=v_%ZW*-tyt^p_a5Zy^{dQSX z4k2y*-pk?lB{_T!G1jfJfAsu+Eb%{7m4Ktx2d$(vhl9LSunvNMR?M<9L6?5!%LN2u0jEDJBQ zg#`fT8EQWZTU80e9ulGVyptxq&_?-j4nsefFMa8O9abUf-BNv@5jJq}{*qDX!*ajO z05dGLB@$)=4MF|57UTd%bEiIH9xc^qfsC6LsZrPU34mH|5Bp-Ub4HDC>nh?Hbe8~e z(@G`_wUT(-Q79MNecf@-q&Gw_qcXJnK_=Oy4EeQ){wQ2Dvn4bkFCC|GGY;{ga6cly&{>@06p$v?5WipT@#q zjG&7{T0ayzLRUghUytktun3kMv^%OnLs7kdvR)>|c zGBhhXb3`Bb9n!52cX6j1Ws#z?FzL<51RLGo;1$E$CLgo+wmjP?xU+i|>(-IN)o_ek zFsmKwY-p&7bq!3eT_!ZJoPM8P-YKf5!*`(ni;x(e|Si0Gy+&C4{DJLn#t5JjyBx})UKd8R1Tmn-911vr!Jkk|#9;qdsN4bcjw8XP7t_P^C zx9I_&OAfmX6f31McDy7JpcZ<#PW?m06dqhpz7>9{N%jX2sx9IX+@xQJskBJU#d z8c}c&10`^2~g!#a!WE_!rjb&NHl{LO+}TFUxn+PGkjmQXi>gHx8qwy zz5^{>YOV_BhbYj_O8uIpP7w0Dq9!C{+r@NZI2vJ`Mzk&`hwIJK8O}c=@Pk)F_;Q}U z`sR^$^_f9Fxo&(Gk+Jv`S%mdgD9DfxAegjm9_Z&aa_12hN5w9P^%0ibtFPr33iusFDl40A%Pnn(e)*@lp z2BCk(if>_zH)7C0*)wFUmhY@ zTp}bI@|G)?!J?tP7c>Iw8KxVI<3H`^;~y4`KkSS*{!=RYb1Im0J898;wn-7v1AWVD zF~@aDPoNz%TEs*k&3;d)TU0e-F!P*(Okf z8>^Wg1RsLf2X9;F#}fHSFOE6+T@+?D8gYIdTxg3p9M)6fF1Ug0jKKUcJgVB?j<{E5 zDaTZc4MWUA_3h=BJ*0NONB@(?(3rhDEC$%qsVCw{GC83I5;=RCMI(!;J01SsRezNs zcHf6i$RWxjs)L645D!M-=)OW3RI>hrN+C!)B2%79 z)xXtKLzJkrCTyvYsbrxEXrxkZOK8|T5qjv zCS02d^(*I_;fS(=ok(4E*vi&LQ;pGR@5YK&jK<08Fv;oqRPs?f3+>B3qzKQniFRJOQa9h3+xuGUM*tQIZ^riSn5;Or$R;8IW#DkiPpCC z%9~?La+oy~gGe+Hrh+07+-ejJl@DhJWou>I)YPkj)~8j=b#QM07CZDpwm(rTkj+lf znwD>8qQ8)*uLFFE*z0|oV})AHt#ns&EA{ejm5W%V5vyGUId+!zZeR(Kp*>O`)}QQ> zob1X8%jj*u>jd6vC)&8|D&;MYK+4;)QH1m@nMiWIHbwzdERtGZ5oL=Qv?!YqC2?gu zGfgIGOHB`U)E(Q>L#F7GllHcyy${BvK0ap|79{X=6WPUXfH3)Zad$*p?I7GI$;m~hS zh8d!FYbZ@QHNQ~W=$*{nhyq`Gw#DYnIauGu(K?0PRXt~OKaKz1$HVE`)9XG|OP}q8 z3c2sRN|L?Zfcq_8iQ7XX{+%f{??+!x_tL*JmGtjn(%kMht!!nFU>T-mEQ=iL14l0*01n2dz}YK{(>HLJ0jqrrL^- z!UU;`Gm)BjDkJ&RRNmPHV)N^rWeu{T)6#ERM_oIDRbt}aq73`bDft@|dErUrz4{d0 z|545`>TnZeKy2|E)~M_@mXoVFcAiD=5<~3zM@t*;y3KXmO6v&axSiTw$ROhkh9i{2 zK2UFCPeoi4)K~zA>Ualf{AunOahk6)v%A;+uUAwZXOifdOzG5goDLvq(+zgI%VnQQ zQw-e>`UO$K+(yS5a*o9ga~;c4B(2T6=W8%u!&!=sa|F#@&e3om!|vs9uVDAFaMNXW zqX-_%$Z(Da{sg8u4ery~eTMp>`+Yx`RKr<=G_7MdZv5M;IQVL~Pqy?OM3|1c8F#S{ z!(d|O5@Z7)wo*-hVbg9W(fLxDixa{ghZ-cOB){|&#*bI-6>7gI(*tVkLv>Z0>sH0N zdWb*IMVzM*zj6`3(ulSAU8E3j7*y*mNNz#1Jl_p)z7BAKi?~1|E_4wWYQ#k@f*c!U z@eGIr`p6<`D67_Wdm8g1*Hsn}4FJtSJD#PfE$ z8h49WFPmfs$GM))w6lGzRAa=nFT=j3%5?U^s7XNC%F9(54NW;0S*}dW5YXkhmF_t0 zh6wVCsk1*^$G7YKzM4{}lHi2S#mgi0rwtpqaMZ4m`fDB;)?-xPNWHb+a?XL;fxBXsFPa^8g$85a0osPZhk2~z2k2Us;)PI+l@JjnXK+<24SX@k`G(yM- zAy0BMH1-i7{}lrAG!ID%WSxX8OS#A$pmXv!LZ0JM4hHgeLZ0g(Yk|CikT_LkWN#qP zAtc>6B4iTC6@*;x1+M|}0772lA*+DgjgU8a$euusR-eKiYNV-P8%WOmf+SAKD${-d zPAi(QsMekNib`Q06#9`wa|=D|r*{hJg2UDfOW34bHjzX)5!sf{n_c-N!g!j^ZE1zW zB4lf0nnDy72i*HB_fXSW89*JsE$WbMQM0#2%`8Dt<3+(!%WEuzaP>zVaw%^5t7`cQsFCT3tMQ2sa+I0RX`zi^_3WiX6ogO z8b~6D>RLT*{MH?=$WdFk4tU6xSB8bSjci#=!FakM8H7)IGKzD<-e+193 zn7a45-!Y5Tb1rOYzc1t=+o9Cd`ZQDhX4=G&?RRnPNJ;y{=!Jh|&ncVF95ZT?a?E;W z=EzaC%JJRgT}Cz@r!nnNv1vV>X$Su1*fH%FhP-g?^@!y#_PqR!bH`9xUKxDOnD)nn zhiu<7q*c-sV$^{1$Fy%@&tF}$WlZB@<;eea_twUpTI-;Wn*YJ;gtHMYMo2lX1o<^i zXY#R92 zA)!*-dJnoBHQ>T1x7oI~g*;@FhaBP~$9TvdKC<0I{^0W*?;$t)$TknT(L>hRg$W)S zd*^71t?!JOS6#*=i84hr$s@YJC#p81bUx6x`Iu;L*N)GUgjsiBV>DsfQ?cLNS48_T zRV{Z@duJRNSe<4=FZC4(E7{b7AT2dII?GQ{CarO%N{{mJQUN>j@QC`IK7zZR{BqgE zd;h(4t9B1hx#I*2G(7sWtAqcp(R+(wLdHX9n>Sg)eP0uHFK+kl{xctE8c9S_RUvy9 zN!Blnu(Lxfa07lLB{|56dFz$ru_G%r#e>Ws*X|Y5hjQ@?}Fkz>DhdI zC8+S_uV42PnG<>as^+=hx%1rb^v>ie7jczFT8~XSNGRz5N#pP_02{^$d|A1hsMf14(^gCbiS9 zSowPe<)@5?01KpaiW6m7)^zEarPekk`iTX{37c(9l;OP>$UG7T8>fZkezY)3v&l=a zqZH$=iFE#iGN5Dx%)@rt<-xR6819ME_R=E6v}v4{J7hK@X@f?>F5bA2DZO$AC`sBw z%UxZ$pUkgT@#RlbA7?ixC!GuM0uS5(@EQ-q+lu+yJ@A$a1wP<{=_&cg$Gi6EkQeAi zID=?~I1D9IPSz`(p?E^>I$jnQ@tZUAUyg@m)_xPz_i07)G_p`nAva1dr2RT|NYjkFZ6y%E&U`2+OZaHedGW9eh2!+w>_rFESjr+wj6lrJP|ag_CAM&pyD1n zm&Rsa+Rs}0{DqWAxFvJVYs8}yfOyeGNatmUdsO(B;X#nrKlz9D_>@BY!)GBU0KYC~^%bKD*{4QQ%llv?XR_o$(ZveLKidPS1`jC*OG=^3KugJiEXC)IQ)!F!T+ zVEy}QFGp=IeU$2jaUOPlvZzmzC3Q4o+Rkb}AE_$fKDPqMQJb%s$YYKSyjRF$&VLv# zn)PUn5l77! zg}t!he;`E08vl-x*N^(tM9A_-&_8TH*_EIRgQvRs|Ek2F?T2hb#5Sj92vSv0<7_X5 z%uSO;1af9TTjt8ZXL?zF)UdKgZ)>>b_1^B*CT^t|INV#GJ?J*r2lWv0 zkc)VT5rt_ej|n>KGqsvwZGNYTt_^jA-fnz=#tC4#8K~-yqtCzT^?9#d%tyPRl$NxM zaCTH6Yh;Vd%bFRczTDv1;)?mUxJ+H1dx*MauDm!*>&geI?r30#;S?ifS6O^Kx(XM? zBV_I+H!VVzUUHF$vk!KoVirNbJR*k zXeX|)yzl`wW<~UpN1+esj+ku6RYds-ZrXSzAxnj+qw2C`wV7#3lqJmd)oNFv=Jx7v zvZ*|pzu$C;A*3A;ardn5gN}(ZH6=Y3rNySE(+AU(aDQbs++vLOaMx#~=e?^ci-)N_ zAcB~Y4IAt5-V2+%i(C25iC&V+TOsI)sKi-;#2GN5l#N7PE2v+oJXVLJE7rm!dL+7H z9aP)KC14L0CDW^=G7-+dHBqZqV>6{`t$Zp;dz`YQ=h+G!yXcA<@aU<+Wqhy9vgnFm zxcK*dewkU(6>D7l#{vAfD8ElTQokl&XE!Ai;bh%Vs-*m9y*yG{>?in#rV2I(O4%h_ zM22dnUv1gC)yjYA6_4fF>BGF%B=x+u@-H~2B4bV_xzonBC^aCnxhI)+4XsKeZPfT! zd!VYGwm+-#H`s~G{Bq;kQj?jA(%1%Pq~*qS-OzQ#fv%<-x~@3Tt?7oYD-LwO=!UK< z4s_>qL)R4ty0g2X>xu*2McvSK#ewd^Zs@w=KzDIBbX{?v`*k;TU2z8Vsr5Ritkbzxlvuq zI5)U!DdiGf%OjnlyS5`$(|v^IY!Vtvn4xRyh4ZTwPbm7f7@TaB&M?)Bv(L+O_T4n!|qzX-B)Zs$}<+30z$;t*E^#C=XJf4Qz-{4LC2T z0f)*D0`Nc6{6!Y_q%%*FIlESf$F0bEnx`wG>ke1L)FkMPx>g9)#8O?BIS>=hcr|^j zr}-~e6ID|WnXVz+1hUGN2&)-M{jE3PiMn7@dhX<-SU2BC1bUDvt5Nx^Oq40_G6Yrr z7pvTuDocC&M)D>uRFgYBXg{A9bM^ufkZionRn=Ney}*+Sd^1sB$yGySI>Nh&zq)I& zzlJ>B9o*xK&^$H_E7uZBdT2FRv72mxu9;~(3wH$2{J3*4G#(7_ykV%X)O$bK6@!HX z?zsWO<9Vt72ix#ixDAg*z+BW7lTBxG|+x^8WdxLLrq0N1xjrsMmBJ2l?elX4FTlCv(;UQKIhkIBx z_5m^&51u9S5>FE>c6hZG=Q40BLBdd15Y>BIREkkM2QMZNMm4I(^g{np{rkB7{hQmy zSSM5ORmYIDoUV`(a}Z-hz_>Tevm zJ=fjR&Wq6bucSM*f2FcsK-Gz&hWf^0(*46LAh~cd?x~Ty8{A-}(w5#6l#2mr|ILB% z-SJE@&*hftm|7nu$oQXK8GG{maxqx%qiRW)g3`arP5)elf0T4%=q->p)UJR8@QT|c zQ$HuwC-|I{jM%Fqq#WbF`29xrFMcP}QJufOV(286yVsJQ1oU_4l0#2pMJ43v5ySaH z>*h#yQY>l%2VDy^nkz{PcM!Cb_Jhx!8f6p?_Hd)Q#0=*Uy)%8n9hshR&n9q(;W3s4 zEQ+|YfN*w1pseGWN{h%GpG0dlCC;OK#~WiQpE>)+ixkmD3-A5K}M7SPj$pzy?Mx>JG#No|kNP`h~d z?gq4E+-z4evC1ekBN|NBm-^3bTGjq`+H~^&S(`3l{Lik8yKU1@1yURTFtuq_OizYf z-P(C2ZCe)M^Z#n&7JeHTI+@$|QV4raj<{ADbfl0Qs2aY>t@h6X)ebV$^HXj;Kcz>y zr(ML;`bU7SWg zo)l)O46XxLMxyIY=SkGRcMJGqvoMqx6nY1Pj8s9?;;bUmL+yr30?|V1!(h@&@b)c|Z00cglm7>c}uV;)NwR|IQ4By}q-c5*Bs(M)Bs6T1y{FnwH+8si%Sn}n&2As z9Xp*aW4(#iNR6r`EsGmTlZtQ_X3>;fc{rYO} z|5QsiG@+y#hs&*KVFx@4?CAA4+NvhMGszP); z%ZojYIt{4j&|0~D&k(0R@4oF|(And1DkBQTQRbp_!I<3ZRP>!Y#7w&HnTwb!aO)rM z-QeD5jH^J68sjWF9`|ISb#?Ch*9Pv%K-Q25G|d_7mx;~%2P+4 zUKO$nlJr2(ezUT3?}*%DUK9yF${69K77jsWzV0_c+%$;LTZCq6UQBUXj?%l4)o>2? z)o_wcJu@oI#ULE2D3c?;)MeEy_C4D#E8J^&md4^0NbK{JSZYRr1BtAwc}>0D;-y83 zGi5Q7o}F}##cGU)q9;ogJKXuVbrz39Z*eIbDe8IQGP>34jOD!m;x__)GVJ%n;5)0& zu`PW+o%;n2PD&Fy#d7{-LAyF!Mm>sSk2tg+;gUUxN;YOdwdEa)u3lTqar&YXhnRJ~ ze$!pP%Ee*JIbSDgZoj1Sm*={)zw}Xh81zK@^q?OtYD)c}niTM(y28BqJheHD-hnsH zj1{ABUK7dAE^SDi5kIFiss*x(+b`KVjraG1E#>T=qMI1pfVTH`+TnS3-DuFA?iVO+ zXz$K(lI(wx`*^g_r6ohC$wR0fYrQ-DY7FBW{d6y$2Emq+5%JhbdPMB3(be%xusZaJ z%ITXRMin@HM@e4*fHwtwi9s^`g!`=RYoUN$;MaLR+(f;Bzwmc%0Q<4_37CMlR2Sa} z@g=D()g5pW9xK8(-4!7@uqmQRj9AnN&wiQz?)ZAlV>6|yyx*eoPK5ZOi2m3~apRj` zPm|McB6?nOPNEAR@Tzq>;7;jeFw$9x#9ZSh6XwZ#+m}*0kRj)0auVe#R!vm(Xu@s| zCgz0BHl-}JCFI;htCZ{%1VZUJzeB_57hm}*(sqwZoBJ@jwZX}eUQy@0rgK$50zQJ13WOpdSN)B0A7enG7cKdgV+u^}UdI8lS_IJus0xt?&)2$5bV z3#(B-Z~LuA76CXX1O1M-w}HK@m#94733YkjkjPKLL=fy?k@Pn28=@t>8#ud#EZ~&w z^E8}OscFE|K24UseJG3Il{Kd($Z@1_t(pSRenRyErrbjcigD zH{*1_Qb&3QxMjjM<(=t3HnT5j;7sf#(-^TzGw#MaZH6Cj>-O_XQC7)R$7X8u6!TeK zvg`32l5=^MQ5%05JoDG7_E7i{i-`}xBY&RtbcecBaK8J=5^L}rP{>h(O{@GO*lG1*(7<|5WzW${#O%K#`=B_ZPgpzmrn%Km^uSh8ioHAi}9I9GYfm=@?Z+cSOiSgQk|n4=`NJ z?Z8j^x|Q#t>wP)d@2WaD)Il~lEik9yycf|r9447tz&{RGKjmk`y^SU~$Z+0`(4{c@ z9ukOrOKWudZXfU|?h8`f>jR`;(dgD|u*~CJ=1x57mGdXvmUFpC4ffCbj}`je&f>=? z(?ex`oXSh#6SReosl8E)Az#N-yi>7ETYj#hsS>1vK!dc_0fC}uJQ%`C6`rOYQ`CJh zsE9Vz^ZnC5$*GJ?ZL7fKqezGm!&o$ppkMHNifO--6YQ8=qZ|>M7y}+hXucN(sMN7`*x~<>X zf2!Xak;=GZKuAnfzpr#{D}9((+;YmW!&kfN2x`{9UHHZ}w+r32Gqj0$PstD3(Vb)7 z(*mM@@hX6RjlwmE@5TrT;x+2`0aW2S6xYAJ;U?YbZPT?#r`FKB@2DE;Y0n)oNVbzP z4f}M2{)*cW)@1|TI+4Y%N*AN{X3XFgubBetIyI~Ifm*l_@5G}b_V<44G^OE1?GY{19rcNFN47yfLE!{{fMz%?c)u54d#lI zN#=JFuo251rMB`h(`tF+=fbV~pThmrZG1od58>ART)1z%nd3WMe$SSc-}h90_=fem z4(>ANm%1Y_WWcezePu{+JsGxxs0|I~}Qxe=AJuFQ}U$HO_am zvdfii!s#!wIC#gvTay76L)8Qp7{rMom3dZ|y8~7fr<9^cKKb3l`_V@$O zGe1z?k*cvvw{G3q+01D;YrARSko-n4rNQsxX>r+OWTIHO=nVVSGZwu#&81KFDVzsV8Y5MoI^c)c{N1*g}+2dbWH{uIt&?D`h+AI zJium}1`t)Us@&OL!&Tn+FBPh0ODO*-O4FiK=ng4eLE(yoiX=Nw77Y)z94O~UEBJJA zIv`Rir6#Ga^Nj3*<2sdaOGz0`!t07)hVru_vFBp`e@qINlir)LPjTtJ% zDwLvS)&_A@4`pPDh903UlX`VYj^~2W{UW4Ok(0gCoQ;47rDHGz6(}FoNW~^9ALNp3 zYn0?@(oSxU`fh_JPUzZf+`u`X1(ihg8CI-=b=uKTvtctiqDoC+SROW}__udsr8L=T zzt0QB5B&9MT}X&dn)iK{RYr1zm7k%a&y?rS-HCMR9#B8Am0K|qeYX>y5vDzNGe*2E z<_9ICcialoKyB&5KMT!mLI80N5EDsCzmi1v6!jNqsFsnO0DU8s0;5;YkeX>Pkfakw zW7F}RfSsoXcGrOi(rFcK(a2@dCZ5TE6Ce-BxS3o_Q;vW%5OmAu?nXt1vlWYz7eSBB9O!G5b|Be{K7B0d< zAWlv?p(zgxyY^=^)Y@P3&%gNRiwK`QSGe7_LJumHE}~K+dbo%l8qw25kYj=@B4X!a z$?vP_z4ttC?~SyS?7cy5IKP&zn}SOFOO>J~*nIJDoK|A6?dDwgvc#!-`m#jmi@ecY zyqP}I{t8{Z1+s;ynk`8ir2P%{25&Gys^ukVe;$GThG=Ro6_ifXB|jr?nYqACgDLjf ze%?`C`DHr?JK3iZZ#|UaO4?qI-MHF!^5Z(&wreY{c!7kE}UxowQl3D)xDvwi|DHn{age&uwR6()|)hMgm9Ym8`>`>Oy@H6 zcxrk0zEEQOk1?eMW7P%;}%lb5LB1 zrv>*M6qnl@sN#c#7T1OLePnwZb}p+Xk=n)YBg;zSJ8OIKCAS~nzqb<~x16kQLBTP6 z+jK}VN~h!JV)|jbIdl6=wMYeItGMs-R*)y^#ktbu`CIUOetW6+6A;hDEk6O4N9=0^ zXwDm`0a3W$Q9k>Xrb&uPBDJq8&$w=yJCC90VNoh2J&RJFz5~j^)ds<{M*>y03 zZ?00>5U%7@Hlxw)jVVb{uXVNXl6(S%67J|PwQd+}?7vNYzCTBises*k=WoF~ho2a- zIGAQB2s>z%(%G*(!WM(e?5ok}X{!`*+UcB^AvX=Qhiv9Egqdo?lYzt}9i^SjV4gF* zgbnf5@MQw;^Spz7*$1Rz97sZ(Q2yGZ+=|e$!=lw0sXVkywj3A==f^cB{c_U$il{7t z{j$*w7BAW!P}LD#108Ml;q}`{cl~CiUxLOjCv+%p*0BHSXkd3W11I^MGJQ`Rwz z_iqODJ@}1^B8b~a51yQk4Jp%nRifbNe4zLZ%~dt9r!0bN?*luIzc_V}C+ zY4Mbame4S^h_pD@P?JwGWTxf~jXBp+J@tcdFFE2}SfZ3gB-nC(Ppuf-96PEjp8cFZ zD6i&!=n9?hmPfcF%^A)}_bkOA`=*=e9QkP4rW7+SgK|U#D54Tl9*l07`b3f={wa%K zm>tQ#&UMh9$W&Ar_VtwL{)$WiH%QV+tgJG&Bv*I`^jsvQuNJqm)y#Rt0@$C{y|uHv zI*dml##8GwJ=+Moh}y+`eh=#nYcCMx{FY~!#z^YF+%mb*(nhIfi;?fQ3-0CbqF?#Y zSwYi)=jFS&8})z(E0K5?M*~+zp+wS=b^9X>lD$jq1}Nu7w-&QrE#6d8i{13hJ>%B4 zJ=5Zz*=*=jV>?;yvW;k#C}Yxz4#eI3`s;zd+>gs-+&KR{aPC}|5&7>~=eR>OO0qFf z1nAt1#qfw8ve@WBTVy(=<*Km%{vPt2>KIO)fWjO`S?^(zrdC`UmOa21OMkGvxu9>O zI~Rn-j_UV)Doe1K^5hh<}ngScTo1-m}=*?+gY#7cl$Ymr< zEjtscu~U}T!cIp$J1@}N_%P7lxV1r^9k)m;tW7uK2K`&D{!FcCH5jxQ~|ctC*P3wV;T%qle-9b)u*nf9E!IzURB?-3xK^ zW!wI(me16|C%7GaWPnj>UbW@LYz1S+@SCvUpRkg{H~F0%Z@NGR+%Ur(A8!{s{~+qP z-`_3{=@Y_pHo`X>(Qk>l=t2(?oNRm zNBMK_NS<%Q7%4|d@4gN6t3PJ_&k>}_S_GjZv6@e4z`$D1J_TxzY)dEz!GVh=`@kh zP7ASS?y6OSGBZ>0fG&}mz9atYAOQxrjZvd7es2n1{I;?^HP3Tgo~|y@6tTnM{@F0n z_!;zb55XGGSa$QLf595bN16na`;vJX539GO`p@a`UWY^ zvrQYep^A%uackrH(tCXs7Ar!{5^T!bWE(7)^XtYrw@ZGfYPKFXaHGjJ_d(A~Rmnuy zZo|S$U(ZaX6;+?^sK%C1d4tQ379Zz>}3ERAiy~i$-?+l;~a%W^l9qTxR7C2&w2&W>ueDxtS=Z^e6=1?AWA=PbA`e{h=aJk+l*P+Hz>L#&!_V zl0-D+9F3eDvrTl-gjM6@w;NxjnW*d%-^tsJFQ(rzSe)oCrkEPC=}INPZP0CWJ!22CcW z8!2>>|AZ~NK@BKw>B_V$=MF}rIh99rnOkg1B3+aA?6OCAu4$uT)V&v9qdNP3n*9Qt z3I=XsX8ZCD&-|0Sy0eor9RnZsj#Ihz;ZaH_+eyOM0BHgWAD=M+~k;!re-y=zeMq8#1Z-EoZ#;wAO zs$)9$(pd_JpQytdVdp1|6$1nrEl8+wvp<|=YL((lMCFCu$}11v4|1cst7~+ob06&h zqF4q`=4sWmC+T^W*Bbpq|2Cm**%rir^Y}duXv^*XdsoL=(p!UHp>7M0)47~M^Q`lg zg_m-WUb@MK)WYOSPhWV`i0Xk z-}EA%ak`d)7hEfGiEizCMb8W3D>bT|O~t6ml)H$BQ5t4e&GBqp&3S}Q1bekK7zJ2#iZO#+RGL((nbC|e zDOVZW&NRz$O9YFdS{9acKSg

    BB?$xIvg_vK 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 diSFbNE$5T+F)lDiu7{tr_E9VHN%<(se*nMczq + + + nunit.framework + + + +

    + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the path from which the assembly defining a type was loaded. + + The Type. + The path. + + + + Gets the path from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the path to the directory from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which may be the + path to the assembly or the AssemblyName + + + + + + + Gets the assembly path from code base. + + Public for testing purposes + The code base. + + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace facility using the name of the log + to be written to and the trace level. + + The log name + The trace level + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a file. + + Path to the file to use + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + Waits for pending asynchronous operations to complete, if appropriate, + and returns a proper result of the invocation by unwrapping task results + + The raw result of the method invocation + The unwrapped result, if necessary + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + The CommandStage enumeration represents the defined stages + of execution for a series of TestCommands. The int _values + of the enum are used to apply decorators in the proper + order. Lower _values are applied first and are therefore + "closer" to the actual test execution. + + + No CommandStage is defined for actual invocation of the test or + for creation of the context. Execution may be imagined as + proceeding from the bottom of the list upwards, with cleanup + after the test running in the opposite order. + + + + + Use an application-defined default value. + + + + + Make adjustments needed before and after running + the raw test - that is, after any SetUp has run + and before TearDown. + + + + + Run SetUp and TearDown for the test. This stage is used + internally by NUnit and should not normally appear + in user-defined decorators. + + + + + Make adjustments needed before and after running + the entire test - including SetUp and TearDown. + + + + + TODO: Documentation needed for class + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext + + The context in which the test should run. + A TestResult + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run after Setup + + + + Overridden to run the one-time setup for a suite. + + The TestExecutionContext to be used. + A TestResult + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The test suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run before teardown. + + + + Overridden to run the teardown methods specified on the test. + + The TestExecutionContext to be used. + A TestResult + + + + SetUpTearDownCommand runs any SetUp methods for a suite, + runs the test and then runs any TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestActionCommand runs the BeforeTest actions for a test, + then runs the test and finally runs the AfterTestActions. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + TestActionItem represents a single execution of an + ITestAction. It is used to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + Overridden to call the inner command and adjust the result + in case all chlid results were inconclusive. + + + + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + A utility class to create TestCommands + + + + + Gets the command to be executed before any of + the child tests are run. + + A TestCommand + + + + Gets the command to be executed after all of the + child tests are run. + + A TestCommand + + + + Creates a test command for use in running this test. + + + + + + Creates a command for skipping a test. The result returned will + depend on the test RunState. + + + + + Builds the set up tear down list. + + Type of the fixture. + Type of the set up attribute. + Type of the tear down attribute. + A list of SetUpTearDownItems + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do setup, run all child + items and then do teardown. + + + + + The EventPumpState enum represents the state of an + EventPump. + + + + + The pump is stopped + + + + + The pump is pumping events with no stop requested + + + + + The pump is pumping events but a stop has been requested + + + + + EventPump pulls events out of an EventQueue and sends + them to a listener. It is used to send events back to + the client without using the CallContext of the test + runner thread. + + + + + The handle on which a thread enqueuing an event with == true + waits, until the EventPump has sent the event to its listeners. + + + + + The downstream listener to which we send events + + + + + The queue that holds our events + + + + + Thread to do the pumping + + + + + The current state of the eventpump + + + + + Constructor + + The EventListener to receive events + The event queue to pull events from + + + + Gets or sets the current state of the pump + + + On volatile and , see + "http://www.albahari.com/threading/part4.aspx". + + + + + Gets or sets the name of this EventPump + (used only internally and for testing). + + + + + Dispose stops the pump + Disposes the used WaitHandle, too. + + + + + Start the pump + + + + + Tell the pump to stop after emptying the queue. + + + + + Our thread proc for removing items from the event + queue and sending them on. Note that this would + need to do more locking if any other thread were + removing events from the queue. + + + + + NUnit.Core.Event is the abstract base for all stored events. + An Event is the stored representation of a call to the + ITestListener interface and is used to record such calls + or to queue them for forwarding on another thread or at + a later time. + + + + + The Send method is implemented by derived classes to send the event to the specified listener. + + The listener. + + + + Gets a value indicating whether this event is delivered synchronously by the NUnit . + + If true, and if has been used to + set a WaitHandle, blocks its calling thread until the + thread has delivered the event and sets the WaitHandle. + + + + + + TestStartedEvent holds information needed to call the TestStarted method. + + + + + Initializes a new instance of the class. + + The test. + + + + Calls TestStarted on the specified listener. + + The listener. + + + + TestFinishedEvent holds information needed to call the TestFinished method. + + + + + Initializes a new instance of the class. + + The result. + + + + Calls TestFinished on the specified listener. + + The listener. + + + + Implements a queue of work items each of which + is queued as a WaitCallback. + + + + + Construct a new EventQueue + + + + + WaitHandle for synchronous event delivery in . + + Having just one handle for the whole implies that + there may be only one producer (the test thread) for synchronous events. + If there can be multiple producers for synchronous events, one would have + to introduce one WaitHandle per event. + + + + + + Gets the count of items in the queue. + + + + + Sets a handle on which to wait, when is called + for an with == true. + + + The wait handle on which to wait, when is called + for an with == true. + The caller is responsible for disposing this wait handle. + + + + + Enqueues the specified event + + The event to enqueue. + + + + Removes the first element from the queue and returns it (or null). + + + If true and the queue is empty, the calling thread is blocked until + either an element is enqueued, or is called. + + + + + If the queue not empty + the first element. + + + otherwise, if ==false + or has been called + null. + + + + + + + Stop processing of the queue + + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + ParallelWorkItemDispatcher handles execution of work items by + queuing them for worker threads to process. + + + + + Construct a ParallelWorkItemDispatcher + + Number of workers to use + + + + Enumerates all the shifts supported by the dispatcher + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + QueuingEventListener uses an EventQueue to store any + events received on its EventListener interface. + + + + + The EvenQueue created and filled by this listener + + + + + A test has started + + The test that is starting + + + + A test case finished + + Result of the test case + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and a thread is created on which to + run it. Subsequent calls come from the top level + item or its descendants on the proper thread. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + A TestWorker pulls work items from a queue + and executes them. + + + + + Event signaled immediately before executing a WorkItem + + + + + Event signaled immediately after executing a WorkItem + + + + + Construct a new TestWorker. + + The queue from which to pull work items + The name of this worker + The apartment state to use for running tests + + + + The name of this worker - also used for the thread + + + + + Indicates whether the worker thread is running + + + + + Our ThreadProc, which pulls and runs tests in a loop + + + + + Start processing work items. + + + + + Stop the thread, either immediately or after finishing the current WorkItem + + + + + The TextCapture class intercepts console output and writes it + to the current execution context, if one is present on the thread. + If no execution context is found, the output is written to a + default destination, normally the original destination of the + intercepted output. + + + + + Construct a TextCapture object + + The default destination for non-intercepted output + + + + Gets the Encoding in use by this TextWriter + + + + + Writes a single character + + The char to write + + + + Writes a string + + The string to write + + + + Writes a string followed by a line terminator + + The string to write + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The execution context + + + + + The test actions to be performed before and after this test + + + + + Indicates whether this WorkItem may be run in parallel + + + + + The test result + + + + + Execute the current work item, including any + child work items. + + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + WorkItemQueueState indicates the current state of a WorkItemQueue + + + + + The queue is paused + + + + + The queue is running + + + + + The queue is stopped + + + + + A WorkItemQueue holds work items that are ready to + be run, either initially or after some dependency + has been satisfied. + + + + + Initializes a new instance of the class. + + The name of the queue. + + + + Gets the name of the work item queue. + + + + + Gets the total number of items processed so far + + + + + Gets the maximum number of work items. + + + + + Gets the current state of the queue + + + + + Get a bool indicating whether the queue is empty. + + + + + Enqueue a WorkItem to be processed + + The WorkItem to process + + + + Dequeue a WorkItem for processing + + A WorkItem or null if the queue has stopped + + + + Start or restart processing of items from the queue + + + + + Signal the queue to stop + + + + + Pause the queue for restarting later + + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + The dispatcher needs to do different things at different, + non-overlapped times. For example, non-parallel tests may + not be run at the same time as parallel tests. We model + this using the metaphor of a working shift. The WorkShift + class associates one or more WorkItemQueues with one or + more TestWorkers. + + Work in the queues is processed until all queues are empty + and all workers are idle. Both tests are needed because a + worker that is busy may end up adding more work to one of + the queues. At that point, the shift is over and another + shift may begin. This cycle continues until all the tests + have been run. + + + + + Construct a WorkShift + + + + + Event that fires when the shift has ended + + + + + Gets a flag indicating whether the shift is currently active + + + + + Gets a list of the queues associated with this shift. + + Used for testing + + + + Gets the list of workers associated with this shift. + + + + + Gets a bool indicating whether this shift has any work to do + + + + + Add a WorkItemQueue to the shift, starting it if the + shift is currently active. + + + + + Assign a worker to the shift. + + + + + + Start or restart processing for the shift + + + + + End the shift, pausing all queues and raising + the EndOfShift event. + + + + + Shut down the shift. + + + + + Cancel the shift without completing all work + + + + + TextMessageWriter writes constraint descriptions and messages + in displayable form as a text stream. It tailors the display + of individual message components to form the standard message + format of NUnit assertion failure messages. + + + + + Prefix used for the expected value line of a message + + + + + Prefix used for the actual value line of a message + + + + + Length of a message prefix + + + + + Construct a TextMessageWriter + + + + + Construct a TextMessageWriter, specifying a user message + and optional formatting arguments. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The result of the constraint that failed + + + + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given _values, including + a tolerance value on the expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in string comparisons + If true, clip the strings to fit the max line length + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Write the generic 'Expected' line for a constraint + + The constraint that failed + + + + Write the generic 'Expected' line for a given value + + The expected value + + + + Write the generic 'Expected' line for a given value + and tolerance. + + The expected value + The tolerance within which the test was made + + + + Write the generic 'Actual' line for a constraint + + The ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type argments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the spcified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + OSPlatform represents a particular operating system platform + + + + + Platform ID for Unix as defined by Microsoft .NET 2.0 and greater + + + + + Platform ID for Unix as defined by Mono + + + + + Platform ID for XBox as defined by .NET and Mono, but not CF + + + + + Platform ID for MacOSX as defined by .NET and Mono, but not CF + + + + + Get the OSPlatform under which we are currently running + + + + + Gets the actual OS Version, not the incorrect value that might be + returned for Win 8.1 and Win 10 + + + If an application is not manifested as Windows 8.1 or Windows 10, + the version returned from Environment.OSVersion will not be 6.3 and 10.0 + respectively, but will be 6.2 and 6.3. The correct value can be found in + the registry. + + The original version + The correct OS version + + + + Product Type Enumeration used for Windows + + + + + Product type is unknown or unspecified + + + + + Product type is Workstation + + + + + Product type is Domain Controller + + + + + Product type is Server + + + + + Construct from a platform ID and version + + + + + Construct from a platform ID, version and product type + + + + + Get the platform ID of this instance + + + + + Get the Version of this instance + + + + + Get the Product Type of this instance + + + + + Return true if this is a windows platform + + + + + Return true if this is a Unix or Linux platform + + + + + Return true if the platform is Win32S + + + + + Return true if the platform is Win32Windows + + + + + Return true if the platform is Win32NT + + + + + Return true if the platform is Windows CE + + + + + Return true if the platform is Xbox + + + + + Return true if the platform is MacOSX + + + + + Return true if the platform is Windows 95 + + + + + Return true if the platform is Windows 98 + + + + + Return true if the platform is Windows ME + + + + + Return true if the platform is NT 3 + + + + + Return true if the platform is NT 4 + + + + + Return true if the platform is NT 5 + + + + + Return true if the platform is Windows 2000 + + + + + Return true if the platform is Windows XP + + + + + Return true if the platform is Windows 2003 Server + + + + + Return true if the platform is NT 6 + + + + + Return true if the platform is NT 6.0 + + + + + Return true if the platform is NT 6.1 + + + + + Return true if the platform is NT 6.2 + + + + + Return true if the platform is NT 6.3 + + + + + Return true if the platform is Vista + + + + + Return true if the platform is Windows 2008 Server (original or R2) + + + + + Return true if the platform is Windows 2008 Server (original) + + + + + Return true if the platform is Windows 2008 Server R2 + + + + + Return true if the platform is Windows 2012 Server (original or R2) + + + + + Return true if the platform is Windows 2012 Server (original) + + + + + Return true if the platform is Windows 2012 Server R2 + + + + + Return true if the platform is Windows 7 + + + + + Return true if the platform is Windows 8 + + + + + Return true if the platform is Windows 8.1 + + + + + Return true if the platform is Windows 10 + + + + + Return true if the platform is Windows Server. This is named Windows + Server 10 to distinguish it from previous versions of Windows Server. + + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + PlatformHelper class is used by the PlatformAttribute class to + determine whether a platform is supported. + + + + + Comma-delimited list of all supported OS platform constants + + + + + Comma-delimited list of all supported Runtime platform constants + + + + + Default constructor uses the operating system and + common language runtime of the system. + + + + + Construct a PlatformHelper for a particular operating + system and common language runtime. Used in testing. + + OperatingSystem to be used + RuntimeFramework to be used + + + + Test to determine if one of a collection of platforms + is being used currently. + + + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Test to determine if the a particular platform or comma- + delimited set of platforms is in use. + + Name of the platform or comma-separated list of platform ids + True if the platform is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representating the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + Get a Randomizer for a particular member, returning + one that has already been created if it exists. + This ensures that the same _values are generated + each time the tests are reloaded. + + + + + Get a randomizer for a particular parameter, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probablility a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + List of child results + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Test HasChildren before accessing Children to avoid + the creation of an empty collection. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + THe FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Enumeration identifying a common language + runtime implementation. + + + + Any supported runtime framework + + + Microsoft .NET Framework + + + Microsoft .NET Compact Framework + + + Microsoft Shared Source CLI + + + Mono + + + Silverlight + + + MonoTouch + + + + RuntimeFramework represents a particular version + of a common language runtime implementation. + + + + + DefaultVersion is an empty Version, used to indicate that + NUnit should select the CLR version to use for the test. + + + + + Construct from a runtime type and version. If the version has + two parts, it is taken as a framework version. If it has three + or more, it is taken as a CLR version. In either case, the other + version is deduced based on the runtime type and provided version. + + The runtime type of the framework + The version of the framework + + + + Static method to return a RuntimeFramework object + for the framework that is currently in use. + + + + + The type of this runtime framework + + + + + The framework version for this runtime framework + + + + + The CLR version for this runtime framework + + + + + Return true if any CLR version may be used in + matching this RuntimeFramework object. + + + + + Returns the Display name for this framework + + + + + Parses a string representing a RuntimeFramework. + The string may be just a RuntimeType name or just + a Version or a hyphenated RuntimeType-Version or + a Version prefixed by 'versionString'. + + + + + + + Overridden to return the short name of the framework + + + + + + Returns true if the current framework matches the + one supplied as an argument. Two frameworks match + if their runtime types are the same or either one + is RuntimeType.Any and all specified version components + are equal. Negative (i.e. unspecified) version + components are ignored. + + The RuntimeFramework to be matched. + True on match, otherwise false + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + An internal class is used to hold settings and a stack + of these objects is pushed and popped as Save and Restore + are called. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + The current Principal. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + The current context, head of the list of saved contexts. + + + + + Gets the current context. + + The current context. + + + + Get the current context or return null if none is found. + + + + + Clear the current context. This is provided to + prevent "leakage" of the CallContext containing + the current context back to any runners. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set the working directory + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + Gets or sets the current for the Thread. + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Obtain lifetime service object + + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + Get the display name for a MethodInfo + + A MethodInfo + The display name + + + + Get the display name for a method with args + + A MethodInfo + Argument list for the method + The display name + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object implementing ICustomAttributeProvider + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture + + + + + Set to true to suppress sorting this suite's contents + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + The attribute type to check for + + + + ThreadUtility provides a set of static methods convenient + for working with threads. + + + + + Do our best to Kill a thread + + The thread to kill + + + + Do our best to kill a thread, passing state info + + The thread to kill + Info for the ThreadAbortException handler + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Gets the _values for an enumeration, using Enum.GetTypes + where available, otherwise through reflection. + + + + + + + Gets the ids of the _values for an enumeration, + using Enum.GetNames where available, otherwise + through reflection. + + + + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Add a child result + + The child result to be added + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Inserts environment element + + Target node + The new node + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + Gets the default level of parallel execution (worker threads) + + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Initiate the test run. + + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + + + + Throws an with the message and arguments + that are passed in. This is used by the other Assert functions. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This is used by the other Assert functions. + + The message to initialize the with. + + + + Throws an . + This is used by the other Assert functions. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as ignored. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as Inconclusive. + + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + + + + Helper for Assert.AreEqual(double expected, double actual, ...) + allowing code generation to work consistently. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate does not throw an exception. + + A TestDelegate + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter ids for constraints and + asserts and avoiding conflict with the definition of + , from which it inherits much of its + behavior, in certain mock object frameworks. + + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to . + + The evaluated condition + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + Provides static methods to express the assumptions + that must be met for a test to give a meaningful + result. If an assumption is not met, the test + should produce an inconclusive result. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the + method throws an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Marks a test that must run in a particular threading apartment state, causing it + to run in a separate thread if necessary. + + + + + Construct an ApartmentAttribute + + The apartment state that this test must be run under. You must pass in a valid apartment state. + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + Attribute used to apply a category to a test + + + + + The name of the category + + + + + Construct attribute for a given category based on + a name. The name may not contain the characters ',', + '+', '-' or '!'. However, this is not checked in the + constructor since it would cause an error to arise at + as the test was loaded without giving a clear indication + of where the problem is located. The error is handled + in NUnitFramework.cs by marking the test as not + runnable. + + The name of the category + + + + Protected constructor uses the Type name as the name + of the category. + + + + + The name of the category + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParamterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. + + + + + Constructor with no cultures specified, for use + with named property syntax. + + + + + Constructor taking one or more cultures + + Comma-deliminted list of cultures + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + Used to mark a field for use as a datapoint when executing a theory + within the same fixture that requires an argument of the field's Type. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + ExplicitAttribute marks a test or test fixture so that it will + only be run if explicitly executed from the gui or command line + or if it is included by use of a filter. The test will not be + run simply because an enclosing suite is run. + + + + + Default constructor + + + + + Constructor with a reason + + The reason test is marked explicit + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. + + + + + Constructs the attribute giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. + + + + + Constructor with no included items specified, for use + with named property syntax. + + + + + Constructor taking one or more included items + + Comma-delimited list of included items + + + + Name of the item that is needed in order for + a test to run. Multiple items may be given, + separated by a comma. + + + + + Name of the item to be excluded. Multiple items + may be given, separated by a comma. + + + + + The reason for including or excluding the test + + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No Parallelism is permitted + + + + + The test itself may be run in parallel with others at the same level + + + + + Descendants of the test may be run in parallel with one another + + + + + Descendants of the test down to the level of TestFixtures may be run in parallel + + + + + PlatformAttribute is used to mark a test fixture or an + individual method as applying to a particular platform only. + + + + + Constructor with no platforms specified, for use + with named property syntax. + + + + + Constructor taking one or more platforms + + Comma-delimited list of platforms + + + + Causes a test to be skipped if this PlatformAttribute is not satisfied. + + The test to modify + + + + PropertyAttribute is used to attach information to a test as a name/value pair.. + + + + + Construct a PropertyAttribute with a name and string value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and int value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and double value + + The name of the property + The property value + + + + Constructor for derived classes that set the + property dictionary directly. + + + + + Constructor for use by derived classes that use the + name of the type as the property name. Derived classes + must ensure that the Type of the property value is + a standard type supported by the BCL. Any custom + types will cause a serialization Exception when + in the client. + + + + + Gets the property dictionary for this attribute + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + Get the collection of _values to be used as arguments. + + + + + RangeAttribute is used to supply a range of _values to an + individual parameter of a parameterized test. + + + + + Construct a range of ints using default step of 1 + + + + + + + Construct a range of ints specifying the step size + + + + + + + + Construct a range of unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + Construct a range of doubles + + + + + + + + Construct a range of floats + + + + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Marks a test that must run in the MTA, causing it + to run in a separate thread if necessary. + + On methods, you may also use MTAThreadAttribute + to serve the same purpose. + + + + + Construct a RequiresMTAAttribute + + + + + Marks a test that must run in the STA, causing it + to run in a separate thread if necessary. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + Summary description for SetCultureAttribute. + + + + + Construct given the name of a culture + + + + + + Summary description for SetUICultureAttribute. + + + + + Construct given the name of a culture + + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + SetUpFixtureAttribute is used to identify a SetUpFixture + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + Attribute used to identify a method that is called + immediately after each test is run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant + + + + + + Construct a TestCaseAttribute with a single argument + + + + + + Construct a TestCaseAttribute with a two arguments + + + + + + + Construct a TestCaseAttribute with a three arguments + + + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Comma-delimited list of platforms to run the test for + + + + + Comma-delimited list of platforms to not run the test for + + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + Default constructor + + + + + Construct with a object[] representing a set of arguments. + In .NET 2.0, the arguments may later be separated into + type arguments and constructor arguments. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + Attribute used to identify a method that is called after + all the tests in a fixture have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + Used on a method, marks the test with a timeout value in milliseconds. + The test will be run in a separate thread and is cancelled if the timeout + is exceeded. Used on a class or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + The collection of data to be returned. Must + be set by any derived attribute classes. + We use an object[] so that the individual + elements may have their type changed in GetData + if necessary + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + Construct with one argument + + + + + + Construct with two arguments + + + + + + + Construct with three arguments + + + + + + + + Construct with an array of arguments + + + + + + Get the collection of _values to be used as arguments + + + + + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + Portable libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + A MarshalByRefObject that lives forever + + + + + Obtains a lifetime service object to control the lifetime policy for this instance. + + + + + Provides NUnit specific extensions to aid in Reflection + across multiple frameworks + + + This version of the class supplies GetTypeInfo() on platforms + that don't support it. + + + + + GetTypeInfo gives access to most of the Type information we take for granted + on .NET Core and Windows Runtime. Rather than #ifdef different code for different + platforms, it is easiest to just code all platforms as if they worked this way, + thus the simple passthrough. + + + + + + + This class is a System.Diagnostics.Stopwatch on operating systems that support it. On those that don't, + it replicates the functionality at the resolution supported. + + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a constraint + + + + + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. + + The actual value + True if the constraints both succeeded + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AttributeConstraint tests that a specified attribute is present + on a Type or other provider and that the value of the attribute + satisfies some other constraint. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. + + + + + The first constraint being combined + + + + + The second constraint being combined + + + + + Construct a BinaryConstraint from two other constraints + + The first constraint + The second constraint + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation + + + + + CollectionConstraint is the abstract base class for + constraints that operate on collections. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Determines whether the specified enumerable is empty. + + The enumerable. + + true if the specified enumerable is empty; otherwise, false. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Protected method to be implemented by derived classes + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + CollectionSubsetConstraint is used to determine whether + one collection is a subset of another + + + + + Construct a CollectionSubsetConstraint + + The collection that the actual value is expected to be a subset of + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + Try to remove an object from the tally + + The object to remove + True if successful, false if the object was not found + + + + Try to remove a set of objects from the tally + + The objects to remove + True if successful, false if any object was not found + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + Compare a Type T to an object + + + + + Abstract base class for constraints that compare _values to + determine if one is greater than, equal to or less than + the other. + + + + + The value against which a comparison is to be made + + + + + If true, less than returns success + + + + + if true, equal returns success + + + + + if true, greater than returns success + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + if set to true less succeeds. + if set to true equal succeeds. + if set to true greater succeeds. + String used in describing the constraint. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + A ConstraintResult + + + + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + + + + + + Returns the string representation of this constraint + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending Or + to the current constraint. + + + + + Returns a DelayedConstraint with the specified delay time. + + The delay in milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + Resolves any pending operators and returns the resolved constraint. + + + + + ConstraintBuilder maintains the stacks that are used in + processing a ConstraintExpression. An OperatorStack + is used to hold operators that are waiting for their + operands to be reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + Initializes a new instance of the class. + + + + + Appends the specified operator to the expression by first + reducing the operator stack and then pushing the new + operator on the stack. + + The operator to push. + + + + Appends the specified constraint to the expression by pushing + it on the constraint stack. + + The constraint to push. + + + + Sets the top operator right context. + + The right context. + + + + Reduces the operator stack until the topmost item + precedence is greater than or equal to the target precedence. + + The target precedence. + + + + Resolves this instance, returning a Constraint. If the Builder + is not currently in a resolvable state, an exception is thrown. + + The resolved constraint + + + + Gets a value indicating whether this instance is resolvable. + + + true if this instance is resolvable; otherwise, false. + + + + + ConstraintExpression represents a compound constraint in the + process of being constructed from a series of syntactic elements. + + Individual elements are appended to the expression as they are + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + The ConstraintBuilder holding the elements recognized so far + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a string representation of the expression as it + currently stands. This should only be used for testing, + since it has the side-effect of resolving the expression. + + + + + + Appends an operator to the expression and returns the + resulting expression itself. + + + + + Appends a self-resolving operator to the expression and + returns a new ResolvableConstraintExpression. + + + + + Appends a constraint to the expression and returns that + constraint, which is associated with the current state + of the expression being built. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + With is currently a NOP - reserved for future use. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the a subpath of the expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is a subpath of the expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. + + The MessageWriter on which to display the message + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + ContainsConstraint tests a whether a string contains a substring + or a collection contains an object. It postpones the decision of + which test to use until the type of the actual argument is known. + This allows testing whether a string is contained in a collection + or as a substring of another string using the same syntax. + + + + + Initializes a new instance of the class. + + The _expected. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Creates a new DelayedConstraint + + The inner constraint to decorate + The time interval after which the match is performed + If the value of is less than 0 + + + + Creates a new DelayedConstraint + + The inner constraint to decorate + The time interval after which the match is performed, in milliseconds + The time interval used for polling, in milliseconds + If the value of is less than 0 + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a delegate + + The delegate whose value is to be tested + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + Overridden to wait for the specified delay period before + calling the base constraint with the dereferenced value. + + A reference to the value to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + Adjusts a Timestamp by a given TimeSpan + + + + + + + + Returns the difference between two Timestamps as a TimeSpan + + + + + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + EmptyConstraint tests a whether a string or collection is empty, + postponing the decision about which test is applied until the + type of the actual argument is known. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EndsWithConstraint can test whether a string ends + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + EqualConstraint is able to compare an actual value with the + expected value provided in its constructor. Two objects are + considered equal if both are null, or if both have the same + value. NUnit has special semantics for some object types. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to suppress string clipping + and return self. + + + + + Flag the constraint to compare arrays as collections + and return self. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + Switches the .Within() modifier to interpret its tolerance as + a distance in representable _values (see remarks). + + Self. + + Ulp stands for "unit in the last place" and describes the minimum + amount a given value can change. For any integers, an ulp is 1 whole + digit. For floating point _values, the accuracy of which is better + for smaller numbers and worse for larger numbers, an ulp depends + on the size of the number. Using ulps for comparison of floating + point results instead of fixed tolerances is safer because it will + automatically compensate for the added inaccuracy of larger numbers. + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in days. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in hours. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in minutes. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in seconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + + Self + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + ExactTypeConstraint is used to test that an object + is of the exact type provided in the constructor + + + + + Construct an ExactTypeConstraint for a given Type + + The expected Type. + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + FileExistsConstraint is used to determine if a file exists + + + + + Initializes a new instance of the class. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists + + + + + If true, the constraint will only check if files exist, not directories + + + + + If true, the constraint will only check if directories exist, not files + + + + + Initializes a new instance of the class that + will check files and directories. + + + + + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. + + if set to true [ignore directories]. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + Helper routines for working with floating point numbers + + + The floating point comparison code is based on this excellent article: + http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + + + "ULP" means Unit in the Last Place and in the context of this library refers to + the distance between two adjacent floating point numbers. IEEE floating point + numbers can only represent a finite subset of natural numbers, with greater + accuracy for smaller numbers and lower accuracy for very large numbers. + + + If a comparison is allowed "2 ulps" of deviation, that means the _values are + allowed to deviate by up to 2 adjacent floating point _values, which might be + as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. + + + + + Union of a floating point variable and an integer + + + The union's value as a floating point variable + + + The union's value as an integer + + + The union's value as an unsigned integer + + + Union of a double precision floating point variable and a long + + + The union's value as a double precision floating point variable + + + The union's value as a long + + + The union's value as an unsigned long + + + Compares two floating point _values for equality + First floating point value to be compared + Second floating point value t be compared + + Maximum number of representable floating point _values that are allowed to + be between the left and the right floating point _values + + True if both numbers are equal or close to being equal + + + Floating point _values can only represent a finite subset of natural numbers. + For example, the _values 2.00000000 and 2.00000024 can be stored in a float, + but nothing inbetween them. + + + This comparison will count how many possible floating point _values are between + the left and the right number. If the number of possible _values between both + numbers is less than or equal to maxUlps, then the numbers are considered as + being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + Compares two double precision floating point _values for equality + First double precision floating point value to be compared + Second double precision floating point value t be compared + + Maximum number of representable double precision floating point _values that are + allowed to be between the left and the right double precision floating point _values + + True if both numbers are equal or close to being equal + + + Double precision floating point _values can only represent a limited series of + natural numbers. For example, the _values 2.0000000000000000 and 2.0000000000000004 + can be stored in a double, but nothing inbetween them. + + + This comparison will count how many possible double precision floating point + _values are between the left and the right number. If the number of possible + _values between both numbers is less than or equal to maxUlps, then the numbers + are considered as being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + + Reinterprets the memory contents of a floating point value as an integer value + + + Floating point value whose memory contents to reinterpret + + + The memory contents of the floating point value interpreted as an integer + + + + + Reinterprets the memory contents of a double precision floating point + value as an integer value + + + Double precision floating point value whose memory contents to reinterpret + + + The memory contents of the double precision floating point value + interpreted as an integer + + + + + Reinterprets the memory contents of an integer as a floating point value + + Integer value whose memory contents to reinterpret + + The memory contents of the integer value interpreted as a floating point value + + + + + Reinterprets the memory contents of an integer value as a double precision + floating point value + + Integer whose memory contents to reinterpret + + The memory contents of the integer interpreted as a double precision + floating point value + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is greater than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + A ConstraintResult + + + + InstanceOfTypeConstraint is used to test that an object + is of the same type provided or derived from it. + + + + + Construct an InstanceOfTypeConstraint for the type provided + + The expected Type + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is less than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + MessageWriter is the abstract base for classes that write + constraint descriptions and messages in some form. The + class has separate methods for writing various components + of a message, allowing implementations to tailor the + presentation as needed. + + + + + Construct a MessageWriter given a culture + + + + + Abstract method to get the max line length + + + + + Method to write single line message with optional args, usually + written to precede the general failure message. + + The message to be written + Any arguments used in formatting the message + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The failing constraint result + + + + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given _values, including + a tolerance value on the Expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in locating the point where the strings differ + If true, the strings should be clipped to fit the line + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Returns the representation of a type as used in NUnitLite. + This is the same as Type.ToString() except for arrays, + which are displayed with their declared sizes. + + + + + + + Converts any control characters in a string + to their escaped representation. + + The string to be converted + The converted string + + + + Return the a string representation for a set of indices into an array + + Array of indices for which a string is needed + + + + Get an array of indices representing the point in a collection or + array corresponding to a single int index into the collection. + + The collection to which the indices apply + Index in the collection + Array of indices + + + + Clip a string to a given length, starting at a particular offset, returning the clipped + string with ellipses representing the removed parts + + The string to be clipped + The maximum permitted length of the result string + The point at which to start clipping + The clipped string + + + + Clip the expected and actual strings in a coordinated fashion, + so that they may be displayed together. + + + + + + + + + Shows the position two strings start to differ. Comparison + starts at the start index. + + The expected string + The actual string + The index in the strings at which comparison should start + Boolean indicating whether case should be ignored + -1 if no mismatch found, or the index where mismatch found + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + NoItemConstraint applies another constraint to each + item in a collection, failing if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + NotConstraint negates the effect of some other constraint + + + + + Initializes a new instance of the class. + + The base constraint to be negated. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + The Numerics class contains common operations on numeric _values. + + + + + Checks the type of the object, returning true if + the object is a numeric type. + + The object to check + true if the object is a numeric type + + + + Checks the type of the object, returning true if + the object is a floating point numeric type. + + The object to check + true if the object is a floating point numeric type + + + + Checks the type of the object, returning true if + the object is a fixed point numeric type. + + The object to check + true if the object is a fixed point numeric type + + + + Test two numeric _values for equality, performing the usual numeric + conversions and using a provided or default tolerance. If the tolerance + provided is Empty, this method may set it to a default tolerance. + + The expected value + The actual value + A reference to the tolerance in effect + True if the _values are equal + + + + Compare two numeric _values, performing the usual numeric conversions. + + The expected value + The actual value + The relationship of the _values to each other + + + + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + NUnitEqualityComparer encapsulates NUnit's handling of + equality tests between objects. + + + + + If true, all string comparisons will ignore case + + + + + If true, arrays will be treated as collections, allowing + those of different dimensions to be compared + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + Returns the default NUnitEqualityComparer + + + + + Gets and sets a flag indicating whether case should + be ignored in determining equality. + + + + + Gets and sets a flag indicating that arrays should be + compared as collections, without regard to their shape. + + + + + Gets the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depthy. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + Helper method to compare two arrays + + + + + Method to compare two DirectoryInfo objects + + first directory to compare + second directory to compare + true if equivalent, false if not + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + Represents a constraint that succeeds if all the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + Operator that tests for the presence of a particular attribute + on a type and optionally applies further tests to the attribute. + + + + + Construct an AttributeOperator for a particular Type + + The Type of attribute tested + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Abstract base class for all binary operators + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + The ConstraintOperator class is used internally by a + ConstraintBuilder to represent an operator that + modifies or combines constraints. + + Constraint operators use left and right precedence + _values to determine whether the top operator on the + stack should be reduced before pushing a new operator. + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + The syntax element preceding this operator + + + + + The syntax element following this operator + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + PrefixOperator takes a single constraint and modifies + it's action in some way. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Returns the constraint created by applying this + prefix to another constraint. + + + + + + + Operator used to test for the presence of a named Property + on an object and optionally apply further tests to the + value of that property. + + + + + Gets the name of the property to which the operator applies + + + + + Constructs a PropOperator for a particular named property + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. + + + + + Operator that tests that an exception is thrown and + optionally applies further tests to the exception. + + + + + Construct a ThrowsOperator + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a constraint + + + + + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. + + The actual value + True if either constraint succeeded + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether one path in canonical form is a subpath of another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + PropertyConstraint extracts a named property and uses + its value as the actual value for a chained constraint. + + + + + Initializes a new instance of the class. + + The name. + The constraint to apply to the property. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + PropertyExistsConstraint tests that a named property + exists on the object provided through Match. + + Originally, PropertyConstraint provided this feature + in addition to making optional tests on the value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + RegexConstraint can test whether a string matches + the pattern provided. + + + + + Initializes a new instance of the class. + + The pattern. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ResolvableConstraintExpression is used to represent a compound + constraint being constructed at a point where the last operator + may either terminate the expression or may have additional + qualifying constraints added to it. + + It is used, for example, for a Property element or for + an Exception element, either of which may be optionally + followed by constraints that apply to the property or + exception. + + + + + Create a new instance of ResolvableConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SomeItemsConstraint applies another constraint to each + item in a collection, succeeding if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + The MessageWriter to write to + + + + Display the failure information for two collections that did not match. + + The MessageWriter on which to display + The expected collection. + The actual collection + The depth of this failure in a set of nested collections + + + + Displays a single line showing the types and sizes of the expected + and actual collections or arrays. If both are identical, the value is + only shown once. + + The MessageWriter on which to display + The expected collection or array + The actual collection or array + The indentation level for the message line + + + + Displays a single line showing the point in the expected and actual + arrays at which the comparison failed. If the arrays have different + structures or dimensions, both _values are shown. + + The MessageWriter on which to display + The expected array + The actual array + Index of the failure point in the underlying collections + The indentation level for the message line + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + StartsWithConstraint can test whether a string starts + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. + + + + + The expected value + + + + + Indicates whether tests should be case-insensitive + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Test whether the constraint is satisfied by a given string + + The string to be tested + True for success, false for failure + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SubstringConstraint can test whether a string contains + the expected substring. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ThrowsConstraint is used to test the exception thrown by + a delegate by applying a constraint to it. + + + + + Initializes a new instance of the class, + using a constraint to be applied to the exception. + + A constraint to apply to the caught exception. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + Executes the code of the delegate and captures any exception. + If a non-null base constraint was provided, it applies that + constraint to the exception. + + A delegate representing the code to be tested + True if an exception is thrown and the constraint succeeds, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + The Tolerance class generalizes the notion of a tolerance + within which an equality test succeeds. Normally, it is + used with numeric types, but it can be used with any + type that supports taking a difference between two + objects and comparing that difference to a value. + + + + + Returns a default Tolerance object, equivalent to + specifying an exact match unless + is set, in which case, the + will be used. + + + + + Returns an empty Tolerance object, equivalent to + specifying an exact match even if + is set. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + Gets the for the current Tolerance + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Gets the value of the current Tolerance instance. + + + + + Returns a new tolerance, using the current amount as a percentage. + + + + + Returns a new tolerance, using the current amount in Ulps + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Modes in which the tolerance value for a comparison can be interpreted. + + + + + The tolerance was created with a value, without specifying + how the value would be used. This is used to prevent setting + the mode more than once and is generally changed to Linear + upon execution of the test. + + + + + The tolerance is used as a numeric range within which + two compared _values are considered to be equal. + + + + + Interprets the tolerance as the percentage by which + the two compared _values my deviate from each other. + + + + + Compares two _values based in their distance in + representable numbers. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + XmlSerializableConstraint tests whether + an object is serializable in xml format. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of this constraint + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Asserts on Directories + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if the directories are not equal + Arguments to be used in formatting the message + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Thrown when an assertion failed. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Thrown when a test executes inconclusively. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued propeties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an oject of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Determines whether the specified , is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + Asserts on Files + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the two Stream are the same. + Arguments to be used in formatting the message + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file exists. If it does not exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + + + + GlobalSettings is a place for setting default _values used + by the framework in performing asserts. + + + + + Default tolerance for floating point equality + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is a subpath of the expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + The Iz class is a synonym for Is intended for use in VB, + which regards Is as a keyword. + + + + + The List class is a helper class with properties and methods + that supply a number of constraints used with lists and collections. + + + + + List.Map returns a ListMapper, which can be used to map + the original collection to another collection. + + + + + + + ListMapper is used to transform a collection used as an actual argument + producing another collection to be used in the assertion. + + + + + Construct a ListMapper based on a collection + + The collection to be transformed + + + + Produces a collection containing all the _values of a property + + The collection of property _values + + + + + The SpecialValue enum is used to represent TestCase arguments + that cannot be used as arguments to an Attribute. + + + + + Null represents a null value, which cannot be used as an + argument to an attriute under .NET 1.x + + + + + Basic Asserts on strings. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string is not found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + + + + The TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the test case. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Sets the expected result for the test + + The expected result + A modified TestCaseData + + + + Sets the name of the test case + + The modified TestCaseData instance + + + + Sets the description for the test case + being constructed. + + The description. + The modified TestCaseData instance. + + + + Applies a category to the test + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + Get the current test context. This is created + as needed. The user may save the context for + use within a test, but it should not be used + outside the test for which it is created. + + + + + Gets a TextWriter that will send output to the current test result. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + Creates a constraint specifying an expected exception + + + + + Creates a constraint specifying an exception with a given InnerException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNUllException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Env is a static class that provides some of the features of + System.Environment that are not available under all runtimes + + + + + The newline sequence in the current environment. + + + + + Path to the 'My Documents' folder + + + + + Directory used for file output if not specified on commandline. + + + + + PackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the engine and framework. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attache a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the frameowrk TestContext. + + + + + The name of the config to use in loading a project. + If not specified, the first config found is used. + + + + + Bool indicating whether the engine should determine the private + bin path by examining the paths to all the tests. Defaults to + true unless PrivateBinPath is specified. + + + + + The ApplicationBase to use in loading the tests. If not + specified, and each assembly has its own process, then the + location of the assembly is used. For multiple assemblies + in a single process, the closest common root directory is used. + + + + + Path to the config file to use in running the tests. + + + + + Bool flag indicating whether a debugger should be launched at agent + startup. Used only for debugging NUnit itself. + + + + + Indicates how to load tests across AppDomains. Values are: + "Default", "None", "Single", "Multiple". Default is "Multiple" + if more than one assembly is loaded in a process. Otherwise, + it is "Single". + + + + + The private binpath used to locate assemblies. Directory paths + is separated by a semicolon. It's an error to specify this and + also set AutoBinPath to true. + + + + + The maximum number of test agents permitted to run simultneously. + Ignored if the ProcessModel is not set or defaulted to Multiple. + + + + + Indicates how to allocate assemblies to processes. Values are: + "Default", "Single", "Separate", "Multiple". Default is "Multiple" + for more than one assembly, "Separate" for a single assembly. + + + + + Indicates the desired runtime to use for the tests. Values + are strings like "net-4.5", "mono-4.0", etc. Default is to + use the target framework for which an assembly was built. + + + + + Bool flag indicating that the test should be run in a 32-bit process + on a 64-bit system. By default, NUNit runs in a 64-bit process on + a 64-bit system. Ignored if set on a 32-bit system. + + + + + Indicates that test runners should be disposed after the tests are executed + + + + + Bool flag indicating that the test assemblies should be shadow copied. + Defaults to false. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + diff --git a/packages/NUnit.3.0.1/lib/net45/nunit.framework.dll b/packages/NUnit.3.0.1/lib/net45/nunit.framework.dll new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cd864b1c4205a44ccab9cd526efb6c3b1461db71 GIT binary patch literal 273920 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 diff --git a/packages/NUnit.3.0.1/lib/net45/nunit.framework.xml b/packages/NUnit.3.0.1/lib/net45/nunit.framework.xml new file mode 100644 --- /dev/null +++ b/packages/NUnit.3.0.1/lib/net45/nunit.framework.xml @@ -0,0 +1,16865 @@ + + + + nunit.framework + + + +

    + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the path from which the assembly defining a type was loaded. + + The Type. + The path. + + + + Gets the path from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the path to the directory from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which may be the + path to the assembly or the AssemblyName + + + + + + + Gets the assembly path from code base. + + Public for testing purposes + The code base. + + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace facility using the name of the log + to be written to and the trace level. + + The log name + The trace level + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a file. + + Path to the file to use + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Waits for pending asynchronous operations to complete, if appropriate, + and returns a proper result of the invocation by unwrapping task results + + The raw result of the method invocation + The unwrapped result, if necessary + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run after Setup + + + + Overridden to run the one-time setup for a suite. + + The TestExecutionContext to be used. + A TestResult + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The test suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run before teardown. + + + + Overridden to run the teardown methods specified on the test. + + The TestExecutionContext to be used. + A TestResult + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + The CommandStage enumeration represents the defined stages + of execution for a series of TestCommands. The int _values + of the enum are used to apply decorators in the proper + order. Lower _values are applied first and are therefore + "closer" to the actual test execution. + + + No CommandStage is defined for actual invocation of the test or + for creation of the context. Execution may be imagined as + proceeding from the bottom of the list upwards, with cleanup + after the test running in the opposite order. + + + + + Use an application-defined default value. + + + + + Make adjustments needed before and after running + the raw test - that is, after any SetUp has run + and before TearDown. + + + + + Run SetUp and TearDown for the test. This stage is used + internally by NUnit and should not normally appear + in user-defined decorators. + + + + + Make adjustments needed before and after running + the entire test - including SetUp and TearDown. + + + + + TODO: Documentation needed for class + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext + + The context in which the test should run. + A TestResult + + + + SetUpTearDownCommand runs any SetUp methods for a suite, + runs the test and then runs any TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestActionCommand runs the BeforeTest actions for a test, + then runs the test and finally runs the AfterTestActions. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + TestActionItem represents a single execution of an + ITestAction. It is used to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + Overridden to call the inner command and adjust the result + in case all chlid results were inconclusive. + + + + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type argments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + A utility class to create TestCommands + + + + + Gets the command to be executed before any of + the child tests are run. + + A TestCommand + + + + Gets the command to be executed after all of the + child tests are run. + + A TestCommand + + + + Creates a test command for use in running this test. + + + + + + Creates a command for skipping a test. The result returned will + depend on the test RunState. + + + + + Builds the set up tear down list. + + Type of the fixture. + Type of the set up attribute. + Type of the tear down attribute. + A list of SetUpTearDownItems + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do setup, run all child + items and then do teardown. + + + + + The EventPumpState enum represents the state of an + EventPump. + + + + + The pump is stopped + + + + + The pump is pumping events with no stop requested + + + + + The pump is pumping events but a stop has been requested + + + + + EventPump pulls events out of an EventQueue and sends + them to a listener. It is used to send events back to + the client without using the CallContext of the test + runner thread. + + + + + The handle on which a thread enqueuing an event with == true + waits, until the EventPump has sent the event to its listeners. + + + + + The downstream listener to which we send events + + + + + The queue that holds our events + + + + + Thread to do the pumping + + + + + The current state of the eventpump + + + + + Constructor + + The EventListener to receive events + The event queue to pull events from + + + + Gets or sets the current state of the pump + + + On volatile and , see + "http://www.albahari.com/threading/part4.aspx". + + + + + Gets or sets the name of this EventPump + (used only internally and for testing). + + + + + Dispose stops the pump + Disposes the used WaitHandle, too. + + + + + Start the pump + + + + + Tell the pump to stop after emptying the queue. + + + + + Our thread proc for removing items from the event + queue and sending them on. Note that this would + need to do more locking if any other thread were + removing events from the queue. + + + + + NUnit.Core.Event is the abstract base for all stored events. + An Event is the stored representation of a call to the + ITestListener interface and is used to record such calls + or to queue them for forwarding on another thread or at + a later time. + + + + + The Send method is implemented by derived classes to send the event to the specified listener. + + The listener. + + + + Gets a value indicating whether this event is delivered synchronously by the NUnit . + + If true, and if has been used to + set a WaitHandle, blocks its calling thread until the + thread has delivered the event and sets the WaitHandle. + + + + + + TestStartedEvent holds information needed to call the TestStarted method. + + + + + Initializes a new instance of the class. + + The test. + + + + Calls TestStarted on the specified listener. + + The listener. + + + + TestFinishedEvent holds information needed to call the TestFinished method. + + + + + Initializes a new instance of the class. + + The result. + + + + Calls TestFinished on the specified listener. + + The listener. + + + + Implements a queue of work items each of which + is queued as a WaitCallback. + + + + + Construct a new EventQueue + + + + + WaitHandle for synchronous event delivery in . + + Having just one handle for the whole implies that + there may be only one producer (the test thread) for synchronous events. + If there can be multiple producers for synchronous events, one would have + to introduce one WaitHandle per event. + + + + + + Gets the count of items in the queue. + + + + + Sets a handle on which to wait, when is called + for an with == true. + + + The wait handle on which to wait, when is called + for an with == true. + The caller is responsible for disposing this wait handle. + + + + + Enqueues the specified event + + The event to enqueue. + + + + Removes the first element from the queue and returns it (or null). + + + If true and the queue is empty, the calling thread is blocked until + either an element is enqueued, or is called. + + + + + If the queue not empty + the first element. + + + otherwise, if ==false + or has been called + null. + + + + + + + Stop processing of the queue + + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + ParallelWorkItemDispatcher handles execution of work items by + queuing them for worker threads to process. + + + + + Construct a ParallelWorkItemDispatcher + + Number of workers to use + + + + Enumerates all the shifts supported by the dispatcher + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + QueuingEventListener uses an EventQueue to store any + events received on its EventListener interface. + + + + + The EvenQueue created and filled by this listener + + + + + A test has started + + The test that is starting + + + + A test case finished + + Result of the test case + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and a thread is created on which to + run it. Subsequent calls come from the top level + item or its descendants on the proper thread. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + A TestWorker pulls work items from a queue + and executes them. + + + + + Event signaled immediately before executing a WorkItem + + + + + Event signaled immediately after executing a WorkItem + + + + + Construct a new TestWorker. + + The queue from which to pull work items + The name of this worker + The apartment state to use for running tests + + + + The name of this worker - also used for the thread + + + + + Indicates whether the worker thread is running + + + + + Our ThreadProc, which pulls and runs tests in a loop + + + + + Start processing work items. + + + + + Stop the thread, either immediately or after finishing the current WorkItem + + + + + The TextCapture class intercepts console output and writes it + to the current execution context, if one is present on the thread. + If no execution context is found, the output is written to a + default destination, normally the original destination of the + intercepted output. + + + + + Construct a TextCapture object + + The default destination for non-intercepted output + + + + Gets the Encoding in use by this TextWriter + + + + + Writes a single character + + The char to write + + + + Writes a string + + The string to write + + + + Writes a string followed by a line terminator + + The string to write + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The execution context + + + + + The test actions to be performed before and after this test + + + + + Indicates whether this WorkItem may be run in parallel + + + + + The test result + + + + + Execute the current work item, including any + child work items. + + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + WorkItemQueueState indicates the current state of a WorkItemQueue + + + + + The queue is paused + + + + + The queue is running + + + + + The queue is stopped + + + + + A WorkItemQueue holds work items that are ready to + be run, either initially or after some dependency + has been satisfied. + + + + + Initializes a new instance of the class. + + The name of the queue. + + + + Gets the name of the work item queue. + + + + + Gets the total number of items processed so far + + + + + Gets the maximum number of work items. + + + + + Gets the current state of the queue + + + + + Get a bool indicating whether the queue is empty. + + + + + Enqueue a WorkItem to be processed + + The WorkItem to process + + + + Dequeue a WorkItem for processing + + A WorkItem or null if the queue has stopped + + + + Start or restart processing of items from the queue + + + + + Signal the queue to stop + + + + + Pause the queue for restarting later + + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + The dispatcher needs to do different things at different, + non-overlapped times. For example, non-parallel tests may + not be run at the same time as parallel tests. We model + this using the metaphor of a working shift. The WorkShift + class associates one or more WorkItemQueues with one or + more TestWorkers. + + Work in the queues is processed until all queues are empty + and all workers are idle. Both tests are needed because a + worker that is busy may end up adding more work to one of + the queues. At that point, the shift is over and another + shift may begin. This cycle continues until all the tests + have been run. + + + + + Construct a WorkShift + + + + + Event that fires when the shift has ended + + + + + Gets a flag indicating whether the shift is currently active + + + + + Gets a list of the queues associated with this shift. + + Used for testing + + + + Gets the list of workers associated with this shift. + + + + + Gets a bool indicating whether this shift has any work to do + + + + + Add a WorkItemQueue to the shift, starting it if the + shift is currently active. + + + + + Assign a worker to the shift. + + + + + + Start or restart processing for the shift + + + + + End the shift, pausing all queues and raising + the EndOfShift event. + + + + + Shut down the shift. + + + + + Cancel the shift without completing all work + + + + + TextMessageWriter writes constraint descriptions and messages + in displayable form as a text stream. It tailors the display + of individual message components to form the standard message + format of NUnit assertion failure messages. + + + + + Prefix used for the expected value line of a message + + + + + Prefix used for the actual value line of a message + + + + + Length of a message prefix + + + + + Construct a TextMessageWriter + + + + + Construct a TextMessageWriter, specifying a user message + and optional formatting arguments. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The result of the constraint that failed + + + + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given _values, including + a tolerance value on the expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in string comparisons + If true, clip the strings to fit the max line length + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Write the generic 'Expected' line for a constraint + + The constraint that failed + + + + Write the generic 'Expected' line for a given value + + The expected value + + + + Write the generic 'Expected' line for a given value + and tolerance. + + The expected value + The tolerance within which the test was made + + + + Write the generic 'Actual' line for a constraint + + The ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the spcified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + OSPlatform represents a particular operating system platform + + + + + Platform ID for Unix as defined by Microsoft .NET 2.0 and greater + + + + + Platform ID for Unix as defined by Mono + + + + + Platform ID for XBox as defined by .NET and Mono, but not CF + + + + + Platform ID for MacOSX as defined by .NET and Mono, but not CF + + + + + Get the OSPlatform under which we are currently running + + + + + Gets the actual OS Version, not the incorrect value that might be + returned for Win 8.1 and Win 10 + + + If an application is not manifested as Windows 8.1 or Windows 10, + the version returned from Environment.OSVersion will not be 6.3 and 10.0 + respectively, but will be 6.2 and 6.3. The correct value can be found in + the registry. + + The original version + The correct OS version + + + + Product Type Enumeration used for Windows + + + + + Product type is unknown or unspecified + + + + + Product type is Workstation + + + + + Product type is Domain Controller + + + + + Product type is Server + + + + + Construct from a platform ID and version + + + + + Construct from a platform ID, version and product type + + + + + Get the platform ID of this instance + + + + + Get the Version of this instance + + + + + Get the Product Type of this instance + + + + + Return true if this is a windows platform + + + + + Return true if this is a Unix or Linux platform + + + + + Return true if the platform is Win32S + + + + + Return true if the platform is Win32Windows + + + + + Return true if the platform is Win32NT + + + + + Return true if the platform is Windows CE + + + + + Return true if the platform is Xbox + + + + + Return true if the platform is MacOSX + + + + + Return true if the platform is Windows 95 + + + + + Return true if the platform is Windows 98 + + + + + Return true if the platform is Windows ME + + + + + Return true if the platform is NT 3 + + + + + Return true if the platform is NT 4 + + + + + Return true if the platform is NT 5 + + + + + Return true if the platform is Windows 2000 + + + + + Return true if the platform is Windows XP + + + + + Return true if the platform is Windows 2003 Server + + + + + Return true if the platform is NT 6 + + + + + Return true if the platform is NT 6.0 + + + + + Return true if the platform is NT 6.1 + + + + + Return true if the platform is NT 6.2 + + + + + Return true if the platform is NT 6.3 + + + + + Return true if the platform is Vista + + + + + Return true if the platform is Windows 2008 Server (original or R2) + + + + + Return true if the platform is Windows 2008 Server (original) + + + + + Return true if the platform is Windows 2008 Server R2 + + + + + Return true if the platform is Windows 2012 Server (original or R2) + + + + + Return true if the platform is Windows 2012 Server (original) + + + + + Return true if the platform is Windows 2012 Server R2 + + + + + Return true if the platform is Windows 7 + + + + + Return true if the platform is Windows 8 + + + + + Return true if the platform is Windows 8.1 + + + + + Return true if the platform is Windows 10 + + + + + Return true if the platform is Windows Server. This is named Windows + Server 10 to distinguish it from previous versions of Windows Server. + + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + PlatformHelper class is used by the PlatformAttribute class to + determine whether a platform is supported. + + + + + Comma-delimited list of all supported OS platform constants + + + + + Comma-delimited list of all supported Runtime platform constants + + + + + Default constructor uses the operating system and + common language runtime of the system. + + + + + Construct a PlatformHelper for a particular operating + system and common language runtime. Used in testing. + + OperatingSystem to be used + RuntimeFramework to be used + + + + Test to determine if one of a collection of platforms + is being used currently. + + + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Test to determine if the a particular platform or comma- + delimited set of platforms is in use. + + Name of the platform or comma-separated list of platform ids + True if the platform is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representating the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + Get a Randomizer for a particular member, returning + one that has already been created if it exists. + This ensures that the same _values are generated + each time the tests are reloaded. + + + + + Get a randomizer for a particular parameter, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probablility a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + List of child results + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Test HasChildren before accessing Children to avoid + the creation of an empty collection. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + THe FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Enumeration identifying a common language + runtime implementation. + + + + Any supported runtime framework + + + Microsoft .NET Framework + + + Microsoft .NET Compact Framework + + + Microsoft Shared Source CLI + + + Mono + + + Silverlight + + + MonoTouch + + + + RuntimeFramework represents a particular version + of a common language runtime implementation. + + + + + DefaultVersion is an empty Version, used to indicate that + NUnit should select the CLR version to use for the test. + + + + + Construct from a runtime type and version. If the version has + two parts, it is taken as a framework version. If it has three + or more, it is taken as a CLR version. In either case, the other + version is deduced based on the runtime type and provided version. + + The runtime type of the framework + The version of the framework + + + + Static method to return a RuntimeFramework object + for the framework that is currently in use. + + + + + The type of this runtime framework + + + + + The framework version for this runtime framework + + + + + The CLR version for this runtime framework + + + + + Return true if any CLR version may be used in + matching this RuntimeFramework object. + + + + + Returns the Display name for this framework + + + + + Parses a string representing a RuntimeFramework. + The string may be just a RuntimeType name or just + a Version or a hyphenated RuntimeType-Version or + a Version prefixed by 'versionString'. + + + + + + + Overridden to return the short name of the framework + + + + + + Returns true if the current framework matches the + one supplied as an argument. Two frameworks match + if their runtime types are the same or either one + is RuntimeType.Any and all specified version components + are equal. Negative (i.e. unspecified) version + components are ignored. + + The RuntimeFramework to be matched. + True on match, otherwise false + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + An internal class is used to hold settings and a stack + of these objects is pushed and popped as Save and Restore + are called. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + The current Principal. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + The current context, head of the list of saved contexts. + + + + + Gets the current context. + + The current context. + + + + Get the current context or return null if none is found. + + + + + Clear the current context. This is provided to + prevent "leakage" of the CallContext containing + the current context back to any runners. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set the working directory + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + Gets or sets the current for the Thread. + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Obtain lifetime service object + + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + Get the display name for a MethodInfo + + A MethodInfo + The display name + + + + Get the display name for a method with args + + A MethodInfo + Argument list for the method + The display name + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object implementing ICustomAttributeProvider + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture + + + + + Set to true to suppress sorting this suite's contents + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + The attribute type to check for + + + + ThreadUtility provides a set of static methods convenient + for working with threads. + + + + + Do our best to Kill a thread + + The thread to kill + + + + Do our best to kill a thread, passing state info + + The thread to kill + Info for the ThreadAbortException handler + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Gets the _values for an enumeration, using Enum.GetTypes + where available, otherwise through reflection. + + + + + + + Gets the ids of the _values for an enumeration, + using Enum.GetNames where available, otherwise + through reflection. + + + + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Add a child result + + The child result to be added + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Inserts environment element + + Target node + The new node + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + Gets the default level of parallel execution (worker threads) + + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Initiate the test run. + + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + + + + Throws an with the message and arguments + that are passed in. This is used by the other Assert functions. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This is used by the other Assert functions. + + The message to initialize the with. + + + + Throws an . + This is used by the other Assert functions. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as ignored. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as Inconclusive. + + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + + + + Helper for Assert.AreEqual(double expected, double actual, ...) + allowing code generation to work consistently. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate does not throw an exception. + + A TestDelegate + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter ids for constraints and + asserts and avoiding conflict with the definition of + , from which it inherits much of its + behavior, in certain mock object frameworks. + + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to . + + The evaluated condition + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + Provides static methods to express the assumptions + that must be met for a test to give a meaningful + result. If an assumption is not met, the test + should produce an inconclusive result. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the + method throws an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Marks a test that must run in a particular threading apartment state, causing it + to run in a separate thread if necessary. + + + + + Construct an ApartmentAttribute + + The apartment state that this test must be run under. You must pass in a valid apartment state. + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + Attribute used to apply a category to a test + + + + + The name of the category + + + + + Construct attribute for a given category based on + a name. The name may not contain the characters ',', + '+', '-' or '!'. However, this is not checked in the + constructor since it would cause an error to arise at + as the test was loaded without giving a clear indication + of where the problem is located. The error is handled + in NUnitFramework.cs by marking the test as not + runnable. + + The name of the category + + + + Protected constructor uses the Type name as the name + of the category. + + + + + The name of the category + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParamterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. + + + + + Constructor with no cultures specified, for use + with named property syntax. + + + + + Constructor taking one or more cultures + + Comma-deliminted list of cultures + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + Used to mark a field for use as a datapoint when executing a theory + within the same fixture that requires an argument of the field's Type. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + ExplicitAttribute marks a test or test fixture so that it will + only be run if explicitly executed from the gui or command line + or if it is included by use of a filter. The test will not be + run simply because an enclosing suite is run. + + + + + Default constructor + + + + + Constructor with a reason + + The reason test is marked explicit + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. + + + + + Constructs the attribute giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. + + + + + Constructor with no included items specified, for use + with named property syntax. + + + + + Constructor taking one or more included items + + Comma-delimited list of included items + + + + Name of the item that is needed in order for + a test to run. Multiple items may be given, + separated by a comma. + + + + + Name of the item to be excluded. Multiple items + may be given, separated by a comma. + + + + + The reason for including or excluding the test + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No Parallelism is permitted + + + + + The test itself may be run in parallel with others at the same level + + + + + Descendants of the test may be run in parallel with one another + + + + + Descendants of the test down to the level of TestFixtures may be run in parallel + + + + + PlatformAttribute is used to mark a test fixture or an + individual method as applying to a particular platform only. + + + + + Constructor with no platforms specified, for use + with named property syntax. + + + + + Constructor taking one or more platforms + + Comma-delimited list of platforms + + + + Causes a test to be skipped if this PlatformAttribute is not satisfied. + + The test to modify + + + + PropertyAttribute is used to attach information to a test as a name/value pair.. + + + + + Construct a PropertyAttribute with a name and string value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and int value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and double value + + The name of the property + The property value + + + + Constructor for derived classes that set the + property dictionary directly. + + + + + Constructor for use by derived classes that use the + name of the type as the property name. Derived classes + must ensure that the Type of the property value is + a standard type supported by the BCL. Any custom + types will cause a serialization Exception when + in the client. + + + + + Gets the property dictionary for this attribute + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + Get the collection of _values to be used as arguments. + + + + + RangeAttribute is used to supply a range of _values to an + individual parameter of a parameterized test. + + + + + Construct a range of ints using default step of 1 + + + + + + + Construct a range of ints specifying the step size + + + + + + + + Construct a range of unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + Construct a range of doubles + + + + + + + + Construct a range of floats + + + + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Marks a test that must run in the MTA, causing it + to run in a separate thread if necessary. + + On methods, you may also use MTAThreadAttribute + to serve the same purpose. + + + + + Construct a RequiresMTAAttribute + + + + + Marks a test that must run in the STA, causing it + to run in a separate thread if necessary. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + Summary description for SetCultureAttribute. + + + + + Construct given the name of a culture + + + + + + Summary description for SetUICultureAttribute. + + + + + Construct given the name of a culture + + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + SetUpFixtureAttribute is used to identify a SetUpFixture + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + Attribute used to identify a method that is called + immediately after each test is run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant + + + + + + Construct a TestCaseAttribute with a single argument + + + + + + Construct a TestCaseAttribute with a two arguments + + + + + + + Construct a TestCaseAttribute with a three arguments + + + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Comma-delimited list of platforms to run the test for + + + + + Comma-delimited list of platforms to not run the test for + + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + Default constructor + + + + + Construct with a object[] representing a set of arguments. + In .NET 2.0, the arguments may later be separated into + type arguments and constructor arguments. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + Attribute used to identify a method that is called after + all the tests in a fixture have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + Used on a method, marks the test with a timeout value in milliseconds. + The test will be run in a separate thread and is cancelled if the timeout + is exceeded. Used on a class or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + The collection of data to be returned. Must + be set by any derived attribute classes. + We use an object[] so that the individual + elements may have their type changed in GetData + if necessary + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + Construct with one argument + + + + + + Construct with two arguments + + + + + + + Construct with three arguments + + + + + + + + Construct with an array of arguments + + + + + + Get the collection of _values to be used as arguments + + + + + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + Portable libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + A MarshalByRefObject that lives forever + + + + + Obtains a lifetime service object to control the lifetime policy for this instance. + + + + + This class is a System.Diagnostics.Stopwatch on operating systems that support it. On those that don't, + it replicates the functionality at the resolution supported. + + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a constraint + + + + + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. + + The actual value + True if the constraints both succeeded + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AttributeConstraint tests that a specified attribute is present + on a Type or other provider and that the value of the attribute + satisfies some other constraint. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. + + + + + The first constraint being combined + + + + + The second constraint being combined + + + + + Construct a BinaryConstraint from two other constraints + + The first constraint + The second constraint + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation + + + + + CollectionConstraint is the abstract base class for + constraints that operate on collections. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Determines whether the specified enumerable is empty. + + The enumerable. + + true if the specified enumerable is empty; otherwise, false. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Protected method to be implemented by derived classes + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + CollectionSubsetConstraint is used to determine whether + one collection is a subset of another + + + + + Construct a CollectionSubsetConstraint + + The collection that the actual value is expected to be a subset of + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + Try to remove an object from the tally + + The object to remove + True if successful, false if the object was not found + + + + Try to remove a set of objects from the tally + + The objects to remove + True if successful, false if any object was not found + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + Compare a Type T to an object + + + + + Abstract base class for constraints that compare _values to + determine if one is greater than, equal to or less than + the other. + + + + + The value against which a comparison is to be made + + + + + If true, less than returns success + + + + + if true, equal returns success + + + + + if true, greater than returns success + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + if set to true less succeeds. + if set to true equal succeeds. + if set to true greater succeeds. + String used in describing the constraint. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + A ConstraintResult + + + + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + + + + + + Returns the string representation of this constraint + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending Or + to the current constraint. + + + + + Returns a DelayedConstraint with the specified delay time. + + The delay in milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + Resolves any pending operators and returns the resolved constraint. + + + + + ConstraintBuilder maintains the stacks that are used in + processing a ConstraintExpression. An OperatorStack + is used to hold operators that are waiting for their + operands to be reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + Initializes a new instance of the class. + + + + + Appends the specified operator to the expression by first + reducing the operator stack and then pushing the new + operator on the stack. + + The operator to push. + + + + Appends the specified constraint to the expression by pushing + it on the constraint stack. + + The constraint to push. + + + + Sets the top operator right context. + + The right context. + + + + Reduces the operator stack until the topmost item + precedence is greater than or equal to the target precedence. + + The target precedence. + + + + Resolves this instance, returning a Constraint. If the Builder + is not currently in a resolvable state, an exception is thrown. + + The resolved constraint + + + + Gets a value indicating whether this instance is resolvable. + + + true if this instance is resolvable; otherwise, false. + + + + + ConstraintExpression represents a compound constraint in the + process of being constructed from a series of syntactic elements. + + Individual elements are appended to the expression as they are + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + The ConstraintBuilder holding the elements recognized so far + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a string representation of the expression as it + currently stands. This should only be used for testing, + since it has the side-effect of resolving the expression. + + + + + + Appends an operator to the expression and returns the + resulting expression itself. + + + + + Appends a self-resolving operator to the expression and + returns a new ResolvableConstraintExpression. + + + + + Appends a constraint to the expression and returns that + constraint, which is associated with the current state + of the expression being built. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + With is currently a NOP - reserved for future use. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the a subpath of the expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is a subpath of the expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. + + The MessageWriter on which to display the message + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + ContainsConstraint tests a whether a string contains a substring + or a collection contains an object. It postpones the decision of + which test to use until the type of the actual argument is known. + This allows testing whether a string is contained in a collection + or as a substring of another string using the same syntax. + + + + + Initializes a new instance of the class. + + The _expected. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Creates a new DelayedConstraint + + The inner constraint to decorate + The time interval after which the match is performed + If the value of is less than 0 + + + + Creates a new DelayedConstraint + + The inner constraint to decorate + The time interval after which the match is performed, in milliseconds + The time interval used for polling, in milliseconds + If the value of is less than 0 + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a delegate + + The delegate whose value is to be tested + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + Overridden to wait for the specified delay period before + calling the base constraint with the dereferenced value. + + A reference to the value to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + Adjusts a Timestamp by a given TimeSpan + + + + + + + + Returns the difference between two Timestamps as a TimeSpan + + + + + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + EmptyConstraint tests a whether a string or collection is empty, + postponing the decision about which test is applied until the + type of the actual argument is known. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EndsWithConstraint can test whether a string ends + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + EqualConstraint is able to compare an actual value with the + expected value provided in its constructor. Two objects are + considered equal if both are null, or if both have the same + value. NUnit has special semantics for some object types. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to suppress string clipping + and return self. + + + + + Flag the constraint to compare arrays as collections + and return self. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + Switches the .Within() modifier to interpret its tolerance as + a distance in representable _values (see remarks). + + Self. + + Ulp stands for "unit in the last place" and describes the minimum + amount a given value can change. For any integers, an ulp is 1 whole + digit. For floating point _values, the accuracy of which is better + for smaller numbers and worse for larger numbers, an ulp depends + on the size of the number. Using ulps for comparison of floating + point results instead of fixed tolerances is safer because it will + automatically compensate for the added inaccuracy of larger numbers. + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in days. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in hours. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in minutes. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in seconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + + Self + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + ExactTypeConstraint is used to test that an object + is of the exact type provided in the constructor + + + + + Construct an ExactTypeConstraint for a given Type + + The expected Type. + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + FileExistsConstraint is used to determine if a file exists + + + + + Initializes a new instance of the class. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists + + + + + If true, the constraint will only check if files exist, not directories + + + + + If true, the constraint will only check if directories exist, not files + + + + + Initializes a new instance of the class that + will check files and directories. + + + + + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. + + if set to true [ignore directories]. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + Helper routines for working with floating point numbers + + + The floating point comparison code is based on this excellent article: + http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + + + "ULP" means Unit in the Last Place and in the context of this library refers to + the distance between two adjacent floating point numbers. IEEE floating point + numbers can only represent a finite subset of natural numbers, with greater + accuracy for smaller numbers and lower accuracy for very large numbers. + + + If a comparison is allowed "2 ulps" of deviation, that means the _values are + allowed to deviate by up to 2 adjacent floating point _values, which might be + as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. + + + + + Union of a floating point variable and an integer + + + The union's value as a floating point variable + + + The union's value as an integer + + + The union's value as an unsigned integer + + + Union of a double precision floating point variable and a long + + + The union's value as a double precision floating point variable + + + The union's value as a long + + + The union's value as an unsigned long + + + Compares two floating point _values for equality + First floating point value to be compared + Second floating point value t be compared + + Maximum number of representable floating point _values that are allowed to + be between the left and the right floating point _values + + True if both numbers are equal or close to being equal + + + Floating point _values can only represent a finite subset of natural numbers. + For example, the _values 2.00000000 and 2.00000024 can be stored in a float, + but nothing inbetween them. + + + This comparison will count how many possible floating point _values are between + the left and the right number. If the number of possible _values between both + numbers is less than or equal to maxUlps, then the numbers are considered as + being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + Compares two double precision floating point _values for equality + First double precision floating point value to be compared + Second double precision floating point value t be compared + + Maximum number of representable double precision floating point _values that are + allowed to be between the left and the right double precision floating point _values + + True if both numbers are equal or close to being equal + + + Double precision floating point _values can only represent a limited series of + natural numbers. For example, the _values 2.0000000000000000 and 2.0000000000000004 + can be stored in a double, but nothing inbetween them. + + + This comparison will count how many possible double precision floating point + _values are between the left and the right number. If the number of possible + _values between both numbers is less than or equal to maxUlps, then the numbers + are considered as being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + + Reinterprets the memory contents of a floating point value as an integer value + + + Floating point value whose memory contents to reinterpret + + + The memory contents of the floating point value interpreted as an integer + + + + + Reinterprets the memory contents of a double precision floating point + value as an integer value + + + Double precision floating point value whose memory contents to reinterpret + + + The memory contents of the double precision floating point value + interpreted as an integer + + + + + Reinterprets the memory contents of an integer as a floating point value + + Integer value whose memory contents to reinterpret + + The memory contents of the integer value interpreted as a floating point value + + + + + Reinterprets the memory contents of an integer value as a double precision + floating point value + + Integer whose memory contents to reinterpret + + The memory contents of the integer interpreted as a double precision + floating point value + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is greater than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + A ConstraintResult + + + + InstanceOfTypeConstraint is used to test that an object + is of the same type provided or derived from it. + + + + + Construct an InstanceOfTypeConstraint for the type provided + + The expected Type + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is less than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + MessageWriter is the abstract base for classes that write + constraint descriptions and messages in some form. The + class has separate methods for writing various components + of a message, allowing implementations to tailor the + presentation as needed. + + + + + Construct a MessageWriter given a culture + + + + + Abstract method to get the max line length + + + + + Method to write single line message with optional args, usually + written to precede the general failure message. + + The message to be written + Any arguments used in formatting the message + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The failing constraint result + + + + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given _values, including + a tolerance value on the Expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in locating the point where the strings differ + If true, the strings should be clipped to fit the line + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Returns the representation of a type as used in NUnitLite. + This is the same as Type.ToString() except for arrays, + which are displayed with their declared sizes. + + + + + + + Converts any control characters in a string + to their escaped representation. + + The string to be converted + The converted string + + + + Return the a string representation for a set of indices into an array + + Array of indices for which a string is needed + + + + Get an array of indices representing the point in a collection or + array corresponding to a single int index into the collection. + + The collection to which the indices apply + Index in the collection + Array of indices + + + + Clip a string to a given length, starting at a particular offset, returning the clipped + string with ellipses representing the removed parts + + The string to be clipped + The maximum permitted length of the result string + The point at which to start clipping + The clipped string + + + + Clip the expected and actual strings in a coordinated fashion, + so that they may be displayed together. + + + + + + + + + Shows the position two strings start to differ. Comparison + starts at the start index. + + The expected string + The actual string + The index in the strings at which comparison should start + Boolean indicating whether case should be ignored + -1 if no mismatch found, or the index where mismatch found + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + NoItemConstraint applies another constraint to each + item in a collection, failing if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + NotConstraint negates the effect of some other constraint + + + + + Initializes a new instance of the class. + + The base constraint to be negated. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + The Numerics class contains common operations on numeric _values. + + + + + Checks the type of the object, returning true if + the object is a numeric type. + + The object to check + true if the object is a numeric type + + + + Checks the type of the object, returning true if + the object is a floating point numeric type. + + The object to check + true if the object is a floating point numeric type + + + + Checks the type of the object, returning true if + the object is a fixed point numeric type. + + The object to check + true if the object is a fixed point numeric type + + + + Test two numeric _values for equality, performing the usual numeric + conversions and using a provided or default tolerance. If the tolerance + provided is Empty, this method may set it to a default tolerance. + + The expected value + The actual value + A reference to the tolerance in effect + True if the _values are equal + + + + Compare two numeric _values, performing the usual numeric conversions. + + The expected value + The actual value + The relationship of the _values to each other + + + + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + NUnitEqualityComparer encapsulates NUnit's handling of + equality tests between objects. + + + + + If true, all string comparisons will ignore case + + + + + If true, arrays will be treated as collections, allowing + those of different dimensions to be compared + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + Returns the default NUnitEqualityComparer + + + + + Gets and sets a flag indicating whether case should + be ignored in determining equality. + + + + + Gets and sets a flag indicating that arrays should be + compared as collections, without regard to their shape. + + + + + Gets the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depthy. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + Helper method to compare two arrays + + + + + Method to compare two DirectoryInfo objects + + first directory to compare + second directory to compare + true if equivalent, false if not + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + Represents a constraint that succeeds if all the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + Operator that tests for the presence of a particular attribute + on a type and optionally applies further tests to the attribute. + + + + + Construct an AttributeOperator for a particular Type + + The Type of attribute tested + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Abstract base class for all binary operators + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + The ConstraintOperator class is used internally by a + ConstraintBuilder to represent an operator that + modifies or combines constraints. + + Constraint operators use left and right precedence + _values to determine whether the top operator on the + stack should be reduced before pushing a new operator. + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + The syntax element preceding this operator + + + + + The syntax element following this operator + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + PrefixOperator takes a single constraint and modifies + it's action in some way. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Returns the constraint created by applying this + prefix to another constraint. + + + + + + + Operator used to test for the presence of a named Property + on an object and optionally apply further tests to the + value of that property. + + + + + Gets the name of the property to which the operator applies + + + + + Constructs a PropOperator for a particular named property + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. + + + + + Operator that tests that an exception is thrown and + optionally applies further tests to the exception. + + + + + Construct a ThrowsOperator + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a constraint + + + + + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. + + The actual value + True if either constraint succeeded + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether one path in canonical form is a subpath of another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + PropertyConstraint extracts a named property and uses + its value as the actual value for a chained constraint. + + + + + Initializes a new instance of the class. + + The name. + The constraint to apply to the property. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + PropertyExistsConstraint tests that a named property + exists on the object provided through Match. + + Originally, PropertyConstraint provided this feature + in addition to making optional tests on the value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + RegexConstraint can test whether a string matches + the pattern provided. + + + + + Initializes a new instance of the class. + + The pattern. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ResolvableConstraintExpression is used to represent a compound + constraint being constructed at a point where the last operator + may either terminate the expression or may have additional + qualifying constraints added to it. + + It is used, for example, for a Property element or for + an Exception element, either of which may be optionally + followed by constraints that apply to the property or + exception. + + + + + Create a new instance of ResolvableConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SomeItemsConstraint applies another constraint to each + item in a collection, succeeding if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + The MessageWriter to write to + + + + Display the failure information for two collections that did not match. + + The MessageWriter on which to display + The expected collection. + The actual collection + The depth of this failure in a set of nested collections + + + + Displays a single line showing the types and sizes of the expected + and actual collections or arrays. If both are identical, the value is + only shown once. + + The MessageWriter on which to display + The expected collection or array + The actual collection or array + The indentation level for the message line + + + + Displays a single line showing the point in the expected and actual + arrays at which the comparison failed. If the arrays have different + structures or dimensions, both _values are shown. + + The MessageWriter on which to display + The expected array + The actual array + Index of the failure point in the underlying collections + The indentation level for the message line + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + StartsWithConstraint can test whether a string starts + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. + + + + + The expected value + + + + + Indicates whether tests should be case-insensitive + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Test whether the constraint is satisfied by a given string + + The string to be tested + True for success, false for failure + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SubstringConstraint can test whether a string contains + the expected substring. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ThrowsConstraint is used to test the exception thrown by + a delegate by applying a constraint to it. + + + + + Initializes a new instance of the class, + using a constraint to be applied to the exception. + + A constraint to apply to the caught exception. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + Executes the code of the delegate and captures any exception. + If a non-null base constraint was provided, it applies that + constraint to the exception. + + A delegate representing the code to be tested + True if an exception is thrown and the constraint succeeds, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + The Tolerance class generalizes the notion of a tolerance + within which an equality test succeeds. Normally, it is + used with numeric types, but it can be used with any + type that supports taking a difference between two + objects and comparing that difference to a value. + + + + + Returns a default Tolerance object, equivalent to + specifying an exact match unless + is set, in which case, the + will be used. + + + + + Returns an empty Tolerance object, equivalent to + specifying an exact match even if + is set. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + Gets the for the current Tolerance + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Gets the value of the current Tolerance instance. + + + + + Returns a new tolerance, using the current amount as a percentage. + + + + + Returns a new tolerance, using the current amount in Ulps + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Modes in which the tolerance value for a comparison can be interpreted. + + + + + The tolerance was created with a value, without specifying + how the value would be used. This is used to prevent setting + the mode more than once and is generally changed to Linear + upon execution of the test. + + + + + The tolerance is used as a numeric range within which + two compared _values are considered to be equal. + + + + + Interprets the tolerance as the percentage by which + the two compared _values my deviate from each other. + + + + + Compares two _values based in their distance in + representable numbers. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + XmlSerializableConstraint tests whether + an object is serializable in xml format. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of this constraint + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Asserts on Directories + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if the directories are not equal + Arguments to be used in formatting the message + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Thrown when an assertion failed. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Thrown when a test executes inconclusively. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Asserts on Files + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the two Stream are the same. + Arguments to be used in formatting the message + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file exists. If it does not exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + + + + GlobalSettings is a place for setting default _values used + by the framework in performing asserts. + + + + + Default tolerance for floating point equality + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued propeties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an oject of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Determines whether the specified , is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is a subpath of the expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + The Iz class is a synonym for Is intended for use in VB, + which regards Is as a keyword. + + + + + The List class is a helper class with properties and methods + that supply a number of constraints used with lists and collections. + + + + + List.Map returns a ListMapper, which can be used to map + the original collection to another collection. + + + + + + + ListMapper is used to transform a collection used as an actual argument + producing another collection to be used in the assertion. + + + + + Construct a ListMapper based on a collection + + The collection to be transformed + + + + Produces a collection containing all the _values of a property + + The collection of property _values + + + + + The SpecialValue enum is used to represent TestCase arguments + that cannot be used as arguments to an Attribute. + + + + + Null represents a null value, which cannot be used as an + argument to an attriute under .NET 1.x + + + + + Basic Asserts on strings. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string is not found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + + + + The TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the test case. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Sets the expected result for the test + + The expected result + A modified TestCaseData + + + + Sets the name of the test case + + The modified TestCaseData instance + + + + Sets the description for the test case + being constructed. + + The description. + The modified TestCaseData instance. + + + + Applies a category to the test + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + Get the current test context. This is created + as needed. The user may save the context for + use within a test, but it should not be used + outside the test for which it is created. + + + + + Gets a TextWriter that will send output to the current test result. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + Creates a constraint specifying an expected exception + + + + + Creates a constraint specifying an exception with a given InnerException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNUllException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Env is a static class that provides some of the features of + System.Environment that are not available under all runtimes + + + + + The newline sequence in the current environment. + + + + + Path to the 'My Documents' folder + + + + + Directory used for file output if not specified on commandline. + + + + + PackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the engine and framework. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attache a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the frameowrk TestContext. + + + + + The name of the config to use in loading a project. + If not specified, the first config found is used. + + + + + Bool indicating whether the engine should determine the private + bin path by examining the paths to all the tests. Defaults to + true unless PrivateBinPath is specified. + + + + + The ApplicationBase to use in loading the tests. If not + specified, and each assembly has its own process, then the + location of the assembly is used. For multiple assemblies + in a single process, the closest common root directory is used. + + + + + Path to the config file to use in running the tests. + + + + + Bool flag indicating whether a debugger should be launched at agent + startup. Used only for debugging NUnit itself. + + + + + Indicates how to load tests across AppDomains. Values are: + "Default", "None", "Single", "Multiple". Default is "Multiple" + if more than one assembly is loaded in a process. Otherwise, + it is "Single". + + + + + The private binpath used to locate assemblies. Directory paths + is separated by a semicolon. It's an error to specify this and + also set AutoBinPath to true. + + + + + The maximum number of test agents permitted to run simultneously. + Ignored if the ProcessModel is not set or defaulted to Multiple. + + + + + Indicates how to allocate assemblies to processes. Values are: + "Default", "Single", "Separate", "Multiple". Default is "Multiple" + for more than one assembly, "Separate" for a single assembly. + + + + + Indicates the desired runtime to use for the tests. Values + are strings like "net-4.5", "mono-4.0", etc. Default is to + use the target framework for which an assembly was built. + + + + + Bool flag indicating that the test should be run in a 32-bit process + on a 64-bit system. By default, NUNit runs in a 64-bit process on + a 64-bit system. Ignored if set on a 32-bit system. + + + + + Indicates that test runners should be disposed after the tests are executed + + + + + Bool flag indicating that the test assemblies should be shadow copied. + Defaults to false. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + diff --git a/packages/NUnit.3.0.1/lib/portable-net45+win8+wp8+wpa81+Xamarin.Mac+MonoAndroid10+MonoTouch10+Xamarin.iOS10/nunit.framework.dll b/packages/NUnit.3.0.1/lib/portable-net45+win8+wp8+wpa81+Xamarin.Mac+MonoAndroid10+MonoTouch10+Xamarin.iOS10/nunit.framework.dll new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e110b17367f51f64feeebff2f0647a02643f4abe GIT binary patch literal 243712 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
    25Jtr=&%-k3oxW9cUKSTEr4Ho3FMxqP<)tIuFx$ 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 diff --git a/packages/NUnit.3.0.1/lib/portable-net45+win8+wp8+wpa81+Xamarin.Mac+MonoAndroid10+MonoTouch10+Xamarin.iOS10/nunit.framework.xml b/packages/NUnit.3.0.1/lib/portable-net45+win8+wp8+wpa81+Xamarin.Mac+MonoAndroid10+MonoTouch10+Xamarin.iOS10/nunit.framework.xml new file mode 100644 --- /dev/null +++ b/packages/NUnit.3.0.1/lib/portable-net45+win8+wp8+wpa81+Xamarin.Mac+MonoAndroid10+MonoTouch10+Xamarin.iOS10/nunit.framework.xml @@ -0,0 +1,15264 @@ + + + + nunit.framework + + + + + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which is the AssemblyName + + + + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + Waits for pending asynchronous operations to complete, if appropriate, + and returns a proper result of the invocation by unwrapping task results + + The raw result of the method invocation + The unwrapped result, if necessary + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + The CommandStage enumeration represents the defined stages + of execution for a series of TestCommands. The int _values + of the enum are used to apply decorators in the proper + order. Lower _values are applied first and are therefore + "closer" to the actual test execution. + + + No CommandStage is defined for actual invocation of the test or + for creation of the context. Execution may be imagined as + proceeding from the bottom of the list upwards, with cleanup + after the test running in the opposite order. + + + + + Use an application-defined default value. + + + + + Make adjustments needed before and after running + the raw test - that is, after any SetUp has run + and before TearDown. + + + + + Run SetUp and TearDown for the test. This stage is used + internally by NUnit and should not normally appear + in user-defined decorators. + + + + + Make adjustments needed before and after running + the entire test - including SetUp and TearDown. + + + + + TODO: Documentation needed for class + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext + + The context in which the test should run. + A TestResult + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run after Setup + + + + Overridden to run the one-time setup for a suite. + + The TestExecutionContext to be used. + A TestResult + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The test suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run before teardown. + + + + Overridden to run the teardown methods specified on the test. + + The TestExecutionContext to be used. + A TestResult + + + + SetUpTearDownCommand runs any SetUp methods for a suite, + runs the test and then runs any TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestActionCommand runs the BeforeTest actions for a test, + then runs the test and finally runs the AfterTestActions. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + TestActionItem represents a single execution of an + ITestAction. It is used to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + Overridden to call the inner command and adjust the result + in case all chlid results were inconclusive. + + + + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + A utility class to create TestCommands + + + + + Gets the command to be executed before any of + the child tests are run. + + A TestCommand + + + + Gets the command to be executed after all of the + child tests are run. + + A TestCommand + + + + Creates a test command for use in running this test. + + + + + + Creates a command for skipping a test. The result returned will + depend on the test RunState. + + + + + Builds the set up tear down list. + + Type of the fixture. + Type of the set up attribute. + Type of the tear down attribute. + A list of SetUpTearDownItems + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do setup, run all child + items and then do teardown. + + + + + A simplified implementation of .NET 4 CountdownEvent + for use in earlier versions of .NET. Only the methods + used by NUnit are implemented. + + + + + Construct a CountdownEvent + + The initial count + + + + Gets the initial count established for the CountdownEvent + + + + + Gets the current count remaining for the CountdownEvent + + + + + Decrement the count by one + + + + + Block the thread until the count reaches zero + + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and a thread is created on which to + run it. Subsequent calls come from the top level + item or its descendants on the proper thread. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The execution context + + + + + The test actions to be performed before and after this test + + + + + The test result + + + + + Execute the current work item, including any + child work items. + + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + TextMessageWriter writes constraint descriptions and messages + in displayable form as a text stream. It tailors the display + of individual message components to form the standard message + format of NUnit assertion failure messages. + + + + + Prefix used for the expected value line of a message + + + + + Prefix used for the actual value line of a message + + + + + Length of a message prefix + + + + + Construct a TextMessageWriter + + + + + Construct a TextMessageWriter, specifying a user message + and optional formatting arguments. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The result of the constraint that failed + + + + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given _values, including + a tolerance value on the expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in string comparisons + If true, clip the strings to fit the max line length + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Write the generic 'Expected' line for a constraint + + The constraint that failed + + + + Write the generic 'Expected' line for a given value + + The expected value + + + + Write the generic 'Expected' line for a given value + and tolerance. + + The expected value + The tolerance within which the test was made + + + + Write the generic 'Actual' line for a constraint + + The ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type argments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the spcified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representating the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + Get a Randomizer for a particular member, returning + one that has already been created if it exists. + This ensures that the same _values are generated + each time the tests are reloaded. + + + + + Get a randomizer for a particular parameter, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probablility a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + List of child results + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Test HasChildren before accessing Children to avoid + the creation of an empty collection. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + THe FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Add a child result + + The child result to be added + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + An internal class is used to hold settings and a stack + of these objects is pushed and popped as Save and Restore + are called. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + The current context, head of the list of saved contexts. + + + + + Gets the current context. + + The current context. + + + + Clear the current context. This is provided to + prevent "leakage" of the CallContext containing + the current context back to any runners. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set the working directory + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + Get the display name for a MethodInfo + + A MethodInfo + The display name + + + + Get the display name for a method with args + + A MethodInfo + Argument list for the method + The display name + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object deriving from MemberInfo + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object deriving from MemberInfo + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture + + + + + Set to true to suppress sorting this suite's contents + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + The attribute type to check for + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Gets the _values for an enumeration, using Enum.GetTypes + where available, otherwise through reflection. + + + + + + + Gets the ids of the _values for an enumeration, + using Enum.GetNames where available, otherwise + through reflection. + + + + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Initiate the test run. + + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first int is greater than the second + int. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + + + + Throws an with the message and arguments + that are passed in. This is used by the other Assert functions. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This is used by the other Assert functions. + + The message to initialize the with. + + + + Throws an . + This is used by the other Assert functions. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as ignored. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as Inconclusive. + + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + + + + Helper for Assert.AreEqual(double expected, double actual, ...) + allowing code generation to work consistently. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate does not throw an exception. + + A TestDelegate + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter ids for constraints and + asserts and avoiding conflict with the definition of + , from which it inherits much of its + behavior, in certain mock object frameworks. + + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to . + + The evaluated condition + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + Provides static methods to express the assumptions + that must be met for a test to give a meaningful + result. If an assumption is not met, the test + should produce an inconclusive result. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the + method throws an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + Attribute used to apply a category to a test + + + + + The name of the category + + + + + Construct attribute for a given category based on + a name. The name may not contain the characters ',', + '+', '-' or '!'. However, this is not checked in the + constructor since it would cause an error to arise at + as the test was loaded without giving a clear indication + of where the problem is located. The error is handled + in NUnitFramework.cs by marking the test as not + runnable. + + The name of the category + + + + Protected constructor uses the Type name as the name + of the category. + + + + + The name of the category + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParamterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. + + + + + Constructor with no cultures specified, for use + with named property syntax. + + + + + Constructor taking one or more cultures + + Comma-deliminted list of cultures + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + Used to mark a field for use as a datapoint when executing a theory + within the same fixture that requires an argument of the field's Type. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + ExplicitAttribute marks a test or test fixture so that it will + only be run if explicitly executed from the gui or command line + or if it is included by use of a filter. The test will not be + run simply because an enclosing suite is run. + + + + + Default constructor + + + + + Constructor with a reason + + The reason test is marked explicit + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. + + + + + Constructs the attribute giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. + + + + + Constructor with no included items specified, for use + with named property syntax. + + + + + Constructor taking one or more included items + + Comma-delimited list of included items + + + + Name of the item that is needed in order for + a test to run. Multiple items may be given, + separated by a comma. + + + + + Name of the item to be excluded. Multiple items + may be given, separated by a comma. + + + + + The reason for including or excluding the test + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No Parallelism is permitted + + + + + The test itself may be run in parallel with others at the same level + + + + + Descendants of the test may be run in parallel with one another + + + + + Descendants of the test down to the level of TestFixtures may be run in parallel + + + + + PropertyAttribute is used to attach information to a test as a name/value pair.. + + + + + Construct a PropertyAttribute with a name and string value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and int value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and double value + + The name of the property + The property value + + + + Constructor for derived classes that set the + property dictionary directly. + + + + + Constructor for use by derived classes that use the + name of the type as the property name. Derived classes + must ensure that the Type of the property value is + a standard type supported by the BCL. Any custom + types will cause a serialization Exception when + in the client. + + + + + Gets the property dictionary for this attribute + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + Get the collection of _values to be used as arguments. + + + + + RangeAttribute is used to supply a range of _values to an + individual parameter of a parameterized test. + + + + + Construct a range of ints using default step of 1 + + + + + + + Construct a range of ints specifying the step size + + + + + + + + Construct a range of unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + Construct a range of doubles + + + + + + + + Construct a range of floats + + + + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + SetUpFixtureAttribute is used to identify a SetUpFixture + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + Attribute used to identify a method that is called + immediately after each test is run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant + + + + + + Construct a TestCaseAttribute with a single argument + + + + + + Construct a TestCaseAttribute with a two arguments + + + + + + + Construct a TestCaseAttribute with a three arguments + + + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + Default constructor + + + + + Construct with a object[] representing a set of arguments. + In .NET 2.0, the arguments may later be separated into + type arguments and constructor arguments. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + Attribute used to identify a method that is called after + all the tests in a fixture have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + The collection of data to be returned. Must + be set by any derived attribute classes. + We use an object[] so that the individual + elements may have their type changed in GetData + if necessary + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + Construct with one argument + + + + + + Construct with two arguments + + + + + + + Construct with three arguments + + + + + + + + Construct with an array of arguments + + + + + + Get the collection of _values to be used as arguments + + + + + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + Portable libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + Specifies flags that control binding and the way in which the search for members + and types is conducted by reflection. + + + + + Specifies no binding flag. + + + + + Specifies that only members declared at the level of the supplied type's hierarchy + should be considered. Inherited members are not considered. + + + + + Specifies that instance members are to be included in the search. + + + + + Specifies that static members are to be included in the search. + + + + + Specifies that public members are to be included in the search. + + + + + Specifies that non-public members are to be included in the search. + + + + + Specifies that public and protected static members up the hierarchy should be + returned. Private static members in inherited classes are not returned. Static + members include fields, methods, events, and properties. Nested types are not + returned. + + + + + A MarshalByRefObject that lives forever + + + + + Some path based methods that we need even in the Portable framework which + does not have the System.IO.Path class + + + + + Windows directory separator + + + + + Alternate directory separator + + + + + A volume separator character. + + + + + Get the file name and extension of the specified path string. + + The path string from which to obtain the file name and extension. + The filename as a . If the last character of is a directory or volume separator character, this method returns . If is null, this method returns null. + + + + Provides NUnit specific extensions to aid in Reflection + across multiple frameworks + + + This version of the class allows direct calls on Type on + those platforms that would normally require use of + GetTypeInfo(). + + + + + Returns an array of generic arguments for the give type + + + + + + + Gets the constructor with the given parameter types + + + + + + + + Gets the constructors for a type + + + + + + + + + + + + + + + + + + + + + + + Gets declared or inherited interfaces on this type + + + + + + + Gets the member on a given type by name. BindingFlags ARE IGNORED. + + + + + + + + + Gets all members on a given type. BindingFlags ARE IGNORED. + + + + + + + + Gets field of the given name on the type + + + + + + + + Gets property of the given name on the type + + + + + + + + Gets property of the given name on the type + + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + + Gets public methods on the given type + + + + + + + Gets methods on a type + + + + + + + + Determines if one type can be implicitly converted from another + + + + + + + + Extensions to the various MemberInfo derived classes + + + + + Returns the get method for the given property + + + + + + + + Returns an array of custom attributes of the specified type applied to this member + + Portable throws an argument exception if T does not + derive from Attribute. NUnit uses interfaces to find attributes, thus + this method + + + + Returns an array of custom attributes of the specified type applied to this parameter + + + + + Returns an array of custom attributes of the specified type applied to this assembly + + + + + Extensions for Assembly that are not available in portable + + + + + DNX does not have a version of GetCustomAttributes on Assembly that takes an inherit + parameter since it doesn't make sense on Assemblies. This version just ignores the + inherit parameter. + + The assembly + The type of attribute you are looking for + Ignored + + + + + Gets the types in a given assembly + + + + + + + This class is a System.Diagnostics.Stopwatch on operating systems that support it. On those that don't, + it replicates the functionality at the resolution supported. + + + + + Gets the total elapsed time measured by the current instance, in milliseconds. + + + + + Gets a value indicating whether the Stopwatch timer is running. + + + + + Gets the current number of ticks in the timer mechanism. + + + If the Stopwatch class uses a high-resolution performance counter, GetTimestamp returns the current + value of that counter. If the Stopwatch class uses the system timer, GetTimestamp returns the current + DateTime.Ticks property of the DateTime.Now instance. + + A long integer representing the tick counter value of the underlying timer mechanism. + + + + Stops time interval measurement and resets the elapsed time to zero. + + + + + Starts, or resumes, measuring elapsed time for an interval. + + + + + Initializes a new Stopwatch instance, sets the elapsed time property to zero, and starts measuring elapsed time. + + A Stopwatch that has just begun measuring elapsed time. + + + + Stops measuring elapsed time for an interval. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + + + + Gets the frequency of the timer as the number of ticks per second. + + + + + Indicates whether the timer is based on a high-resolution performance counter. + + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a constraint + + + + + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. + + The actual value + True if the constraints both succeeded + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AttributeConstraint tests that a specified attribute is present + on a Type or other provider and that the value of the attribute + satisfies some other constraint. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. + + + + + The first constraint being combined + + + + + The second constraint being combined + + + + + Construct a BinaryConstraint from two other constraints + + The first constraint + The second constraint + + + + CollectionConstraint is the abstract base class for + constraints that operate on collections. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Determines whether the specified enumerable is empty. + + The enumerable. + + true if the specified enumerable is empty; otherwise, false. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Protected method to be implemented by derived classes + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + CollectionSubsetConstraint is used to determine whether + one collection is a subset of another + + + + + Construct a CollectionSubsetConstraint + + The collection that the actual value is expected to be a subset of + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + Try to remove an object from the tally + + The object to remove + True if successful, false if the object was not found + + + + Try to remove a set of objects from the tally + + The objects to remove + True if successful, false if any object was not found + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + Compare a Type T to an object + + + + + Abstract base class for constraints that compare _values to + determine if one is greater than, equal to or less than + the other. + + + + + The value against which a comparison is to be made + + + + + If true, less than returns success + + + + + if true, equal returns success + + + + + if true, greater than returns success + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + if set to true less succeeds. + if set to true equal succeeds. + if set to true greater succeeds. + String used in describing the constraint. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + A ConstraintResult + + + + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + + + + + + Returns the string representation of this constraint + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending Or + to the current constraint. + + + + + Resolves any pending operators and returns the resolved constraint. + + + + + ConstraintBuilder maintains the stacks that are used in + processing a ConstraintExpression. An OperatorStack + is used to hold operators that are waiting for their + operands to be reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + Initializes a new instance of the class. + + + + + Appends the specified operator to the expression by first + reducing the operator stack and then pushing the new + operator on the stack. + + The operator to push. + + + + Appends the specified constraint to the expression by pushing + it on the constraint stack. + + The constraint to push. + + + + Sets the top operator right context. + + The right context. + + + + Reduces the operator stack until the topmost item + precedence is greater than or equal to the target precedence. + + The target precedence. + + + + Resolves this instance, returning a Constraint. If the Builder + is not currently in a resolvable state, an exception is thrown. + + The resolved constraint + + + + Gets a value indicating whether this instance is resolvable. + + + true if this instance is resolvable; otherwise, false. + + + + + ConstraintExpression represents a compound constraint in the + process of being constructed from a series of syntactic elements. + + Individual elements are appended to the expression as they are + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + The ConstraintBuilder holding the elements recognized so far + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a string representation of the expression as it + currently stands. This should only be used for testing, + since it has the side-effect of resolving the expression. + + + + + + Appends an operator to the expression and returns the + resulting expression itself. + + + + + Appends a self-resolving operator to the expression and + returns a new ResolvableConstraintExpression. + + + + + Appends a constraint to the expression and returns that + constraint, which is associated with the current state + of the expression being built. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + With is currently a NOP - reserved for future use. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. + + The MessageWriter on which to display the message + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + ContainsConstraint tests a whether a string contains a substring + or a collection contains an object. It postpones the decision of + which test to use until the type of the actual argument is known. + This allows testing whether a string is contained in a collection + or as a substring of another string using the same syntax. + + + + + Initializes a new instance of the class. + + The _expected. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + EmptyConstraint tests a whether a string or collection is empty, + postponing the decision about which test is applied until the + type of the actual argument is known. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EndsWithConstraint can test whether a string ends + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + EqualConstraint is able to compare an actual value with the + expected value provided in its constructor. Two objects are + considered equal if both are null, or if both have the same + value. NUnit has special semantics for some object types. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to suppress string clipping + and return self. + + + + + Flag the constraint to compare arrays as collections + and return self. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + Switches the .Within() modifier to interpret its tolerance as + a distance in representable _values (see remarks). + + Self. + + Ulp stands for "unit in the last place" and describes the minimum + amount a given value can change. For any integers, an ulp is 1 whole + digit. For floating point _values, the accuracy of which is better + for smaller numbers and worse for larger numbers, an ulp depends + on the size of the number. Using ulps for comparison of floating + point results instead of fixed tolerances is safer because it will + automatically compensate for the added inaccuracy of larger numbers. + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in days. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in hours. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in minutes. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in seconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + + Self + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + The MessageWriter to write to + + + + Display the failure information for two collections that did not match. + + The MessageWriter on which to display + The expected collection. + The actual collection + The depth of this failure in a set of nested collections + + + + Displays a single line showing the types and sizes of the expected + and actual collections or arrays. If both are identical, the value is + only shown once. + + The MessageWriter on which to display + The expected collection or array + The actual collection or array + The indentation level for the message line + + + + Displays a single line showing the point in the expected and actual + arrays at which the comparison failed. If the arrays have different + structures or dimensions, both _values are shown. + + The MessageWriter on which to display + The expected array + The actual array + Index of the failure point in the underlying collections + The indentation level for the message line + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + ExactTypeConstraint is used to test that an object + is of the exact type provided in the constructor + + + + + Construct an ExactTypeConstraint for a given Type + + The expected Type. + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + Helper routines for working with floating point numbers + + + The floating point comparison code is based on this excellent article: + http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + + + "ULP" means Unit in the Last Place and in the context of this library refers to + the distance between two adjacent floating point numbers. IEEE floating point + numbers can only represent a finite subset of natural numbers, with greater + accuracy for smaller numbers and lower accuracy for very large numbers. + + + If a comparison is allowed "2 ulps" of deviation, that means the _values are + allowed to deviate by up to 2 adjacent floating point _values, which might be + as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. + + + + + Union of a floating point variable and an integer + + + The union's value as a floating point variable + + + The union's value as an integer + + + The union's value as an unsigned integer + + + Union of a double precision floating point variable and a long + + + The union's value as a double precision floating point variable + + + The union's value as a long + + + The union's value as an unsigned long + + + Compares two floating point _values for equality + First floating point value to be compared + Second floating point value t be compared + + Maximum number of representable floating point _values that are allowed to + be between the left and the right floating point _values + + True if both numbers are equal or close to being equal + + + Floating point _values can only represent a finite subset of natural numbers. + For example, the _values 2.00000000 and 2.00000024 can be stored in a float, + but nothing inbetween them. + + + This comparison will count how many possible floating point _values are between + the left and the right number. If the number of possible _values between both + numbers is less than or equal to maxUlps, then the numbers are considered as + being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + Compares two double precision floating point _values for equality + First double precision floating point value to be compared + Second double precision floating point value t be compared + + Maximum number of representable double precision floating point _values that are + allowed to be between the left and the right double precision floating point _values + + True if both numbers are equal or close to being equal + + + Double precision floating point _values can only represent a limited series of + natural numbers. For example, the _values 2.0000000000000000 and 2.0000000000000004 + can be stored in a double, but nothing inbetween them. + + + This comparison will count how many possible double precision floating point + _values are between the left and the right number. If the number of possible + _values between both numbers is less than or equal to maxUlps, then the numbers + are considered as being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + + Reinterprets the memory contents of a floating point value as an integer value + + + Floating point value whose memory contents to reinterpret + + + The memory contents of the floating point value interpreted as an integer + + + + + Reinterprets the memory contents of a double precision floating point + value as an integer value + + + Double precision floating point value whose memory contents to reinterpret + + + The memory contents of the double precision floating point value + interpreted as an integer + + + + + Reinterprets the memory contents of an integer as a floating point value + + Integer value whose memory contents to reinterpret + + The memory contents of the integer value interpreted as a floating point value + + + + + Reinterprets the memory contents of an integer value as a double precision + floating point value + + Integer whose memory contents to reinterpret + + The memory contents of the integer interpreted as a double precision + floating point value + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is greater than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + A ConstraintResult + + + + InstanceOfTypeConstraint is used to test that an object + is of the same type provided or derived from it. + + + + + Construct an InstanceOfTypeConstraint for the type provided + + The expected Type + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is less than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + MessageWriter is the abstract base for classes that write + constraint descriptions and messages in some form. The + class has separate methods for writing various components + of a message, allowing implementations to tailor the + presentation as needed. + + + + + Construct a MessageWriter given a culture + + + + + Abstract method to get the max line length + + + + + Method to write single line message with optional args, usually + written to precede the general failure message. + + The message to be written + Any arguments used in formatting the message + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The failing constraint result + + + + Display Expected and Actual lines for given _values. This + method may be called by constraints that need more control over + the display of actual and expected _values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given _values, including + a tolerance value on the Expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string _values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in locating the point where the strings differ + If true, the strings should be clipped to fit the line + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Returns the representation of a type as used in NUnitLite. + This is the same as Type.ToString() except for arrays, + which are displayed with their declared sizes. + + + + + + + Converts any control characters in a string + to their escaped representation. + + The string to be converted + The converted string + + + + Return the a string representation for a set of indices into an array + + Array of indices for which a string is needed + + + + Get an array of indices representing the point in a collection or + array corresponding to a single int index into the collection. + + The collection to which the indices apply + Index in the collection + Array of indices + + + + Clip a string to a given length, starting at a particular offset, returning the clipped + string with ellipses representing the removed parts + + The string to be clipped + The maximum permitted length of the result string + The point at which to start clipping + The clipped string + + + + Clip the expected and actual strings in a coordinated fashion, + so that they may be displayed together. + + + + + + + + + Shows the position two strings start to differ. Comparison + starts at the start index. + + The expected string + The actual string + The index in the strings at which comparison should start + Boolean indicating whether case should be ignored + -1 if no mismatch found, or the index where mismatch found + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + NoItemConstraint applies another constraint to each + item in a collection, failing if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + NotConstraint negates the effect of some other constraint + + + + + Initializes a new instance of the class. + + The base constraint to be negated. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + The Numerics class contains common operations on numeric _values. + + + + + Checks the type of the object, returning true if + the object is a numeric type. + + The object to check + true if the object is a numeric type + + + + Checks the type of the object, returning true if + the object is a floating point numeric type. + + The object to check + true if the object is a floating point numeric type + + + + Checks the type of the object, returning true if + the object is a fixed point numeric type. + + The object to check + true if the object is a fixed point numeric type + + + + Test two numeric _values for equality, performing the usual numeric + conversions and using a provided or default tolerance. If the tolerance + provided is Empty, this method may set it to a default tolerance. + + The expected value + The actual value + A reference to the tolerance in effect + True if the _values are equal + + + + Compare two numeric _values, performing the usual numeric conversions. + + The expected value + The actual value + The relationship of the _values to each other + + + + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + NUnitEqualityComparer encapsulates NUnit's handling of + equality tests between objects. + + + + + If true, all string comparisons will ignore case + + + + + If true, arrays will be treated as collections, allowing + those of different dimensions to be compared + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + Returns the default NUnitEqualityComparer + + + + + Gets and sets a flag indicating whether case should + be ignored in determining equality. + + + + + Gets and sets a flag indicating that arrays should be + compared as collections, without regard to their shape. + + + + + Gets the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depthy. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + Helper method to compare two arrays + + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + Represents a constraint that succeeds if all the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + Operator that tests for the presence of a particular attribute + on a type and optionally applies further tests to the attribute. + + + + + Construct an AttributeOperator for a particular Type + + The Type of attribute tested + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Abstract base class for all binary operators + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + The ConstraintOperator class is used internally by a + ConstraintBuilder to represent an operator that + modifies or combines constraints. + + Constraint operators use left and right precedence + _values to determine whether the top operator on the + stack should be reduced before pushing a new operator. + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + The syntax element preceding this operator + + + + + The syntax element following this operator + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + PrefixOperator takes a single constraint and modifies + it's action in some way. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Returns the constraint created by applying this + prefix to another constraint. + + + + + + + Operator used to test for the presence of a named Property + on an object and optionally apply further tests to the + value of that property. + + + + + Gets the name of the property to which the operator applies + + + + + Constructs a PropOperator for a particular named property + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. + + + + + Operator that tests that an exception is thrown and + optionally applies further tests to the exception. + + + + + Construct a ThrowsOperator + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a constraint + + + + + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. + + The actual value + True if either constraint succeeded + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + PropertyConstraint extracts a named property and uses + its value as the actual value for a chained constraint. + + + + + Initializes a new instance of the class. + + The name. + The constraint to apply to the property. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + PropertyExistsConstraint tests that a named property + exists on the object provided through Match. + + Originally, PropertyConstraint provided this feature + in addition to making optional tests on the value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + RegexConstraint can test whether a string matches + the pattern provided. + + + + + Initializes a new instance of the class. + + The pattern. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ResolvableConstraintExpression is used to represent a compound + constraint being constructed at a point where the last operator + may either terminate the expression or may have additional + qualifying constraints added to it. + + It is used, for example, for a Property element or for + an Exception element, either of which may be optionally + followed by constraints that apply to the property or + exception. + + + + + Create a new instance of ResolvableConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SomeItemsConstraint applies another constraint to each + item in a collection, succeeding if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + StartsWithConstraint can test whether a string starts + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. + + + + + The expected value + + + + + Indicates whether tests should be case-insensitive + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Test whether the constraint is satisfied by a given string + + The string to be tested + True for success, false for failure + + + + SubstringConstraint can test whether a string contains + the expected substring. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ThrowsConstraint is used to test the exception thrown by + a delegate by applying a constraint to it. + + + + + Initializes a new instance of the class, + using a constraint to be applied to the exception. + + A constraint to apply to the caught exception. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + Executes the code of the delegate and captures any exception. + If a non-null base constraint was provided, it applies that + constraint to the exception. + + A delegate representing the code to be tested + True if an exception is thrown and the constraint succeeds, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to an ActualValueDelegate that returns + the value to be tested. The default implementation simply evaluates + the delegate but derived classes may override it to provide for + delayed processing. + + An ActualValueDelegate + A ConstraintResult + + + + The Tolerance class generalizes the notion of a tolerance + within which an equality test succeeds. Normally, it is + used with numeric types, but it can be used with any + type that supports taking a difference between two + objects and comparing that difference to a value. + + + + + Returns a default Tolerance object, equivalent to + specifying an exact match unless + is set, in which case, the + will be used. + + + + + Returns an empty Tolerance object, equivalent to + specifying an exact match even if + is set. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + Gets the for the current Tolerance + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Gets the value of the current Tolerance instance. + + + + + Returns a new tolerance, using the current amount as a percentage. + + + + + Returns a new tolerance, using the current amount in Ulps + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Modes in which the tolerance value for a comparison can be interpreted. + + + + + The tolerance was created with a value, without specifying + how the value would be used. This is used to prevent setting + the mode more than once and is generally changed to Linear + upon execution of the test. + + + + + The tolerance is used as a numeric range within which + two compared _values are considered to be equal. + + + + + Interprets the tolerance as the percentage by which + the two compared _values my deviate from each other. + + + + + Compares two _values based in their distance in + representable numbers. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Thrown when an assertion failed. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Thrown when a test executes inconclusively. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + GlobalSettings is a place for setting default _values used + by the framework in performing asserts. + + + + + Default tolerance for floating point equality + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued propeties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter expicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicityly, otherwise false + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an oject of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Determines whether the specified , is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that tests whether the actual value falls + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + The Iz class is a synonym for Is intended for use in VB, + which regards Is as a keyword. + + + + + The List class is a helper class with properties and methods + that supply a number of constraints used with lists and collections. + + + + + List.Map returns a ListMapper, which can be used to map + the original collection to another collection. + + + + + + + ListMapper is used to transform a collection used as an actual argument + producing another collection to be used in the assertion. + + + + + Construct a ListMapper based on a collection + + The collection to be transformed + + + + Produces a collection containing all the _values of a property + + The collection of property _values + + + + + The SpecialValue enum is used to represent TestCase arguments + that cannot be used as arguments to an Attribute. + + + + + Null represents a null value, which cannot be used as an + argument to an attriute under .NET 1.x + + + + + Basic Asserts on strings. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string is not found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + + + + The TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the test case. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Sets the expected result for the test + + The expected result + A modified TestCaseData + + + + Sets the name of the test case + + The modified TestCaseData instance + + + + Sets the description for the test case + being constructed. + + The description. + The modified TestCaseData instance. + + + + Applies a category to the test + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + Get the current test context. This is created + as needed. The user may save the context for + use within a test, but it should not be used + outside the test for which it is created. + + + + + Gets a TextWriter that will send output to the current test result. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + Creates a constraint specifying an expected exception + + + + + Creates a constraint specifying an exception with a given InnerException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNUllException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Env is a static class that provides some of the features of + System.Environment that are not available under all runtimes + + + + + The newline sequence in the current environment. + + + + + Path to the 'My Documents' folder + + + + + Directory used for file output if not specified on commandline. + + + + + PackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the engine and framework. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attache a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the frameowrk TestContext. + + + + + The name of the config to use in loading a project. + If not specified, the first config found is used. + + + + + Bool indicating whether the engine should determine the private + bin path by examining the paths to all the tests. Defaults to + true unless PrivateBinPath is specified. + + + + + The ApplicationBase to use in loading the tests. If not + specified, and each assembly has its own process, then the + location of the assembly is used. For multiple assemblies + in a single process, the closest common root directory is used. + + + + + Path to the config file to use in running the tests. + + + + + Bool flag indicating whether a debugger should be launched at agent + startup. Used only for debugging NUnit itself. + + + + + Indicates how to load tests across AppDomains. Values are: + "Default", "None", "Single", "Multiple". Default is "Multiple" + if more than one assembly is loaded in a process. Otherwise, + it is "Single". + + + + + The private binpath used to locate assemblies. Directory paths + is separated by a semicolon. It's an error to specify this and + also set AutoBinPath to true. + + + + + The maximum number of test agents permitted to run simultneously. + Ignored if the ProcessModel is not set or defaulted to Multiple. + + + + + Indicates how to allocate assemblies to processes. Values are: + "Default", "Single", "Separate", "Multiple". Default is "Multiple" + for more than one assembly, "Separate" for a single assembly. + + + + + Indicates the desired runtime to use for the tests. Values + are strings like "net-4.5", "mono-4.0", etc. Default is to + use the target framework for which an assembly was built. + + + + + Bool flag indicating that the test should be run in a 32-bit process + on a 64-bit system. By default, NUNit runs in a 64-bit process on + a 64-bit system. Ignored if set on a 32-bit system. + + + + + Indicates that test runners should be disposed after the tests are executed + + + + + Bool flag indicating that the test assemblies should be shadow copied. + Defaults to false. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + + A shim of the .NET interface for platforms that do not support it. + Used to indicate that a control can be the target of a callback event on the server. + + + + + Processes a callback event that targets a control. + + + + + + Returns the results of a callback event that targets a control. + + + + + + A shim of the .NET attribute for platforms that do not support it. + + + + diff --git a/packages/repositories.config b/packages/repositories.config new file mode 100644 --- /dev/null +++ b/packages/repositories.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file

    ShJRuh(tu}uNf=o(5so73de_Y3NE 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 diff --git a/packages/NUnit.3.0.1/lib/dotnet/nunit.framework.xml b/packages/NUnit.3.0.1/lib/dotnet/nunit.framework.xml new file mode 100644 --- /dev/null +++ b/packages/NUnit.3.0.1/lib/dotnet/nunit.framework.xml @@ -0,0 +1,15264 @@ + + + + nunit.framework + + + +

  • Q@#2)G=~+l#UDICRxhV~#Q9b}XnWtWA3V-L$ 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 z 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