-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTestZStringU.pas
More file actions
208 lines (175 loc) · 6.37 KB
/
TestZStringU.pas
File metadata and controls
208 lines (175 loc) · 6.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
unit TestZStringU;
interface
uses
DUnitX.TestFramework,
System.SysUtils,
CompressedString;
const
LoremIpsum: string = 'Lorem ipsum odor amet, consectetuer adipiscing elit. Nibh lacinia inceptos cras suspendisse etiam. ' +
'Faucibus montes curae integer, in finibus volutpat. Ullamcorper maecenas per, lobortis aliquet hendrerit nibh. ' +
'Sapien condimentum magna litora curae class quam condimentum. Vestibulum vehicula sem nullam; ' +
'ultrices nisi consectetur luctus. Rhoncus ipsum gravida dictum lobortis conubia neque habitasse nam nam. ' +
'Tempus odio pretium potenti rhoncus dui maecenas pharetra.' + sLineBreak + '' +
'Aptent amet ligula ultricies sapien sagittis potenti vivamus. Porta aliquet metus; libero scelerisque fermentum condimentum dolor. '
+ 'Fringilla posuere mi vestibulum luctus taciti nisi inceptos. Penatibus rutrum leo nisl neque amet molestie pharetra efficitur. ' +
'Laoreet class curae dignissim lectus aenean vitae parturient potenti fringilla. Sagittis nascetur molestie class netus finibus per sed. '
+ 'Rhoncus curabitur aenean mollis nascetur dictum molestie dis.' + sLineBreak + '' +
'Nam ullamcorper aptent gravida neque conubia mollis torquent. Eget ex aliquam eleifend facilisis; torquent interdum himenaeos ad. ' +
'Maximus nascetur sem ut himenaeos parturient sem sed! Aptent nulla sodales tristique nisi consequat quisque natoque. ' +
'Scelerisque ipsum netus tempus nostra nisl consequat. Ultrices malesuada egestas semper orci mattis rutrum lectus nulla. ' +
'Blandit volutpat natoque a augue ornare.' + sLineBreak + '' +
'Integer morbi lorem accumsan tincidunt sollicitudin penatibus. Dis euismod pulvinar mauris faucibus lobortis commodo, pharetra placerat. '
+ 'Odio penatibus vulputate cursus nascetur lacus potenti posuere. Nullam primis volutpat sociosqu imperdiet curabitur. ' +
'Ridiculus placerat varius sit consectetur bibendum enim semper. Facilisis nec libero eu pellentesque ultricies massa. ' +
'Feugiat lectus efficitur ipsum cubilia condimentum.' + sLineBreak + '' +
'Pretium quis urna volutpat magnis sodales bibendum. Augue sed blandit diam; commodo erat ullamcorper. ' +
'Congue ligula laoreet curabitur urna odio dignissim litora. Nostra sit suscipit donec mauris, aptent dis mi. ' +
'Cras elit urna hendrerit molestie tristique volutpat amet. Dis habitasse consectetur suscipit mi diam; nisl ornare accumsan torquent. '
+ 'Finibus vitae urna cras quis senectus convallis.';
type
[TestFixture]
TTestZString = class
public
[Test]
procedure TestImplicitConversion_StringToZString;
[Test]
procedure TestImplicitConversion_ZStringToString;
[Test]
procedure TestImplicitConversion_ZStringToZString;
[Test]
procedure TestEquality_ZStringAndStringEqual;
[Test]
procedure TestEquality_StringAndZStringEqual;
[Test]
procedure TestInequality_ZStringAndStringNotEqual;
[Test]
procedure TestInequality_StringAndZStringNotEqual;
[Test]
procedure TestToDouble;
[Test]
procedure TestCompressionPercentage;
[Test]
procedure TestCompressionSize;
[Test]
procedure TestCompressionIsCompressed;
[Test]
procedure TestCompressionIsNotCompressed;
end;
implementation
procedure TTestZString.TestImplicitConversion_StringToZString;
var
original: string;
zStr: zString;
begin
original := LoremIpsum;
zStr := original; // Implicit conversion from string to zString
Assert.AreEqual<string>(original, zStr.Value, 'Implicit conversion from string to zString failed');
end;
procedure TTestZString.TestImplicitConversion_ZStringToString;
var
original: string;
zStr: zString;
convertedBack: string;
begin
original := LoremIpsum;
zStr := zString.Create(original);
convertedBack := zStr; // Implicit conversion from zString to string
Assert.AreEqual<string>(original, convertedBack, 'Implicit conversion from zString to string failed');
end;
procedure TTestZString.TestImplicitConversion_ZStringToZString;
var
original: zString;
zStr: zString;
begin
original := LoremIpsum;
zStr := LoremIpsum;
Assert.IsTrue(original = zStr);
end;
procedure TTestZString.TestEquality_ZStringAndStringEqual;
var
original: string;
zStr: zString;
begin
original := LoremIpsum;
zStr := zString.Create(original);
Assert.IsTrue(zStr = original, 'Equality check between zString and string failed');
end;
procedure TTestZString.TestEquality_StringAndZStringEqual;
var
original: string;
zStr: zString;
begin
original := LoremIpsum;
zStr := zString.Create(original);
Assert.IsTrue(original = zStr, 'Equality check between string and zString failed');
end;
procedure TTestZString.TestInequality_ZStringAndStringNotEqual;
var
original: string;
zStr: zString;
begin
original := LoremIpsum;
zStr := zString.Create('Different content');
Assert.IsTrue(zStr <> original, 'Inequality check between zString and string failed');
end;
procedure TTestZString.TestInequality_StringAndZStringNotEqual;
var
original: string;
zStr: zString;
begin
original := LoremIpsum;
zStr := zString.Create('Different content');
Assert.IsTrue(original <> zStr, 'Inequality check between string and zString failed');
end;
procedure TTestZString.TestToDouble;
var
zStr: zString;
doubleValue: Double;
begin
zStr := zString.Create('123.45');
doubleValue := zStr.ToDouble;
Assert.IsTrue(Abs(doubleValue - 123.45) < 0.01, 'ToDouble conversion failed');
end;
procedure TTestZString.TestCompressionPercentage;
var
original: zString;
expectedPercentage: Double;
actualPercentage: Double;
begin
original := zString.Create(LoremIpsum);
expectedPercentage := 42.6648096564531;
actualPercentage := original.CompressionPercentage;
Assert.AreEqual(expectedPercentage, actualPercentage);
end;
procedure TTestZString.TestCompressionSize;
var
original: zString;
expectedSize: Double;
actualSize: Double;
begin
original := zString.Create(LoremIpsum);
expectedSize := 1235;
actualSize := original.CompressSize;
Assert.AreEqual(expectedSize, actualSize);
end;
procedure TTestZString.TestCompressionIsCompressed;
var
original: string;
zStr: zString;
begin
original := LoremIpsum;
zStr := original;
Assert.IsTrue(zStr.isCompressed);
end;
procedure TTestZString.TestCompressionIsNotCompressed;
var
original: string;
zStr: zString;
begin
original := 'This is a short string';
zStr := original;
Assert.IsFalse(zStr.isCompressed);
end;
initialization
TDUnitX.RegisterTestFixture(TTestZString);
end.