コード例 #1
0
 public void Works_with_int()
 {
     var sut = new FunctionManager(new ReadOnlyCollection<object>(new object[] { 1 }));
     var e = sut.GetEnumerator();
     IsTrue(e.MoveNext());
     AreEqual(1, e.Current.Function());
     IsFalse(e.MoveNext());
 }
コード例 #2
0
 public void Works_with_action()
 {
     var x = 0;
     var action = new Action(() => { x = 1; });
     var sut = new FunctionManager(new ReadOnlyCollection<object>(new object[] { action }));
     var e = sut.GetEnumerator();
     IsTrue(e.MoveNext());
     AreEqual(0, x);
     e.Current.Function();
     AreEqual(1, x);
     IsFalse(e.MoveNext());
 }
コード例 #3
0
 public void Works_with_2_functions_taking_1_parameter_where_stack_size_is_2()
 {
     var function1 = new Func<string, string>(x => "a" + x);
     var function2 = new Func<string, string>(x => "b" + x);
     var sut = new FunctionManager(new ReadOnlyCollection<object>(new object[] { function1, function2, "c" }), 2);
     var e = sut.GetEnumerator();
     IsTrue(e.MoveNext());
     AreEqual("aaac", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("aabc", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("aac", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("abac", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("abbc", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("abc", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("ac", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("baac", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("babc", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("bac", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("bbac", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("bbbc", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("bbc", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("bc", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("c", e.Current.Function());
     IsFalse(e.MoveNext());
 }
コード例 #4
0
 public void Works_with_function_taking_1_parameter_and_two_matching_arguments_where_one_argument_is_another_function_and_stack_size_is_1()
 {
     var function1 = new Func<int, string>(x => x + "b");
     var function2 = new Func<int>(() => 1);
     var sut = new FunctionManager(new ReadOnlyCollection<object>(new object[] { function1, function2, 2 }), 1);
     var e = sut.GetEnumerator();
     IsTrue(e.MoveNext());
     AreEqual("1b", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("2b", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual(1, e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual(2, e.Current.Function());
     IsFalse(e.MoveNext());
 }
コード例 #5
0
 public void Works_with_function_taking_1_parameter_and_two_matching_arguments()
 {
     var function = new Func<int, string>(x => x + "b");
     var sut = new FunctionManager(new ReadOnlyCollection<object>(new object[] { function, 1, 2 }));
     var e = sut.GetEnumerator();
     IsTrue(e.MoveNext());
     AreEqual("1b", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual("2b", e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual(1, e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual(2, e.Current.Function());
     IsFalse(e.MoveNext());
 }
コード例 #6
0
 public void Works_with_empty_arguments()
 {
     var sut = new FunctionManager(new ReadOnlyCollection<object>(new object[] { }));
     var e = sut.GetEnumerator();
     IsFalse(e.MoveNext());
 }
コード例 #7
0
 public void Works_with_action_taking_1_parameter_and_two_matching_arguments()
 {
     var x = 0;
     var action = new Action<int>(y => { x = y; });
     var sut = new FunctionManager(new ReadOnlyCollection<object>(new object[] { action, 1, 2 }));
     var e = sut.GetEnumerator();
     IsTrue(e.MoveNext());
     AreEqual(0, x);
     e.Current.Function();
     AreEqual(1, x);
     IsTrue(e.MoveNext());
     AreEqual(1, x);
     e.Current.Function();
     AreEqual(2, x);
     IsTrue(e.MoveNext());
     AreEqual(1, e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual(2, e.Current.Function());
     IsFalse(e.MoveNext());
 }
コード例 #8
0
 public void Works_with_action_taking_1_parameter_but_without_providing_any_matching_arguments()
 {
     var x = 0;
     var action = new Action<int>(y => { x = y; });
     var sut = new FunctionManager(new ReadOnlyCollection<object>(new object[] { action }));
     var e = sut.GetEnumerator();
     IsFalse(e.MoveNext());
 }
コード例 #9
0
 public void Works_with_2_functions()
 {
     var function1 = new Func<int>(() => 1);
     var function2 = new Func<int>(() => 2);
     var sut = new FunctionManager(new ReadOnlyCollection<object>(new object[] { function1, function2 }));
     var e = sut.GetEnumerator();
     IsTrue(e.MoveNext());
     AreEqual(1, e.Current.Function());
     IsTrue(e.MoveNext());
     AreEqual(2, e.Current.Function());
     IsFalse(e.MoveNext());
 }