User: xtoff
Date: 2010/02/22 04:29 PM

Added:
 /InversionOfControl/trunk/src/Castle.MicroKernel.Tests/
  ComponentArgumentsEnumeratorTestCase.cs

Modified:
 /InversionOfControl/trunk/src/Castle.MicroKernel.Tests/
  Castle.MicroKernel.Tests-vs2008.csproj
 /InversionOfControl/trunk/src/Castle.MicroKernel/Context/
  ComponentArgumentsEnumerator.cs

Log:
 - fixed bug in ComponentArgumentsEnumerator - enumerator didn't really work.

File Changes:

Directory: /InversionOfControl/trunk/src/Castle.MicroKernel.Tests/
==================================================================

File [modified]: Castle.MicroKernel.Tests-vs2008.csproj
Delta lines: +119 -0
===================================================================

--- 
InversionOfControl/trunk/src/Castle.MicroKernel.Tests/ComponentArgumentsEnumeratorTestCase.cs
                               (rev 0)
+++ 
InversionOfControl/trunk/src/Castle.MicroKernel.Tests/ComponentArgumentsEnumeratorTestCase.cs
       2010-02-22 23:28:59 UTC (rev 6761)
@@ -0,0 +1,119 @@
+// Copyright 2004-2010 Castle Project - http://www.castleproject.org/
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Castle.MicroKernel.Tests
+{
+       using System.Collections.Generic;
+
+       using Castle.MicroKernel.Context;
+
+       using NUnit.Framework;
+
+       [TestFixture]
+       public class ComponentArgumentsEnumeratorTestCase
+       {
+               private ComponentArgumentsEnumerator enumerator;
+
+               private void BuildEnumeratorFor(params IArgumentsStore[] stores)
+               {
+                       enumerator = new ComponentArgumentsEnumerator(new 
List<IArgumentsStore>(stores));
+                       return;
+               }
+
+               [Test]
+               public void Can_enumerate_single_empty()
+               {
+                       BuildEnumeratorFor(new NamedArgumentsStore());
+                       Assert.IsNull(enumerator.Value);
+                       Assert.IsFalse(enumerator.MoveNext());
+               }
+
+               [Test]
+               public void Can_enumerate_two_empty()
+               {
+                       BuildEnumeratorFor(new NamedArgumentsStore(), new 
TypedArgumentsStore());
+
+                       Assert.IsNull(enumerator.Value);
+                       Assert.IsFalse(enumerator.MoveNext());
+               }
+
+               [Test]
+               public void Can_enumerate_two_first_empty()
+               {
+                       BuildEnumeratorFor(new NamedArgumentsStore { { "foo", 
"bar" } }, new TypedArgumentsStore());
+
+                       Assert.IsNull(enumerator.Value);
+                       Assert.IsTrue(enumerator.MoveNext());
+                       Assert.AreEqual("bar", enumerator.Value);
+                       Assert.IsFalse(enumerator.MoveNext());
+               }
+
+               [Test]
+               public void Can_enumerate_two_non_empty()
+               {
+                       BuildEnumeratorFor(new TypedArgumentsStore { { 
typeof(object), "baz" } },
+                                          new NamedArgumentsStore { { "foo", 
"bar" } });
+
+                       Assert.IsNull(enumerator.Value);
+                       Assert.IsTrue(enumerator.MoveNext());
+                       Assert.AreEqual("baz", enumerator.Value);
+                       Assert.IsTrue(enumerator.MoveNext());
+                       Assert.AreEqual("bar", enumerator.Value);
+                       Assert.IsFalse(enumerator.MoveNext());
+               }
+
+               [Test]
+               public void Can_enumerate_two_non_empty_first_bigger()
+               {
+                       BuildEnumeratorFor(new NamedArgumentsStore { { "foo", 
"bar" }, { "fizz", "buzz" } },
+                                          new TypedArgumentsStore { { 
typeof(object), "baz" } });
+
+                       Assert.IsNull(enumerator.Value);
+                       Assert.IsTrue(enumerator.MoveNext());
+                       Assert.AreEqual("bar", enumerator.Value);
+                       Assert.IsTrue(enumerator.MoveNext());
+                       Assert.AreEqual("buzz", enumerator.Value);
+                       Assert.IsTrue(enumerator.MoveNext());
+                       Assert.AreEqual("baz", enumerator.Value);
+                       Assert.IsFalse(enumerator.MoveNext());
+               }
+
+               [Test]
+               public void Can_enumerate_two_non_empty_second_bigger()
+               {
+                       BuildEnumeratorFor(new TypedArgumentsStore { { 
typeof(object), "baz" } },
+                                          new NamedArgumentsStore { { "foo", 
"bar" }, { "fizz", "buzz" } });
+
+                       Assert.IsNull(enumerator.Value);
+                       Assert.IsTrue(enumerator.MoveNext());
+                       Assert.AreEqual("baz", enumerator.Value);
+                       Assert.IsTrue(enumerator.MoveNext());
+                       Assert.AreEqual("bar", enumerator.Value);
+                       Assert.IsTrue(enumerator.MoveNext());
+                       Assert.AreEqual("buzz", enumerator.Value);
+                       Assert.IsFalse(enumerator.MoveNext());
+               }
+
+               [Test]
+               public void Can_enumerate_two_second_empty()
+               {
+                       BuildEnumeratorFor(new TypedArgumentsStore(), new 
NamedArgumentsStore { { "foo", "bar" } });
+
+                       Assert.IsNull(enumerator.Value);
+                       Assert.IsTrue(enumerator.MoveNext());
+                       Assert.AreEqual("bar", enumerator.Value);
+                       Assert.IsFalse(enumerator.MoveNext());
+               }
+       }
+}

File [added]: ComponentArgumentsEnumeratorTestCase.cs
Delta lines: +0 -0
===================================================================

Directory: /InversionOfControl/trunk/src/Castle.MicroKernel/Context/
====================================================================

File [modified]: ComponentArgumentsEnumerator.cs
Delta lines: +1 -0
===================================================================

--- 
InversionOfControl/trunk/src/Castle.MicroKernel.Tests/Castle.MicroKernel.Tests-vs2008.csproj
        2010-02-22 22:19:30 UTC (rev 6760)
+++ 
InversionOfControl/trunk/src/Castle.MicroKernel.Tests/Castle.MicroKernel.Tests-vs2008.csproj
        2010-02-22 23:28:59 UTC (rev 6761)
@@ -195,6 +195,7 @@
     <Compile Include="ClassComponents\ServiceUser.cs" />
     <Compile Include="ClassComponents\ServiceUser2.cs" />
     <Compile Include="ClassComponents\TwoInterfacesImpl.cs" />
+    <Compile Include="ComponentArgumentsEnumeratorTestCase.cs" />
     <Compile Include="Configuration\Components\ClassWithComplexParameter.cs" />
     <Compile Include="Configuration\Components\ClassWithConstructors.cs">

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-commits?hl=en.

Reply via email to