private void AssertValue <T>(IDatabaseServices services, string defaultValueName, string defaultValue, object expectedValue)
        {
            var    sqlExecutor = new SQLExecutor(services);
            string sql         = "SELECT " + defaultValue + " o1 FROM DUMMY" + MachineName;
            object result      = sqlExecutor.ExecuteScalar(sql).RuntimeValue <T>();

            AssertEqual(expectedValue, result, string.Format(errorMessageFormat, defaultValueName, sql));
        }
        private static void AssertValues <T>(IDatabaseServices services, string sqlFunctionFragment, T expectedValue)
        {
            var    sqlExecutor = new SQLExecutor(services);
            string sql         = string.Format(SQL_FORMAT, sqlFunctionFragment, MachineName);
            T      result      = sqlExecutor.ExecuteScalar(sql).RuntimeValue <T>();

            AssertEqual(expectedValue, result, string.Format(ERROR_MESSAGE_FORMAT, sqlFunctionFragment, sql));
        }
        public void TestParameterPrefix(DatabaseProviderTestCase tc)
        {
            var    databaseServices = tc.Services;
            var    sqlExecutor      = new SQLExecutor(databaseServices);
            string sql = string.Format("SELECT VAL FROM DUMMY" + MachineName + " WHERE ID = {0}", sqlExecutor.GetParameterName(0, typeof(int)));

            int value = sqlExecutor.ExecuteScalar(sql, 1).RuntimeValue <int>();

            Assert.AreEqual(1, value, "ParameterPrefix didn't work as expected. SQL: " + sql);
        }
        public void TestBinaryDataDefaultValue(DatabaseProviderTestCase tc)
        {
            var databaseServices = tc.Services;
            var sqlExecutor      = new SQLExecutor(databaseServices);
            IDMLDefaultValues dmlDefaultValues = databaseServices.DMLService.DefaultValues;
            string            sql = "SELECT " + dmlDefaultValues.BinaryData + " o1 FROM DUMMY" + MachineName;

            byte[] result = sqlExecutor.ExecuteScalar(sql).RuntimeValue <byte[]>();
            AssertEqual(0, (result ?? new byte[0]).Length, string.Format(errorMessageFormat, "Null", sql));
        }
Пример #5
0
        public void TestEscapeIdentifier(DatabaseProviderTestCase tc)
        {
            var             databaseServices = tc.Services;
            var             sqlExecutor      = new SQLExecutor(databaseServices);
            IDMLIdentifiers dmlIdentifiers   = databaseServices.DMLService.Identifiers;

            string sql   = "SELECT " + dmlIdentifiers.EscapeIdentifier("DUMMY" + MachineName) + "." + dmlIdentifiers.EscapeIdentifier("SELECT") + " FROM " + dmlIdentifiers.EscapeIdentifier("DUMMY" + MachineName);
            int    value = sqlExecutor.ExecuteScalar(sql).RuntimeValue <int>();

            AssertEqual(123, value, "Escape function didn't work as expected. SQL: " + sql);
        }
        private static void AssertValue <T>(IDatabaseServices services, string funcName, string sql, T expectedValue, params object[] parameters)
        {
            var sqlExecutor = new SQLExecutor(services);

            if (parameters.Length != 0)
            {
                sql = string.Format(sql, parameters.Select <object, object>((o, i) => sqlExecutor.GetParameterName(i, o.GetType())).ToArray());
            }
            T result = sqlExecutor.ExecuteScalar(sql, parameters).RuntimeValue <T>();

            AssertEqual(expectedValue, result, string.Format(ERROR_MESSAGE_FORMAT, funcName, string.Join(", ", parameters.Select <object, string>(o => o.ToString()).ToArray()), sql));
        }
Пример #7
0
        public void TestCount(DatabaseProviderTestCase tc)
        {
            var databaseServices = tc.Services;
            var sqlExecutor      = new SQLExecutor(databaseServices);

            IDictionary <StatementPlaceholder, string> countPlaceholders = databaseServices.DMLService.Queries.SQLPlaceholderValuesForCountQuery();
            string beforeStatement = countPlaceholders.GetPlaceholderValueTrimStart(StatementPlaceholder.BeforeStatement);
            string afterStatement  = countPlaceholders.GetPlaceholderValueTrimEnd(StatementPlaceholder.AfterStatement);

            string sql = beforeStatement + "SELECT NAME FROM PERSON" + MachineName + " WHERE " + databaseServices.DMLService.Operators.Equal("1", "1") + afterStatement;

            int count = sqlExecutor.ExecuteScalar(sql).RuntimeValue <int>();

            AssertEqual(3, count, string.Format(ERROR_MESSAGE_FORMAT, "Count", sql));
        }
Пример #8
0
        public void TestListTableSourcesValidateAllQualifiedNames(DatabaseProviderTestCase tc)
        {
            var           databaseServices = tc.Services;
            IDatabaseInfo db = databaseServices.ObjectFactory.CreateDatabaseInfo(GetDatabaseIdentifier(databaseServices));
            IEnumerable <ITableSourceInfo> tableSources = databaseServices.IntrospectionService.ListTableSourcesWithoutFilter(db);

            foreach (var tableSource in tableSources)
            {
                if (tableSource.QualifiedName.ToLowerInvariant().EndsWith(MachineName.ToLowerInvariant()))
                {
                    SQLExecutor sqlExecutor = new SQLExecutor(databaseServices);
                    string      sql         = "SELECT COUNT(*) FROM " + tableSource.QualifiedName;
                    Scalar      result      = sqlExecutor.ExecuteScalar(sql);
                    Assert.IsTrue(result.Value <int>() >= 0, "Error counting the rows of table source '" + tableSource.Name + "' using the SQL: " + sql);
                }
            }
        }
        private void InnerGetEntity(IDatabaseServices databaseServices, IDictionary <SelectPlaceholder, string> getPlaceholders, bool forUpdate)
        {
            string beforeStatement = getPlaceholders.GetPlaceholderValueTrimStart(SelectPlaceholder.BeforeStatement);
            string afterSelect     = getPlaceholders.GetPlaceholderValueTrimStart(SelectPlaceholder.AfterSelectKeyword);
            string beforeFrom      = getPlaceholders.GetPlaceholderValueTrimStart(SelectPlaceholder.BeforeFromKeyword);
            string afterFrom       = getPlaceholders.GetPlaceholderValueTrimStart(SelectPlaceholder.AfterFromKeyword);
            string beforeWhere     = getPlaceholders.GetPlaceholderValueTrimStart(SelectPlaceholder.BeforeWhereKeyword);
            string afterWhere      = getPlaceholders.GetPlaceholderValueTrimStart(SelectPlaceholder.AfterWhereKeyword);
            string afterStatement  = getPlaceholders.GetPlaceholderValueTrimEnd(SelectPlaceholder.AfterStatement);

            string sql = beforeStatement + "SELECT " + afterSelect + "ID " + beforeFrom + "FROM " + afterFrom + "DUMMY" + MachineName + " " +
                         beforeWhere + "WHERE " + afterWhere + databaseServices.DMLService.Operators.Equal("ID", "1") + afterStatement;

            var sqlExecutor = new SQLExecutor(databaseServices);
            int returnedId  = sqlExecutor.ExecuteScalar(sql).RuntimeValue <int>();
            int expectedId  = 1;

            AssertEqual(expectedId, returnedId, string.Format(errorMessageFormat, (forUpdate ? "GetEntityForUpdate" : "GetEntity"), sql));
        }
Пример #10
0
        public void TestGetValidIdentifier(DatabaseProviderTestCase tc)
        {
            var             databaseServices = tc.Services;
            var             sqlExecutor      = new SQLExecutor(databaseServices);
            IDMLIdentifiers dmlIdentifiers   = databaseServices.DMLService.Identifiers;
            string          paramPrefix      = databaseServices.ExecutionService.ParameterPrefix;
            string          param            = "";

            for (int i = 0; i < dmlIdentifiers.MaxLength - 1; i++)
            {
                param += "m";
            }
            string paramName       = dmlIdentifiers.GetValidIdentifier("inparam" + param, true);
            string parameterForSQL = paramPrefix + paramName;
            string sql             = string.Format("SELECT {0} FROM DUMMY" + MachineName, parameterForSQL);

            int value = sqlExecutor.ExecuteScalar(sql, (i, t) => paramPrefix + paramName, 1).RuntimeValue <int>();

            AssertEqual(1, value, "GetValidIdentifier didn't work as expected. SQL: " + sql);
        }