public void AddVariousKeyClass()
        {
            Converts.Repository
            .AddStringTo <Guid>(Guid.TryParse);

            IKeyToParametersConverter converter = CreateConverter();

            KeyValueCollection parameters = new KeyValueCollection();

            converter.Add(parameters, Int32Key.Create(5, "Product"));

            Assert.AreEqual(2, parameters.Keys.Count());
            Assert.AreEqual(5, parameters.Get <int>("ID"));
            Assert.AreEqual("Product", parameters.Get <string>("Type"));

            parameters = new KeyValueCollection();
            converter.Add(parameters, StringKey.Create("abcdef", "Product"));

            Assert.AreEqual(2, parameters.Keys.Count());
            Assert.AreEqual("abcdef", parameters.Get <string>("Identifier"));
            Assert.AreEqual("Product", parameters.Get <string>("Type"));

            parameters = new KeyValueCollection();
            Guid guid = Guid.NewGuid();

            converter.Add(parameters, GuidKey.Create(guid, "Product"));

            Assert.AreEqual(2, parameters.Keys.Count());
            Assert.AreEqual(guid, parameters.Get <Guid>("Guid"));
            Assert.AreEqual("Product", parameters.Get <string>("Type"));
        }
        public void TryGetVariousKeyClass()
        {
            IKeyToParametersConverter converter = CreateConverter();

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

            Assert.AreEqual(true, converter.TryGet(parameters, out Int32Key int32Key));
            Assert.AreEqual(5, int32Key.ID);
            Assert.AreEqual("Product", int32Key.Type);

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

            Assert.AreEqual(true, converter.TryGet(parameters, out StringKey stringKey));
            Assert.AreEqual("abcdef", stringKey.Identifier);
            Assert.AreEqual("Product", stringKey.Type);

            Guid guid = Guid.NewGuid();

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

            Assert.AreEqual(true, converter.TryGet(parameters, out GuidKey guidKey));
            Assert.AreEqual(guid, guidKey.Guid);
            Assert.AreEqual("Product", guidKey.Type);
        }
        public void AddWithoutType()
        {
            IKeyToParametersConverter converter = CreateConverter();

            KeyValueCollection parameters = new KeyValueCollection();

            converter.AddWithoutType(parameters, Int32Key.Create(5, "Product"));

            Assert.AreEqual(1, parameters.Keys.Count());
            Assert.AreEqual(5, parameters.Get <int>("ID"));
        }
        public void TryGetWithoutType()
        {
            IKeyToParametersConverter converter = CreateConverter();

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

            Assert.AreEqual(true, converter.TryGetWithoutType(parameters, "Product", out Int32Key int32Key));
            Assert.AreEqual(5, int32Key.ID);
            Assert.AreEqual("Product", int32Key.Type);
        }
        public void AddPrefixWithoutType()
        {
            IKeyToParametersConverter converter = CreateConverter();

            KeyValueCollection parameters = new KeyValueCollection();

            converter.AddWithoutType(parameters, "Source", Int32Key.Create(5, "Product"));
            converter.AddWithoutType(parameters, "Target", Int32Key.Create(8, "Product"));

            Assert.AreEqual(2, parameters.Keys.Count());
            Assert.AreEqual(5, parameters.Get <int>("SourceID"));
            Assert.AreEqual(8, parameters.Get <int>("TargetID"));
        }
        public void TryGetPrefixWithoutType()
        {
            IKeyToParametersConverter converter = CreateConverter();

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

            Assert.AreEqual(true, converter.TryGetWithoutType(parameters, "Product", "Source", out Int32Key sourceKey));
            Assert.AreEqual(5, sourceKey.ID);
            Assert.AreEqual("Product", sourceKey.Type);
            Assert.AreEqual(true, converter.TryGetWithoutType(parameters, "Category", "Target", out Int32Key targetKey));
            Assert.AreEqual(6, targetKey.ID);
            Assert.AreEqual("Category", targetKey.Type);
        }