示例#1
0
        public void CallingUsingAsOnlyToExpressionInPostgres(bool?isOnly)
        {
            var collectionMock = new Mock <PostgresIndexOnlyDefinition>();

            var additionalFeatures = new Dictionary <string, object>()
            {
                [PostgresExtensions.Only] = collectionMock.Object
            };

            var indexMock = new Mock <IndexDefinition>();

            indexMock.Setup(x => x.AdditionalFeatures).Returns(additionalFeatures);

            var expressionMock = new Mock <CreateIndexExpression>();

            expressionMock.SetupGet(e => e.Index).Returns(indexMock.Object);

            ICreateIndexOnColumnOrInSchemaSyntax builder = new CreateIndexExpressionBuilder(expressionMock.Object);

            if (isOnly == null)
            {
                builder.WithOptions().AsOnly();
            }
            else
            {
                builder.WithOptions().AsOnly(isOnly.Value);
            }

            collectionMock.VerifySet(x => x.IsOnly = isOnly ?? true);
            indexMock.VerifyGet(x => x.AdditionalFeatures);
            expressionMock.VerifyGet(e => e.Index);
        }
示例#2
0
        public void CallingUsingIndexAlgorithmToExpressionInPostgres(Algorithm algorithm)
        {
            var collectionMock = new Mock <PostgresIndexAlgorithmDefinition>();

            var additionalFeatures = new Dictionary <string, object>()
            {
                [PostgresExtensions.IndexAlgorithm] = collectionMock.Object
            };

            var indexMock = new Mock <IndexDefinition>();

            indexMock.Setup(x => x.AdditionalFeatures).Returns(additionalFeatures);

            var expressionMock = new Mock <CreateIndexExpression>();

            expressionMock.SetupGet(e => e.Index).Returns(indexMock.Object);

            ICreateIndexOnColumnOrInSchemaSyntax builder = new CreateIndexExpressionBuilder(expressionMock.Object);

            switch (algorithm)
            {
            case Algorithm.BTree:
                builder.WithOptions().UsingBTree();
                break;

            case Algorithm.Hash:
                builder.WithOptions().UsingHash();
                break;

            case Algorithm.Gist:
                builder.WithOptions().UsingGist();
                break;

            case Algorithm.Spgist:
                builder.WithOptions().UsingSpgist();
                break;

            case Algorithm.Gin:
                builder.WithOptions().UsingGin();
                break;

            case Algorithm.Brin:
                builder.WithOptions().UsingBrin();
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(algorithm), algorithm, null);
            }

            collectionMock.VerifySet(x => x.Algorithm = algorithm);
            indexMock.VerifyGet(x => x.AdditionalFeatures);
            expressionMock.VerifyGet(e => e.Index);
        }
示例#3
0
        public void CallingWithAutosummarizeInPostgres(bool autosummarize)
        {
            var additionalFeatures = new Dictionary <string, object>();

            var indexMock = new Mock <IndexDefinition>();

            indexMock.Setup(x => x.AdditionalFeatures).Returns(additionalFeatures);

            var expressionMock = new Mock <CreateIndexExpression>();

            expressionMock.SetupGet(e => e.Index).Returns(indexMock.Object);

            ICreateIndexOnColumnOrInSchemaSyntax builder = new CreateIndexExpressionBuilder(expressionMock.Object);

            builder.WithOptions().UsingBrin().Autosummarize(autosummarize);
            indexMock.VerifyGet(x => x.AdditionalFeatures);
            expressionMock.VerifyGet(e => e.Index);

            Assert.AreEqual(autosummarize, additionalFeatures[PostgresExtensions.IndexAutosummarize]);
        }
示例#4
0
        public void CallingWithGinPendingListLimitInPostgres()
        {
            var additionalFeatures = new Dictionary <string, object>();

            var indexMock = new Mock <IndexDefinition>();

            indexMock.Setup(x => x.AdditionalFeatures).Returns(additionalFeatures);

            var expressionMock = new Mock <CreateIndexExpression>();

            expressionMock.SetupGet(e => e.Index).Returns(indexMock.Object);

            ICreateIndexOnColumnOrInSchemaSyntax builder = new CreateIndexExpressionBuilder(expressionMock.Object);

            builder.WithOptions().UsingGin().PendingListLimit(90);
            indexMock.VerifyGet(x => x.AdditionalFeatures);
            expressionMock.VerifyGet(e => e.Index);

            Assert.AreEqual(90, additionalFeatures[PostgresExtensions.IndexGinPendingListLimit]);
        }
示例#5
0
        public void CallingWithVacuumCleanupIndexScaleFactorInPostgres()
        {
            var additionalFeatures = new Dictionary <string, object>();

            var indexMock = new Mock <IndexDefinition>();

            indexMock.Setup(x => x.AdditionalFeatures).Returns(additionalFeatures);

            var expressionMock = new Mock <CreateIndexExpression>();

            expressionMock.SetupGet(e => e.Index).Returns(indexMock.Object);

            ICreateIndexOnColumnOrInSchemaSyntax builder = new CreateIndexExpressionBuilder(expressionMock.Object);

            builder.WithOptions().UsingBTree().VacuumCleanupIndexScaleFactor(90);
            indexMock.VerifyGet(x => x.AdditionalFeatures);
            expressionMock.VerifyGet(e => e.Index);

            Assert.AreEqual(90, additionalFeatures[PostgresExtensions.IndexVacuumCleanupIndexScaleFactor]);
        }
示例#6
0
        public void CallingTablespaceExpressingInPostgres()
        {
            var additionalFeatures = new Dictionary <string, object>()
            {
                [PostgresExtensions.IndexTablespace] = ""
            };

            var indexMock = new Mock <IndexDefinition>();

            indexMock.Setup(x => x.AdditionalFeatures).Returns(additionalFeatures);

            var expressionMock = new Mock <CreateIndexExpression>();

            expressionMock.SetupGet(e => e.Index).Returns(indexMock.Object);

            ICreateIndexOnColumnOrInSchemaSyntax builder = new CreateIndexExpressionBuilder(expressionMock.Object);

            builder.WithOptions().Tablespace("indexspace");
            indexMock.VerifyGet(x => x.AdditionalFeatures);
            expressionMock.VerifyGet(e => e.Index);

            Assert.AreEqual("indexspace", additionalFeatures[PostgresExtensions.IndexTablespace]);
        }