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; }
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); }
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); }