public void SimpleFunction_Test_3()
        {
            MyObject mo = new MyObject("Simple", 98);
            MyObject mi = new MyObject("Simple2", 100);
            mo.Friend = mi;


            SimpleFunction<int> sf = new SimpleFunction<int>(() => mo.Friend.Value);

            sf.MonitorEvents();
            sf.Value.Should().Be(100);
            sf.ShouldNotRaisePropertyChangeFor(o => o.Value);

            mo.Name = "Complexe";
            sf.ShouldNotRaisePropertyChangeFor(o => o.Value);
            sf.Value.Should().Be(100);


            mo.Value = 120;
            sf.Value.Should().Be(100);
            sf.ShouldNotRaisePropertyChangeFor(o => o.Value);

            mi.Value = 130;
            sf.Value.Should().Be(130);
            sf.ShouldRaisePropertyChangeFor(o => o.Value);

            MyObject nf = new MyObject("nff", -255);
            mo.Friend = nf;
            sf.Value.Should().Be(-255);
            sf.ShouldRaisePropertyChangeFor(o => o.Value);

            sf.Dispose();

        }
        public void SimpleFunction_Test_2()
        {
            MyObject mo = new MyObject("Simple", 98);
            SimpleFunction<int> sf = new SimpleFunction<int>(() => mo.Value);

            sf.MonitorEvents();
            sf.Value.Should().Be(98);
            sf.ShouldNotRaisePropertyChangeFor(o => o.Value);

            mo.Name="Complexe";
            sf.ShouldNotRaisePropertyChangeFor(o => o.Value);
            sf.Value.Should().Be(98);


            mo.Value = 120;
            sf.Value.Should().Be(120);
            sf.ShouldRaisePropertyChangeFor(o => o.Value);


            sf.Dispose();

        }