Example #1
0
        public void ToLookupOverloadB()
        {
            var src = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var r   = ProgressiveLookup <bool, string> .Create(src, i => i > 5, j => "str: " + j.ToString(CultureInfo.InvariantCulture), null);

            var rArray = r.ToArray();

            Assert.AreEqual(rArray.Length, 2);
            var index = 0;
            var first = true;

            foreach (var g in rArray)
            {
                Assert.AreEqual(g.Key, !first);
                var count = 0;
                foreach (var item in g)
                {
                    Assert.AreEqual(item, "str: " + (index + 1).ToString(CultureInfo.InvariantCulture));
                    index++;
                    count++;
                }
                Assert.AreEqual(count, 5);
                first = false;
            }
            Assert.AreEqual(index, 10);
        }
Example #2
0
        public void ToLookupOverloadA()
        {
            var src = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var r   = ProgressiveLookup <bool, int> .Create(src, i => i > 5, null);

            var rArray = r.ToArray();

            Assert.AreEqual(rArray.Length, 2);
            var index = 0;
            var first = true;

            foreach (var g in rArray)
            {
                Assert.AreEqual(g.Key, !first);
                var count = 0;
                foreach (var item in g)
                {
                    Assert.AreEqual(item, index + 1);
                    index++;
                    count++;
                }
                Assert.AreEqual(count, 5);
                first = false;
            }
            Assert.AreEqual(index, 10);
        }
Example #3
0
        private static void ReadType(StringProcessor parser, string @namespace, ProgressiveLookup <string, Type> lookup, bool includeNamespace)
        {
            var typeName = string.Empty;

            while (true)
            {
                typeName += parser.ReadWhile(char.IsLetterOrDigit);
                if (parser.Read("_"))
                {
                    typeName += "_";
                }
                else
                {
                    break;
                }
            }
            var generic = parser.Read("<");

            if (generic)
            {
                var genericArgsCount = parser.ReadUntil(">").CountItemsWhere(chr => chr == ',') + 1;
                parser.Read(">");
                if (includeNamespace)
                {
                    ProcessType($"{@namespace}.{typeName}`{genericArgsCount}", lookup);
                }
            }
            else
            {
                if (includeNamespace)
                {
                    ProcessType($"{@namespace}.{typeName}", lookup);
                }
            }
        }
Example #4
0
 public static ILookup <string, Type> GetNamespaces(this Assembly assembly)
 {
     if (assembly == null)
     {
         throw new ArgumentNullException("assembly");
     }
     return(ProgressiveLookup <string, Type> .Create(assembly.GetTypes(), type => type.Namespace));
 }
Example #5
0
        private static void ProcessType(string typeName, ProgressiveLookup <string, Type> lookup)
        {
            var types = lookup[typeName];

            if (!types.Any())
            {
                Console.WriteLine(typeName);
            }
        }
Example #6
0
        public void LookupNullKeyNone()
        {
            var lookup = ProgressiveLookup <string, string> .Create
                         (
                new[] { "hi", "bye" },
                c => c[0].ToString(CultureInfo.InvariantCulture)
                         );

            Assert.AreEqual(2, lookup.Count);
            Assert.AreEqual(0, lookup[null].Count());
        }
Example #7
0
        public void ProgressiveLookupIsCached()
        {
            var src = new IterateAndCount(10);
            var a   = ProgressiveLookup <bool, int> .Create(src, i => i > 5, null);

            var b = ProgressiveLookup <bool, string> .Create(src, i => i > 5, j => "str: " + j.ToString(CultureInfo.InvariantCulture), null);

            Assert.AreEqual(src.Total, 0);
            a.Consume();
            b.Consume();
            Assert.AreEqual(src.Total, 20);
        }
Example #8
0
        public void LookupEnumeratorWithoutNull()
        {
            var lookup = ProgressiveLookup <string, string> .Create
                         (
                new[] { "hi", "bye" },
                c => c[0].ToString(CultureInfo.InvariantCulture)
                         );

            Assert.IsTrue(lookup.Any(g => g.Key == "h"));
            Assert.IsTrue(lookup.Any(g => g.Key == "b"));
            Assert.IsFalse(lookup.Any(g => g.Key == null));
        }
Example #9
0
        public void LookupContainsNull()
        {
            var lookup = ProgressiveLookup <string, string> .Create
                         (
                new[] { "hi", "bye", "42" },
                c => char.IsNumber(c[0])?null : c[0].ToString(CultureInfo.InvariantCulture)
                         );

            Assert.IsTrue(lookup.Contains("h"));
            Assert.IsTrue(lookup.Contains(null));
            Assert.IsFalse(lookup.Contains("d"));
        }
Example #10
0
        public void LookupEnumeratorWithNull()
        {
            var lookup = ProgressiveLookup <string, string> .Create
                         (
                new[] { "hi", "bye", "42" },
                c => char.IsNumber(c[0])?null : c[0].ToString()
                         );

            Assert.IsTrue(lookup.Any(g => g.Key == "h"));
            Assert.IsTrue(lookup.Any(g => g.Key == "b"));
            Assert.IsTrue(lookup.Any(g => g.Key == null));
        }
Example #11
0
        public void LookupContains()
        {
            var lookup = ProgressiveLookup <string, string> .Create
                         (
                new[] { "hi", "bye" },
                c => c[0].ToString()
                         );

            Assert.IsTrue(lookup.Contains("h"));
            Assert.IsFalse(lookup.Contains("d"));
            Assert.IsFalse(lookup.Contains(null));
        }
Example #12
0
        public void LookupIgnoreCase()
        {
            var lookup = ProgressiveLookup <string, int> .Create
                         (
                GetColors(),
                c => c.Name,
                c => c.Value,
                StringComparer.OrdinalIgnoreCase
                         );

            Assert.AreEqual(0xff0000, lookup["red"].First());
            Assert.AreEqual(0x00ff00, lookup["GrEeN"].First());
            Assert.AreEqual(0x0000ff, lookup["Blue"].First());
        }
Example #13
0
        public void ToLookupOverloadAEx()
        {
            var src = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var r   = ProgressiveLookup <bool, int> .Create(src, i => i > 5, null);

            var rArray = r.ToArray();

            Assert.AreEqual(rArray.Length, 2);
            var first = true;

            foreach (var g in rArray)
            {
                Assert.AreEqual(g.Key, !first);
                Assert.AreEqual(g.Count(), 5);
                first = false;
            }
        }
Example #14
0
        public void ToLookupOverloadBEx()
        {
            var src = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var r   = ProgressiveLookup <bool, string> .Create(src, i => i > 5, j => "str: " + j.ToString(CultureInfo.InvariantCulture), null);

            var rArray = r.ToArray();

            Assert.AreEqual(rArray.Length, 2);
            var first = true;

            foreach (var g in rArray)
            {
                Assert.AreEqual(g.Key, !first);
                Assert.AreEqual(g.Count(), 5);
                first = false;
            }
        }
Example #15
0
        public void EmptyResult()
        {
            var lookup = ProgressiveLookup <string, int> .Create
                         (
                GetColors(),
                c => c.Name,
                c => c.Value,
                StringComparer.OrdinalIgnoreCase
                         );

            var l = lookup["notExist"];

            Assert.IsNotNull(l);
            var values = (int[])l;

            Assert.AreEqual(values.Length, 0);
        }
Example #16
0
        public static void Test()
        {
            var version           = "2.1";
            var skippedNamespaces = new []
            {
                "System.Xml",
                "System.Data",
                "System.Net",
                "System.IO",
                "System.Drawing",
                "System.Runtime.Serialization",
                "System.Security.Cryptography"
            };
            // ---
            var url      = $"https://raw.githubusercontent.com/dotnet/standard/master/docs/versions/netstandard{version}_ref.md";
            var text     = new WebClient().DownloadString(url);
            var parser   = new StringProcessor(text);
            var keywords = new []
            {
                "class",
                "static class",
                "abstract class",
                "sealed class",
                "struct",
                "enum",
                "interface"
            };
            var entryAssembly        = typeof(ApiListTest).Assembly;
            var entryAssemblyName    = entryAssembly.GetName();
            var assemblyNameComparer = new CustomEqualityComparer <AssemblyName>
                                       (
                (left, right) => left.FullName == right.FullName,
                name => name.FullName.GetHashCode()
                                       );
            var assemblyDictionary = new Dictionary <AssemblyName, Assembly>(assemblyNameComparer)
            {
                { entryAssemblyName, entryAssembly }
            };
            var loadedAssemblies = GraphHelper.ExploreBreadthFirstGraph
                                   (
                entryAssemblyName,
                assemblyName =>
            {
                Assembly assembly = GetAssembly(assemblyName, assemblyDictionary);
                return(assembly.GetReferencedAssemblies());
            },
                assemblyNameComparer
                                   );
            var types = loadedAssemblies.SelectMany
                        (
                assemblyName => GetAssembly(assemblyName, assemblyDictionary).GetTypes()
                        );
            var lookup = new ProgressiveLookup <string, Type>(types.GroupProgressiveBy(type => type.FullName));

            parser.SkipUntilAfter("```C#");
            while (!parser.EndOfString)
            {
                parser.SkipWhile(CharHelper.IsClassicWhitespace);
                if (parser.Read("namespace"))
                {
                    parser.SkipWhile(CharHelper.IsClassicWhitespace);
                    var @namespace       = parser.ReadUntil(CharHelper.IsClassicWhitespace);
                    var includeNamespace = true;
                    foreach (var skippedNamespace in skippedNamespaces)
                    {
                        if (@namespace.StartsWith(skippedNamespace))
                        {
                            includeNamespace = false;
                            break;
                        }
                    }
                    parser.SkipWhile(CharHelper.IsClassicWhitespace);
                    parser.Read("{");
                    parser.SkipWhile(CharHelper.IsClassicWhitespace);
                    while (true)
                    {
                        if (parser.Read("public"))
                        {
                            parser.SkipWhile(CharHelper.IsClassicWhitespace);
                            if (parser.Read("delegate"))
                            {
                                parser.SkipWhile(CharHelper.IsClassicWhitespace);
                                parser.SkipUntil(CharHelper.IsClassicWhitespace);
                                parser.SkipWhile(CharHelper.IsClassicWhitespace);
                                ReadType(parser, @namespace, lookup, includeNamespace);
                                parser.ReadUntil(new[] { '\n', '\r', '{' });
                                if (parser.Peek('\n') || parser.Peek('\r'))
                                {
                                    continue;
                                }
                            }
                            else if (parser.Read(keywords) != null)
                            {
                                parser.SkipWhile(CharHelper.IsClassicWhitespace);
                                ReadType(parser, @namespace, lookup, includeNamespace);
                            }
                            var count = 0;
                            do
                            {
                                if (parser.ReadUntil(new[] { '{', '}' }) == null)
                                {
                                    break;
                                }
                                if (parser.Read() == '{')
                                {
                                    count++;
                                }
                                else
                                {
                                    count--;
                                }
                            } while (count != 0);
                        }
                        parser.SkipWhile(CharHelper.IsClassicWhitespace);
                        if (parser.Read("}"))
                        {
                            break;
                        }
                    }
                }
                parser.Read("```");
            }
        }