public void Action2Arguments() { //-- Arrange Field <List <string> > logField; Field <DelegateTester> testerField; DeriveClassFrom <object>() .ImplementInterface <AncestorRepository.ITester>() .PrimaryConstructor("Log", out logField, "Tester", out testerField) .Method(x => x.TestAction).Implement(w => { testerField.Void(x => x.Acton2, w.Delegate <int, string>((ww, n, s) => logField.Add(ww.Const("Action2({0},{1})").Format(n, s)) )); }) .AllMethods().Throw <NotImplementedException>(); var log = new List <string>(); var tester = new DelegateTester(); //-- Act var obj = CreateClassInstanceAs <AncestorRepository.ITester>().UsingConstructor(log, tester); obj.TestAction(); //-- Assert Assert.That(log, Is.EqualTo(new[] { "Action2(123,ABC)" })); }
public void LambdaAsGenericDelegate() { //-- Arrange Field <List <string> > logField; Field <DelegateTester> testerField; DeriveClassFrom <object>() .ImplementInterface <AncestorRepository.ITester>() .PrimaryConstructor("Log", out logField, "Tester", out testerField) .Method <object>(x => x.TestFunc).Implement(w => { var value = w.Local(initialValue: testerField.Func <Func <int, char, string>, int, char, string>( x => (f, n, c) => x.GenericFunc(f, n, c), w.Lambda <int, char, string>((n, c) => n.FuncToString() + c.FuncToString()), w.Const(555), w.Const('#'))); w.Return(value.CastTo <object>()); }) .AllMethods().Throw <NotImplementedException>(); var log = new List <string>(); var tester = new DelegateTester(); //-- Act var obj = CreateClassInstanceAs <AncestorRepository.ITester>().UsingConstructor(log, tester); var result = obj.TestFunc(); //-- Assert Assert.That(result, Is.EqualTo("555#")); }
public void Func4Arguments() { //-- Arrange Field <List <string> > logField; Field <DelegateTester> testerField; DeriveClassFrom <object>() .ImplementInterface <AncestorRepository.ITester>() .PrimaryConstructor("Log", out logField, "Tester", out testerField) .Method <object>(x => x.TestFunc).Implement(w => { var value = w.Local(initialValue: testerField.Func <Func <int, string, char, string, char>, char>(x => x.Func4, w.Delegate <int, string, char, string, char>((ww, n, s, c, s2) => { logField.Add(ww.Const("Func4<int,string,char,string,char>({0},{1},{2},{3})").Format(n, s, c, s2)); ww.Return('#'); }))); w.Return(value.CastTo <object>()); }) .AllMethods().Throw <NotImplementedException>(); var log = new List <string>(); var tester = new DelegateTester(); //-- Act var obj = CreateClassInstanceAs <AncestorRepository.ITester>().UsingConstructor(log, tester); var result = obj.TestFunc(); //-- Assert Assert.That(result, Is.EqualTo('#')); Assert.That(log, Is.EqualTo(new[] { "Func4<int,string,char,string,char>(123,ABC,@,DEF)" })); }
public void Lambda4Arguments() { //-- Arrange Field <List <string> > logField; Field <DelegateTester> testerField; DeriveClassFrom <object>() .ImplementInterface <AncestorRepository.ITester>() .PrimaryConstructor("Log", out logField, "Tester", out testerField) .Method <object>(x => x.TestFunc).Implement(w => { var value = w.Local(initialValue: testerField.Func <Func <int, string, char, string, char>, char>( x => x.Func4, w.Lambda <int, string, char, string, char>((n, s, c, s2) => (n + s.Length() + c.CastTo <int>() + s2.Length()).CastTo <char>()))); w.Return(value.CastTo <object>()); }) .AllMethods().Throw <NotImplementedException>(); var log = new List <string>(); var tester = new DelegateTester(); //-- Act var obj = CreateClassInstanceAs <AncestorRepository.ITester>().UsingConstructor(log, tester); var result = obj.TestFunc(); //-- Assert Assert.That(result, Is.EqualTo((char)(123 + 3 + '@' + 3))); }
void OnGUI() { if (GUILayout.Button("Assign delegates")) { for (int i = 0; i < tweens.Length - 1; ++i) { DelegateTester.TogglePause += tweens[i].TogglePause; } } if (GUILayout.Button("TogglePause via Delegate")) { if (DelegateTester.TogglePause != null) { DelegateTester.TogglePause(); } } if (GUILayout.Button("Clear delegates")) { // DelegateTester.Clear(); DelegateTester.TogglePause = null; } }