Ejemplo n.º 1
0
        public static void ConstructorATest(DBDataSettingType type, DBKind dbKind, TypeId?typeId,
                                            bool isError)
        {
            DBType instance = null;

            var errorOccured = false;

            try
            {
                instance = new DBType(type, dbKind, typeId);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること
            Assert.AreEqual(errorOccured, isError);

            if (errorOccured)
            {
                return;
            }

            // 各プロパティがセットした値と一致すること
            Assert.AreEqual(instance.DataSettingType, type);
            if (type == DBDataSettingType.DesignatedType)
            {
                Assert.NotNull(dbKind);
                Assert.AreEqual(instance.DBKind, dbKind);
                Assert.NotNull(typeId);
                Assert.AreEqual(instance.TypeId, typeId.Value);
            }
        }
        /// <summary>
        /// タイプ名を指定してタイプIDを取得する。
        /// </summary>
        /// <param name="dbKind">[NotNull] DB種別</param>
        /// <param name="name">[NotNull] タイプ名</param>
        /// <returns>タイプID。見つからない場合null。</returns>
        /// <exception cref="ArgumentNullException">dbKind または name が null の場合</exception>
        public (int?, string) GetDatabaseTypeId(DBKind dbKind, string name)
        {
            if (dbKind is null)
            {
                throw new ArgumentNullException(
                          ErrorMessage.NotNull(nameof(dbKind)));
            }
            if (name is null)
            {
                throw new ArgumentNullException(
                          ErrorMessage.NotNull(nameof(name)));
            }

            var refer = GetDatabaseRefer(dbKind);

            var searchTypeId = -1;

            for (var i = 0; i < refer.TypeDescList.Count; i++)
            {
                if (refer.TypeDescList[i].TypeName.Equals(name))
                {
                    searchTypeId = i;
                    break;
                }
            }

            if (searchTypeId == -1)
            {
                return(null, TargetIdNotFound);
            }

            return(searchTypeId, searchTypeId.ToString());
        }
Ejemplo n.º 3
0
        /// <summary>
        /// データIDの設定方法
        /// </summary>
        /// <param name="status">読み込み経過状態</param>
        /// <param name="setting">結果格納インスタンス</param>
        private void ReadDataSettingType(FileReadStatus status, DBDataSetting setting)
        {
            var typeCode = status.ReadInt();

            status.IncreaseIntOffset();

            var settingType = DBDataSettingType.FromValue(typeCode);

            Logger.Debug(FileIOMessage.SuccessRead(typeof(DBDataSettingReader),
                                                   "データID設定方法", settingType));

            // 「指定DBの指定タイプ」の場合、DB種別とタイプIDを取り出す
            DBKind dbKind = null;
            TypeId typeId = 0;

            if (settingType == DBDataSettingType.DesignatedType)
            {
                dbKind = DbKindFromSettingTypeCode(typeCode);

                Logger.Debug(FileIOMessage.SuccessRead(typeof(DBDataSettingReader),
                                                       "DB種別", dbKind));

                typeId = TypeIdFromSettingTypeCode(typeCode);

                Logger.Debug(FileIOMessage.SuccessRead(typeof(DBDataSettingReader),
                                                       "タイプID", typeId));
            }

            setting.SetDataSettingType(settingType, dbKind, typeId);
        }
Ejemplo n.º 4
0
        public static void SetDatabaseReferTest(DBKind dbKind, int dbTypeId)
        {
            var typeId = (TypeId)dbTypeId;

            var instance            = new CommonEventSpecialNumberArgDesc.InnerDescNormal();
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            var errorOccured = false;

            try
            {
                instance.SetDatabaseRefer(dbKind, typeId);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーが発生すること
            Assert.IsTrue(errorOccured);

            // プロパティ変更通知が発火していないこと
            Assert.AreEqual(changedPropertyList.Count, 0);
        }
        public static void WriteSyncTest(DatabaseMergedData outputDat, DBKind dbKind)
        {
            DatabaseMergedDataWriter writer = null;

            if (dbKind == DBKind.User)
            {
                var datFilePath =
                    (ChangeableDatabaseDatFilePath)
                    $@"{DatabaseMergedDataTestItemGenerator.TestWorkRootDir}\DatabaseMergedDataWriterTest\CDatabase.dat";
                var projectFilePath =
                    (ChangeableDatabaseProjectFilePath)
                    $@"{DatabaseMergedDataTestItemGenerator.TestWorkRootDir}\DatabaseMergedDataWriterTest\CDatabase.project";
                writer = new DatabaseMergedDataWriter(outputDat, datFilePath, projectFilePath);
            }
            else if (dbKind == DBKind.System)
            {
                var datFilePath =
                    (ChangeableDatabaseDatFilePath)
                    $@"{DatabaseMergedDataTestItemGenerator.TestWorkRootDir}\DatabaseMergedDataWriterTest\SysDatabase.dat";
                var projectFilePath =
                    (ChangeableDatabaseProjectFilePath)
                    $@"{DatabaseMergedDataTestItemGenerator.TestWorkRootDir}\DatabaseMergedDataWriterTest\SysDatabase.project";
                writer = new DatabaseMergedDataWriter(outputDat, datFilePath, projectFilePath);
            }
            else if (dbKind == DBKind.Changeable)
            {
                var datFilePath =
                    (ChangeableDatabaseDatFilePath)
                    $@"{DatabaseMergedDataTestItemGenerator.TestWorkRootDir}\DatabaseMergedDataWriterTest\CDatabase.dat";
                var projectFilePath =
                    (ChangeableDatabaseProjectFilePath)
                    $@"{DatabaseMergedDataTestItemGenerator.TestWorkRootDir}\DatabaseMergedDataWriterTest\CDatabase.project";
                writer = new DatabaseMergedDataWriter(outputDat, datFilePath, projectFilePath);
            }

            Assert.NotNull(writer);

            var isSuccess    = false;
            var errorMessage = "";

            try
            {
                writer.WriteSync();
                isSuccess = true;
            }
            catch (Exception e)
            {
                errorMessage = e.Message;
            }

            // 出力成功すること
            if (!isSuccess)
            {
                throw new InvalidOperationException(
                          $"Error message: {errorMessage}");
            }

            Assert.True(true);
        }
 public IDbConnection GetConnection(DBKind dbKind, string connectionString, string schema)
 {
     try {
         return(GetConnection(dbKind, new ConnectionString(connectionString), schema));
     } catch (InvalidDatabaseAccessException e) {
         throw new InvalidDBTransactionManagerAccess(e.Message);
     }
 }
 public IDbConnection GetConnection(DBKind dbKind, ConnectionString connectionString, string schema)
 {
     try {
         return(AdaptersUtils.GetDatabaseServices(dbKind, connectionString, schema).TransactionService.CreateConnection());
     } catch (InvalidDatabaseAccessException e) {
         throw new InvalidDBTransactionManagerAccess(e.Message);
     }
 }
 public static IDataReader ExecuteStoredProcedure(IDbCommand cmd, DBKind dbKind, string readerVarName)
 {
     try {
         return(ExecuteStoredProcedure(cmd, dbKind, readerVarName, false));
     } catch (InvalidDatabaseAccessException e) {
         throw new InvalidDBTransactionManagerAccess(e.Message);
     }
 }
        public static string CreateONSConfig(DBKind dbKind, string dbServerScan, string onsPort)
        {
            if (onsPort == null)
            {
                return(null);
            }

            return("nodes=" + dbServerScan + ":" + onsPort);
        }
Ejemplo n.º 10
0
        internal static IPlatformDatabaseServices GetDatabaseServices(DBKind dbKind, ConnectionString connectionString, string schema)
        {
            var pluginProvider = new DatabasePluginProvider <IPlatformDatabaseProvider>(GetDatabasePluginsPath());
            var provider       = pluginProvider.GetImplementation(DatabaseProviderKey.Deserialize(dbKind.ToString()));

            var databaseConfiguration = CreateDatabaseConfiguration(provider, connectionString.GetConnectionString(),
                                                                    connectionString.GetOnsConfig(), String.Empty, schema);

            return(provider.GetPlatformDatabaseServices(databaseConfiguration));
        }
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
        //     Public Property
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="filePath">読み込みファイルパス</param>
        /// <param name="dbKind">読み込みDB種別</param>
        /// <exception cref="ArgumentNullException">filePath, dbKindがnullの場合</exception>
        public DatabaseProjectFileReader(DatabaseProjectFilePath filePath, DBKind dbKind) : base(filePath)
        {
            if (dbKind is null)
            {
                throw new ArgumentNullException(
                          ErrorMessage.NotNull(nameof(dbKind)));
            }

            DBKind     = dbKind;
            ReadStatus = new FileReadStatus(FilePath);
        }
 public static IDataReader ExecuteStoredProcedure(IDbCommand command, DBKind dbKind, string readerVarName, bool skipLog)
 {
     try {
         IDbCommand cmd = ADOAdaptersUtils.GetADOCommand(command);
         TransformParameters(cmd);
         IDataReader reader = GetExecutionForKind(dbKind).ExecuteStoredProcedureWithResultSet(cmd, readerVarName);
         DatabaseAccess.GetProviderForTransaction(cmd.Transaction).TransactionManager.AssociateReader(cmd.Transaction, reader);
         return(reader);
     } catch (InvalidDatabaseAccessException e) {
         throw new InvalidDBTransactionManagerAccess(e.Message);
     }
 }
Ejemplo n.º 13
0
        public static void GetAllSpecialCaseNumberTest(DBKind dbKind, int dbTypeId, bool isUseAddition,
                                                       int answerCaseNumberLength, int answerDbTypeCode, int answerUseAdditionValue)
        {
            var instance = new CommonEventSpecialNumberArgDesc.InnerDescDatabase();

            instance.SetDatabaseRefer(dbKind, dbTypeId);
            instance.SetDatabaseUseAdditionalItemsFlag(isUseAddition);
            var changedDescPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedDescPropertyList.Add(args.PropertyName); };
            var changedSpecialArgCaseListPropertyList = new List <string>();

            instance.SpecialArgCaseList.PropertyChanged += (sender, args) =>
            {
                changedSpecialArgCaseListPropertyList.Add(args.PropertyName);
            };
            var changedSpecialArgCaseListCollectionArgList = new List <NotifyCollectionChangedEventArgs>();

            instance.SpecialArgCaseList.CollectionChanged += (sender, args) =>
            {
                changedSpecialArgCaseListCollectionArgList.Add(args);
            };

            var errorOccured = false;

            try
            {
                instance.GetAllSpecialCaseNumber();
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーが発生しないこと
            Assert.IsFalse(errorOccured);

            // 意図した値が取得できること
            var caseNumberList = instance.GetAllSpecialCaseNumber();

            Assert.AreEqual(caseNumberList.Count, answerCaseNumberLength);

            Assert.AreEqual(caseNumberList[0], answerDbTypeCode);
            Assert.AreEqual(caseNumberList[1], dbTypeId);
            Assert.AreEqual(caseNumberList[2], answerUseAdditionValue);

            // プロパティ変更通知が発火していないこと
            Assert.AreEqual(changedDescPropertyList.Count, 0);
            Assert.AreEqual(changedSpecialArgCaseListPropertyList.Count, 0);
            Assert.AreEqual(changedSpecialArgCaseListCollectionArgList.Count, 0);
        }
        internal static IPlatformDatabaseServices GetDatabaseServicesForKind(DBKind kind)
        {
            switch (kind)
            {
            case DBKind.Oracle:
                return(dummyDatabaseServicesForOracle);

            case DBKind.SqlServer:
                return(dummyDatabaseServicesForSQLServer);
            }

            throw new InvalidOperationException();
        }
Ejemplo n.º 15
0
        public static void SetDataSettingTypeTest(DBDataSettingType settingType, DBKind dbKind,
                                                  TypeId?typeId, bool isError)
        {
            var instance            = CreateTypeDesc(1, 0);
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            var errorOccured = false;

            try
            {
                instance.SetDataSettingType(settingType, dbKind, typeId);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること
            Assert.AreEqual(errorOccured, isError);

            if (!errorOccured)
            {
                // 各プロパティが意図した値と一致すること
                Assert.AreEqual(instance.DataSettingType, settingType);

                if (settingType != DBDataSettingType.DesignatedType)
                {
                    return;
                }
                Assert.NotNull(typeId);

                Assert.AreEqual(instance.DBKind, dbKind);
                Assert.AreEqual(instance.TypeId, typeId.Value);
            }

            // 意図したとおりプロパティ変更通知が発火していること
            if (errorOccured)
            {
                Assert.AreEqual(changedPropertyList.Count, 0);
            }
            else
            {
                Assert.AreEqual(changedPropertyList.Count, 3);
                Assert.IsTrue(changedPropertyList[0].Equals(nameof(DatabaseTypeDesc.DataSettingType)));
                Assert.IsTrue(changedPropertyList[1].Equals(nameof(DatabaseTypeDesc.DBKind)));
                Assert.IsTrue(changedPropertyList[2].Equals(nameof(DatabaseTypeDesc.TypeId)));
            }
        }
        /// <summary>
        /// タイプID、データ名を指定してデータIDを取得する。
        /// </summary>
        /// <param name="dbKind">[NotNull] DB種別</param>
        /// <param name="typeId">タイプID</param>
        /// <param name="dataName">[NotNull] データ名</param>
        /// <returns>
        ///     データID。
        ///     データが見つからない場合、null。
        /// </returns>
        /// <exception cref="ArgumentNullException">dbKind または dataName が null の場合</exception>
        public (int?, string) GetDatabaseDataId(DBKind dbKind, int?typeId,
                                                string dataName)
        {
            if (dbKind is null)
            {
                throw new ArgumentNullException(
                          ErrorMessage.NotNull(nameof(dbKind)));
            }
            if (dataName is null)
            {
                throw new ArgumentNullException(
                          ErrorMessage.NotNull(nameof(dataName)));
            }

            if (typeId is null)
            {
                return(null, DatabaseDataNotFound);
            }

            if (typeId.Value.IsVariableAddressSimpleCheck())
            {
                return(null, TargetIdNotFound);
            }

            var refer = GetDatabaseRefer(dbKind);

            var typeDescList = refer.TypeDescList;

            if (typeId.Value < 0 || typeDescList.Count <= typeId.Value)
            {
                return(null, DatabaseDataNotFound);
            }
            var targetTypeDesc = typeDescList[typeId.Value];

            var targetDataDesc = targetTypeDesc.DataDescList
                                 .Select((x, idx) => (idx, x.DataName))
                                 .FirstOrDefault(y => y.DataName.Equals(dataName));

            if (targetDataDesc == default((int, DataName)))
            {
                return(null, TargetIdNotFound);
            }

            return(targetDataDesc.idx, targetDataDesc.idx.ToString());
        }
Ejemplo n.º 17
0
        public object ExecuteScalar(string Query, DBKind kind)
        {
            object res;

            using (var cmd = GetCommand(Query, kind))
            {
                try
                {
                    cmd.Connection.Open();
                    res = cmd.ExecuteScalar();
                }
                finally
                {
                    cmd.Connection.Close();
                }
            }
            return(res);
        }
Ejemplo n.º 18
0
        public static void ConstructorBTest(DBDataSettingType type, DBKind dbKind,
                                            TypeId?typeId, bool isError)
        {
            var errorOccured = false;

            try
            {
                var _ = new DBDataSetting(type, dbKind, typeId);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること
            Assert.AreEqual(errorOccured, isError);
        }
        protected TestServerFixture(string relativeTargetProjectParentDir)
        {
            var startupAssembly = typeof(TStartup).GetTypeInfo().Assembly;
            var contentRoot     = GetProjectPath(relativeTargetProjectParentDir, startupAssembly);

            Directory.SetCurrentDirectory(contentRoot);

            var builder = new WebHostBuilder()
                          .UseContentRoot(contentRoot)
                          .ConfigureServices(InitializeServices)
                          .UseEnvironment("Development")
                          .UseStartup(typeof(TStartup))
                          //.UseApplicationInsights()
            ;

            _server = new TestServer(builder);

            Client             = _server.CreateClient();
            Client.BaseAddress = new Uri("http://localhost");

            var configuration = _server.Host.Services.GetService(typeof(IConfiguration)) as IConfiguration;

            AppRootPath    = configuration?["AppRootPath"];
            DBKind         = configuration?["DBKind"];
            ImageDirectory = configuration?["ImageDirectory"];
            LiveWebCamURL  = configuration?["LiveWebCamURL"];

            string temp = Environment.GetEnvironmentVariable("DOTNET_RUNNING_IN_CONTAINER");

            DOTNET_RUNNING_IN_CONTAINER = !string.IsNullOrEmpty(temp) && temp.Equals(true.ToString(), StringComparison.InvariantCultureIgnoreCase);
            //Console.WriteLine($"### temp = {temp}, DOTNET_RUNNING_IN_CONTAINER = {DOTNET_RUNNING_IN_CONTAINER}");

            var db = _server.Host.Services.GetRequiredService <EFGetStarted.AspNetCore.ExistingDb.Models.BloggingContext>();

            if (DBKind.Equals("sqlite", StringComparison.InvariantCultureIgnoreCase))
            {
                db.Database.Migrate();
            }
            else
            {
                db.Database.EnsureCreated();
            }
        }
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
        //     Private Method
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

        /// <summary>
        /// DBマージデータの参照を取得する。
        /// </summary>
        /// <param name="dbKind">[NotNull] DB種別</param>
        /// <returns>DBマージデータ</returns>
        /// <exception cref="InvalidOperationException">意図しない処理の場合</exception>
        private DatabaseMergedData GetDatabaseRefer(DBKind dbKind)
        {
            if (dbKind == DBKind.Changeable)
            {
                return(Master.ChangeableDatabase);
            }

            if (dbKind == DBKind.User)
            {
                return(Master.UserDatabase);
            }

            if (dbKind == DBKind.System)
            {
                return(Master.SystemDatabase);
            }

            // 通常ここへは来ない
            throw new InvalidOperationException();
        }
        public static string CreateConnectionStringDotNet(DBKind dbKind, string server, string database, DBAuthenticationType dbAuthType, string user,
                                                          string password)
        {
            string connFormat = null;

            switch (dbAuthType)
            {
            case DBAuthenticationType.IntegratedAuth:
                connFormat = IntegratedAuthPart;
                //Windows Authentication with dbKind == DBKind.Oracle is currently UNTESTED and UNSUPPORTED
                break;

            case DBAuthenticationType.DBAuth:
                connFormat = DBAuthPart;
                break;

            default:
                throw (new InvalidOperationException("Unknown Authentication Type : " + dbAuthType));
            }

            switch (dbKind)
            {
            case DBKind.SqlServer:
                connFormat += (database == null ? ConnString_MSSQL_NoDB : ConnString_MSSQL);
                break;

            case DBKind.Oracle:
                connFormat += ConnString_Oracle;
                break;

            default:
                throw (new InvalidOperationException("Unknown Database Kind : " + dbKind));
            }


            var sqlConnectionStringBuilder = new SqlConnectionStringBuilder();

            sqlConnectionStringBuilder["password"] = password ?? string.Empty;
            password = sqlConnectionStringBuilder.ConnectionString.Substring("Password=".Length);
            return(string.Format(connFormat, user, password, server, database));
        }
        public static string CreateConnectionStringJava(DBKind dbKind, DBDatasourceKind datasourceType, string datasource, string dbServer, string dbPort, string user, string password)
        {
#if !JAVA
            throw new InvalidOperationException();
#else
            switch (datasourceType)
            {
            case DBDatasourceKind.Sid:
                return(string.Format(ConnString_OracleJDBC_SID, user, password, dbServer, dbPort, datasource));

            case DBDatasourceKind.ServiceName:
                return(string.Format(ConnString_OracleJDBC_ServiceName, user, password, dbServer, dbPort, datasource));

            case DBDatasourceKind.TnsName:
                return(string.Format(ConnString_OracleJDBC_TnsName, user, password, datasource));

            default:
                throw new InvalidOperationException("Invalid datasource type: " + datasourceType.ToString());
            }
#endif
        }
Ejemplo n.º 23
0
        /// <summary>
        /// データIDの設定方法
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="setting">結果格納インスタンス</param>
        private void ReadDataSettingType(BinaryReadStatus readStatus, DBDataSetting setting)
        {
            var typeCode = readStatus.ReadInt();

            readStatus.IncreaseIntOffset();

            var settingType = DBDataSettingType.FromValue(typeCode);

            // 「指定DBの指定タイプ」の場合、DB種別とタイプIDを取り出す
            DBKind dbKind = null;
            TypeId typeId = 0;

            if (settingType == DBDataSettingType.DesignatedType)
            {
                dbKind = DbKindFromSettingTypeCode(typeCode);

                typeId = TypeIdFromSettingTypeCode(typeCode);
            }

            setting.SetDataSettingType(settingType, dbKind, typeId);
        }
Ejemplo n.º 24
0
        public static void GenerateDatabaseDatTest(int listLength, DBKind dbKind)
        {
            var typeSettingList     = CreateTypeSettingList(listLength);
            var dataSettingList     = CreateDataSettingList(listLength);
            var instance            = new DatabaseMergedData(typeSettingList, dataSettingList);
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            DatabaseDat result       = null;
            var         errorOccured = false;

            try
            {
                result = instance.GenerateDatabaseDat(dbKind);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーが発生しないこと
            Assert.IsFalse(errorOccured);

            // データ数が正しいこと
            Assert.AreEqual(result.SettingList.Count, listLength);
            // DB種別が一致すること
            Assert.AreEqual(result.DBKind, dbKind);

            for (var i = 0; i < listLength; i++)
            {
                // 内容が一致すること
                Assert.AreEqual(result.SettingList[i].TypeId, dataSettingList[i].TypeId);
            }

            // プロパティ変更通知が発火していないこと
            Assert.AreEqual(changedPropertyList.Count, 0);
        }
        /// <summary>
        /// タイプID、項目IDを指定してDBの項目名を取得する。
        /// </summary>
        /// <param name="dbKind">[NotNull] DB種別</param>
        /// <param name="typeId">タイプID</param>
        /// <param name="itemId">項目ID</param>
        /// <returns>
        ///     存在フラグと項目名。
        ///     存在しない場合、専用の文字列。
        ///     itemId が変数アドレス値の場合、専用の文字列。
        /// </returns>
        /// <exception cref="ArgumentNullException">dbKindがnullの場合</exception>
        public (bool, string) GetDatabaseItemName(DBKind dbKind, int?typeId,
                                                  int itemId)
        {
            if (dbKind is null)
            {
                throw new ArgumentNullException(
                          ErrorMessage.NotNull(nameof(dbKind)));
            }

            if (typeId is null)
            {
                return(false, DatabaseDataNotFound);
            }

            if (itemId.IsVariableAddressSimpleCheck())
            {
                return(true, TargetIdVariableAddress);
            }

            var refer = GetDatabaseRefer(dbKind);

            var typeDescList = refer.TypeDescList;

            if (typeId.Value < 0 || typeDescList.Count <= typeId.Value)
            {
                return(false, DatabaseDataNotFound);
            }
            var typeDesc = typeDescList[typeId.Value];

            var itemDescList = typeDesc.ItemDescList;

            if (itemId < 0 || itemDescList.Count <= itemId)
            {
                return(false, DatabaseDataNotFound);
            }

            return(true, itemDescList[itemId].ItemName);
        }
Ejemplo n.º 26
0
        public static void SetDatabaseReferTest(DBKind dbKind, int dbTypeId, bool isError)
        {
            var typeId = (TypeId)dbTypeId;

            var instance            = new CommonEventSpecialNumberArgDesc.InnerDescDatabase();
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            var errorOccured = false;

            try
            {
                instance.SetDatabaseRefer(dbKind, typeId);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること
            Assert.AreEqual(errorOccured, isError);

            // 意図したとおりプロパティ変更通知が発火していること
            if (isError)
            {
                Assert.AreEqual(changedPropertyList.Count, 0);
            }
            else
            {
                Assert.AreEqual(changedPropertyList.Count, 2);
                Assert.IsTrue(changedPropertyList[0]
                              .Equals(nameof(CommonEventSpecialNumberArgDesc.InnerDescDatabase.DatabaseUseDbKind)));
                Assert.IsTrue(changedPropertyList[1]
                              .Equals(nameof(CommonEventSpecialNumberArgDesc.InnerDescDatabase.DatabaseDbTypeId)));
            }
        }
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
        //     Public Method
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

        /// <summary>
        /// タイプIDを指定してDBのタイプ名を取得する。
        /// </summary>
        /// <param name="dbKind">[NotNull] DB種別</param>
        /// <param name="id">タイプID</param>
        /// <returns>
        ///     存在フラグとタイプ名。
        ///     存在しない場合、nullであれば専用の文字列。
        ///     id が変数アドレス値の場合、専用の文字列。
        /// </returns>
        /// <exception cref="ArgumentNullException">dbKindがnullの場合</exception>
        public (bool, string) GetDatabaseTypeName(DBKind dbKind, int id)
        {
            if (dbKind is null)
            {
                throw new ArgumentNullException(
                          ErrorMessage.NotNull(nameof(dbKind)));
            }

            if (id.IsVariableAddressSimpleCheck())
            {
                return(true, TargetIdVariableAddress);
            }

            var refer = GetDatabaseRefer(dbKind);

            var typeDescList = refer.TypeDescList;

            if (id < 0 || typeDescList.Count <= id)
            {
                return(false, DatabaseDataNotFound);
            }

            return(true, typeDescList[id].TypeName);
        }
Ejemplo n.º 28
0
        public static void DBKindGetterTest(DBDataSettingType type, bool isError)
        {
            var answer = DBKind.User;

            var typeSetting         = new DBTypeSetting();
            var dataSetting         = new DBDataSetting(type, answer, 0);
            var instance            = new DatabaseTypeDesc(typeSetting, dataSetting);
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            DBKind result       = null;
            var    errorOccured = false;

            try
            {
                result = instance.DBKind;
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること
            Assert.AreEqual(errorOccured, isError);

            if (!errorOccured)
            {
                // 取得した結果が意図した値であること
                Assert.AreEqual(result, answer);
            }

            // プロパティ変更通知が発火していないこと
            Assert.AreEqual(changedPropertyList.Count, 0);
        }
Ejemplo n.º 29
0
        private CommonEventSpecialNumberArgDesc UpdateSpecialNumberArgDesc_MakeDescForReferDatabase(
            CommonEventArgType type,
            string argName, int initValue, List <int> numberArgList, List <string> stringArgList)
        {
            var caseList = new List <CommonEventSpecialArgCase>();

            for (var j = 0; j < stringArgList.Count; j++)
            {
                var argCase = new CommonEventSpecialArgCase(-1 * (j + 1), stringArgList[j]);
                caseList.Add(argCase);
            }

            var desc = new CommonEventSpecialNumberArgDesc
            {
                ArgName   = argName,
                InitValue = initValue
            };

            desc.ChangeArgType(type, caseList);
            desc.SetDatabaseRefer(DBKind.FromSpecialArgCode(numberArgList[0]), numberArgList[1]);
            desc.SetDatabaseUseAdditionalItemsFlag(numberArgList[2] == 1);

            return(desc);
        }
Ejemplo n.º 30
0
        public static void SetDataSettingTypeTest(DBDataSettingType type,
                                                  DBKind dbKind, TypeId?typeId, bool isError)
        {
            var instance            = MakeInstance(DBDataSettingType.Manual);
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            var errorOccured = false;

            try
            {
                instance.SetDataSettingType(type, dbKind, typeId);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること
            Assert.AreEqual(errorOccured, isError);

            // 意図したとおりプロパティ変更通知が発火していること
            if (errorOccured)
            {
                Assert.AreEqual(changedPropertyList.Count, 0);
            }
            else
            {
                Assert.AreEqual(changedPropertyList.Count, 3);
                Assert.IsTrue(changedPropertyList[0].Equals(nameof(DBDataSetting.DataSettingType)));
                Assert.IsTrue(changedPropertyList[1].Equals(nameof(DBDataSetting.DBKind)));
                Assert.IsTrue(changedPropertyList[2].Equals(nameof(DBDataSetting.TypeId)));
            }
        }