From 95aedf66a0582772a9982e136765aa6c29e073ec Mon Sep 17 00:00:00 2001 From: Chris Toshok Date: Wed, 14 Sep 2005 05:13:54 +0000 Subject: [PATCH] 2005-09-14 Chris Toshok * Microsoft.Web/ScriptComponentBase.cs (InitializeTypeDescriptor): implement. * Microsoft.Web/ScriptType.cs: fix enum. * Microsoft.Web/Action.cs: round out implementation. * Test/Microsoft.Web/ActionTest.cs: more tests. svn path=/trunk/mcs/; revision=50016 --- mcs/class/Microsoft.Web.Atlas/ChangeLog | 11 +++ .../Microsoft.Web/Action.cs | 10 +- .../Microsoft.Web/ScriptComponentBase.cs | 8 +- .../Microsoft.Web/ScriptType.cs | 8 +- .../Test/Microsoft.Web/ActionTest.cs | 96 ++++++++++++++++++- 5 files changed, 122 insertions(+), 11 deletions(-) diff --git a/mcs/class/Microsoft.Web.Atlas/ChangeLog b/mcs/class/Microsoft.Web.Atlas/ChangeLog index b30f7efa799..45784069c00 100644 --- a/mcs/class/Microsoft.Web.Atlas/ChangeLog +++ b/mcs/class/Microsoft.Web.Atlas/ChangeLog @@ -1,3 +1,14 @@ +2005-09-14 Chris Toshok + + * Microsoft.Web/ScriptComponentBase.cs (InitializeTypeDescriptor): + implement. + + * Microsoft.Web/ScriptType.cs: fix enum. + + * Microsoft.Web/Action.cs: round out implementation. + + * Test/Microsoft.Web/ActionTest.cs: more tests. + 2005-09-14 Chris Toshok * Microsoft.Web/ScriptMemberDescriptor.cs: new implementation. diff --git a/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/Action.cs b/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/Action.cs index 20c3ff5ad4c..3af78afcdf1 100644 --- a/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/Action.cs +++ b/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/Action.cs @@ -39,12 +39,13 @@ namespace Microsoft.Web { } + ActionSequence sequence = ActionSequence.AfterEventHandler; public ActionSequence Sequence { get { - throw new NotImplementedException (); + return sequence; } set { - throw new NotImplementedException (); + sequence = value; } } @@ -68,7 +69,10 @@ namespace Microsoft.Web protected override void InitializeTypeDescriptor (ScriptTypeDescriptor typeDescriptor) { - throw new NotImplementedException (); + base.InitializeTypeDescriptor (typeDescriptor); + + typeDescriptor.AddProperty (new ScriptPropertyDescriptor ("sequence", ScriptType.Enum, "Sequence")); + typeDescriptor.AddProperty (new ScriptPropertyDescriptor ("target", ScriptType.Object, "Target")); } public void RenderAction (ScriptTextWriter writer) diff --git a/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/ScriptComponentBase.cs b/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/ScriptComponentBase.cs index 5b15fa7bc5a..99adbeb739d 100644 --- a/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/ScriptComponentBase.cs +++ b/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/ScriptComponentBase.cs @@ -89,7 +89,13 @@ namespace Microsoft.Web protected virtual void InitializeTypeDescriptor (ScriptTypeDescriptor typeDescriptor) { - throw new NotImplementedException (); + typeDescriptor.AddEvent (new ScriptEventDescriptor ("propertyChanged", true)); + typeDescriptor.AddProperty (new ScriptPropertyDescriptor ("bindings", ScriptType.Array, true, "Bindings")); + typeDescriptor.AddProperty (new ScriptPropertyDescriptor ("dataContext", ScriptType.Object)); + typeDescriptor.AddProperty (new ScriptPropertyDescriptor ("id", ScriptType.String, "ID")); + typeDescriptor.AddProperty (new ScriptPropertyDescriptor ("eventArgs", ScriptType.Object)); + typeDescriptor.AddProperty (new ScriptPropertyDescriptor ("result", ScriptType.Object)); + typeDescriptor.AddProperty (new ScriptPropertyDescriptor ("sender", ScriptType.Object)); } public void RenderScript (ScriptTextWriter writer) diff --git a/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/ScriptType.cs b/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/ScriptType.cs index b9c6b545497..0eb55a27c8f 100644 --- a/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/ScriptType.cs +++ b/mcs/class/Microsoft.Web.Atlas/Microsoft.Web/ScriptType.cs @@ -32,13 +32,13 @@ namespace Microsoft.Web { public enum ScriptType { + Object, + Number, + String, + Date, Array, Boolean, - Date, Enum, - Number, - Object, - String } } diff --git a/mcs/class/Microsoft.Web.Atlas/Test/Microsoft.Web/ActionTest.cs b/mcs/class/Microsoft.Web.Atlas/Test/Microsoft.Web/ActionTest.cs index 6adfd819b2f..3f34c0dd7fd 100644 --- a/mcs/class/Microsoft.Web.Atlas/Test/Microsoft.Web/ActionTest.cs +++ b/mcs/class/Microsoft.Web.Atlas/Test/Microsoft.Web/ActionTest.cs @@ -28,10 +28,12 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // +#if NET_2_0 + using NUnit.Framework; using System; +using System.Collections.Generic; using System.IO; -using System.Globalization; using Microsoft.Web; namespace MonoTests.Microsoft.Web @@ -110,6 +112,11 @@ namespace MonoTests.Microsoft.Web return "poker"; } } + + public void InitTypeDescriptor (ScriptTypeDescriptor typeDescriptor) + { + base.InitializeTypeDescriptor (typeDescriptor); + } } [Test] @@ -119,14 +126,18 @@ namespace MonoTests.Microsoft.Web // default Assert.AreEqual ("", a.Target, "A1"); + Assert.AreEqual (ActionSequence.AfterEventHandler, a.Sequence, "A2"); // getter/setter a.Target = "foo"; - Assert.AreEqual ("foo", a.Target, "A2"); + Assert.AreEqual ("foo", a.Target, "A3"); + + a.Sequence = ActionSequence.BeforeEventHandler; + Assert.AreEqual (ActionSequence.BeforeEventHandler, a.Sequence, "A4"); // setting to null a.Target = null; - Assert.AreEqual ("", a.Target, "A3"); + Assert.AreEqual ("", a.Target, "A5"); } [Test] @@ -165,5 +176,84 @@ namespace MonoTests.Microsoft.Web Assert.AreEqual ("", sw.ToString(), "A3"); } + + void DoEvent (ScriptEventDescriptor e, string eventName, bool supportsActions) + { + Assert.AreEqual (eventName, e.EventName, eventName + " EventName"); + Assert.AreEqual (eventName, e.MemberName, eventName + " MemberName"); + Assert.AreEqual (supportsActions, e.SupportsActions, eventName + " SupportsActions"); + } + + void DoProperty (ScriptPropertyDescriptor p, string propertyName, ScriptType type, bool readOnly, string serverPropertyName) + { + Assert.AreEqual (propertyName, p.PropertyName, propertyName + " PropertyName"); + Assert.AreEqual (propertyName, p.MemberName, propertyName + " MemberName"); + Assert.AreEqual (readOnly, p.ReadOnly, propertyName + " ReadOnly"); + Assert.AreEqual (type, p.Type, propertyName + " Type"); + } + + [Test] + public void TypeDescriptor () + { + ActionPoker a = new ActionPoker (); + ScriptTypeDescriptor desc = new ScriptTypeDescriptor(a); + + a.InitTypeDescriptor (desc); + + Assert.AreEqual (a, desc.ScriptObject, "A1"); + + // events + IEnumerable events = desc.GetEvents(); + Assert.IsNotNull (events, "A2"); + + IEnumerator ee = events.GetEnumerator(); + Assert.IsTrue (ee.MoveNext()); + DoEvent (ee.Current, "propertyChanged", true); + Assert.IsFalse (ee.MoveNext()); + + // methods + IEnumerable methods = desc.GetMethods(); + Assert.IsNotNull (methods, "A3"); + + IEnumerator me = methods.GetEnumerator(); + Assert.IsFalse (me.MoveNext ()); + + // properties + IEnumerable props = desc.GetProperties(); + Assert.IsNotNull (props, "A4"); + + IEnumerator pe = props.GetEnumerator(); + Assert.IsTrue (pe.MoveNext(), "A5"); + DoProperty (pe.Current, "bindings", ScriptType.Array, true, "Bindings"); + Assert.IsTrue (pe.MoveNext(), "A6"); + DoProperty (pe.Current, "dataContext", ScriptType.Object, false, ""); + Assert.IsTrue (pe.MoveNext(), "A7"); + DoProperty (pe.Current, "id", ScriptType.String, false, "ID"); + Assert.IsTrue (pe.MoveNext(), "A8"); + DoProperty (pe.Current, "eventArgs", ScriptType.Object, false, ""); + Assert.IsTrue (pe.MoveNext(), "A9"); + DoProperty (pe.Current, "result", ScriptType.Object, false, ""); + Assert.IsTrue (pe.MoveNext(), "A10"); + DoProperty (pe.Current, "sender", ScriptType.Object, false, ""); + Assert.IsTrue (pe.MoveNext(), "A11"); + DoProperty (pe.Current, "sequence", ScriptType.Enum, false, "Sequence"); + Assert.IsTrue (pe.MoveNext(), "A12"); + DoProperty (pe.Current, "target", ScriptType.Object, false, "Target"); + Assert.IsFalse (pe.MoveNext(), "A13"); + } + + [Test] + // [ExpectedException (typeof (InvalidOperationException))] + public void TypeDescriptorClosed () + { + /* looks like the TypeDescriptor isn't closed after the call to InitializeTypeDescriptor... go figure */ + ActionPoker a = new ActionPoker (); + ScriptTypeDescriptor desc = new ScriptTypeDescriptor(a); + + a.InitTypeDescriptor (desc); + + desc.AddEvent (new ScriptEventDescriptor ("testEvent", true)); + } } } +#endif -- 2.25.1