Ejemplo n.º 1
0
 public void GivenValidInput_ThenParseSucceeds()
 {
     var parser = new PersonFormatter();
     var person = parser.ParsePerson("BAKER, THEODORE");
     Assert.AreEqual("THEODORE", person.FirstName);
     Assert.AreEqual("BAKER", person.LastName);
 }
Ejemplo n.º 2
0
 public void GivenValidInputWithWhitespace_ThenWhitespaceIsStripped()
 {
     var parser = new PersonFormatter();
     var person = parser.ParsePerson(" BAKER ,  THEODORE  ");
     Assert.AreEqual("THEODORE", person.FirstName);
     Assert.AreEqual("BAKER", person.LastName);
 }
Ejemplo n.º 3
0
 public void GivenValidInputWithNoLastName_LastNameIsEmpty()
 {
     var parser = new PersonFormatter();
     var person = parser.ParsePerson("BAKER, ");
     Assert.AreEqual("", person.FirstName);
     Assert.AreEqual("BAKER", person.LastName);
 }
Ejemplo n.º 4
0
 public void GivenValidInputWithNoFirstName_FirstNameIsEmpty()
 {
     var parser = new PersonFormatter();
     var person = parser.ParsePerson(", THEODORE");
     Assert.AreEqual("THEODORE", person.FirstName);
     Assert.AreEqual("", person.LastName);
 }
        /*
         * Don't Repeat Yourself
         *
         * "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system"
         *
         * Good examples: Work flows, Objects/exceptions formatting, utility methods, Template methods/LINQ
         *
         */
        public static string CheckEligibilityAndFormatEmailHeader(Person person)
        {
            if (person.BirthDate.Date == DateTime.Now.AddYears(-18).Date)
            {
                return(MarkEligibility(person));
            }

            return(PersonFormatter.Format(person));
        }
Ejemplo n.º 6
0
        public void Format_PersonWithFirstAndLastName_StringFirstAndLastNameWithDashBetween()
        {
            Person person = new Person
            {
                FirstName = "Bob",
                LastName  = "Martin"
            };

            PersonFormatter formatter = new PersonFormatter();

            var result = formatter.Format(person);

            Assert.AreEqual(s);
        }
Ejemplo n.º 7
0
 // Functions assigned to delegates
 // Declared in /WithDelegates/Person.cs
 public void AssignFormatter()
 {
     if (rdBtn_Default.IsChecked.Value)
     {
         formatter = NameFormatter.Default;
     }
     else if (rdBtn_LastNameFirst.IsChecked.Value)
     {
         formatter = NameFormatter.LastNameFirst;
     }
     else if (rdBtn_FirstNameOnly.IsChecked.Value)
     {
         formatter = NameFormatter.FirstNameOnly;
     }
     else if (rdBtn_LastNameOnly.IsChecked.Value)
     {
         formatter = NameFormatter.LastNameOnly;
     }
 }
Ejemplo n.º 8
0
        // Lambda expressions as delegates
        public void AssignFormatterLamdaExpression()
        {
            // Anonymous functions as delegates
            if (rdBtn_Default.IsChecked.Value)
            {
                formatter = delegate(Person person)
                {
                    return($"{person.FirstName} {person.LastName}");
                }
            }
            ;

            // Removed delegate keyword
            // Using lamdba operator
            else if (rdBtn_LastNameFirst.IsChecked.Value)
            {
                formatter = (Person person) =>
                {
                    return($"{person.LastName} {person.FirstName}");
                }
            }
            ;

            // C#'s Type Inference in action
            // Removed explicit type naming for person parameter
            else if (rdBtn_FirstNameOnly.IsChecked.Value)
            {
                formatter = (person) =>
                {
                    return(person.FirstName);
                }
            }
            ;

            // Single parameter - No brackets required
            // Expression function - Single statement, No curly brackets required
            else if (rdBtn_LastNameOnly.IsChecked.Value)
            {
                formatter = person => person.LastName;
            }
        }
 private static string MarkEligibility(Person person)
 {
     // TODO: Mark Eligibility in some db or system
     return(PersonFormatter.Format(person.ToString()));
 }
Ejemplo n.º 10
0
 public string ToString(PersonFormatter formatter)
 {
     // formatter delegate - 1. Accepts a person object, 2. Returns a string
     return(formatter.Invoke(this));
 }
Ejemplo n.º 11
0
 public void InvalidInput_SinglePart_Fails()
 {
     var parser = new PersonFormatter();
     var person = parser.ParsePerson("BAKER");
     Assert.IsNull(person);
 }
Ejemplo n.º 12
0
 public void InvalidInput_NullInput_Fails()
 {
     var parser = new PersonFormatter();
     var person = parser.ParsePerson(null);
     Assert.IsNull(person);
 }
Ejemplo n.º 13
0
 public void InvalidInput_MultipleParts_Fails()
 {
     var parser = new PersonFormatter();
     var person = parser.ParsePerson("BAKER, THEODORE, MORE");
     Assert.IsNull(person);
 }