Author: husted Date: Thu Apr 7 17:00:28 2005 New Revision: 160496 URL: http://svn.apache.org/viewcvs?view=rev&rev=160496 Log: OVR-7 OVR-8 * Greenbar initial Controller and RequestContext tests.
Added: struts/sandbox/trunk/overdrive/Nexus/Extras/AssemblyInfo.cs Modified: struts/sandbox/trunk/overdrive/Nexus/Core/RequestCommand.cs struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.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/Resources/Command/Catalog.xml Modified: struts/sandbox/trunk/overdrive/Nexus/Core/RequestCommand.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/RequestCommand.cs?view=diff&r1=160495&r2=160496 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Core/RequestCommand.cs (original) +++ struts/sandbox/trunk/overdrive/Nexus/Core/RequestCommand.cs Thu Apr 7 17:00:28 2005 @@ -3,9 +3,9 @@ namespace Nexus.Core { /// <summary> - /// Concrete IRequestCommand implementation. + /// Abstract IRequestCommand; subclass must implement RequestExecute. /// </summary> - public class RequestCommand : IRequestCommand + public abstract class RequestCommand : IRequestCommand { /// <summary> @@ -31,16 +31,12 @@ return new RequestContext (ID); } - public virtual bool RequestExecute(IRequestContext context) - { - // TODO: Add RequestCommand.NexusExecute implementation - return STOP; - } + public abstract bool RequestExecute(IRequestContext context); - public virtual bool Execute (IContext context) + public virtual bool Execute (IContext _context) { - IRequestContext nexus = context as IRequestContext; - return RequestExecute (nexus); + IRequestContext context = _context as IRequestContext; + return RequestExecute (context); } } } Modified: struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs?view=diff&r1=160495&r2=160496 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs (original) +++ struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs Thu Apr 7 17:00:28 2005 @@ -1,4 +1,5 @@ using System; +using System.Collections; using Agility.Core; namespace Nexus.Core @@ -42,79 +43,79 @@ { get { - // TODO: Add RequestContext.HasOutcome getter implementation - return false; + return Contains (Command); } } public object Outcome { - get - { - // TODO: Add RequestContext.Outcome getter implementation - return null; - } - set - { - // TODO: Add RequestContext.Outcome setter implementation - } + get { return this [Command]; } + set { this [Command] = value; } } public Agility.Core.IContext Errors { - get + get { return this [Tokens.ERRORS] as IContext; } + set { this [Tokens.ERRORS] = value; } + } + + /// <summary> + /// Convenience method to lazily instantiate a message store. + /// </summary> + /// <param name="template">Message template to add to the queue.</param> + /// <param name="queue">Token for queue of messages within the store.</param> + /// <param name="key">Token for message store.</param> + private void AddStore (string template, string queue, string key) + { + IContext store = this [key] as IContext; + if (null == store) { - // TODO: Add RequestContext.Errors getter implementation - return null; + store = new Context (); // FIXME: Spring? + this [key] = store; } - set + IList list; + if (store.Contains (queue)) + list = store [queue] as IList; + else { - // TODO: Add RequestContext.Errors setter implementation + list = new ArrayList (); // FIXME: Spring? + store [queue] = list; } + list.Add (template); } - public void AddError(string template) + public void AddError (string template) { - // TODO: Add RequestContext.AddError implementation + AddStore (template, Tokens.GENERIC_MESSAGE, Tokens.ERRORS); } + public bool HasErrors { - get - { - // TODO: Add RequestContext.HasErrors getter implementation - return false; - } + get{return this.ContainsKey (Tokens.ERRORS);} } public Exception Fault { - get - { - // TODO: Add RequestContext.Fault getter implementation - return null; - } + get { return this [Tokens.FAULT] as Exception; } set { - // TODO: Add RequestContext.Fault setter implementation + Exception e = value as Exception; + this [Tokens.FAULT] = e; + AddError (e.Message); } } public bool HasFault { - get - { - // TODO: Add RequestContext.HasFault getter implementation - return false; - } + get{return this.ContainsKey (Tokens.FAULT);} } public bool IsNominal { get { - // TODO: Add RequestContext.IsNominal getter implementation - return false; + return (!HasErrors && !HasFault); } } Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs?view=diff&r1=160495&r2=160496 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs (original) +++ struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs Thu Apr 7 17:00:28 2005 @@ -20,5 +20,21 @@ /// </summary> public const string COMMAND_BIN = "__COMMAND_BIN"; + /// <summary> + /// Token for Errors property. + /// </summary> + public const string ERRORS = "__ERRORS"; + + /// <summary> + /// Token for a generic message. + /// </summary> + public const string GENERIC_MESSAGE = "__GENERIC_MESSAGE"; + + /// <summary> + /// Token for Fault property. + /// </summary> + public const string FAULT = "__FAULT"; + + } } Added: struts/sandbox/trunk/overdrive/Nexus/Extras/AssemblyInfo.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Extras/AssemblyInfo.cs?view=auto&rev=160496 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Extras/AssemblyInfo.cs (added) +++ struts/sandbox/trunk/overdrive/Nexus/Extras/AssemblyInfo.cs Thu Apr 7 17:00:28 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("")] Modified: struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs?view=diff&r1=160495&r2=160496 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs (original) +++ struts/sandbox/trunk/overdrive/Nexus/Test/BaseNexusTest.cs Thu Apr 7 17:00:28 2005 @@ -1,3 +1,6 @@ +using System.Collections; +using System.Text; +using Agility.Core; using Agility.Extras.Spring; using NUnit.Framework; using Spring.Context; @@ -18,6 +21,40 @@ // TODO: Implement Objects.Factory [OVR-8] IApplicationContext factory = Objects.Factory (); controller = new Controller (factory); + } + + public void AssertNoFault (IRequestContext context) + { + bool hasFault = context.HasFault; + if (hasFault) + Assert.Fail (context.Fault.Message); + } + + public void AssertNominal (IRequestContext context) + { + AssertNoFault (context); + bool hasErrors = context.HasErrors; + if (hasErrors) + { + StringBuilder outer = new StringBuilder (); + IContext store = context.Errors; + ICollection keys = store.Keys; + foreach (string key in keys) + { + StringBuilder inner = new StringBuilder (); + inner.Append (key); + inner.Append (": "); + IList messages = store [key] as IList; + foreach (string message in messages) + { + inner.Append (message); + inner.Append (";"); + } + outer.Append (inner.ToString ()); + outer.Append ("/n"); + } + Assert.Fail (outer.ToString ()); + } } } } Modified: struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs?view=diff&r1=160495&r2=160496 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs (original) +++ struts/sandbox/trunk/overdrive/Nexus/Test/ControllerTest.cs Thu Apr 7 17:00:28 2005 @@ -16,6 +16,7 @@ public void ExecuteContext() { IRequestContext context = controller.ExecuteContext(App.LIST_ALL); + AssertNominal(context); Assert.IsTrue (context.IsNominal,"Expected nominal result."); Assert.IsTrue(context.HasOutcome,"Expected outcome from command."); } Modified: struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs?view=diff&r1=160495&r2=160496 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs (original) +++ struts/sandbox/trunk/overdrive/Nexus/Test/RequestContextTest.cs Thu Apr 7 17:00:28 2005 @@ -1,5 +1,6 @@ using System; using System.Collections; +using Nexus.Core.Commands; using NUnit.Framework; namespace Nexus.Core @@ -22,6 +23,8 @@ public void SetUp() { context = new RequestContext(); + context.Command = "list_all"; + context.CommandBin = new ListAll(); Assert.IsTrue (context.IsNominal,"Expected nominal state for a new IRequestContext."); Assert.IsFalse(context.HasOutcome,"Expected no Outcome for a new IRequestContext."); Modified: struts/sandbox/trunk/overdrive/Nexus/Test/Resources/Command/Catalog.xml URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Test/Resources/Command/Catalog.xml?view=diff&r1=160495&r2=160496 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Test/Resources/Command/Catalog.xml (original) +++ struts/sandbox/trunk/overdrive/Nexus/Test/Resources/Command/Catalog.xml Thu Apr 7 17:00:28 2005 @@ -3,6 +3,8 @@ "http://www.springframework.net/dtd/spring-objects.dtd"> <objects> - <object id="list_all" type="Nexus.Core.Commands.ListAll"></object> + <object id="list_all" type="Nexus.Core.Commands.ListAll"> + <property name="ID"><value>list_all</value></property> + </object> </objects> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]