Beispiel #1
0
        public void Paginates()
        {
            var details = new MsSqlDetails();

            Assert.Equal("OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY", details.Paginate(1));
            Assert.Equal("OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY", details.Paginate(2));
            Assert.Equal("OFFSET 30 ROWS FETCH NEXT 15 ROWS ONLY", details.Paginate(3, 15));
            Assert.Equal("OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY", details.Paginate(-1));
        }
Beispiel #2
0
        public DatabaseStorageTests_MsSql(MsSqlConnectionFixture fixture)
        {
            _fixture = fixture;
            _fixture.SetUpDatabase();

            var details = new MsSqlDetails();

            _db      = new DatabaseAccess(_fixture.Connection, details);
            _keys    = new KeyUtil();
            _storage = new DatabaseStorage(details, _db, _keys);
        }
Beispiel #3
0
        public void Schema()
        {
            var details = new MsSqlDetails();

            _db.Exec(@"create table foo(
                id  int,

                b   tinyint,
                i   int,
                l   bigint,
                d   float(53),
                t1  nvarchar(8),
                t2  nvarchar(16),
                t3  nvarchar(32),
                t4  nvarchar(64),
                t5  nvarchar(128),
                t6  nvarchar(256),
                t7  nvarchar(512),
                t8  nvarchar(4000),
                t9  nvarchar(MAX),
                dt  datetime2,
                dto datetimeoffset,
                g   uniqueidentifier,
                bl  varbinary(MAX),

                x1  bit,
                x2  decimal,
                x3  float(10),
                x4  varchar(32),
                x5  nvarchar(33),
                x6  datetime,
                x7  varbinary(123),

                x8  int not null,
                x9  int default 123
            )");

            var schema = _storage.GetSchema();

            Assert.Equal(1, schema.Count);

            var cols = schema["foo"];

            Assert.False(cols.ContainsKey("id"));

            Assert.Equal(MsSqlDetails.RANK_BYTE, cols["b"]);
            Assert.Equal("TINYINT", details.GetSqlTypeFromRank(cols["b"]));

            Assert.Equal(MsSqlDetails.RANK_INT32, cols["i"]);
            Assert.Equal("INT", details.GetSqlTypeFromRank(cols["i"]));
            Assert.Equal(MsSqlDetails.RANK_INT64, cols["l"]);
            Assert.Equal("BIGINT", details.GetSqlTypeFromRank(cols["l"]));

            Assert.Equal(MsSqlDetails.RANK_DOUBLE, cols["d"]);
            Assert.Equal("FLOAT(53)", details.GetSqlTypeFromRank(cols["d"]));

            Assert.Equal(MsSqlDetails.RANK_TEXT_8, cols["t1"]);
            Assert.Equal("NVARCHAR(8)", details.GetSqlTypeFromRank(cols["t1"]));
            Assert.Equal(MsSqlDetails.RANK_TEXT_16, cols["t2"]);
            Assert.Equal("NVARCHAR(16)", details.GetSqlTypeFromRank(cols["t2"]));
            Assert.Equal(MsSqlDetails.RANK_TEXT_32, cols["t3"]);
            Assert.Equal("NVARCHAR(32)", details.GetSqlTypeFromRank(cols["t3"]));
            Assert.Equal(MsSqlDetails.RANK_TEXT_64, cols["t4"]);
            Assert.Equal("NVARCHAR(64)", details.GetSqlTypeFromRank(cols["t4"]));
            Assert.Equal(MsSqlDetails.RANK_TEXT_128, cols["t5"]);
            Assert.Equal("NVARCHAR(128)", details.GetSqlTypeFromRank(cols["t5"]));
            Assert.Equal(MsSqlDetails.RANK_TEXT_256, cols["t6"]);
            Assert.Equal("NVARCHAR(256)", details.GetSqlTypeFromRank(cols["t6"]));
            Assert.Equal(MsSqlDetails.RANK_TEXT_512, cols["t7"]);
            Assert.Equal("NVARCHAR(512)", details.GetSqlTypeFromRank(cols["t7"]));
            Assert.Equal(MsSqlDetails.RANK_TEXT_4000, cols["t8"]);
            Assert.Equal("NVARCHAR(4000)", details.GetSqlTypeFromRank(cols["t8"]));
            Assert.Equal(MsSqlDetails.RANK_TEXT_MAX, cols["t9"]);
            Assert.Equal("NVARCHAR(MAX)", details.GetSqlTypeFromRank(cols["t9"]));

            Assert.Equal(MsSqlDetails.RANK_STATIC_DATETIME, cols["dt"]);
            Assert.Equal("DATETIME2", details.GetSqlTypeFromRank(cols["dt"]));
            Assert.Equal(MsSqlDetails.RANK_STATIC_DATETIME_OFFSET, cols["dto"]);
            Assert.Equal("DATETIMEOFFSET", details.GetSqlTypeFromRank(cols["dto"]));

            Assert.Equal(MsSqlDetails.RANK_STATIC_GUID, cols["g"]);
            Assert.Equal("UNIQUEIDENTIFIER", details.GetSqlTypeFromRank(cols["g"]));

            Assert.Equal(MsSqlDetails.RANK_STATIC_BLOB, cols["bl"]);
            Assert.Equal("VARBINARY(MAX)", details.GetSqlTypeFromRank(cols["bl"]));

            foreach (var i in Enumerable.Range(1, 9))
            {
                Assert.Equal(CommonDatabaseDetails.RANK_CUSTOM, cols["x" + i]);
            }
        }
Beispiel #4
0
        public void NotSupportedSqlRank()
        {
            var details = new MsSqlDetails();

            Assert.Throws <NotSupportedException>(() => details.GetSqlTypeFromRank(9999));
        }
Beispiel #5
0
        public void QuoteNameArgumentException()
        {
            var details = new MsSqlDetails();

            Assert.Throws <ArgumentException>(() => details.QuoteName("[AlreadyQuoted]"));
        }