public void Decorate_Twice_Test()
        {
            // Arrange
            ConnectionDecorator target = new ConnectionDecorator();
            DataSourceImpl      ds     = new DataSourceImpl(() => new DbConnectionForConnectionDecorator());

            target.DataSource = ds;

            // Act/Assert
            target.Decorate(connection => {
                target.Decorate(connection2 => {
                    Assert.AreEqual(ConnectionState.Open, connection2.State);
                    Assert.AreEqual(connection, connection2);
                });
                Assert.AreEqual(ConnectionState.Open, connection.State);
            });
        }
        public void Decorate_Action_Test()
        {
            // Arrange
            ConnectionDecorator target = new ConnectionDecorator();

            target.DataSource = new TestDataSource();

            // Act/Assert
            target.Decorate(connection => {
                Assert.IsNotNull(connection);
                Assert.AreEqual(ConnectionState.Open, connection.State);
            });
        }
        public void Decorate_MultiDataSource_Default_Test()
        {
            // Arrange
            const string        NOT_EXPECTED_DS_NAME = "Hoge";
            ConnectionDecorator target      = new ConnectionDecorator();
            MultiDataSource     dataSources = new MultiDataSource();

            dataSources.DefaultDataSource = new TestDataSource();
            dataSources.RegisterDataSource(NOT_EXPECTED_DS_NAME, new TestDataSource2());
            target.DataSource = dataSources;

            // Act/Assert
            target.Decorate(TestActionNoAttr);
        }
        public void Decorate_MultiDataSource_Exception_Test()
        {
            // Arrange
            const string        NOT_EXPECTED_DS_NAME = "Huga";
            ConnectionDecorator target      = new ConnectionDecorator();
            MultiDataSource     dataSources = new MultiDataSource();

            dataSources.RegisterDataSource(NOT_EXPECTED_DS_NAME, new TestDataSource());
            target.DataSource = dataSources;

            var scopeArgs = new Dictionary <string, object>();

            scopeArgs[QuillKey.DATA_SOURCE_NAME] = "HogeSource";

            // Act/Assert
            TestUtils.ExecuteExcectedException <ArgumentException>(
                () => target.Decorate(TestAction, scopeArgs));
        }
        public void Decorate_Func_Test()
        {
            // Arrange
            const int           EXPECTED = 12345;
            ConnectionDecorator target   = new ConnectionDecorator();

            target.DataSource = new TestDataSource();

            // Act/Assert
            int result = target.Decorate(conection => {
                Assert.IsNotNull(conection);
                Assert.AreEqual(ConnectionState.Open, conection.State);
                return(EXPECTED);
            });

            Assert.AreEqual(EXPECTED, result);
            Assert.AreEqual(ConnectionState.Closed, target.DataSource.GetConnection().State);
        }
        public void Decorate_MultiDataSource_Test()
        {
            // Arrange
            const string        EXPECTED_DS_NAME     = "Hoge";
            const string        NOT_EXPECTED_DS_NAME = "Huga";
            ConnectionDecorator target      = new ConnectionDecorator();
            MultiDataSource     dataSources = new MultiDataSource();

            dataSources.RegisterDataSource(EXPECTED_DS_NAME, new TestDataSource2());
            dataSources.RegisterDataSource(NOT_EXPECTED_DS_NAME, new TestDataSource());
            target.DataSource = dataSources;

            var scopeArgs = new Dictionary <string, object>();

            scopeArgs[QuillKey.DATA_SOURCE_NAME] = EXPECTED_DS_NAME;

            // Act/Assert
            target.Decorate(TestAction, scopeArgs);
        }