12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184 |
- unit TestDBExport;
- {
- Unit tests which are common to all datasets. Tests export to various formats.
- }
- {$IFDEF FPC}
- {$mode Delphi}{$H+}
- {$ENDIF}
- {$codepage utf8}
- interface
- uses
- fpcunit, testregistry,
- Classes, SysUtils, db, ToolsUnit, bufdataset,
- fpDBExport,
- fpXMLXSDExport,
- fpdbfexport,
- fpcsvexport,
- fpfixedexport,
- fpSimpleXMLExport,
- fpsimplejsonexport,
- fpSQLExport,
- fptexexport,
- fprtfexport;
- type
- TDetailedExportFormats = (efDBaseIII, efDBaseIV, efDBaseVII, efCSV, efFixedLengthText, efFoxpro,
- efJSON, efRTF, efSQL, efTeX, efXML, efXMLXSDAccess, efXMLXSDADONet, efXMLXSDClientDataset,
- efXMLXSDExcel, efVisualFoxpro);
- const
- TDetailedExportExtensions: array [TDetailedExportFormats] of string =
- ('.dbf','.dbf','.dbf','.csv','.txt','.dbf','.json','.rtf','.sql','.tex',
- '.xml','.xml','.xml','.xml','.xml','.dbf'); //File extension for the corresponding TDetailedExportFormats
- type
- { TTestDBExport }
- TTestDBExport = class(TTestCase)
- private
- FExportTempDir: string; //directory where test files are placed
- FKeepFilesAfterTest: boolean; //remove files after testing?
- function FieldSupported(const FieldType: TFieldType;
- const ExportSubFormat: TDetailedExportFormats): boolean; //Checks if output dataset supports a certain field type
- procedure GenericExportTest(Exporter: TCustomDatasetExporter; ExportFormat: TDetailedExportFormats);
- function GetABCDS: TBufDataset;
- function GetBooleanDS: TBufDataset;
- function GetFileSize(const FileName: string): integer; //Gets a file's size
- function GetWideStringDS: TBufDataset;
- protected
- procedure SetUp; override;
- procedure TearDown; override;
- published
- procedure TestDBFExport_DBaseIV;
- procedure TestDBFExport_DBaseVII;
- procedure TestDBFExport_FoxPro;
- procedure TestDBFExport_VisualFoxPro;
- procedure TestCSVExport; //tests csv export with default values
- procedure TestCSVExport_RFC4180WithHeader; //tests csv export with settings that match RFC4180
- procedure TestCSVExport_TweakSettingsSemicolon; //tests semicolon delimited, custom country values
- procedure TestCSVExportDisabledFields;
- procedure TestFixedTextExport;
- procedure TestFixedTextExportUTF8;
- procedure TestFixedTextExportUTF16;
- procedure TestFixedTextExportBoolean;
- procedure TestFixedTextExportHeader;
- procedure TestFixedTextExportHeaderDisabledFields;
- procedure TestFixedTextExportSpaces;
- procedure TestJSONExport;
- procedure TestRTFExport;
- procedure TestSQLExport;
- procedure TestTeXExport;
- procedure TestXMLExport; //tests simple xml export
- procedure TestXMLExportSpecialChars;
- procedure TestXSDExport_Access_NoXSD_DecimalOverride; //tests xmlxsd export
- procedure TestXSDExport_Access_NoXSD_NoDecimalOverride; //tests xmlxsd export
- procedure TestXSDExport_Access_XSD_DecimalOverride; //tests xmlxsd export
- procedure TestXSDExport_Access_XSD_NoDecimalOverride; //tests xmlxsd export
- procedure TestXSDExport_ADONET_NoXSD; //tests xmlxsd export
- procedure TestXSDExport_ADONET_XSD; //tests xmlxsd export
- procedure TestXSDExport_DelphiClientDataset; //tests xmlxsd export
- procedure TestXSDExport_Excel; //tests xmlxsd export
- end;
- implementation
- uses bufdatasettoolsunit, xmlread,dom;
- function TTestDBExport.FieldSupported(const FieldType: TFieldType;
- const ExportSubFormat: TDetailedExportFormats): boolean;
- const
- // Alphabetically sorted for quick review:
- DBaseVIIUnsupported=[ftADT,ftArray,ftBCD,ftBytes,ftCurrency,ftCursor,ftDataSet,
- ftFixedWideChar,
- ftFMTBcd,ftFmtMemo,ftGraphic,ftGuid,ftIDispatch,ftInterface,ftLongWord,
- ftOraBlob,ftOraClob,ftParadoxOle,ftReference,ftTime,ftTimeStamp,ftTypedBinary,
- ftUnknown,ftVarBytes,ftVariant,ftWidememo,ftWideString];
- FoxProUnsupported= [ftADT,ftArray, ftBytes, ftCursor,ftDataSet,
- ftFixedWideChar,
- ftFMTBcd,ftFmtMemo,ftGraphic,ftGuid,ftIDispatch,ftInterface,ftLongWord,
- ftOraBlob,ftOraClob,ftParadoxOle,ftReference,ftTime,ftTimeStamp,ftTypedBinary,
- ftUnknown,ftVarBytes,ftVariant,ftWideMemo,ftWideString];
- begin
- result:=true;
- case ExportSubFormat of
- efDBaseIII: if FieldType in DBaseVIIUnsupported+[ftAutoInc] then result:=false;
- efDBaseIV: if FieldType in DBaseVIIUnsupported+[ftAutoInc] then result:=false;
- efDBaseVII: if FieldType in DBaseVIIUnsupported then result:=false;
- efCSV: result:=true;
- efFixedLengthText: result:=true; //todo: verify if all fields are really supported. Quick glance would indicate so
- efFoxpro: if FieldType in FoxProUnsupported then result:=false;
- efVisualFoxpro: if FieldType in FoxProUnsupported-[ftVarBytes] then result:=false;
- efJSON: result:=true;
- efRTF: result:=true;
- efSQL: result:=true;
- efTeX: result:=true;
- efXML: result:=true;
- efXMLXSDAccess, efXMLXSDADONet, efXMLXSDClientDataset, efXMLXSDExcel: result:=true;
- else
- result:=false;
- Fail('Error in test code itself: FieldSupported unknown ExportSubFormat '+inttostr(ord(ExportSubFormat)));
- end;
- end;
- procedure TTestDBExport.GenericExportTest(Exporter: TCustomDatasetExporter; ExportFormat: TDetailedExportFormats);
- var
- FieldMapping: TExportFields;
- NumberExported: integer;
- i: integer;
- begin
- FieldMapping:=TExportFields.Create(Exporter.ExportFields.ItemClass);
- try
- Exporter.Dataset := DBConnector.GetFieldDataset;
- Exporter.Dataset.Open;
- Exporter.BuildDefaultFieldMap(FieldMapping);
- // Remove unsupported data types in export from the mapping.
- // Cannot use FieldMapping[i].Field.DataType as
- // the field hasn't been set by BindFields yet... assume the
- // order of original fields and their mapping match
- for i:=Exporter.Dataset.Fields.Count-1 downto 0 do
- begin
- if not FieldSupported(
- Exporter.Dataset.Fields[i].DataType,
- ExportFormat) then
- FieldMapping.Delete(i);
- end;
- for i:=0 to FieldMapping.Count-1 do
- Exporter.ExportFields.Add.Assign(FieldMapping[i]);
- NumberExported := Exporter.Execute;
- Exporter.Dataset.Last;
- Exporter.Dataset.First;
- AssertEquals('Number of records exported matches recordcount', NumberExported,
- Exporter.Dataset.RecordCount);
- Exporter.Dataset.Close;
- finally
- FieldMapping.Free;
- end;
- end;
- function TTestDBExport.GetFileSize(const FileName: string): integer;
- Var
- F : file of byte;
- begin
- result:=0;
- assign (F,FileName);
- try
- reset(F);
- result:=filesize(F);
- finally
- close(F);
- end;
- end;
- procedure TTestDBExport.SetUp;
- begin
- inherited SetUp;
- InitialiseDBConnector;
- DBConnector.StartTest(TestName);
- FExportTempDir:=IncludeTrailingPathDelimiter(ExpandFileName(''))+'exporttests'+PathDelim; //Store output in subdirectory
- ForceDirectories(FExportTempDir);
- FKeepFilesAfterTest:=true; //keep test files; consistent with other units right now
- end;
- procedure TTestDBExport.TearDown;
- begin
- inherited TearDown;
- DBConnector.StopTest(TestName);
- FreeDBConnector;
- end;
- procedure TTestDBExport.TestDBFExport_DBaseVII;
- var
- Exporter: TFPDBFExport;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TDBFExportFormatSettings;
- begin
- Exporter := TFPDBFExport.Create(nil);
- ExportSettings:=TDBFExportFormatSettings.Create(true);
- try
- ExportFormat:=efDBaseVII;
- ExportSettings.TableFormat:=tfDBaseVII;
- ExportSettings.AutoRenameFields:=true; //rename conflicting column names
- // Use export subtype position to differentiate output filenames:
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestDBFExport_DBaseIV;
- var
- Exporter: TFPDBFExport;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TDBFExportFormatSettings;
- begin
- Exporter := TFPDBFExport.Create(nil);
- ExportSettings:=TDBFExportFormatSettings.Create(true);
- try
- ExportFormat:=efDBaseIV;
- ExportSettings.TableFormat:=tfDBaseIV;
- ExportSettings.AutoRenameFields:=true; //rename conflicting column names
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestDBFExport_FoxPro;
- var
- Exporter: TFPDBFExport;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TDBFExportFormatSettings;
- begin
- Exporter := TFPDBFExport.Create(nil);
- ExportSettings:=TDBFExportFormatSettings.Create(true);
- try
- ExportFormat:=efFoxpro;
- ExportSettings.TableFormat:=tfFoxPro;
- ExportSettings.AutoRenameFields:=true; //rename conflicting column names
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestDBFExport_VisualFoxPro;
- var
- Exporter: TFPDBFExport;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TDBFExportFormatSettings;
- begin
- Exporter := TFPDBFExport.Create(nil);
- ExportSettings:=TDBFExportFormatSettings.Create(true);
- try
- ExportFormat:=efVisualFoxpro;
- ExportSettings.TableFormat:=tfVisualFoxPro;
- ExportSettings.AutoRenameFields:=true; //rename conflicting column names
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestXSDExport_Access_NoXSD_DecimalOverride;
- var
- Exporter: TXMLXSDExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TXMLXSDFormatSettings;
- begin
- Exporter := TXMLXSDExporter.Create(nil);
- ExportSettings:=TXMLXSDFormatSettings.Create(true);
- try
- ExportSettings.ExportFormat:=AccessCompatible;
- ExportFormat:=efXMLXSDAccess;
- ExportSettings.CreateXSD:=false;
- ExportSettings.DecimalSeparator:='.'; //override
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestXSDExport_Access_NoXSD_NoDecimalOverride;
- var
- Exporter: TXMLXSDExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TXMLXSDFormatSettings;
- begin
- Exporter := TXMLXSDExporter.Create(nil);
- ExportSettings:=TXMLXSDFormatSettings.Create(true);
- try
- ExportSettings.ExportFormat:=AccessCompatible;
- ExportFormat:=efXMLXSDAccess;
- ExportSettings.CreateXSD:=false;
- ExportSettings.DecimalSeparator:=#0; //don't override
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestXSDExport_Access_XSD_DecimalOverride;
- var
- Exporter: TXMLXSDExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TXMLXSDFormatSettings;
- begin
- Exporter := TXMLXSDExporter.Create(nil);
- ExportSettings:=TXMLXSDFormatSettings.Create(true);
- try
- ExportSettings.ExportFormat:=AccessCompatible;
- ExportFormat:=efXMLXSDAccess;
- ExportSettings.CreateXSD:=true;
- ExportSettings.DecimalSeparator:='.'; //override
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestXSDExport_Access_XSD_NoDecimalOverride;
- var
- Exporter: TXMLXSDExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TXMLXSDFormatSettings;
- begin
- Exporter := TXMLXSDExporter.Create(nil);
- ExportSettings:=TXMLXSDFormatSettings.Create(true);
- try
- ExportSettings.ExportFormat:=AccessCompatible;
- ExportFormat:=efXMLXSDAccess;
- ExportSettings.CreateXSD:=true;
- ExportSettings.DecimalSeparator:=AnsiChar(#0); //don't override
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestXSDExport_ADONET_NoXSD;
- var
- Exporter: TXMLXSDExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TXMLXSDFormatSettings;
- begin
- Exporter := TXMLXSDExporter.Create(nil);
- ExportSettings:=TXMLXSDFormatSettings.Create(true);
- try
- ExportSettings.ExportFormat:=ADONETCompatible;
- ExportFormat:=efXMLXSDADONet;
- ExportSettings.CreateXSD:=false;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestXSDExport_ADONET_XSD;
- var
- Exporter: TXMLXSDExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TXMLXSDFormatSettings;
- begin
- Exporter := TXMLXSDExporter.Create(nil);
- ExportSettings:=TXMLXSDFormatSettings.Create(true);
- try
- ExportSettings.ExportFormat:=ADONETCompatible;
- ExportFormat:=efXMLXSDADONet;
- ExportSettings.CreateXSD:=true;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestCSVExport;
- var
- Exporter: TCSVExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings: TCSVFormatSettings;
- begin
- Exporter := TCSVExporter.Create(nil);
- ExportSettings:=TCSVFormatSettings.Create(true);
- try
- ExportFormat:=efCSV;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestCSVExport_RFC4180WithHeader;
- var
- Exporter: TCSVExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings: TCSVFormatSettings;
- begin
- Exporter := TCSVExporter.Create(nil);
- ExportSettings:=TCSVFormatSettings.Create(true);
- try
- ExportSettings.FieldDelimiter:=','; //RFC 4180 specified commas as delimiter
- ExportSettings.HeaderRow:=true; //...allows an optional header line
- ExportSettings.QuoteChar:='"'; //...requires quoting with " (if quoting)
- // Fields containing line breaks (CRLF), double quotes,
- // and commas should be enclosed in double-quotes.
- // => this probably won't get tested with this test set.
- ExportFormat:=efCSV;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestCSVExport_TweakSettingsSemicolon;
- var
- Exporter: TCSVExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings: TCSVFormatSettings;
- begin
- Exporter := TCSVExporter.Create(nil);
- ExportSettings:=TCSVFormatSettings.Create(true);
- try
- ExportSettings.FieldDelimiter:=';';
- ExportSettings.QuoteChar:='"'; //try explicit assignment
- ExportSettings.RowDelimiter:=#10; //Unix/Linux format
- ExportSettings.BooleanFalse:='onwaar'; //why not a Dutch output format?
- ExportSettings.BooleanTrue:='waar'; //why not a Dutch output format?
- ExportSettings.CurrencyDigits:=3;
- ExportSettings.CurrencySymbol:='€'; //euro sign
- ExportSettings.DateFormat:='d-mm-yyyy'; //Dutch setting
- ExportSettings.DateTimeFormat:='d-mm-yyyy hh:nn:ss'; //Dutch setting
- ExportSettings.DecimalSeparator:=','; //another Dutch setting
- ExportSettings.TimeFormat:='hh:nn:ss'; //Dutch setting
- ExportSettings.IntegerFormat:='0000';//Strange but nice ;)
- ExportFormat:=efCSV;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestCSVExportDisabledFields;
- var
- DS : TBufDataset;
- Exporter: TCSVExporter;
- F : text;
- S : UTF8String;
- haveFile : Boolean;
- begin
- haveFile:=False;
- Exporter:=Nil;
- DS:=GetABCDS;
- try
- Exporter := TCSVExporter.Create(nil);
- Exporter.FormatSettings.HeaderRow:=True;
- Exporter.Dataset:=DS;
- Exporter.FileName := FExportTempDir + lowercase(TestName) + '.csv';
- Exporter.BuildDefaultFieldMap(Exporter.ExportFields);
- Exporter.ExportFields[1].Enabled:=False;
- AssertEquals('Output count',2,Exporter.Execute);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- AssignFile(F,Exporter.FileName);
- Reset(F);
- haveFile:=True;
- Readln(F,S);
- AssertEquals('Correct header line','A,C',S); // 1 extra
- Readln(F,S);
- AssertEquals('Correct first line','xx,zz',S); // 1 extra
- Readln(F,S);
- AssertEquals('Correct first line','x,z',S); // 1 extra
- finally
- if HaveFile then
- closeFile(F);
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestFixedTextExport;
- var
- Exporter: TFixedLengthExporter;
- ExportFormat: TDetailedExportFormats;
- begin
- Exporter := TFixedLengthExporter.Create(nil);
- try
- ExportFormat:=efFixedLengthText;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- Exporter.Free;
- end;
- end;
- Const
- // UTF8 code page assumed !
- WidestringLine1 = '这是一个测验';
- WidestringLine2 = 'Это тест.';
- WidestringLine3 = 'ça roule.';
- WidestringResLine1 = '这是一';
- WidestringResLine2 = 'Это';
- WidestringResLine3 = 'ça ';
- Function TTestDBExport.GetWideStringDS : TBufDataset;
- Var
- DS : TBufDataset;
- begin
- DS:=TPersistentBufDataset.Create(Nil);
- try
- DS.FieldDefs.Add('F',ftWideString,10);
- DS.CreateDataset;
- DS.Append;
- DS.Fields[0].AsWideString:=UTF8Decode(WideStringLine1);
- DS.Post;
- DS.Append;
- DS.Fields[0].AsWideString:=UTF8Decode(WideStringLine2);
- DS.Post;
- DS.Append;
- DS.Fields[0].AsWideString:=UTF8Decode(WideStringLine3);
- DS.Post;
- DS.First;
- except
- DS.Free;
- Raise;
- end;
- Result:=DS;
- end;
- procedure TTestDBExport.TestFixedTextExportUTF8;
- var
- DS : TBufDataset;
- Exporter: TFixedLengthExporter;
- F : text;
- S : UTF8String;
- haveFile : Boolean;
- begin
- haveFile:=False;
- Exporter:=Nil;
- DS:=GetWideStringDS;
- try
- Exporter := TFixedLengthExporter.Create(nil);
- Exporter.Dataset:=DS;
- Exporter.FormatSettings.CharMode:=cmUTF8;
- Exporter.FileName := FExportTempDir + lowercase(TestName) + '.txt';
- Exporter.BuildDefaultFieldMap(Exporter.ExportFields);
- TFixedLengthExportFieldItem(Exporter.ExportFields[0]).Width:=3;
- AssertEquals('Output count',3,Exporter.Execute);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- AssignFile(F,Exporter.FileName);
- Reset(F);
- haveFile:=True;
- Readln(F,S);
- AssertEquals('Correct first line',UTF8Decode(WideStringResLine1),UTF8Decode(S));
- Readln(F,S);
- AssertEquals('Correct second line',UTF8Decode(WideStringResLine2),UTF8Decode(S));
- Readln(F,S);
- AssertEquals('Correct second line',UTF8Decode(WideStringResLine3),UTF8Decode(S));
- finally
- if HaveFile then
- closeFile(F);
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestFixedTextExportUTF16;
- var
- DS : TBufDataset;
- Exporter: TFixedLengthExporter;
- F : text;
- S : UnicodeString;
- haveFile : Boolean;
- begin
- haveFile:=False;
- Exporter:=Nil;
- DS:=GetWideStringDS;
- try
- Exporter := TFixedLengthExporter.Create(nil);
- Exporter.Dataset:=DS;
- Exporter.FormatSettings.CharMode:=cmUTF16;
- Exporter.FileName := FExportTempDir + lowercase(TestName) + '.txt';
- Exporter.BuildDefaultFieldMap(Exporter.ExportFields);
- TFixedLengthExportFieldItem(Exporter.ExportFields[0]).Width:=3;
- AssertEquals('Output count',3,Exporter.Execute);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- AssignFile(F,Exporter.FileName);
- Reset(F);
- haveFile:=True;
- Readln(F,S);
- AssertEquals('Correct first line',UTF8Decode(WideStringResLine1),S);
- Readln(F,S);
- AssertEquals('Correct second line',UTF8Decode(WideStringResLine2),S);
- Readln(F,S);
- AssertEquals('Correct second line',UTF8Decode(WideStringResLine3),S);
- finally
- if HaveFile then
- closeFile(F);
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- Exporter.Free;
- end;
- end;
- Function TTestDBExport.GetBooleanDS : TBufDataset;
- Var
- DS : TBufDataset;
- begin
- DS:=TPersistentBufDataSet.Create(Nil);
- try
- DS.FieldDefs.Add('F',ftBoolean,0);
- DS.CreateDataset;
- DS.Append;
- DS.Fields[0].AsBoolean:=true;
- DS.Post;
- DS.Append;
- DS.Fields[0].AsBoolean:=False;
- DS.Post;
- DS.First;
- except
- DS.Free;
- Raise;
- end;
- Result:=DS;
- end;
- Function TTestDBExport.GetABCDS : TBufDataset;
- Var
- DS : TBufDataset;
- begin
- DS:=TPersistentBufDataset.Create(Nil);
- try
- DS.FieldDefs.Add('A',ftString,2);
- DS.FieldDefs.Add('B',ftString,2);
- DS.FieldDefs.Add('C',ftString,2);
- DS.CreateDataset;
- DS.Append;
- DS.Fields[0].AsString:='xx';
- DS.Fields[1].AsString:='y';
- DS.Fields[2].AsString:='zz';
- DS.Post;
- DS.Append;
- DS.Fields[0].AsString:='x';
- DS.Fields[1].AsString:='yy';
- DS.Fields[2].AsString:='z';
- DS.Post;
- DS.First;
- except
- DS.Free;
- Raise;
- end;
- Result:=DS;
- end;
- procedure TTestDBExport.TestFixedTextExportBoolean;
- var
- DS : TBufDataset;
- Exporter: TFixedLengthExporter;
- F : text;
- S : UTF8String;
- haveFile : Boolean;
- begin
- haveFile:=False;
- Exporter:=Nil;
- DS:=GetBooleanDS;
- try
- Exporter := TFixedLengthExporter.Create(nil);
- Exporter.FormatSettings.BooleanFalse:='false';
- Exporter.FormatSettings.BooleanTrue:='True';
- Exporter.Dataset:=DS;
- Exporter.FileName := FExportTempDir + lowercase(TestName) + '.txt';
- Exporter.BuildDefaultFieldMap(Exporter.ExportFields);
- AssertEquals('Correct width',5, TFixedLengthExportFieldItem(Exporter.ExportFields[0]).Width);
- AssertEquals('Output count',2,Exporter.Execute);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- AssignFile(F,Exporter.FileName);
- Reset(F);
- haveFile:=True;
- Readln(F,S);
- AssertEquals('Correct first line','True ',S); // 1 extra
- Readln(F,S);
- AssertEquals('Correct second line','false',S);
- finally
- if HaveFile then
- closeFile(F);
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestFixedTextExportHeader;
- var
- DS : TBufDataset;
- Exporter: TFixedLengthExporter;
- F : text;
- S : UTF8String;
- haveFile : Boolean;
- begin
- haveFile:=False;
- Exporter:=Nil;
- DS:=GetABCDS;
- try
- Exporter := TFixedLengthExporter.Create(nil);
- Exporter.FormatSettings.BooleanFalse:='false';
- Exporter.FormatSettings.BooleanTrue:='True';
- Exporter.FormatSettings.HeaderRow:=True;
- Exporter.Dataset:=DS;
- Exporter.FileName := FExportTempDir + lowercase(TestName) + '.txt';
- Exporter.BuildDefaultFieldMap(Exporter.ExportFields);
- AssertEquals('Correct width',2, TFixedLengthExportFieldItem(Exporter.ExportFields[0]).Width);
- AssertEquals('Output count',2,Exporter.Execute);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- AssignFile(F,Exporter.FileName);
- Reset(F);
- haveFile:=True;
- Readln(F,S);
- AssertEquals('Correct header line','A B C ',S); // 1 extra
- Readln(F,S);
- AssertEquals('Correct first line','xxy zz',S); // 1 extra
- Readln(F,S);
- AssertEquals('Correct second line','x yyz ',S);
- finally
- if HaveFile then
- closeFile(F);
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestFixedTextExportHeaderDisabledFields;
- var
- DS : TBufDataset;
- Exporter: TFixedLengthExporter;
- F : text;
- S : UTF8String;
- haveFile : Boolean;
- begin
- haveFile:=False;
- Exporter:=Nil;
- DS:=GetABCDS;
- try
- Exporter := TFixedLengthExporter.Create(nil);
- Exporter.FormatSettings.HeaderRow:=True;
- Exporter.Dataset:=DS;
- Exporter.FileName := FExportTempDir + lowercase(TestName) + '.txt';
- Exporter.BuildDefaultFieldMap(Exporter.ExportFields);
- Exporter.ExportFields[1].Enabled:=False;
- AssertEquals('Output count',2,Exporter.Execute);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- AssignFile(F,Exporter.FileName);
- Reset(F);
- haveFile:=True;
- Readln(F,S);
- AssertEquals('Correct header line','A C ',S); // 1 extra
- Readln(F,S);
- AssertEquals('Correct first line','xxzz',S); // 1 extra
- Readln(F,S);
- AssertEquals('Correct first line','x z ',S); // 1 extra
- finally
- if HaveFile then
- closeFile(F);
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestFixedTextExportSpaces;
- var
- DS : TBufDataset;
- Exporter: TFixedLengthExporter;
- F : text;
- S : UTF8String;
- haveFile : Boolean;
- begin
- haveFile:=False;
- Exporter:=Nil;
- DS:=GetABCDS;
- try
- Exporter := TFixedLengthExporter.Create(nil);
- Exporter.FormatSettings.BooleanFalse:='false';
- Exporter.FormatSettings.BooleanTrue:='True';
- Exporter.FormatSettings.HeaderRow:=True;
- Exporter.FormatSettings.ColumnSeparatorSpaceCount:=2;
- Exporter.Dataset:=DS;
- Exporter.FileName := FExportTempDir + lowercase(TestName) + '.txt';
- Exporter.BuildDefaultFieldMap(Exporter.ExportFields);
- AssertEquals('Output count',2,Exporter.Execute);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- AssignFile(F,Exporter.FileName);
- Reset(F);
- haveFile:=True;
- Readln(F,S);
- AssertEquals('Correct header line','A B C ',S); // 1 extra
- Readln(F,S);
- AssertEquals('Correct first line','xx y zz',S); // 1 extra
- Readln(F,S);
- AssertEquals('Correct first line','x yy z ',S); // 1 extra
- finally
- if HaveFile then
- closeFile(F);
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestJSONExport;
- var
- Exporter: TSimpleJSONExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TSimpleJSONFormatSettings;
- begin
- Exporter := TSimpleJSONExporter.Create(nil);
- ExportSettings:=TSimpleJSONFormatSettings.Create(true);
- try
- ExportFormat:=efJSON;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) + lowercase(rightstr(TestName,5))+
- inttostr(ord(ExportFormat))+
- TDetailedExportExtensions[ExportFormat]; Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestRTFExport;
- var
- Exporter: TRTFExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TRTFExportFormatSettings;
- begin
- Exporter := TRTFExporter.Create(nil);
- ExportSettings:=TRTFExportFormatSettings.Create(true);
- try
- ExportFormat:=efRTF;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5))+
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestSQLExport;
- var
- Exporter: TSQLExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TSQLFormatSettings;
- begin
- Exporter := TSQLExporter.Create(nil);
- ExportSettings:=TSQLFormatSettings.Create(true);
- try
- ExportSettings.TableName:='ATABLE'; //required for export to succeed
- ExportFormat:=efSQL;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5))+
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestTeXExport;
- var
- Exporter: TTexExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TTeXExportFormatSettings;
- begin
- Exporter := TTexExporter.Create(nil);
- ExportSettings:=TTeXExportFormatSettings.Create(true);
- try
- ExportFormat:=efTeX;
- Exporter.FileName := FExportTempDir +
- inttostr(ord(ExportFormat)) + lowercase(rightstr(TestName,5))+
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestXMLExport;
- var
- Exporter: TSimpleXMLExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TSimpleXMLFormatSettings;
- begin
- Exporter := TSimpleXMLExporter.Create(nil);
- ExportSettings:=TSimpleXMLFormatSettings.Create(true);
- try
- ExportFormat:=efXML;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestXMLExportSpecialChars;
- var
- Exporter: TSimpleXMLExporter;
- FieldMapping: TExportFields;
- NumberExported: integer;
- i: integer;
- XML : TXMLDocument;
- begin
- XML:=Nil;
- Exporter := TSimpleXMLExporter.Create(nil);
- FieldMapping:=TExportFields.Create(Exporter.ExportFields.ItemClass);
- try
- Exporter.Dataset := DBConnector.GetFieldDataset;
- Exporter.Dataset.Open;
- Exporter.Dataset.Edit;
- Exporter.Dataset.FieldByName('FString').AsString:='*&*<*>*';
- Exporter.Dataset.Post;
- Exporter.BuildDefaultFieldMap(FieldMapping);
- Exporter.FileName := FExportTempDir + lowercase(rightstr(TestName,5)) + TDetailedExportExtensions[efXML];
- for i:=Exporter.Dataset.Fields.Count-1 downto 0 do
- begin
- if not FieldSupported(
- Exporter.Dataset.Fields[i].DataType,
- efXML) then
- FieldMapping.Delete(i);
- end;
- for i:=0 to FieldMapping.Count-1 do
- Exporter.ExportFields.Add.Assign(FieldMapping[i]);
- NumberExported := Exporter.Execute;
- Exporter.Dataset.Last;
- Exporter.Dataset.First;
- AssertEquals('Number of records exported matches recordcount', NumberExported,
- Exporter.Dataset.RecordCount);
- Exporter.Dataset.Close;
- ReadXMLFile(XML,Exporter.FileName);
- AssertEquals('Correct written','*&*<*>*',XML.DocumentElement.FirstChild.FirstChild.NextSibling.FirstChild.NodeValue);
- finally
- XML.Free;
- FieldMapping.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestXSDExport_DelphiClientDataset;
- var
- Exporter: TXMLXSDExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TXMLXSDFormatSettings;
- begin
- Exporter := TXMLXSDExporter.Create(nil);
- ExportSettings:=TXMLXSDFormatSettings.Create(true);
- try
- ExportSettings.ExportFormat:=DelphiClientDataset;
- ExportFormat:=efXMLXSDClientDataset;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- procedure TTestDBExport.TestXSDExport_Excel;
- var
- Exporter: TXMLXSDExporter;
- ExportFormat: TDetailedExportFormats;
- ExportSettings:TXMLXSDFormatSettings;
- begin
- Exporter := TXMLXSDExporter.Create(nil);
- ExportSettings:=TXMLXSDFormatSettings.Create(true);
- try
- ExportSettings.ExportFormat:=ExcelCompatible;
- ExportFormat:=efXMLXSDExcel;
- Exporter.FileName := FExportTempDir + inttostr(ord(ExportFormat)) +
- lowercase(rightstr(TestName,5)) +
- TDetailedExportExtensions[ExportFormat];
- Exporter.FormatSettings:=ExportSettings;
- GenericExportTest(Exporter, ExportFormat);
- AssertTrue('Output file must be created', FileExists(Exporter.FileName));
- AssertFalse('Output file must not be empty', (GetFileSize(Exporter.FileName) = 0));
- finally
- if (FKeepFilesAfterTest = False) then
- DeleteFile(Exporter.FileName);
- ExportSettings.Free;
- Exporter.Free;
- end;
- end;
- initialization
- RegisterTest(TTestDBExport);
- end.
|