Delphi12 compatibility

This commit is contained in:
Daniele Teti 2023-11-06 12:37:33 +01:00
parent 5d341655f9
commit e1aa50dd86
21 changed files with 543 additions and 205 deletions

View File

@ -92,7 +92,7 @@ var
vSchemaKind: TSchemaKind;
vClass: TPersistentClass;
begin
Result := nil;
//Result := nil; //dt
vSchemaKind := GetSchemaKind<T>;
if (vSchemaKind = skUnknown) then
raise ETypeNotSupportedByAField.Create(c_ErrorTypeNotSupportedByAField);
@ -129,7 +129,7 @@ end;
function TJsonSchema.GetSchemaKind<T>: TSchemaKind;
var
vTypeInfo: PTypeInfo;
vClass: TPersistentClass;
//vClass: TPersistentClass; //dt
begin
Result := skUnknown;
vTypeInfo := System.TypeInfo(T);

View File

@ -2,7 +2,7 @@
<PropertyGroup>
<ProjectGuid>{5B9408E7-46AC-4431-9716-C9EB9F8589B1}</ProjectGuid>
<MainSource>SwagDoc.dpk</MainSource>
<ProjectVersion>19.5</ProjectVersion>
<ProjectVersion>20.1</ProjectVersion>
<FrameworkType>None</FrameworkType>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
@ -13,16 +13,6 @@
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
<Base_Android>true</Base_Android>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
<Base_Android64>true</Base_Android64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
@ -64,19 +54,6 @@
<RuntimeOnlyPackage>true</RuntimeOnlyPackage>
<DCC_OutputNeverBuildDcps>true</DCC_OutputNeverBuildDcps>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android)'!=''">
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar</EnabledSysJars>
<Android_LauncherIcon192>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png</Android_LauncherIcon192>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android64)'!=''">
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>false</VerInfo_IncludeVerInfo>
<DCC_CBuilderOutput>None</DCC_CBuilderOutput>
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar</EnabledSysJars>
<Android_LauncherIcon192>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png</Android_LauncherIcon192>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
@ -272,6 +249,16 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashImageDefV21">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStyles">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
@ -292,6 +279,66 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStylesV31">
<Platform Name="Android">
<RemoteDir>res\values-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIcon">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconBackground">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconForeground">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconMonochrome">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconV33">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_Colors">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
@ -302,6 +349,16 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_ColorsDark">
<Platform Name="Android">
<RemoteDir>res\values-night-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values-night-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_DefaultAppIcon">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
@ -472,6 +529,56 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedNotificationIcon">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplash">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplashDark">
<Platform Name="Android">
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplashV31">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplashV31Dark">
<Platform Name="Android">
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DebugSymbols">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
@ -912,9 +1019,6 @@
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
</Deployment>
<Platforms>
<Platform value="Android">False</Platform>
<Platform value="Android64">False</Platform>
<Platform value="Linux64">False</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>

View File

@ -3025,10 +3025,6 @@ end;
class function TMVCActiveRecordHelper.Select<T>(const SQL: string; const Params: array of Variant;
const ParamTypes: array of TFieldType; const Options: TMVCActiveRecordLoadOptions): TObjectList<T>;
var
lDataSet: TDataSet;
lAR: TMVCActiveRecord;
lHandled: Boolean;
begin
Result := TObjectList<T>.Create(True);
try
@ -3049,12 +3045,8 @@ class function TMVCActiveRecordHelper.SelectOne<T>(const SQL: string; const Para
const ParamTypes: array of TFieldType; const Options: TMVCActiveRecordLoadOptions;
const RaiseExceptionIfNotFound: Boolean): T;
var
lDataSet: TDataSet;
lAR: TMVCActiveRecord;
lHandled: Boolean;
lList: TObjectList<T>;
begin
Result := nil;
lList := Select<T>(SQL, Params, ParamTypes, Options);
try
if (lList.Count = 0) then
@ -3606,8 +3598,6 @@ class function TMVCActiveRecordHelper.Merge<T>(CurrentList, NewList: TObjectList
var
I: Integer;
lFoundAtIndex: Integer;
lCurrPKValue: Integer;
lPKValue: TValue;
lUnitOfWork: IMVCUnitOfWork<T>;
lPKType: TFieldType;
lNeedsToBeUpdated: Boolean;

View File

@ -220,12 +220,10 @@ end;
procedure TIntfCleanupThread<IInterface>.Execute;
var
lTargetSize: Integer;
lAvgSize: TPoolSizeSamples;
lArrIndex: Integer;
lSampleTick: Integer;
begin
lArrIndex := 0;
lSampleTick := 0;
while not Terminated do
begin

View File

@ -29,6 +29,8 @@ unit MVCFramework.JSONRPC;
https://www.jsonrpc.org/historical/json-rpc-over-http.html
}
{$I dmvcframework.inc}
interface
uses
@ -2907,6 +2909,9 @@ begin
else
begin
RaiseSerializationError('Parameter doesn''t support IJSONRPCResponse');
{$IF Defined(DELPHI12ORBETTER)}
Result := Default(T);
{$ENDIF}
end;
end;

View File

@ -123,7 +123,6 @@ end;
procedure TMVCLRUCache<T>.RemoveIf(const Action: TMVCLRUCacheAction);
var
I: Integer;
lIndex: Integer;
lCacheSize: Integer;
begin

View File

@ -103,8 +103,6 @@ implementation
{ TObjectPool<T> }
constructor TObjectPool<T>.Create(MaxSize: Integer; ShrinkTriggerSize, ShrinkTargetSize: Integer; const Factory: TFunc<T>);
var
i: Integer;
begin
inherited Create;
fOnResetState := nil;
@ -222,12 +220,10 @@ end;
procedure TCleanupThread<T>.Execute;
var
lTargetSize: Integer;
lAvgSize: TPoolSizeSamples;
lArrIndex: Integer;
lSampleTick: Integer;
begin
lArrIndex := 0;
lSampleTick := 0;
while not Terminated do
begin

View File

@ -671,7 +671,11 @@ function TMVCRESTClient.AddBodyFieldFormData(const aName: string; aStreamValue:
const aContentType: string): IMVCRESTClient;
begin
Result := Self;
{$IF Defined(DELPHI12ORBETTER)}
GetBodyFormData.AddStream(aName, aStreamValue, False, '', aContentType);
{$ELSE}
GetBodyFormData.AddStream(aName, aStreamValue, '', aContentType);
{$ENDIF}
SetContentType(TMVCMediaType.MULTIPART_FORM_DATA);
end;
{$ENDIF}
@ -706,7 +710,11 @@ end;
function TMVCRESTClient.AddFile(const aName: string; aFileStreamValue: TStream; const aFileName, aContentType: string): IMVCRESTClient;
begin
Result := Self;
{$IF Defined(DELPHI12ORBETTER)}
GetBodyFormData.AddStream(aName, aFileStreamValue, False, aFileName, aContentType);
{$ELSE}
GetBodyFormData.AddStream(aName, aFileStreamValue, aFileName, aContentType);
{$ENDIF}
SetContentType(TMVCMediaType.MULTIPART_FORM_DATA);
end;
{$ENDIF}

View File

@ -539,7 +539,6 @@ var
V: TValue;
Found: Boolean;
begin
Found := False;
for elem in AList do
begin
V := GetProperty(elem, APropertyName);

View File

@ -3858,8 +3858,6 @@ end;
function TMVCJsonDataObjectsSerializer.JSONObjectToRecord<T>(const JSONObject: TJsonObject): T;
var
lTypeSize: Integer;
lTypeInfo: PTypeInfo;
AIgnoredAttributes: TMVCIgnoredList;
lKeyName: string;
lAttributeValue: TValue;
@ -3876,7 +3874,6 @@ begin
raise EMVCDeserializationException.Create('Extected record, got ' + lRTTIType.QualifiedName);
end;
lTypeInfo := lRTTIType.Handle;
lBuffer := @Result;
lField := nil;
AIgnoredAttributes := [];

View File

@ -1470,7 +1470,6 @@ var
Obj: TObject;
lSerializer: IMVCSerializer;
begin
Result := nil;
if FSerializers.TryGetValue(ContentMediaType, lSerializer) then
begin
Obj := TMVCSerializerHelper.CreateObject(TClass(T).QualifiedClassName);
@ -1495,7 +1494,6 @@ var
List: TObjectList<T>;
lSerializer: IMVCSerializer;
begin
Result := nil;
if FSerializers.TryGetValue(ContentMediaType, lSerializer) then
begin
List := TObjectList<T>.Create(True);
@ -3020,8 +3018,8 @@ begin
lFromQueryStringAttribute) then
begin
Inc(lAttributeInjectedParamCount, 1);
lInjectedParamValue := AContext.Request.QueryStringParam
(lFromQueryStringAttribute.ParamName);
lInjectedParamValue := URLDecode(AContext.Request.QueryStringParam
(lFromQueryStringAttribute.ParamName));
HandleDefaultValueForInjectedParameter(lInjectedParamValue, lFromQueryStringAttribute);
AActualParams[I] := GetActualParam(AActionFormalParams[I], lInjectedParamValue);
end

View File

@ -75,6 +75,9 @@ DelphiMVCFramework is compatible with Delphi version XE7 or better
{$DEFINE ALEXANDRIAORBETTER}
{$ENDIF}
{$IF CompilerVersion >= 36} // 12
{$DEFINE DELPHI12ORBETTER}
{$ENDIF}
{$IFDEF MOBILE}
{$LEGACYIFEND OFF}

View File

@ -12,7 +12,7 @@ from pathlib import Path
init()
DEFAULT_DELPHI_VERSION = "11.3"
DEFAULT_DELPHI_VERSION = "12"
g_releases_path = "releases"
g_output = "bin"
@ -54,6 +54,7 @@ def build_delphi_project(
"11.1": {"path": "22.0", "desc": "Delphi 11.1 Alexandria"},
"11.2": {"path": "22.0", "desc": "Delphi 11.2 Alexandria"},
"11.3": {"path": "22.0", "desc": "Delphi 11.3 Alexandria"},
"12": {"path": "23.0", "desc": "Delphi 12"},
}
assert delphi_version in delphi_versions, (

View File

@ -212,7 +212,7 @@ begin
Assert.IsTrue(lJSON.Contains('data') and (lJSON.Types['data'] = TJsonDataType.jdtArray), 'incorrect "data" property in JSON');
var lCustomers := TJSONUtils.JSONArrayToListOf<TCustomer>(lJSON.A['data']);
try
Assert.AreEqual(20, lCustomers.Count);
Assert.AreEqual<Integer>(20, lCustomers.Count);
finally
lCustomers.Free;
end;

View File

@ -250,7 +250,7 @@ begin
lCustomer.ID := -1; { don't be fooled by the default! }
lCustomer.Insert;
lID := lCustomer.ID;
Assert.AreEqual(1, lID);
Assert.AreEqual<Integer>(1, lID);
finally
lCustomer.Free;
end;
@ -274,11 +274,11 @@ begin
lCustomer := TMVCActiveRecord.GetByPK<TCustomer>(lID);
try
Assert.AreEqual('1234', lCustomer.Code.Value);
Assert.AreEqual(3, lCustomer.Rating.Value);
Assert.AreEqual<Integer>(3, lCustomer.Rating.Value);
Assert.AreEqual('note1noteupdated', lCustomer.Note);
Assert.AreEqual('bit Time Professionals', lCustomer.CompanyName.Value);
Assert.AreEqual('Rome, IT', lCustomer.City);
Assert.AreEqual(1, lCustomer.ID.Value);
Assert.AreEqual<Integer>(1, lCustomer.ID.Value);
Assert.IsFalse(lCustomer.CreationTime.HasValue);
Assert.IsFalse(lCustomer.CreationDate.HasValue);
finally
@ -329,7 +329,7 @@ begin
lCustomer := TMVCActiveRecord.GetByPK<TCustomerWithCode>('1000');
try
Assert.AreEqual('1000', lCustomer.Code);
Assert.AreEqual(3, lCustomer.Rating.Value);
Assert.AreEqual<Integer>(3, lCustomer.Rating.Value);
Assert.AreEqual('note1noteupdated', lCustomer.Note);
Assert.AreEqual('bit Time Professionals', lCustomer.CompanyName.Value);
Assert.AreEqual('Rome, IT', lCustomer.City);
@ -387,7 +387,7 @@ begin
lCustomer := TMVCActiveRecord.GetByPK<TCustomerWithGUID>(lGUID);
try
Assert.AreEqual('1234', lCustomer.Code.Value);
Assert.AreEqual(3, lCustomer.Rating.Value);
Assert.AreEqual<Integer>(3, lCustomer.Rating.Value);
Assert.AreEqual('note1noteupdated', lCustomer.Note);
Assert.AreEqual('bit Time Professionals', lCustomer.CompanyName.Value);
Assert.AreEqual('Rome, IT', lCustomer.City);
@ -426,7 +426,7 @@ begin
lCustomer.ID := -1; { don't be fooled by the default! }
lCustomer.Insert;
lID := lCustomer.ID;
Assert.AreEqual(1, lID);
Assert.AreEqual<Integer>(1, lID);
finally
lCustomer.Free;
end;
@ -450,11 +450,11 @@ begin
lCustomer := TMVCActiveRecord.GetByPK<TCustomerWithSpaces>(lID);
try
Assert.AreEqual('1234', lCustomer.Code.Value);
Assert.AreEqual(3, lCustomer.Rating.Value);
Assert.AreEqual<Integer>(3, lCustomer.Rating.Value);
Assert.AreEqual('note1noteupdated', lCustomer.Note);
Assert.AreEqual('bit Time Professionals', lCustomer.CompanyName.Value);
Assert.AreEqual('Rome, IT', lCustomer.City);
Assert.AreEqual(1, lCustomer.ID);
Assert.AreEqual<Integer>(1, lCustomer.ID);
Assert.IsFalse(lCustomer.CreationTime.HasValue);
Assert.IsFalse(lCustomer.CreationDate.HasValue);
finally
@ -595,7 +595,7 @@ begin
var lGoodCustomers := TMVCActiveRecord.SelectRQL<TGoodCustomer>('', 10);
try
Assert.AreEqual(2, lGoodCustomers.Count);
Assert.AreEqual<Integer>(2, lGoodCustomers.Count);
finally
lGoodCustomers.Free;
end;
@ -617,7 +617,7 @@ begin
lGoodCustomers := TMVCActiveRecord.SelectRQL<TGoodCustomer>('lt(Rating,4);sort(+CompanyName)', 10);
try
Assert.AreEqual(0, lGoodCustomers.Count);
Assert.AreEqual<Integer>(0, lGoodCustomers.Count);
finally
lGoodCustomers.Free;
end;
@ -712,28 +712,28 @@ begin
LoadData;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>(RQL1, MAXINT);
try
Assert.AreEqual(240, lCustomers.Count);
Assert.AreEqual<Integer>(240, lCustomers.Count);
finally
lCustomers.Free;
end;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>(RQL1, 20);
try
Assert.AreEqual(20, lCustomers.Count);
Assert.AreEqual<Integer>(20, lCustomers.Count);
finally
lCustomers.Free;
end;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>(RQL1, 1);
try
Assert.AreEqual(1, lCustomers.Count);
Assert.AreEqual<Integer>(1, lCustomers.Count);
finally
lCustomers.Free;
end;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>(RQL1, -1);
try
Assert.AreEqual(240, lCustomers.Count);
Assert.AreEqual<Integer>(240, lCustomers.Count);
finally
lCustomers.Free;
end;
@ -836,20 +836,20 @@ begin
lCustomers.Free;
end;
Assert.AreEqual(0, lInserted);
Assert.AreEqual(30, lUpdated);
Assert.AreEqual(0, lDeleted);
Assert.AreEqual<Integer>(0, lInserted);
Assert.AreEqual<Integer>(30, lUpdated);
Assert.AreEqual<Integer>(0, lDeleted);
lCustomers := TMVCActiveRecord.All<TCustomer>;
try
Assert.AreEqual(30, lCustomers.Count);
Assert.AreEqual<Integer>(30, lCustomers.Count);
finally
lCustomers.Free;
end;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>('eq(rating,10)', 1000);
try
Assert.AreEqual(30, lCustomers.Count);
Assert.AreEqual<Integer>(30, lCustomers.Count);
finally
lCustomers.Free;
end;
@ -944,34 +944,34 @@ begin
lCustomers.Free;
end;
Assert.AreEqual(2, lInserted);
Assert.AreEqual(4, lUpdated);
Assert.AreEqual(26, lDeleted);
Assert.AreEqual<Integer>(2, lInserted);
Assert.AreEqual<Integer>(4, lUpdated);
Assert.AreEqual<Integer>(26, lDeleted);
lCustomers := TMVCActiveRecord.All<TCustomer>;
try
Assert.AreEqual(6, lCustomers.Count);
Assert.AreEqual<Integer>(6, lCustomers.Count);
finally
lCustomers.Free;
end;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>('eq(rating,3)', 1000);
try
Assert.AreEqual(2, lCustomers.Count);
Assert.AreEqual<Integer>(2, lCustomers.Count);
finally
lCustomers.Free;
end;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>('eq(rating,2)', 1000);
try
Assert.AreEqual(2, lCustomers.Count, 'Customers not updated correctly');
Assert.AreEqual<Integer>(2, lCustomers.Count, 'Customers not updated correctly');
finally
lCustomers.Free;
end;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>('eq(rating,1)', 1000);
try
Assert.AreEqual(2, lCustomers.Count);
Assert.AreEqual<Integer>(2, lCustomers.Count);
finally
lCustomers.Free;
end;
@ -1023,13 +1023,13 @@ begin
lCustomers.Free;
end;
Assert.AreEqual(0, lInserted);
Assert.AreEqual(0, lUpdated);
Assert.AreEqual(30, lDeleted);
Assert.AreEqual<Integer>(0, lInserted);
Assert.AreEqual<Integer>(0, lUpdated);
Assert.AreEqual<Integer>(30, lDeleted);
lCustomers := TMVCActiveRecord.All<TCustomer>;
try
Assert.AreEqual(lTotCustomers, lCustomers.Count);
Assert.AreEqual<Integer>(lTotCustomers, lCustomers.Count);
finally
lCustomers.Free;
end;
@ -1103,27 +1103,27 @@ begin
lCustomers.Free;
end;
Assert.AreEqual(2, lInserted);
Assert.AreEqual(30, lUpdated);
Assert.AreEqual(0, lDeleted);
Assert.AreEqual<Integer>(2, lInserted);
Assert.AreEqual<Integer>(30, lUpdated);
Assert.AreEqual<Integer>(0, lDeleted);
lCustomers := TMVCActiveRecord.All<TCustomer>;
try
Assert.AreEqual(lTotCustomers, lCustomers.Count);
Assert.AreEqual<Integer>(lTotCustomers, lCustomers.Count);
finally
lCustomers.Free;
end;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>('eq(rating,1)', 1000);
try
Assert.AreEqual(lTotCustomers - 2, lCustomers.Count, 'Some customer changed when should not change');
Assert.AreEqual<Integer>(lTotCustomers - 2, lCustomers.Count, 'Some customer changed when should not change');
finally
lCustomers.Free;
end;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>('eq(rating,3)', 1000);
try
Assert.AreEqual(2, lCustomers.Count, 'Some customer changed when should not change');
Assert.AreEqual<Integer>(2, lCustomers.Count, 'Some customer changed when should not change');
finally
lCustomers.Free;
end;
@ -1143,7 +1143,7 @@ begin
LoadData;
lCustomers := TMVCActiveRecord.SelectRQLByNamedQuery<TCustomer>('CityRomeOrLondon', [], MAXINT);
try
Assert.AreEqual(240, lCustomers.Count);
Assert.AreEqual<Integer>(240, lCustomers.Count);
for var lCustomer in lCustomers do
begin
Assert.IsMatch('^(Rome|London)$', lCustomer.City);
@ -1176,7 +1176,7 @@ begin
LoadData;
var lCustomers := TMVCActiveRecord.SelectByNamedQuery<TCustomer>('ByTwoCities', ['Rome', 'London'], [ftString, ftString]);
try
Assert.AreEqual(240, lCustomers.Count);
Assert.AreEqual<Integer>(240, lCustomers.Count);
for var lCustomer in lCustomers do
begin
Assert.IsMatch('^(Rome|London)$', lCustomer.City);
@ -1190,7 +1190,7 @@ procedure TTestActiveRecordBase.TestNamedQuerySQLByBackEnd;
begin
var lList := TMVCActiveRecord.SelectByNamedQuery<TDummyEntity>('get_backend_name', [],[]);
try
Assert.AreEqual(1, lList.Count);
Assert.AreEqual<Integer>(1, lList.Count);
Assert.AreEqual(lList.First.GetBackEnd, lList.First.BackEndName);
finally
lList.Free;
@ -1344,7 +1344,7 @@ begin
Assert.AreEqual('1234', lRMCustomer.Code.Value);
Assert.AreEqual('note1noteupdated', lRMCustomer.Note);
Assert.AreEqual('bit Time Professionals', lRMCustomer.CompanyName.Value);
Assert.AreEqual(1, lRMCustomer.ID.Value);
Assert.AreEqual<Integer>(1, lRMCustomer.ID.Value);
finally
lRMCustomer.Free;
end;
@ -1458,7 +1458,7 @@ begin
var
lRomeCustomers := TMVCActiveRecord.SelectRQL<TRomeBasedCustomer>('', 10);
try
Assert.AreEqual(2, lRomeCustomers.Count);
Assert.AreEqual<Integer>(2, lRomeCustomers.Count);
finally
lRomeCustomers.Free;
end;
@ -1473,7 +1473,7 @@ begin
lRomeCustomers := TMVCActiveRecord.SelectRQL<TRomeBasedCustomer>('eq(Rating,5);sort(+CompanyName)', 10);
try
Assert.AreEqual(1, lRomeCustomers.Count);
Assert.AreEqual<Integer>(1, lRomeCustomers.Count);
Assert.AreEqual('Rome Company 1', lRomeCustomers[0].CompanyName.Value);
finally
lRomeCustomers.Free;
@ -1481,7 +1481,7 @@ begin
lRomeCustomers := TMVCActiveRecord.SelectRQL<TRomeBasedCustomer>('lt(Rating,2);sort(+CompanyName)', 10);
try
Assert.AreEqual(0, lRomeCustomers.Count);
Assert.AreEqual<Integer>(0, lRomeCustomers.Count);
finally
lRomeCustomers.Free;
end;
@ -1495,14 +1495,14 @@ begin
var
lRomeBasedCustomers := TMVCActiveRecord.Where<TRomeBasedCustomer>('city = ?', ['New York'], [ftString]);
try
Assert.AreEqual(0, lRomeBasedCustomers.Count);
Assert.AreEqual<Integer>(0, lRomeBasedCustomers.Count);
finally
lRomeBasedCustomers.Free;
end;
lRomeBasedCustomers := TMVCActiveRecord.Where<TRomeBasedCustomer>('description = ?', ['Daniele'], [ftString]);
try
Assert.AreEqual(1, lRomeBasedCustomers.Count);
Assert.AreEqual<Integer>(1, lRomeBasedCustomers.Count);
finally
lRomeBasedCustomers.Free;
end;
@ -1557,7 +1557,7 @@ begin
lCustomer.ID := -1; { don't be fooled by the default! }
lCustomer.Insert;
lID := lCustomer.ID;
Assert.AreEqual(1, lID);
Assert.AreEqual<Integer>(1, lID);
lCustomer.CompanyName.Clear;
lCustomer.City := '';
lCustomer.Note := '';
@ -1593,7 +1593,7 @@ begin
LoadData;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>(RQL1, MAXINT);
try
Assert.AreEqual(240, lCustomers.Count);
Assert.AreEqual<Integer>(240, lCustomers.Count);
for var lCustomer in lCustomers do
begin
Assert.IsMatch('^(Rome|London)$', lCustomer.City);
@ -1640,7 +1640,7 @@ begin
// LoadData;
// lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>(RQL1, MAXINT);
// try
// Assert.AreEqual(240, lCustomers.Count);
// Assert.AreEqual<Integer>(240, lCustomers.Count);
// for var lCustomer in lCustomers do
// begin
// Assert.IsMatch('^(Rome|London)$', lCustomer.City);
@ -1662,7 +1662,7 @@ begin
LoadData;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>(RQL1, MAXINT);
try
Assert.AreEqual(240, lCustomers.Count);
Assert.AreEqual<Integer>(240, lCustomers.Count);
for var lCustomer in lCustomers do
begin
Assert.IsMatch('^(Rome|London)$', lCustomer.City);
@ -1673,14 +1673,14 @@ begin
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>(RQL1, 10);
try
Assert.AreEqual(10, lCustomers.Count);
Assert.AreEqual<Integer>(10, lCustomers.Count);
finally
lCustomers.Free;
end;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>(RQL1, 0);
try
Assert.AreEqual(0, lCustomers.Count);
Assert.AreEqual<Integer>(0, lCustomers.Count);
finally
lCustomers.Free;
end;
@ -1701,7 +1701,7 @@ begin
LoadData;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>(RQL1, MAXINT);
try
Assert.AreEqual(140, lCustomers.Count);
Assert.AreEqual<Integer>(140, lCustomers.Count);
finally
lCustomers.Free;
end;
@ -1731,7 +1731,7 @@ begin
lCustomers := TMVCActiveRecord.SelectRQL<TCustomerWithGUID>(RQL1, MAXINT);
try
Assert.AreEqual(1, lCustomers.Count);
Assert.AreEqual<Integer>(1, lCustomers.Count);
finally
lCustomers.Free;
end;
@ -1750,7 +1750,7 @@ begin
LoadData;
lCustomers := TMVCActiveRecord.SelectRQL<TCustomer>(RQL1, MAXINT);
try
Assert.AreEqual(240, lCustomers.Count);
Assert.AreEqual<Integer>(240, lCustomers.Count);
for var lCustomer in lCustomers do
begin
Assert.IsMatch('^(Rome|London)$', lCustomer.City);
@ -1829,7 +1829,7 @@ begin
lCustomer.Note := 'note1';
lCustomer.Store; { pk is not set, so it should do an insert }
lID := lCustomer.ID;
Assert.AreEqual(1, lID, 'ID should be 1 but it is ' + lID.ToString);
Assert.AreEqual<Integer>(1, lID, 'ID should be 1 but it is ' + lID.ToString);
finally
lCustomer.Free;
end;
@ -1923,7 +1923,7 @@ begin
lCustomer.ID := -1; { don't be fooled by the default! }
lCustomer.Insert;
lID := lCustomer.ID;
Assert.AreEqual(1, lID);
Assert.AreEqual<Integer>(1, lID);
finally
lCustomer.Free;
end;

View File

@ -1,11 +1,11 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{0582DE6A-D716-46D3-8CBD-84AD73A4B536}</ProjectGuid>
<ProjectVersion>19.5</ProjectVersion>
<ProjectVersion>20.1</ProjectVersion>
<FrameworkType>VCL</FrameworkType>
<Base>True</Base>
<Config Condition="'$(Config)'==''">TESTINSIGHT</Config>
<Platform Condition="'$(Platform)'==''">Win64</Platform>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>3</TargetedPlatforms>
<AppType>Console</AppType>
<MainSource>DMVCFrameworkTests.dpr</MainSource>
@ -47,6 +47,13 @@
<Cfg_1>true</Cfg_1>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_4)'=='true') or '$(Cfg_4_Win64)'!=''">
<Cfg_4_Win64>true</Cfg_4_Win64>
<CfgParent>Cfg_4</CfgParent>
<Cfg_4>true</Cfg_4>
<Cfg_1>true</Cfg_1>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='CI' or '$(Cfg_5)'!=''">
<Cfg_5>true</Cfg_5>
<CfgParent>Cfg_4</CfgParent>
@ -122,7 +129,7 @@
<DCC_S>false</DCC_S>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
<DCC_Define>DEBUG;TESTINSIGHT;$(DCC_Define)</DCC_Define>
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_ShowGeneralMessages>true</DCC_ShowGeneralMessages>
@ -160,6 +167,10 @@
<PropertyGroup Condition="'$(Cfg_4_Win32)'!=''">
<VerInfo_Locale>1033</VerInfo_Locale>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_4_Win64)'!=''">
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_5)'!=''">
<DCC_Define>CI;$(DCC_Define)</DCC_Define>
</PropertyGroup>
@ -176,6 +187,9 @@
<PropertyGroup Condition="'$(Cfg_6_Win32)'!=''">
<VerInfo_Locale>1033</VerInfo_Locale>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_Define>TESTINSIGHT;$(DCC_Define)</DCC_Define>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<VerInfo_Locale>1033</VerInfo_Locale>
<Debugger_RunParams>--include:lru</Debugger_RunParams>
@ -263,10 +277,6 @@
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="TESTINSIGHT">
<Key>Cfg_2</Key>
<CfgParent>Cfg_1</CfgParent>
@ -275,14 +285,18 @@
<Key>Cfg_4</Key>
<CfgParent>Cfg_1</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="CI">
<Key>Cfg_5</Key>
<CfgParent>Cfg_4</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="LINUX">
<Key>Cfg_6</Key>
<CfgParent>Cfg_4</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="CI">
<Key>Cfg_5</Key>
<CfgParent>Cfg_4</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
@ -343,10 +357,8 @@
<Source Name="MainSource">DMVCFrameworkTests.dpr</Source>
</Source>
<Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\bcboffice2k280.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\bcbofficexp280.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k280.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dclofficexp280.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k290.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dclofficexp290.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
</Excluded_Packages>
</Delphi.Personality>
<Deployment Version="4">
@ -470,6 +482,16 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashImageDefV21">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStyles">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
@ -490,6 +512,66 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStylesV31">
<Platform Name="Android">
<RemoteDir>res\values-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIcon">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconBackground">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconForeground">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconMonochrome">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconV33">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_Colors">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
@ -500,6 +582,16 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_ColorsDark">
<Platform Name="Android">
<RemoteDir>res\values-night-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values-night-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_DefaultAppIcon">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
@ -670,6 +762,56 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedNotificationIcon">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplash">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplashDark">
<Platform Name="Android">
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplashV31">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplashV31Dark">
<Platform Name="Android">
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DebugSymbols">
<Platform Name="iOSSimulator">
<Operation>1</Operation>

View File

@ -421,16 +421,16 @@ begin
Params.Clear;
Assert.isTrue(FRouter.ExecuteRouting('/issue338/projectid/pictures/imageuuid', httpGET, 'text/plain', 'text/plain',
FControllers, 'text/plain', TMVCMediaType.TEXT_PLAIN, '', Params, ResponseContentType, ResponseContentEncoding));
Assert.areEqual('GetImage', FRouter.MethodToCall.Name);
Assert.areEqual(2, Params.Count);
Assert.areEqual('projectid', Params['projectid']);
Assert.areEqual('imageuuid', Params['imageuuid']);
Assert.AreEqual('GetImage', FRouter.MethodToCall.Name);
Assert.AreEqual<Integer>(2, Params.Count);
Assert.AreEqual('projectid', Params['projectid']);
Assert.AreEqual('imageuuid', Params['imageuuid']);
Params.Clear;
Assert.isTrue(FRouter.ExecuteRouting('/issue338/projectid', httpGET, 'text/plain', 'text/plain', FControllers,
'text/plain', TMVCMediaType.TEXT_PLAIN, '', Params, ResponseContentType, ResponseContentEncoding));
Assert.areEqual('GetProject', FRouter.MethodToCall.Name);
Assert.areEqual(1, Params.Count);
Assert.areEqual<Integer>(1, Params.Count);
Assert.areEqual('projectid', Params['projectid']);
finally
Params.Free;
@ -450,7 +450,7 @@ begin
Assert.isTrue(FRouter.ExecuteRouting('/issue492/delphi$mvc$framework', httpGET, 'text/plain', 'text/plain',
FControllers, 'text/plain', TMVCMediaType.TEXT_PLAIN, '', Params, ResponseContentType, ResponseContentEncoding));
Assert.areEqual('GetIssue492', FRouter.MethodToCall.Name);
Assert.areEqual(1, Params.Count);
Assert.areEqual<Integer>(1, Params.Count);
Assert.areEqual('delphi$mvc$framework', Params['stringvalue']);
finally
Params.Free;
@ -470,7 +470,7 @@ begin
Assert.isTrue(FRouter.ExecuteRouting('/patient/$match', httpGET, 'text/plain', 'text/plain',
FControllers, 'text/plain', TMVCMediaType.TEXT_PLAIN, '', Params, ResponseContentType, ResponseContentEncoding));
Assert.areEqual('GetOrderIssue513', FRouter.MethodToCall.Name);
Assert.areEqual(0, Params.Count);
Assert.areEqual<Integer>(0, Params.Count);
finally
Params.Free;
end;
@ -489,7 +489,7 @@ begin
Assert.isTrue(FRouter.ExecuteRouting('/patient/$match/daniele/teti', httpGET, 'text/plain', 'text/plain', FControllers,
'text/plain', TMVCMediaType.TEXT_PLAIN, '', Params, ResponseContentType, ResponseContentEncoding));
Assert.areEqual('GetOrderIssue513WithPars', FRouter.MethodToCall.Name);
Assert.areEqual(2, Params.Count);
Assert.areEqual<Integer>(2, Params.Count);
Assert.areEqual('daniele', Params['par1']);
Assert.areEqual('teti', Params['par2']);
finally
@ -510,7 +510,7 @@ begin
Assert.isTrue(FRouter.ExecuteRouting('/patient/$match/da$niele/te$ti', httpGET, 'text/plain', 'text/plain', FControllers,
'text/plain', TMVCMediaType.TEXT_PLAIN, '', Params, ResponseContentType, ResponseContentEncoding));
Assert.areEqual('GetOrderIssue513WithPars', FRouter.MethodToCall.Name);
Assert.areEqual(2, Params.Count);
Assert.areEqual<Integer>(2, Params.Count);
Assert.areEqual('da$niele', Params['par1']);
Assert.areEqual('te$ti', Params['par2']);
finally
@ -1075,7 +1075,7 @@ begin
try
Assert.isTrue(FRouter.ExecuteRouting('/orders', httpGET, 'text/plain', 'text/plain', FControllers, 'text/plain',
TMVCConstants.DEFAULT_CONTENT_CHARSET, '', Params, ResponseContentType, ResponseContentCharset));
Assert.areEqual(0, Params.Count);
Assert.areEqual<Integer>(0, Params.Count);
Assert.areEqual('TSimpleController', FRouter.ControllerClazz.ClassName);
Assert.areEqual('Orders', FRouter.MethodToCall.Name);
Assert.areEqual(TMVCConstants.DEFAULT_CONTENT_CHARSET, ResponseContentCharset);
@ -1112,7 +1112,7 @@ begin
Assert.isTrue(lRouter.ExecuteRouting('/api/orders', httpGET, 'text/plain', 'text/plain', FControllers,
'text/plain', TMVCConstants.DEFAULT_CONTENT_CHARSET, '/api', lParams, ResponseContentType,
ResponseContentEncoding));
Assert.areEqual(0, lParams.Count);
Assert.areEqual<Integer>(0, lParams.Count);
Assert.areEqual('TSimpleController', lRouter.ControllerClazz.ClassName);
Assert.areEqual('Orders', lRouter.MethodToCall.Name);
Assert.areEqual(TMVCConstants.DEFAULT_CONTENT_CHARSET, ResponseContentEncoding);
@ -1138,7 +1138,7 @@ begin
try
Assert.isTrue(FRouter.ExecuteRouting('/orders/789', httpGET, 'text/plain', 'text/plain', FControllers, 'text/plain',
TMVCMediaType.TEXT_PLAIN, '', Params, ResponseContentType, ResponseContentEncoding));
Assert.areEqual(1, Params.Count);
Assert.areEqual<Integer>(1, Params.Count);
Assert.areEqual('789', Params['ordernumber']);
Assert.areEqual('TSimpleController', FRouter.ControllerClazz.ClassName);
Assert.areEqual('OrderNumber', FRouter.MethodToCall.Name);
@ -1150,7 +1150,7 @@ begin
try
Assert.isTrue(FRouter.ExecuteRouting('/orders/àèéìòù .-_\', httpGET, 'text/plain', 'text/plain', FControllers,
'text/plain', TMVCMediaType.TEXT_PLAIN, '', Params, ResponseContentType, ResponseContentEncoding));
Assert.areEqual(1, Params.Count);
Assert.areEqual<Integer>(1, Params.Count);
Assert.areEqual('àèéìòù .-_\', Params['ordernumber']);
Assert.areEqual('TSimpleController', FRouter.ControllerClazz.ClassName);
Assert.areEqual('OrderNumber', FRouter.MethodToCall.Name);
@ -1172,7 +1172,7 @@ begin
Assert.isTrue(FRouter.ExecuteRouting('/orders', httpGET, '', 'application/json', FControllers,
TMVCConstants.DEFAULT_CONTENT_TYPE, TMVCConstants.DEFAULT_CONTENT_CHARSET, '', Params, ResponseContentType,
ResponseContentCharset));
Assert.areEqual(0, Params.Count);
Assert.areEqual<Integer>(0, Params.Count);
Assert.areEqual('TSimpleController', FRouter.ControllerClazz.ClassName);
Assert.areEqual('OrdersProduceJSON', FRouter.MethodToCall.Name);
Assert.areEqual(TMVCConstants.DEFAULT_CONTENT_CHARSET, ResponseContentCharset);
@ -1193,7 +1193,7 @@ begin
Assert.isTrue(FRouter.ExecuteRouting('/orders', httpGET, '', 'application/json; charset=UTF-8', FControllers,
TMVCConstants.DEFAULT_CONTENT_TYPE, TMVCConstants.DEFAULT_CONTENT_CHARSET, '', Params, ResponseContentType,
ResponseContentCharset));
Assert.areEqual(0, Params.Count);
Assert.areEqual<Integer>(0, Params.Count);
Assert.areEqual('TSimpleController', FRouter.ControllerClazz.ClassName);
Assert.areEqual('OrdersProduceJSON', FRouter.MethodToCall.Name);
Assert.areEqual(TMVCConstants.DEFAULT_CONTENT_CHARSET, ResponseContentCharset);
@ -1465,7 +1465,7 @@ begin
try
Assert.isTrue(FRouter.ExecuteRouting('/', httpGET, 'text/plain', 'text/plain', FControllers, 'text/plain',
TMVCMediaType.TEXT_PLAIN, '', Params, ResponseContentType, ResponseContentEncoding));
Assert.areEqual(0, Params.Count);
Assert.areEqual<Integer>(0, Params.Count);
Assert.areEqual('TSimpleController', FRouter.ControllerClazz.ClassName);
Assert.areEqual('Index', FRouter.MethodToCall.Name);
finally
@ -1483,7 +1483,7 @@ begin
try
Assert.isTrue(FRouter.ExecuteRouting('', httpGET, 'text/plain', 'text/plain', FControllers, 'text/plain',
TMVCMediaType.TEXT_PLAIN, '', Params, ResponseContentType, ResponseContentEncoding));
Assert.areEqual(0, Params.Count);
Assert.areEqual<Integer>(0, Params.Count);
Assert.areEqual('TSimpleController', FRouter.ControllerClazz.ClassName);
Assert.areEqual('Index', FRouter.MethodToCall.Name);
finally
@ -1752,14 +1752,14 @@ begin
Assert.isFalse(lMultiMap.Contains('key1'));
lMultiMap.Add('key1', TMyIntfObject.Create(1, 'value1'));
Assert.isTrue(lMultiMap.Contains('key1'));
Assert.areEqual(1, lMultiMap.GetItems('key1').Count);
Assert.areEqual<Integer>(1, lMultiMap.GetItems('key1').Count);
lMultiMap.Add('key1', TMyIntfObject.Create(2, 'value2'));
Assert.areEqual(2, lMultiMap.GetItems('key1').Count);
Assert.areEqual<Integer>(2, lMultiMap.GetItems('key1').Count);
Assert.areEqual('value1', lMultiMap.GetItems('key1')[0].GetDescription);
Assert.areEqual('value2', lMultiMap.GetItems('key1')[1].GetDescription);
lMultiMap.Add('key2', TMyIntfObject.Create(1, 'value3'));
Assert.areEqual(2, lMultiMap.GetItems('key1').Count);
Assert.areEqual(1, lMultiMap.GetItems('key2').Count);
Assert.areEqual<Integer>(2, lMultiMap.GetItems('key1').Count);
Assert.areEqual<Integer>(1, lMultiMap.GetItems('key2').Count);
end;
procedure TTestMultiMap.TestInterfaceMultiMapRemove;
@ -1770,7 +1770,7 @@ begin
lMultiMap.Remove('not valid');
lMultiMap.Add('key1', TMyIntfObject.Create(1, 'value1'));
lMultiMap.Add('key1', TMyIntfObject.Create(2, 'value2'));
Assert.areEqual(2, lMultiMap.GetItems('key1').Count);
Assert.areEqual<Integer>(2, lMultiMap.GetItems('key1').Count);
Assert.isTrue(lMultiMap.Contains('key1'));
lMultiMap.Remove('key1');
Assert.isFalse(lMultiMap.Contains('key1'));
@ -1786,14 +1786,14 @@ begin
Assert.isFalse(lMultiMap.Contains('key1'));
lMultiMap.Add('key1', TMyClass.Create(1, 'value1'));
Assert.isTrue(lMultiMap.Contains('key1'));
Assert.areEqual(1, lMultiMap.GetItems('key1').Count);
Assert.areEqual<Integer>(1, lMultiMap.GetItems('key1').Count);
lMultiMap.Add('key1', TMyClass.Create(2, 'value2'));
Assert.areEqual(2, lMultiMap.GetItems('key1').Count);
Assert.areEqual<Integer>(2, lMultiMap.GetItems('key1').Count);
Assert.areEqual('value1', lMultiMap.GetItems('key1')[0].Description);
Assert.areEqual('value2', lMultiMap.GetItems('key1')[1].Description);
lMultiMap.Add('key2', TMyClass.Create(1, 'value3'));
Assert.areEqual(2, lMultiMap.GetItems('key1').Count);
Assert.areEqual(1, lMultiMap.GetItems('key2').Count);
Assert.areEqual<Integer>(2, lMultiMap.GetItems('key1').Count);
Assert.areEqual<Integer>(1, lMultiMap.GetItems('key2').Count);
end;
procedure TTestMultiMap.TestObjectMultiMapRemove;
@ -1804,7 +1804,7 @@ begin
lMultiMap.Remove('not valid');
lMultiMap.Add('key1', TMyClass.Create(1, 'value1'));
lMultiMap.Add('key1', TMyClass.Create(2, 'value2'));
Assert.areEqual(2, lMultiMap.GetItems('key1').Count);
Assert.areEqual<Integer>(2, lMultiMap.GetItems('key1').Count);
Assert.isTrue(lMultiMap.Contains('key1'));
lMultiMap.Remove('key1');
Assert.isFalse(lMultiMap.Contains('key1'));

View File

@ -736,7 +736,7 @@ var
begin
res := RESTClient.Get('/lotofcookies');
Assert.areEqual<Integer>(HTTP_STATUS.OK, res.StatusCode);
Assert.areEqual(4, res.Cookies.Count, 'Wrong number of cookies');
Assert.areEqual<Integer>(4, res.Cookies.Count, 'Wrong number of cookies');
for I := 0 to 3 do
begin
Assert.areEqual('usersettings' + IntToStr(I + 1), res.Cookies[I].Name);

View File

@ -167,7 +167,8 @@ var
lOutput: string;
begin
lParams := ' -D ' + fPGDataDir +
' -E UTF8 --lc-collate=en_US.UTF8 --lc-ctype=en_US.UTF8 --locale=en_US';
' --encoding=UTF8 --lc-collate=en-US --lc-ctype=en-US --locale=en-US';
// ' --encoding=UTF8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8 --locale=en_US';
if SysExecute(fInitDBExecutable + lParams, lOutput) <> 0 then
begin
raise Exception.Create(lOutput);

View File

@ -1433,10 +1433,10 @@ begin
fSerializer.DeserializeObject(lData, lList2);
Assert.areEqual(2, lList2.ListOfString.Count);
Assert.areEqual(2, lList2.ListOfInteger.Count);
Assert.areEqual(2, lList2.ListOfBoolean.Count);
Assert.areEqual(2, lList2.ListOfDouble.Count);
Assert.areEqual<Integer>(2, lList2.ListOfString.Count);
Assert.areEqual<Integer>(2, lList2.ListOfInteger.Count);
Assert.areEqual<Integer>(2, lList2.ListOfBoolean.Count);
Assert.areEqual<Integer>(2, lList2.ListOfDouble.Count);
Assert.areEqual(lList.ListOfString[0], lList2.ListOfString[0]);
Assert.areEqual(lList.ListOfString[1], lList2.ListOfString[1]);
@ -1640,7 +1640,7 @@ begin
Assert.areEqual(Integer(1), LGenericEntity.Code);
Assert.areEqual('General Description', LGenericEntity.Description);
Assert.areEqual(Integer(5), LGenericEntity.Items.Count);
Assert.areEqual<Integer>(5, LGenericEntity.Items.Count);
Assert.areEqual('Description 01', LGenericEntity.Items[0].Description);
Assert.areEqual('Description 02', LGenericEntity.Items[1].Description);
Assert.areEqual('Description 03', LGenericEntity.Items[2].Description);
@ -1687,21 +1687,21 @@ begin
Assert.areEqual(Integer(1), LNestedGenericEntity.Code);
Assert.areEqual('General Description', LNestedGenericEntity.Description);
Assert.areEqual(Integer(3), LNestedGenericEntity.Items.Count);
Assert.areEqual<Integer>(Integer(3), LNestedGenericEntity.Items.Count);
Assert.areEqual(Integer(10), LNestedGenericEntity.Items[0].Code);
Assert.areEqual<Integer>(Integer(10), LNestedGenericEntity.Items[0].Code);
Assert.areEqual('Item_01', LNestedGenericEntity.Items[0].Description);
Assert.areEqual(Integer(1), LNestedGenericEntity.Items[0].Items.Count);
Assert.areEqual<Integer>(Integer(1), LNestedGenericEntity.Items[0].Items.Count);
Assert.areEqual('Description 01', LNestedGenericEntity.Items[0].Items[0].Description);
Assert.areEqual(Integer(11), LNestedGenericEntity.Items[1].Code);
Assert.areEqual<Integer>(Integer(11), LNestedGenericEntity.Items[1].Code);
Assert.areEqual('Item_02', LNestedGenericEntity.Items[1].Description);
Assert.areEqual(Integer(1), LNestedGenericEntity.Items[1].Items.Count);
Assert.areEqual<Integer>(Integer(1), LNestedGenericEntity.Items[1].Items.Count);
Assert.areEqual('Description 02', LNestedGenericEntity.Items[1].Items[0].Description);
Assert.areEqual(Integer(12), LNestedGenericEntity.Items[2].Code);
Assert.areEqual<Integer>(Integer(12), LNestedGenericEntity.Items[2].Code);
Assert.areEqual('Item_03', LNestedGenericEntity.Items[2].Description);
Assert.areEqual(Integer(1), LNestedGenericEntity.Items[2].Items.Count);
Assert.areEqual<Integer>(Integer(1), LNestedGenericEntity.Items[2].Items.Count);
Assert.areEqual('Description 03', LNestedGenericEntity.Items[2].Items[0].Description);
finally
@ -1795,14 +1795,14 @@ begin
Assert.areEqual(Integer(1), LGenericEntity.Code);
Assert.areEqual('General Description', LGenericEntity.Description);
Assert.areEqual(Integer(5), LGenericEntity.Items.Count);
Assert.areEqual<Integer>(Integer(5), LGenericEntity.Items.Count);
Assert.areEqual('Description 01', LGenericEntity.Items[0].Description);
Assert.areEqual('Description 02', LGenericEntity.Items[1].Description);
Assert.areEqual('Description 03', LGenericEntity.Items[2].Description);
Assert.areEqual('Description 04', LGenericEntity.Items[3].Description);
Assert.areEqual('Description 05', LGenericEntity.Items[4].Description);
Assert.areEqual(Integer(5), LGenericEntity.Items2.Count);
Assert.areEqual<Integer>(Integer(5), LGenericEntity.Items2.Count);
Assert.areEqual('Description2 01', LGenericEntity.Items2[0].Description);
Assert.areEqual('Description2 02', LGenericEntity.Items2[1].Description);
Assert.areEqual('Description2 03', LGenericEntity.Items2[2].Description);

View File

@ -4,25 +4,15 @@
<MainSource>TestServer.dpr</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">CI</Config>
<TargetedPlatforms>131</TargetedPlatforms>
<TargetedPlatforms>3</TargetedPlatforms>
<AppType>Console</AppType>
<FrameworkType>None</FrameworkType>
<ProjectVersion>19.5</ProjectVersion>
<ProjectVersion>20.1</ProjectVersion>
<Platform Condition="'$(Platform)'==''">Win64</Platform>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
<Base_Android>true</Base_Android>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
<Base_Android64>true</Base_Android64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
@ -38,12 +28,6 @@
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Linux64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Linux64)'!=''">
<Cfg_2_Linux64>true</Cfg_2_Linux64>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
<Cfg_2_Win32>true</Cfg_2_Win32>
<CfgParent>Cfg_2</CfgParent>
@ -70,16 +54,6 @@
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
<Icns_MainIcns>$(BDS)\bin\delphi_PROJECTICNS.icns</Icns_MainIcns>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android)'!=''">
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<EnabledSysJars>annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android64)'!=''">
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<EnabledSysJars>annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
@ -102,10 +76,6 @@
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_ExeOutput>.\bin</DCC_ExeOutput>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Linux64)'!=''">
<Debugger_UseLauncher>true</Debugger_UseLauncher>
<Debugger_Launcher>/usr/bin/xterm -e &quot;%debuggee%&quot;</Debugger_Launcher>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)</VerInfo_Keys>
@ -167,9 +137,6 @@
</Excluded_Packages>
</Delphi.Personality>
<Platforms>
<Platform value="Android">False</Platform>
<Platform value="Android64">False</Platform>
<Platform value="Linux64">True</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">True</Platform>
</Platforms>
@ -309,6 +276,16 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashImageDefV21">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStyles">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
@ -329,6 +306,66 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStylesV31">
<Platform Name="Android">
<RemoteDir>res\values-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIcon">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconBackground">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconForeground">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconMonochrome">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIconV33">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_Colors">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
@ -339,6 +376,16 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_ColorsDark">
<Platform Name="Android">
<RemoteDir>res\values-night-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values-night-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_DefaultAppIcon">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
@ -509,6 +556,56 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedNotificationIcon">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplash">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplashDark">
<Platform Name="Android">
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplashV31">
<Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_VectorizedSplashV31Dark">
<Platform Name="Android">
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DebugSymbols">
<Platform Name="iOSSimulator">
<Operation>1</Operation>