Example #1
0
        internal static bool IsAccordingSetterMethod(IFieldSymbol field, IMethodSymbol setterMethod)
        {
            string fieldNameWithoutUnderscore = field.Name.Substring(1);
            string expectedNameInMethod       = TestDataBuilderSyntaxWriter.ToUpperCamelCase(fieldNameWithoutUnderscore);

            if (setterMethod.Name.EndsWith(expectedNameInMethod) && !setterMethod.Parameters.Any())
            {
                /*Die Methode hat den gleichen Namen wie das Feld (ohne _ und mit großem Anfangsbuchstaben) und hat keine Parameter => sollte passen. */
                /*Bsp.: _isPublished => Published() */
                return(true);
            }
            else
            {
                foreach (IParameterSymbol methodParameter in setterMethod.Parameters)
                {
                    if (methodParameter.Name == fieldNameWithoutUnderscore && TypeHelper.AreTypesEqual(field.Type, methodParameter.Type))
                    {
                        /*Der Name des Parameters entspricht dem Namen (ohne _) und die Typen sind gleich. => sollte passen*/
                        /*Bsp.: string _firstname => WithFirstname(string firstname) */
                        /*Bsp.: string _name => WithFirstname(string name) */
                        /*Bsp.: DateTime _createdAt und User _createdBy => CreatedByAndAt(User createdBy, DateTime createdAt) */
                        return(true);
                    }
                }
            }

            return(false);
        }