public void TryGetPrefixWithoutTypeNonGeneric()
        {
            KeyToParametersConverter.MappingCollection definitions = new KeyToParametersConverter.MappingCollection()
                                                                     .AddParametersToInt32Key()
                                                                     .AddKeyTypeToKeyClass("Product", typeof(Int32Key))
                                                                     .AddKeyTypeToKeyClass("Category", typeof(Int32Key));

            IKeyToParametersConverter converter = new KeyToParametersConverter(definitions);

            IKeyValueCollection parameters = new KeyValueCollection()
                                             .Add("SourceID", 5)
                                             .Add("TargetID", 6);

            Assert.AreEqual(true, converter.TryGetWithoutType(parameters, "Product", "Source", out IKey key));
            if (key is Int32Key sourceKey)
            {
                Assert.AreEqual(5, sourceKey.ID);
                Assert.AreEqual("Product", sourceKey.Type);
            }
            else
            {
                Assert.Fail("Not Int32Key");
            }

            Assert.AreEqual(true, converter.TryGetWithoutType(parameters, "Category", "Target", out key));
            if (key is Int32Key targetKey)
            {
                Assert.AreEqual(6, targetKey.ID);
                Assert.AreEqual("Category", targetKey.Type);
            }
            else
            {
                Assert.Fail("Not Int32Key");
            }
        }
        public void TryGetVariousKeyClassNonGeneric()
        {
            KeyToParametersConverter.MappingCollection definitions = new KeyToParametersConverter.MappingCollection()
                                                                     .AddParametersToInt32Key()
                                                                     .AddParametersToStringKey()
                                                                     .AddParametersToGuidKey()
                                                                     .AddKeyTypeToKeyClass("Product", typeof(Int32Key))
                                                                     .AddKeyTypeToKeyClass("Project", typeof(StringKey))
                                                                     .AddKeyTypeToKeyClass("Category", typeof(GuidKey));

            IKeyToParametersConverter converter = new KeyToParametersConverter(definitions);

            IKeyValueCollection parameters = new KeyValueCollection()
                                             .Add("ID", 5)
                                             .Add("Type", "Product");

            Assert.AreEqual(true, converter.TryGet(parameters, out IKey key));
            if (key is Int32Key int32Key)
            {
                Assert.AreEqual(5, int32Key.ID);
                Assert.AreEqual("Product", int32Key.Type);
            }
            else
            {
                Assert.Fail("Not Int32Key");
            }

            parameters = new KeyValueCollection()
                         .Add("Identifier", "abcdef")
                         .Add("Type", "Project");

            Assert.AreEqual(true, converter.TryGet(parameters, out key));
            if (key is StringKey stringKey)
            {
                Assert.AreEqual("abcdef", stringKey.Identifier);
                Assert.AreEqual("Project", stringKey.Type);
            }
            else
            {
                Assert.Fail("Not StringKey");
            }

            Guid guid = Guid.NewGuid();

            parameters = new KeyValueCollection()
                         .Add("Guid", guid)
                         .Add("Type", "Category");

            Assert.AreEqual(true, converter.TryGet(parameters, out key));
            if (key is GuidKey guidKey)
            {
                Assert.AreEqual(guid, guidKey.Guid);
                Assert.AreEqual("Category", guidKey.Type);
            }
            else
            {
                Assert.Fail("Not GuidKey");
            }
        }
        public void TryGetWithoutTypeNonGeneric()
        {
            KeyToParametersConverter.MappingCollection definitions = new KeyToParametersConverter.MappingCollection()
                                                                     .AddParametersToInt32Key()
                                                                     .AddKeyTypeToKeyClass("Product", typeof(Int32Key));

            IKeyToParametersConverter converter = new KeyToParametersConverter(definitions);

            IKeyValueCollection parameters = new KeyValueCollection()
                                             .Add("ID", 5);

            Assert.AreEqual(true, converter.TryGetWithoutType(parameters, "Product", out IKey key));
            if (key is Int32Key int32Key)
            {
                Assert.AreEqual(5, int32Key.ID);
                Assert.AreEqual("Product", int32Key.Type);
            }
            else
            {
                Assert.Fail("Not Int32Key");
            }
        }