浏览代码

* fcl-db: sql parser test: test for create domain with check constraint, default and not null, a la
CREATE DOMAIN PRODTYPE AS VARCHAR(12)
DEFAULT 'software'
CHECK (VALUE IN ('software', 'hardware', 'other', 'N/A')) NOT NULL;

git-svn-id: trunk@27868 -

reiniero 11 年之前
父节点
当前提交
79d2abd1ca
共有 1 个文件被更改,包括 18 次插入1 次删除
  1. 18 1
      packages/fcl-db/tests/tcparser.pas

+ 18 - 1
packages/fcl-db/tests/tcparser.pas

@@ -223,6 +223,7 @@ type
     Procedure TestNotNullDomain;
     procedure TestDefaultNotNullDomain;
     procedure TestCheckDomain;
+    procedure TestDefaultCheckNotNullDomain;
     procedure TestAlterDomainDropDefault;
     procedure TestAlterDomainDropCheck;
     procedure TestAlterDomainDropCheckError;
@@ -2238,7 +2239,7 @@ begin
 end;
 
 procedure TTestDomainParser.TestCheckDomain;
-Var
+var
   P : TSQLCreateOrAlterStatement;
   D : TSQLCreateDomainStatement;
   T : TSQLTypeDefinition;
@@ -2254,6 +2255,22 @@ begin
   AssertEquals('Not null',True,T.NotNull);
 end;
 
+procedure TTestDomainParser.TestDefaultCheckNotNullDomain;
+var
+  P : TSQLCreateOrAlterStatement;
+  D : TSQLCreateDomainStatement;
+  T : TSQLTypeDefinition;
+begin
+  P:=TestCreateStatement('CREATE DOMAIN DEFCHECKNOTN AS VARCHAR(1) DEFAULT ''s'' CHECK (VALUE IN (''s'',''h'',''A'')) NOT NULL','A',TSQLCreateDomainStatement);
+  CheckClass(P,TSQLCreateDomainStatement);
+  D:=TSQLCreateDomainStatement(P);
+  AssertNotNull('Have type Definition',D.TypeDefinition);
+  T:=D.TypeDefinition;
+  AssertNotNull('Have default value',T.DefaultValue);
+  AssertEquals('Character data type',sdtChar,T.DataType);
+  AssertEquals('Not null',True,T.NotNull);
+end;
+
 procedure TTestDomainParser.TestAlterDomainDropDefault;
 begin
   TestCreateStatement('ALTER DOMAIN A DROP DEFAULT','A',TSQLAlterDomainDropDefaultStatement);