anchor.diff:    check(g1.AsSmallString = g2.AsSmallString, 'AsSmallString');
   end;
   
  -{ TDataConstraintsTest }
  -
  -procedure TDataConstraintsTest.TestReceiveConstraint;
  -begin
  -  CheckTrue(
  -    TDataConstraints.Create
  -      .Ref
  -      .Add(TFakeConstraint.Create(True, 'id', 'foo'))
  -      .Evaluate
  -      .Success
  -  );
  -end;
  -
  -procedure TDataConstraintsTest.TestGetConstraint;
  -begin
  -  CheckEquals(
  -    'foo',
  -    TDataConstraints.Create
  -      .Ref
  -      .Add(TFakeConstraint.Create(True, 'id', 'foo'))
  -      .Evaluate
  -      .Data
  -      .AsString
  -  );
  -end;
  -
  -procedure TDataConstraintsTest.TestEvaluateTrue;
  -begin
  -  CheckTrue(
  -    TDataConstraints.Create
  -      .Ref
  -      .Add(TFakeConstraint.Create(True, 'id', 'foo'))
  -      .Add(TFakeConstraint.Create(True, 'id', 'foo'))
  -      .Evaluate
  -      .Success
  -  );
  -end;
  -
  -procedure TDataConstraintsTest.TestEvaluateFalse;
  -begin
  -  CheckFalse(
  -    TDataConstraints.Create
  -      .Ref
  -      .Add(TFakeConstraint.Create(False, 'id', 'foo'))
  -      .Add(TFakeConstraint.Create(False, 'id', 'foo'))
  -      .Evaluate
  -      .Success
  -  );
  -end;
  -
  -procedure TDataConstraintsTest.TestEvaluateTrueAndFalse;
  -begin
  -  CheckFalse(
  -    TDataConstraints.Create
  -      .Ref
  -      .Add(TFakeConstraint.Create(True, 'id', 'foo'))
  -      .Add(TFakeConstraint.Create(False, 'id', 'foo'))
  -      .Evaluate
  -      .Success
  -  );
  +procedure TDataTests.DataConstraints;
  +var
  +  cs: IDataConstraints;
  +begin
  +  cs := TDataConstraints.Create;
  +  cs.Add(TFakeConstraint.Create(True, 'a', 'error a'));
  +  check(cs.Evaluate.Success, 'true');
  +  cs.Add(TFakeConstraint.Create(True, 'b', 'error b'));
  +  check(cs.Evaluate.Success, 'true 2');
  +  cs.Add(TFakeConstraint.Create(False, 'b', 'error b'));
  +  check(not cs.Evaluate.Success, 'true 2, fase 1');
  +  cs := TDataConstraints.Create; // new instance
  +  cs.Add(TFakeConstraint.Create(False, 'a', 'error a'));
  +  cs.Add(TFakeConstraint.Create(False, 'b', 'error b'));
  +  check(not cs.Evaluate.Success, 'false 2');
  +  cs := TDataConstraints.Create; // new instance
  +  cs.Add(TFakeConstraint.Create(False, 'a', 'foo'));
  +  check(cs.Evaluate.Data.AsString = 'foo');
  +  cs.Add(TFakeConstraint.Create(False, 'b', 'bar'));
  +  check(cs.Evaluate.Data.AsString = 'foo,bar', cs.Evaluate.Data.AsString);
  +end;
  +
  +procedure TDataTests.DataFile;
  +begin
  +
   end;
   
   { TDataFileTest }
  
positive.code:     procedure DataParam;
      procedure DataParams;
      procedure DataGuid;
    end;
  
    TDataConstraintsTest = class(TTestCase)
    published
      procedure TestReceiveConstraint;
      procedure TestGetConstraint;
      procedure TestEvaluateTrue;
      procedure TestEvaluateFalse;
      procedure TestEvaluateTrueAndFalse;
    end;
  
    TDataFileTest = class(TTestCase)
  
negative.code:   TTestSuite.Create('Data')
      .Ref
      .Add(TTest.Create(TDataTests))
      .Add(TTest.Create(TDataFileTest))
      ;
  
  