Example #1
0
        public void SetNameOnlyParametersFromObject()
        {
            var collection = new CqlParameterCollection();
            collection.Add("id", CqlType.Int);
            collection.Add("value", CqlType.Text);
            collection.Add("ignored", CqlType.Blob);

            var a = new A {Id = 1, Ignored = new byte[] {1, 2}, Value = "Hello!"};

            collection.Set(a);

            Assert.AreEqual(a.Id, collection["id"].Value);
            Assert.AreEqual(a.Value, collection["value"].Value);
            Assert.IsNull(collection["ignored"].Value);
        }
        public string MakeCqlToExecute(CqlParameterCollection cmdParamCollection)
        {
            cmdParamCollection.EnsureParameterCollectionIsComplete();

            // setup parameter->value dictionary
            var statementParams = _Components.Where(c => c.Type == CommandComponent.ComponentType.Parameter)
                .ToLookup(c => c.Text)
                .Select(c => c.Key);

            var firstParamWoValue = statementParams.FirstOrDefault(sp => !cmdParamCollection.Contains(sp));
            if (firstParamWoValue != null)
                throw new CqlException(string.Format("parameter {0} is not set for command text: {1}", firstParamWoValue, CommandText));

            var paramsWithCqlValues = statementParams.ToDictionary(p => p, p => ((CqlParameter)cmdParamCollection[p]).AsCqlString() );

            var cql = _Components.Select(
                c => c.Type == CommandComponent.ComponentType.Text
                    ? c.Text
                    : paramsWithCqlValues[c.Text]
            ).Aggregate("", (a, b) => a + b);

            return cql;
        }
Example #3
0
        public void SetParametersFromTwoObjects()
        {
            var collection = new CqlParameterCollection();
            collection.Add("test.id", CqlType.Int);
            collection.Add("test.value", CqlType.Text);
            collection.Add("test.ignored", CqlType.Blob);
            collection.Add("test2.id", CqlType.Int);
            collection.Add("test2.value", CqlType.Text);
            collection.Add("test2.value2", CqlType.Blob);
            collection.Fixate();

            var a = new A {Id = 1, Ignored = new byte[] {1, 2}, Value = "Hello!"};
            var b = new B {Id = 2, Value2 = new byte[] {3, 4}, Value = "World!"};

            collection.Set(a);
            collection.Set(b);

            Assert.AreEqual(a.Id, collection["test.id"].Value);
            Assert.AreEqual(a.Value, collection["test.value"].Value);
            Assert.IsNull(collection["test.ignored"].Value);
            Assert.AreEqual(b.Id, collection["test2.id"].Value);
            Assert.AreEqual(b.Value, collection["test2.value"].Value);
            Assert.AreEqual(b.Value2, collection["test2.value2"].Value);
        }
Example #4
0
        public void SetParametersFromAnonymousObject()
        {
            var collection = new CqlParameterCollection
            {
                {"test.id", CqlType.Int},
                {"test.value", CqlType.Text},
                {"test.value2", CqlType.Blob},
                {"test.map", CqlType.CreateType(CqlTypeCode.Map, CqlType.Text, CqlType.Boolean)}
            };
            collection.Fixate();

            var a = new {Id = 1, value2 = new byte[] {1, 2}, Value = "Hello!"};

            collection.Set(a);

            Assert.AreEqual(a.Id, collection["test.id"].Value);
            Assert.AreEqual(a.Value, collection["test.value"].Value);
            Assert.AreEqual(a.value2, collection["test.value2"].Value);
            Assert.IsNull(collection[3].Value);
        }
        public void TestCqlParameterCollection()
        {
            var target = new CqlParameterCollection();

            // test Count
            Assert.AreEqual(0, target.Count);
            var p1 = target.Add("p1", 1);

            Assert.AreEqual(1, target.Count);

            // test SyncRoot
            Assert.IsNotNull(target.SyncRoot);
            Assert.AreEqual(target.SyncRoot, target.SyncRoot);

            // test IsFixedSize
            Assert.IsFalse(target.IsFixedSize);

            // test IsReadOnly
            Assert.IsFalse(target.IsReadOnly);

            // test IsSynchronized
            Assert.IsFalse(target.IsSynchronized);

            // test Add()
            var p2Index = target.Add(new CqlParameter("p2"));

            Assert.AreEqual(2, target.Count);
            Assert.AreEqual(1, p2Index);

            // test Contains()
            var p3 = new CqlParameter("p3");

            Assert.IsTrue(target.Contains(p1));
            Assert.IsFalse(target.Contains(p3));

            // test IndexOf()
            Assert.AreEqual(0, target.IndexOf(p1));

            // test Insert();
            target.Insert(0, p3);
            Assert.AreEqual(0, target.IndexOf(p3));
            Assert.AreEqual(1, target.IndexOf(p1));

            // test Remove()
            var toBeRemove = new CqlParameter("toberemoved");

            target.Add(toBeRemove);
            Assert.IsTrue(target.Contains(toBeRemove));
            target.Remove(toBeRemove);
            Assert.IsFalse(target.Contains(toBeRemove));

            // test RemoveAt()
            target.RemoveAt(0);
            Assert.AreEqual(2, target.Count);
            target.RemoveAt("p2");
            Assert.IsFalse(target.Contains("p2"));

            // test CopyTo()
            var arr = new CqlParameter[1];

            target.CopyTo(arr, 0);
            Assert.AreEqual(arr[0], target[0]);

            // test AddRange()
            var p4p5 = new[] { new CqlParameter("p4"), new CqlParameter("p5") };

            target.AddRange(p4p5);
            Assert.AreEqual(3, target.Count);
            Assert.IsTrue(target.Contains(p4p5[0]));
            Assert.IsTrue(target.Contains(p4p5[1]));

            // test Clear()
            target.Clear();
            Assert.AreEqual(0, target.Count);
        }