示例#1
0
        public void ShouldLogDuplicates()
        {
            var validator = new EnumValidator(Console.WriteLine, s => Console.WriteLine("error " + s));

            validator.SetLoadedAssembly(Assembly.GetExecutingAssembly());

            int loggedDuplicates = 0;

            validator.LogEnumDuplicates += tuples => {
                (int value, string enumValues)valueTuple = tuples[0];

                switch (valueTuple.value)
                {
                case 1:
                    Assert.Equal(1, valueTuple.value);
                    Assert.Matches("First", valueTuple.enumValues);
                    Assert.Matches("Second", valueTuple.enumValues);
                    loggedDuplicates++;
                    break;

                case 333:
                    Assert.Equal(333, valueTuple.value);
                    Assert.Matches("Third", valueTuple.enumValues);
                    Assert.Matches("Fourth", valueTuple.enumValues);
                    loggedDuplicates++;
                    break;
                }
            };
            validator.Run();

            Assert.Equal(2, loggedDuplicates);
        }
示例#2
0
        /// <summary>
        /// Program entry point.
        /// </summary>
        /// <param name="args">Command line arguments, only argument is DLL/EXE file path.</param>
        /// <exception cref="ArgumentNullException"></exception>
        private static void Main(String[] args)
        {
            // Validate arguments.
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }
            if (args.Length != 1)
            {
                Console.Error.WriteLine("Missing assembly as argument");
                Console.Read();
                return;
            }

            // Create validator object.
            var enumValidator = new EnumValidator(Console.WriteLine
                                                  , s => {
                Console.Error.WriteLine(s);
                Console.Read();
            }
                                                  );

            // Log enum names in event handler.
            enumValidator.LogEnumName += name => {
                Console.WriteLine($"Found enum {name}");
            };

            // Log duplicate enum members in event handler.
            enumValidator.LogEnumDuplicates += tuples => {
                if (tuples == null)
                {
                    throw new ArgumentNullException(nameof(tuples));
                }

                Console.WriteLine("");
                Console.WriteLine(new String('*', 10));
                Console.WriteLine($"WARNING! Found duplicate enum integers");

                foreach ((Int32 value, String enumValues)duplicates in tuples)
                {
                    Console.WriteLine($"VALUE {duplicates.value} KEYS '{duplicates.enumValues}'");
                }

                Console.WriteLine(new String('*', 10));
                Console.WriteLine("");
            };

            // Load assembly.
            enumValidator.LoadAssemblyFromFilePath(args[0]);

            // Run validator.
            enumValidator.Run();

            Console.WriteLine("Done!");
            Console.Read();
        }