create unit tests for the following code using MSTest:

using cconv.Objects;

using System.Reflection;
using System.Runtime.InteropServices;

namespace cconv.Converters.Base
{
    internal abstract class BaseConverter
    {
        public abstract string LanguageName { get;}

        public abstract string TemplateName { get; }

        public abstract string FileExtension { get; }

        protected abstract string LangConvert(string template, string className, List<MethodInfo> functions, string cSharpFileName);

        /// <summary>
        /// Retrieves the Converter based on the language argument
        /// </summary>
        /// <param name="language"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        public static BaseConverter GetConverter(string language)
        {
            var converters = Assembly.GetExecutingAssembly().GetTypes().Where(a => a.BaseType == typeof(BaseConverter)).Select(b => (BaseConverter?)Activator.CreateInstance(b)).ToList();

            var converter = converters.FirstOrDefault(a => a != null && string.Equals(a.LanguageName, language, StringComparison.OrdinalIgnoreCase));

            return converter is null ? throw new ArgumentOutOfRangeException($"Language ({language}) is not supported.") : converter;
        }

        /// <summary>
        /// Retrieves all of the classes and methods to convert
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        /// <exception cref="FileNotFoundException">If the C# Assembly is not found</exception>
        /// <exception cref="ArgumentException">Invalid C# Assembly provided</exception>
        private static Dictionary<string, List<MethodInfo>> GetClasses(string fileName)
        {
            if (!File.Exists(fileName))
            {
                throw new FileNotFoundException(fileName);
            }

            Assembly asm;

            try
            {
                asm = Assembly.LoadFrom(fileName);
            }
            catch (BadImageFormatException)
            {
                throw new ArgumentException($"{fileName} was not a valid C# library");
            }

            var types = asm.GetTypes();

            var result = new Dictionary<string, List<MethodInfo>>();

            foreach (var type in types)
            {
                if (!type.IsPublic)
                {
                    continue;
                }

                var methodInfos = type.GetMethods().Where(a => a.Attributes Your response should contain less than 150 words.
user