Author: husted Date: Wed Apr 6 17:07:01 2005 New Revision: 160347 URL: http://svn.apache.org/viewcvs?view=rev&rev=160347 Log: OVR-5 OVR-7 OVR-8 * Add Interfaces and base classes sufficient to build first failing tests. * Tests will not pass yet. Still bootstrapping.
Added: struts/sandbox/trunk/overdrive/Nexus/Core/ struts/sandbox/trunk/overdrive/Nexus/Core/AssemblyInfo.cs struts/sandbox/trunk/overdrive/Nexus/Core/Core.csproj struts/sandbox/trunk/overdrive/Nexus/Core/IController.cs struts/sandbox/trunk/overdrive/Nexus/Core/IRequestContext.cs struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs struts/sandbox/trunk/overdrive/Nexus/Nexus.sln struts/sandbox/trunk/overdrive/Nexus/Test/ struts/sandbox/trunk/overdrive/Nexus/Test/App.cs struts/sandbox/trunk/overdrive/Nexus/Test/AssemblyInfo.cs struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs struts/sandbox/trunk/overdrive/Nexus/Test/Test.csproj Modified: struts/sandbox/trunk/overdrive/Agility/Core/Core.csproj struts/sandbox/trunk/overdrive/PhoneBook/Core/Core.csproj struts/sandbox/trunk/overdrive/PhoneBook/Test/BaseTest.cs struts/sandbox/trunk/overdrive/PhoneBook/Test/Commands/SelectAllTest.cs struts/sandbox/trunk/overdrive/PhoneBook/Test/Test.csproj Modified: struts/sandbox/trunk/overdrive/Agility/Core/Core.csproj URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Agility/Core/Core.csproj?view=diff&r1=160346&r2=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Agility/Core/Core.csproj (original) +++ struts/sandbox/trunk/overdrive/Agility/Core/Core.csproj Wed Apr 6 17:07:01 2005 @@ -9,7 +9,7 @@ <Settings ApplicationIcon = "" AssemblyKeyContainerName = "" - AssemblyName = "Core" + AssemblyName = "Agility.Core" AssemblyOriginatorKeyFile = "" DefaultClientScript = "JScript" DefaultHTMLPageLayout = "Grid" @@ -18,7 +18,7 @@ OutputType = "Library" PreBuildEvent = "" PostBuildEvent = "" - RootNamespace = "Core" + RootNamespace = "Agility.Core" RunPostBuildEvent = "OnBuildSuccess" StartupObject = "" > @@ -76,7 +76,7 @@ /> <Reference Name = "System.XML" - AssemblyName = "System.XML" + AssemblyName = "System.Xml" HintPath = "..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll" /> </References> Added: struts/sandbox/trunk/overdrive/Nexus/Core/AssemblyInfo.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/AssemblyInfo.cs?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Core/AssemblyInfo.cs (added) +++ struts/sandbox/trunk/overdrive/Nexus/Core/AssemblyInfo.cs Wed Apr 6 17:07:01 2005 @@ -0,0 +1,58 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly: AssemblyTitle("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly: AssemblyVersion("1.0.*")] + +// +// In order to sign your assembly you must specify a key to use. Refer to the +// Microsoft .NET Framework documentation for more information on assembly signing. +// +// Use the attributes below to control which key is used for signing. +// +// Notes: +// (*) If no key is specified, the assembly is not signed. +// (*) KeyName refers to a key that has been installed in the Crypto Service +// Provider (CSP) on your machine. KeyFile refers to a file which contains +// a key. +// (*) If the KeyFile and the KeyName values are both specified, the +// following processing occurs: +// (1) If the KeyName can be found in the CSP, that key is used. +// (2) If the KeyName does not exist and the KeyFile does exist, the key +// in the KeyFile is installed into the CSP and used. +// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. +// When specifying the KeyFile, the location of the KeyFile should be +// relative to the project output directory which is +// %Project Directory%\obj\<configuration>. For example, if your KeyFile is +// located in the project directory, you would specify the AssemblyKeyFile +// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] +// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework +// documentation for more information on this. +// +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] +[assembly: AssemblyKeyName("")] Added: struts/sandbox/trunk/overdrive/Nexus/Core/Core.csproj URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Core.csproj?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Core/Core.csproj (added) +++ struts/sandbox/trunk/overdrive/Nexus/Core/Core.csproj Wed Apr 6 17:07:01 2005 @@ -0,0 +1,115 @@ +<VisualStudioProject> + <CSHARP + ProjectType = "Local" + ProductVersion = "7.10.3077" + SchemaVersion = "2.0" + ProjectGuid = "{7C8CAFD4-1E45-41B4-9963-F51199B12EA7}" + > + <Build> + <Settings + ApplicationIcon = "" + AssemblyKeyContainerName = "" + AssemblyName = "Nexus.Core" + AssemblyOriginatorKeyFile = "" + DefaultClientScript = "JScript" + DefaultHTMLPageLayout = "Grid" + DefaultTargetSchema = "IE50" + DelaySign = "false" + OutputType = "Library" + PreBuildEvent = "" + PostBuildEvent = "" + RootNamespace = "Nexus.Core" + RunPostBuildEvent = "OnBuildSuccess" + StartupObject = "" + > + <Config + Name = "Debug" + AllowUnsafeBlocks = "false" + BaseAddress = "285212672" + CheckForOverflowUnderflow = "false" + ConfigurationOverrideFile = "" + DefineConstants = "DEBUG;TRACE" + DocumentationFile = "" + DebugSymbols = "true" + FileAlignment = "4096" + IncrementalBuild = "false" + NoStdLib = "false" + NoWarn = "" + Optimize = "false" + OutputPath = "bin\Debug\" + RegisterForComInterop = "false" + RemoveIntegerChecks = "false" + TreatWarningsAsErrors = "false" + WarningLevel = "4" + /> + <Config + Name = "Release" + AllowUnsafeBlocks = "false" + BaseAddress = "285212672" + CheckForOverflowUnderflow = "false" + ConfigurationOverrideFile = "" + DefineConstants = "TRACE" + DocumentationFile = "" + DebugSymbols = "false" + FileAlignment = "4096" + IncrementalBuild = "false" + NoStdLib = "false" + NoWarn = "" + Optimize = "true" + OutputPath = "bin\Release\" + RegisterForComInterop = "false" + RemoveIntegerChecks = "false" + TreatWarningsAsErrors = "false" + WarningLevel = "4" + /> + </Settings> + <References> + <Reference + Name = "System" + AssemblyName = "System" + HintPath = "..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll" + /> + <Reference + Name = "System.Data" + AssemblyName = "System.Data" + HintPath = "..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll" + /> + <Reference + Name = "System.XML" + AssemblyName = "System.Xml" + HintPath = "..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll" + /> + <Reference + Name = "Agility.Core" + AssemblyName = "Agility.Core" + HintPath = "..\..\Agility\Core\bin\Debug\Agility.Core.dll" + /> + </References> + </Build> + <Files> + <Include> + <File + RelPath = "AssemblyInfo.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "IController.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "IRequestContext.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "RequestContext.cs" + SubType = "Code" + BuildAction = "Compile" + /> + </Include> + </Files> + </CSHARP> +</VisualStudioProject> + Added: struts/sandbox/trunk/overdrive/Nexus/Core/IController.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/IController.cs?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Core/IController.cs (added) +++ struts/sandbox/trunk/overdrive/Nexus/Core/IController.cs Wed Apr 6 17:07:01 2005 @@ -0,0 +1,17 @@ +namespace Nexus.Core +{ + /// <summary> + /// The IController interacts with the caller, + /// controlling and managing the processing of a request. + /// </summary> + public interface IController + { + /// <summary> + /// Obtain and execute the IRequestContext. + /// </summary> + /// <param name="command">Our command name</param> + /// <returns>Context after execution</returns> + /// + IRequestContext ExecuteContext (string command); + } +} Added: struts/sandbox/trunk/overdrive/Nexus/Core/IRequestContext.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/IRequestContext.cs?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Core/IRequestContext.cs (added) +++ struts/sandbox/trunk/overdrive/Nexus/Core/IRequestContext.cs Wed Apr 6 17:07:01 2005 @@ -0,0 +1,115 @@ +using System; +using Agility.Core; + +namespace Nexus.Core +{ + /// <summary> + /// Exchange data between business and presentation layers per [OVR-7]. + /// </summary> + /// <remarks> + /// <p> + /// An IRequestContext can predefine whatever properties we need for storing input, + /// output, messages, and other common attributes, including Locale (or Culture) + /// and user credentials. + /// </p> + /// </remarks> + public interface IRequestContext : IContext + { + + /// <summary> + /// Return true if this context contains all of the given keys,. + /// </summary> + /// <returns>True if this context contains all of the given keys.</returns> + bool ContainsKeys (string[] keys); + + /// <summary> + /// Return true if an Outcome object is present. + /// </summary> + /// <returns>True if an Outcome context is present.</returns> + bool HasOutcome { get; } + + /// <summary> + /// Return a IList stored under the Command ID, if any. + /// </summary> + /// <remarks> + /// <p> + /// Some Commands returns List of values. + /// So that Commands can work together as part of a Chain, + /// list-based Commands are expected to store the + /// list under their own Command ID. + /// Outcome is a convenient method to access the + /// initial or "outermost" Command or Chain ID. + /// </p> + /// <p> + /// To allow use as subcommands in a Chain, + /// INexusCommand implementations should prefer the idiom + /// <code>Context[ID] = object</code> + /// to using the Outcome directly. + /// Since they might not be the initial Command, + /// but rather a subcommand, or link, in a Chain. + /// </p> + /// <p> + /// Outcome is more convenient to presentation layer clients, + /// who are looking for the top-level output, + /// rather than output of a particular subcommand. + /// </p> + /// <p> + /// As mentioned, both Outcome and the context[ID] idiom + /// can be used by Command that return lists of values. + /// Commands that return a single set of fields + /// can store the result directly in the main Context. + /// This strategy allows one Command to obtain field values + /// to be used by another Command + /// (like piping output between Unix shell commands.) + /// </p> + /// <p> + /// Note that "Outcome" is an "alias" to an entry in + /// this context. + /// Unlike FieldState, Outcome is not a subcontext + /// in its own right. + /// </p> + /// </remarks> + object Outcome { get; set; } + + /// <summary> + /// A list of error messages, keyed by the field causing the error, or to a magic global key. + /// </summary> + /// <remark> + /// TODO: Refactor as NameValueCollection ? + /// </remark> + IContext Errors { get; set; } + + /// <summary> + /// Add an error message under the "global" key. + /// </summary> + /// <param name="template">Message template.</param> + void AddError (string template); + + /// <summary> + /// Indicate whether errors exist. + /// </summary> + /// <returns>True if there are errors. False otherwise.</returns> + bool HasErrors { get; } + + /// <summary> + /// An Exception, if thrown. + /// </summary> + /// <remark> + /// A IViewContext is readonly, + /// but another interface (e.g. IHelperContext) may extend to add a setter, if needed. + /// </remark> + Exception Fault { get; set; } + + /// <summary> + /// Indicate whether an Exception was caught. + /// </summary> + /// <returns>True if an Exception was caught.</returns> + bool HasFault { get; } + + /// <summary> + /// Indicate whether context is free of faults and errors. + /// </summary> + /// <returns>True if there are no faults or errors.</returns> + bool IsNominal { get; } + } +} Added: struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs (added) +++ struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs Wed Apr 6 17:07:01 2005 @@ -0,0 +1,99 @@ +using System; +using Agility.Core; + +namespace Nexus.Core +{ + /// <summary> + /// Summary description for RequestContext. + /// </summary> + public class RequestContext : Context, IRequestContext + { + + public bool ContainsKeys(string[] keys) + { + // TODO: Add RequestContext.ContainsKeys implementation + return false; + } + + public bool HasOutcome + { + get + { + // TODO: Add RequestContext.HasOutcome getter implementation + return false; + } + } + + public object Outcome + { + get + { + // TODO: Add RequestContext.Outcome getter implementation + return null; + } + set + { + // TODO: Add RequestContext.Outcome setter implementation + } + } + + public Agility.Core.IContext Errors + { + get + { + // TODO: Add RequestContext.Errors getter implementation + return null; + } + set + { + // TODO: Add RequestContext.Errors setter implementation + } + } + + public void AddError(string template) + { + // TODO: Add RequestContext.AddError implementation + } + + public bool HasErrors + { + get + { + // TODO: Add RequestContext.HasErrors getter implementation + return false; + } + } + + public Exception Fault + { + get + { + // TODO: Add RequestContext.Fault getter implementation + return null; + } + set + { + // TODO: Add RequestContext.Fault setter implementation + } + } + + public bool HasFault + { + get + { + // TODO: Add RequestContext.HasFault getter implementation + return false; + } + } + + public bool IsNominal + { + get + { + // TODO: Add RequestContext.IsNominal getter implementation + return false; + } + } + + } +} Added: struts/sandbox/trunk/overdrive/Nexus/Nexus.sln URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Nexus.sln?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Nexus.sln (added) +++ struts/sandbox/trunk/overdrive/Nexus/Nexus.sln Wed Apr 6 17:07:01 2005 @@ -0,0 +1,30 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "Core\Core.csproj", "{7C8CAFD4-1E45-41B4-9963-F51199B12EA7}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test", "Test\Test.csproj", "{C533FFAA-CB2B-40CD-B3C2-77394E4D9222}" + ProjectSection(ProjectDependencies) = postProject + {7C8CAFD4-1E45-41B4-9963-F51199B12EA7} = {7C8CAFD4-1E45-41B4-9963-F51199B12EA7} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {7C8CAFD4-1E45-41B4-9963-F51199B12EA7}.Debug.ActiveCfg = Debug|.NET + {7C8CAFD4-1E45-41B4-9963-F51199B12EA7}.Debug.Build.0 = Debug|.NET + {7C8CAFD4-1E45-41B4-9963-F51199B12EA7}.Release.ActiveCfg = Release|.NET + {7C8CAFD4-1E45-41B4-9963-F51199B12EA7}.Release.Build.0 = Release|.NET + {C533FFAA-CB2B-40CD-B3C2-77394E4D9222}.Debug.ActiveCfg = Debug|.NET + {C533FFAA-CB2B-40CD-B3C2-77394E4D9222}.Debug.Build.0 = Debug|.NET + {C533FFAA-CB2B-40CD-B3C2-77394E4D9222}.Release.ActiveCfg = Release|.NET + {C533FFAA-CB2B-40CD-B3C2-77394E4D9222}.Release.Build.0 = Release|.NET + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal Added: struts/sandbox/trunk/overdrive/Nexus/Test/App.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/App.cs?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Test/App.cs (added) +++ struts/sandbox/trunk/overdrive/Nexus/Test/App.cs Wed Apr 6 17:07:01 2005 @@ -0,0 +1,19 @@ +namespace Nexus.Core +{ + /// <summary> + /// Tokens representing context keys. + /// </summary> + public class App + { + private App() + { + // No need to construct static helper class + } + + /// <summary> + /// Token for first_name property. + /// </summary> + public const string LIST_ALL = "list_all"; + + } +} Added: struts/sandbox/trunk/overdrive/Nexus/Test/AssemblyInfo.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/AssemblyInfo.cs?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Test/AssemblyInfo.cs (added) +++ struts/sandbox/trunk/overdrive/Nexus/Test/AssemblyInfo.cs Wed Apr 6 17:07:01 2005 @@ -0,0 +1,58 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly: AssemblyTitle("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly: AssemblyVersion("1.0.*")] + +// +// In order to sign your assembly you must specify a key to use. Refer to the +// Microsoft .NET Framework documentation for more information on assembly signing. +// +// Use the attributes below to control which key is used for signing. +// +// Notes: +// (*) If no key is specified, the assembly is not signed. +// (*) KeyName refers to a key that has been installed in the Crypto Service +// Provider (CSP) on your machine. KeyFile refers to a file which contains +// a key. +// (*) If the KeyFile and the KeyName values are both specified, the +// following processing occurs: +// (1) If the KeyName can be found in the CSP, that key is used. +// (2) If the KeyName does not exist and the KeyFile does exist, the key +// in the KeyFile is installed into the CSP and used. +// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. +// When specifying the KeyFile, the location of the KeyFile should be +// relative to the project output directory which is +// %Project Directory%\obj\<configuration>. For example, if your KeyFile is +// located in the project directory, you would specify the AssemblyKeyFile +// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] +// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework +// documentation for more information on this. +// +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] +[assembly: AssemblyKeyName("")] Added: struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs (added) +++ struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs Wed Apr 6 17:07:01 2005 @@ -0,0 +1,22 @@ +using NUnit.Framework; + +namespace Nexus.Core +{ + /// <summary> + /// Summary description for BaseNexusTest. + /// </summary> + [TestFixture] + public class BaseNexusTest + { + + protected IController controller; + + [SetUp] + public virtual void SetUp () + { + // TODO: Implement Objects.Facotory [OVR-8] + // IApplicationContext factory = Objects.Factory (); + // controller = new Controller (factory); + } + } +} Added: struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs (added) +++ struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs Wed Apr 6 17:07:01 2005 @@ -0,0 +1,23 @@ +using NUnit.Framework; + +namespace Nexus.Core +{ + /// <summary> + /// Exercise IController per [OVR-8]. + /// </summary> + [TestFixture] + public class ControllerTest : BaseNexusTest + { + + /// <summary> + /// A simple "list all" command should return nominal with an outcome. + /// </summary> + [Test] + public void ExecuteContext() + { + IRequestContext context = controller.ExecuteContext(App.LIST_ALL); + Assert.IsTrue (context.IsNominal,"Expected nominal result."); + Assert.IsTrue(context.HasOutcome,"Expected outcome from command."); + } + } +} Added: struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs (added) +++ struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs Wed Apr 6 17:07:01 2005 @@ -0,0 +1,89 @@ +using System; +using System.Collections; +using NUnit.Framework; + +namespace Nexus.Core +{ + /// <summary> + /// Exercise IRequestContext per [OVR-7]. + /// </summary> + [TestFixture] + public class RequestContextTest + { + + IRequestContext context; + Exception fault; + IList list; + string[] KEYS = {"KEY1","KEY2"}; + + /// <summary> + /// Initialize private fields. + /// </summary> + [SetUp] + public void SetUp() + { + context = new RequestContext(); + Assert.IsTrue (context.IsNominal,"Expected nominal state for a new IRequestContext."); + Assert.IsFalse(context.HasOutcome,"Expected no Outcome for a new IRequestContext."); + Assert.IsFalse(context.ContainsKeys(KEYS),"Expected no custom keys for a new IRequestContext."); + + fault = new ApplicationException("RequestContextTest"); + list = new ArrayList(); + list.Add("data"); + } + + /// <summary> + /// A IRequestContext is not nominal if an error is added. + /// </summary> + [Test] + public void IsNominal_Error() + { + context.AddError("Business logic error"); + Assert.IsFalse(context.IsNominal,"Expected non-nominal state after adding error message."); + } + + /// <summary> + /// A IRequestContext is not nominal is an Exception is set. + /// </summary> + [Test] + public void IsNominal_Fault() + { + context.Fault = fault; + Assert.IsFalse(context.IsNominal,"Expected non-nominal state after setting Exception."); + } + + /// <summary> + /// A IRequestContext is not nominal if multiple errors are added and an Exception is set. + /// </summary> + [Test] + public void IsNominal_Errors_and_Fault() + { + context.AddError("Business logic error"); + context.AddError("Business logic error 2"); + context.Fault = fault; + Assert.IsFalse(context.IsNominal,"Expected non-nominal state after adding errors and Exception."); + } + + /// <summary> + /// If data is set to the Outcome property, HasOutcome is true. + /// </summary> + [Test] + public void HasOutcome() + { + context.Outcome = list; + Assert.IsTrue (context.HasOutcome); + } + + /// <summary> + /// If the context contains keys specified in an array, ContextKeys returns true. + /// </summary> + public void ContainsKeys() + { + foreach (string key in KEYS) + { + context[key] = key; + } + Assert.IsTrue (context.ContainsKeys (KEYS),"Expected to find keys added to context."); + } + } +} Added: struts/sandbox/trunk/overdrive/Nexus/Test/Test.csproj URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/Test.csproj?view=auto&rev=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Test/Test.csproj (added) +++ struts/sandbox/trunk/overdrive/Nexus/Test/Test.csproj Wed Apr 6 17:07:01 2005 @@ -0,0 +1,131 @@ +<VisualStudioProject> + <CSHARP + ProjectType = "Local" + ProductVersion = "7.10.3077" + SchemaVersion = "2.0" + ProjectGuid = "{C533FFAA-CB2B-40CD-B3C2-77394E4D9222}" + > + <Build> + <Settings + ApplicationIcon = "" + AssemblyKeyContainerName = "" + AssemblyName = "Nexus.Test" + AssemblyOriginatorKeyFile = "" + DefaultClientScript = "JScript" + DefaultHTMLPageLayout = "Grid" + DefaultTargetSchema = "IE50" + DelaySign = "false" + OutputType = "Library" + PreBuildEvent = "" + PostBuildEvent = "" + RootNamespace = "Nexus.Core" + RunPostBuildEvent = "OnBuildSuccess" + StartupObject = "" + > + <Config + Name = "Debug" + AllowUnsafeBlocks = "false" + BaseAddress = "285212672" + CheckForOverflowUnderflow = "false" + ConfigurationOverrideFile = "" + DefineConstants = "DEBUG;TRACE" + DocumentationFile = "" + DebugSymbols = "true" + FileAlignment = "4096" + IncrementalBuild = "false" + NoStdLib = "false" + NoWarn = "" + Optimize = "false" + OutputPath = "bin\Debug\" + RegisterForComInterop = "false" + RemoveIntegerChecks = "false" + TreatWarningsAsErrors = "false" + WarningLevel = "4" + /> + <Config + Name = "Release" + AllowUnsafeBlocks = "false" + BaseAddress = "285212672" + CheckForOverflowUnderflow = "false" + ConfigurationOverrideFile = "" + DefineConstants = "TRACE" + DocumentationFile = "" + DebugSymbols = "false" + FileAlignment = "4096" + IncrementalBuild = "false" + NoStdLib = "false" + NoWarn = "" + Optimize = "true" + OutputPath = "bin\Release\" + RegisterForComInterop = "false" + RemoveIntegerChecks = "false" + TreatWarningsAsErrors = "false" + WarningLevel = "4" + /> + </Settings> + <References> + <Reference + Name = "System" + AssemblyName = "System" + HintPath = "..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll" + /> + <Reference + Name = "System.Data" + AssemblyName = "System.Data" + HintPath = "..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll" + /> + <Reference + Name = "System.XML" + AssemblyName = "System.Xml" + HintPath = "..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll" + /> + <Reference + Name = "nunit.framework" + AssemblyName = "nunit.framework" + HintPath = "..\..\..\..\..\..\..\Program Files\NUnit 2.2\bin\nunit.framework.dll" + AssemblyFolderKey = "hklm\dn\nunit.framework" + /> + <Reference + Name = "Nexus.Core" + AssemblyName = "Nexus.Core" + HintPath = "..\Core\bin\Debug\Nexus.Core.dll" + /> + <Reference + Name = "Agility.Core" + AssemblyName = "Agility.Core" + HintPath = "..\..\Agility\Core\bin\Debug\Agility.Core.dll" + /> + </References> + </Build> + <Files> + <Include> + <File + RelPath = "App.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "AssemblyInfo.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "BaseNexusTest.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "ControllerTest.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "RequestContextTest.cs" + SubType = "Code" + BuildAction = "Compile" + /> + </Include> + </Files> + </CSHARP> +</VisualStudioProject> + Modified: struts/sandbox/trunk/overdrive/PhoneBook/Core/Core.csproj URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Core/Core.csproj?view=diff&r1=160346&r2=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Core/Core.csproj (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Core/Core.csproj Wed Apr 6 17:07:01 2005 @@ -84,6 +84,11 @@ <Files> <Include> <File + RelPath = "App.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File RelPath = "AssemblyInfo.cs" SubType = "Code" BuildAction = "Compile" Modified: struts/sandbox/trunk/overdrive/PhoneBook/Test/BaseTest.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Test/BaseTest.cs?view=diff&r1=160346&r2=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Test/BaseTest.cs (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Test/BaseTest.cs Wed Apr 6 17:07:01 2005 @@ -15,6 +15,7 @@ */ using System; using System.Collections; +using Nexus.Core; using NUnit.Framework; namespace PhoneBook.Core @@ -23,7 +24,7 @@ /// Base class for unit tests. /// </summary> [TestFixture] - public class BaseTest + public class BaseTest : BaseNexusTest { /// <summary> /// Dummy test to exercise infrastructure. Modified: struts/sandbox/trunk/overdrive/PhoneBook/Test/Commands/SelectAllTest.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Test/Commands/SelectAllTest.cs?view=diff&r1=160346&r2=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Test/Commands/SelectAllTest.cs (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Test/Commands/SelectAllTest.cs Wed Apr 6 17:07:01 2005 @@ -13,16 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +using System.Collections; +using Nexus.Core; using NUnit.Framework; namespace PhoneBook.Core.Commands { /// <summary> - /// Exercise SelectAll Command. + /// Exercise SelectAll Command per [OVR-5]. /// </summary> [TestFixture] public class SelectAllTest : BaseTest { + /// <summary> /// SelectAll and succeed. /// </summary> @@ -33,16 +36,20 @@ public void SelectAll_Pass () { // TODO: Write code to pass text [OVR-5] - /* - IRequestContext context = Controller.ExecuteContext (App.SELECT_ALL); - AssertNominal (context); - AssertOutcome (context.HasOutcome); + IRequestContext context = controller.ExecuteContext (App.SELECT_ALL); + Assert.IsTrue (context.IsNominal,"Expected command to pass."); + Assert.IsTrue (context.HasOutcome,"Expected command to set an Outcome."); IList list = context.Outcome as IList; - AssertListNotEmpty(list); + bool notEmpty = ((list!=null) && (list.Count>0)); + Assert.IsTrue (notEmpty,"Expected outcome to be a not-empty list"); IDictionary row = list[0] as IDictionary; - string[] fields = {App.FIRST_NAME, App.LAST_NAME, App.USER_NAME, App.EXTENSION, App.HIRED, App.HOURS, App.EDITOR}; - AssertFields (context,fields); - */ + string[] KEYS = {App.FIRST_NAME, App.LAST_NAME, App.USER_NAME, App.EXTENSION, App.HIRED, App.HOURS, App.EDITOR}; + bool valid = true; + foreach (string key in KEYS) + { + valid = valid && row.Contains (key); + } + Assert.IsTrue (valid,"Expected row to contain all keys."); } } } Modified: struts/sandbox/trunk/overdrive/PhoneBook/Test/Test.csproj URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Test/Test.csproj?view=diff&r1=160346&r2=160347 ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Test/Test.csproj (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Test/Test.csproj Wed Apr 6 17:07:01 2005 @@ -90,6 +90,16 @@ Project = "{3150F3E8-9A04-4FED-B16F-CEA57756E934}" Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" /> + <Reference + Name = "Nexus.Core" + AssemblyName = "Nexus.Core" + HintPath = "..\..\Nexus\Core\bin\Debug\Nexus.Core.dll" + /> + <Reference + Name = "Nexus.Test" + AssemblyName = "Nexus.Test" + HintPath = "..\..\Nexus\Test\bin\Debug\Nexus.Test.dll" + /> </References> </Build> <Files> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]