Example #1
0
        public void ApplyByValDoesNotChangeReceiver()
        {
            var sam = new PersonVal {
                Name = "Sam", Age = 20
            };

            sam
            .Apply(x => { x.Age++; })
            .ShouldBe(new PersonVal {
                Name = "Sam", Age = 20
            });

            var bob = new PersonRef {
                Name = "Bob", Age = 20
            };

            bob.Apply(x =>
            {
                x.Name = "Rob";
                x.Age += 1;
            })
            .ShouldBe(bob);
            bob.Name.ShouldBe("Rob");
            bob.Age.ShouldBe(21);
        }
Example #2
0
        public void ApplyByRefChangesReceiver()
        {
            var sam = new PersonVal {
                Name = "Sam", Age = 20
            };

            sam
            .Apply((ref PersonVal x) => { x.Age++; })
            .ShouldBe(new PersonVal {
                Name = "Sam", Age = 21
            });

            var bob = new PersonRef {
                Name = "Bob", Age = 20
            };
            var rob = bob.Apply((ref PersonRef x) => { x = new PersonRef {
                                                           Name = "Rob", Age = x.Age + 1
                                                       }; });

            rob.ShouldNotBe(bob);
            rob.Name.ShouldBe("Rob");
            rob.Age.ShouldBe(21);
        }