public void RawListOfUnspecifiedExplicitTypes() { var values = new[] { Col.Decimal(5.27m) }; var yielder = new StructuredDynamicYielder(values); Assert.Throws <TypePropertiesMustBeSetExplicitlyException>(() => yielder.ToList()); }
public void RawListOfDifferentExplicitTypes() { var values = new object[] { Col.Decimal(5.27m, 5, 2), Col.SmallMoney(5.27m) }; var yielder = new StructuredDynamicYielder(values); Assert.Throws <StructuredTypeMismatchException>(() => yielder.ToList()); }
public void RawListOfExplicitTypes() { var values = new[] { Col.Decimal(5.27m, 5, 2), Col.Decimal(null) }; var yielder = new StructuredDynamicYielder(values); int counter = 0; foreach (var value in yielder) { counter++; if (counter == 1) { Assert.AreEqual(SqlDbType.Decimal, value.GetSqlMetaData(0).SqlDbType); Assert.AreEqual(5, value.GetSqlMetaData(0).Precision); Assert.AreEqual(2, value.GetSqlMetaData(0).Scale); Assert.AreEqual(typeof(decimal), value.GetValue(0).GetType()); Assert.AreEqual(5.27m, value.GetValue(0)); } else { Assert.AreEqual(SqlDbType.Decimal, value.GetSqlMetaData(0).SqlDbType); Assert.AreEqual(5, value.GetSqlMetaData(0).Precision); Assert.AreEqual(2, value.GetSqlMetaData(0).Scale); Assert.AreEqual(DBNull.Value, value.GetValue(0)); } } Assert.AreEqual(2, counter); }
public void RawListOfDifferingSpecification() { // While this is bad pracice, the first definition will win var values = new[] { Col.Decimal(5.27m, 5, 2), Col.Decimal(5.27m, 6, 1) }; var yielder = new StructuredDynamicYielder(values); Assert.DoesNotThrow(() => yielder.ToList()); }
public void StructuredDynamicYielder() { var result = new StructuredDynamicYielder(new[] { new { A = Col.Decimal(5.27m, 10, 5), B = Col.Decimal(null, 10, 5) } }).First(); Assert.AreEqual(2, result.FieldCount); Assert.AreEqual(typeof(decimal), result.GetValue(0).GetType()); Assert.AreEqual(5.27m, result.GetValue(0)); Assert.AreEqual(DBNull.Value, result.GetValue(1)); }
public void ParameterValue() { var param = Col.Decimal(5.25m); decimal?x; Assert.Throws <CannotAccessParameterValueBeforeExecutingQuery>(() => x = param.Value); DB.Execute("SELECT @A", new { A = param }); Assert.AreEqual(5.25m, param.Value); }
public void Structured() { var rows = DB.GetRows("SELECT * FROM @Input", new { Input = Col.Structured("ListOfDecimals", new[] { new { A = Col.Decimal(5.27m, 10, 5) }, new { A = Col.Decimal(null, 10, 5) } }) }); Assert.AreEqual(2, rows.Count); Assert.AreEqual(typeof(decimal), rows[0].A.GetType()); Assert.AreEqual(5.27m, rows[0].A); Assert.AreEqual(null, rows[1].A); }
public void MixedTypes() { var cmd = new SqlCommand(); db.AddParametersToCommand(cmd.Parameters, new { A = true, B = Col.Bit(false), C = new SqlSmallInt(null, ParameterDirection.Input), D = new SqlInt(5, ParameterDirection.Input), E = Col.VarChar("Test", 10), F = (bool?)null, G = 5L, H = (int?)null, I = (short)2, J = Col.Decimal(5.27m, 6, 2), K = (Guid?)null }); Assert.AreEqual(11, cmd.Parameters.Count); }
public void Factory() { Assert.IsInstanceOf <SqlDecimal>(Col.Decimal(5.27m, 10, 5)); Assert.IsInstanceOf <SqlDecimal>(Col.Decimal(5.27m)); }
public void SqlTypes() { var cmd = new SqlCommand(); db.AddParametersToCommand(cmd.Parameters, new { A = Col.Int(25), B = Col.Bit(true), C = Col.Bit(null), D = Col.Decimal(5.27m), E = Col.Decimal(5.27m, 6, 4), F = Col.NVarChar("Hello"), G = Col.NVarChar("Hello", 128), H = Col.NVarChar(null, 128) }); Assert.AreEqual(8, cmd.Parameters.Count); Assert.AreEqual(SqlDbType.Int, cmd.Parameters[0].SqlDbType); Assert.AreEqual(typeof(int), cmd.Parameters[0].Value.GetType()); Assert.AreEqual("@A", cmd.Parameters[0].ParameterName); Assert.AreEqual(25, cmd.Parameters[0].Value); Assert.AreEqual(SqlDbType.Bit, cmd.Parameters[1].SqlDbType); Assert.AreEqual(typeof(bool), cmd.Parameters[1].Value.GetType()); Assert.AreEqual("@B", cmd.Parameters[1].ParameterName); Assert.AreEqual(true, cmd.Parameters[1].Value); Assert.AreEqual(SqlDbType.Bit, cmd.Parameters[2].SqlDbType); Assert.AreEqual("@C", cmd.Parameters[2].ParameterName); Assert.AreEqual(DBNull.Value, cmd.Parameters[2].Value); Assert.AreEqual(SqlDbType.Decimal, cmd.Parameters[3].SqlDbType); Assert.AreEqual(typeof(decimal), cmd.Parameters[3].Value.GetType()); Assert.AreEqual("@D", cmd.Parameters[3].ParameterName); Assert.AreEqual(5.27m, cmd.Parameters[3].Value); Assert.AreEqual(3, cmd.Parameters[3].Precision); Assert.AreEqual(2, cmd.Parameters[3].Scale); Assert.AreEqual(SqlDbType.Decimal, cmd.Parameters[4].SqlDbType); Assert.AreEqual(typeof(decimal), cmd.Parameters[4].Value.GetType()); Assert.AreEqual("@E", cmd.Parameters[4].ParameterName); Assert.AreEqual(5.27m, cmd.Parameters[4].Value); Assert.AreEqual(6, cmd.Parameters[4].Precision); Assert.AreEqual(4, cmd.Parameters[4].Scale); Assert.AreEqual(SqlDbType.NVarChar, cmd.Parameters[5].SqlDbType); Assert.AreEqual(typeof(string), cmd.Parameters[5].Value.GetType()); Assert.AreEqual("@F", cmd.Parameters[5].ParameterName); Assert.AreEqual("Hello", cmd.Parameters[5].Value); Assert.AreEqual(64, cmd.Parameters[5].Size); Assert.AreEqual(SqlDbType.NVarChar, cmd.Parameters[6].SqlDbType); Assert.AreEqual(typeof(string), cmd.Parameters[6].Value.GetType()); Assert.AreEqual("@G", cmd.Parameters[6].ParameterName); Assert.AreEqual("Hello", cmd.Parameters[6].Value); Assert.AreEqual(128, cmd.Parameters[6].Size); Assert.AreEqual(SqlDbType.NVarChar, cmd.Parameters[7].SqlDbType); Assert.AreEqual("@H", cmd.Parameters[7].ParameterName); Assert.AreEqual(DBNull.Value, cmd.Parameters[7].Value); Assert.AreEqual(128, cmd.Parameters[7].Size); }