A game about forced loneliness, made by TACStudios
1
2//------------------------------------------------------------------------------
3// <auto-generated>
4// This code was generated by a tool.
5//
6// TextTransform Samples/Packages/com.unity.collections/Unity.Collections.Tests/FixedStringSizedTests.tt
7//
8// Changes to this file may cause incorrect behavior and will be lost if
9// the code is regenerated.
10// </auto-generated>
11//------------------------------------------------------------------------------
12
13using System;
14using NUnit.Framework;
15using Unity.Collections;
16using Unity.Collections.Tests;
17using UnityEngine;
18
19namespace Unity.Collections.Tests
20{
21
22internal class FixedStringSizedTests
23{
24
25 class ScriptableObjectFixedString32Bytes : UnityEngine.ScriptableObject
26 {
27 public FixedString32Bytes String;
28 }
29
30 [Test]
31 public void FixedString32BytesSerializes()
32 {
33 var a = UnityEngine.ScriptableObject.CreateInstance<ScriptableObjectFixedString32Bytes>();
34 a.String = "Hello World";
35 var b = UnityEngine.Object.Instantiate(a);
36 Assert.AreEqual(a.String, b.String);
37 }
38
39 [TestCase("ooooooooooooooooooooooooooooo", FormatError.None, TestName="FixedString32AtMaximumSizeWorks_Almost")]
40 [TestCase("oooooooooooooooooooooooooooooo", FormatError.Overflow, TestName="FixedString32AtMaximumSizeWorks_Over")]
41 public void FixedString32BytesAtMaximumSizeWorks(String a, FormatError expectedError)
42 {
43 FixedString32Bytes aa = default;
44 aa.Junk();
45 var error = aa.Append(a);
46 Assert.AreEqual(expectedError, error);
47 if (expectedError == FormatError.None)
48 aa.AssertNullTerminated();
49 else
50 Assert.AreEqual(0, aa.Length);
51 }
52
53 [Test]
54 public unsafe void FixedString32BytesToFixedList()
55 {
56 FixedString32Bytes a = default;
57 a.Junk();
58 a.Append("0123");
59 ref var aList = ref a.AsFixedList();
60 Assert.IsFalse(aList.IsEmpty);
61 Assert.AreEqual(4, aList.Length);
62 Assert.AreEqual(a.Capacity + 1, aList.Capacity);
63 Assert.AreEqual('0', aList[0]);
64 Assert.AreEqual('1', aList[1]);
65 Assert.AreEqual('2', aList[2]);
66 Assert.AreEqual('3', aList[3]);
67 aList.Add((byte)'4');
68 Assert.AreEqual("01234", a);
69 // because we modified it as a FixedList, it will not be null terminated!
70 Assert.AreNotEqual(0, a.GetUnsafePtr()[a.Length]);
71 }
72
73 [TestCase("red")]
74 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
75 [TestCase("George Washington")]
76 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
77 public unsafe void FixedString32BytesEqualsStringNoGC(string a)
78 {
79 FixedString32Bytes b = a;
80 GCAllocRecorder.ValidateNoGCAllocs(() =>
81 {
82 b.Equals(a);
83 });
84 }
85
86
87 [TestCase("red")]
88 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
89 [TestCase("George Washington")]
90 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
91 public void FixedString32BytesToFixedString64Works(String a)
92 {
93 var b = new FixedString32Bytes(a);
94 var c = new FixedString64Bytes(b);
95 String d = c.ToString();
96 Assert.AreEqual(a, d);
97 }
98
99 [TestCase("red")]
100 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
101 [TestCase("George Washington")]
102 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
103 public void FixedString32BytesToFixedString128Works(String a)
104 {
105 var b = new FixedString32Bytes(a);
106 var c = new FixedString128Bytes(b);
107 String d = c.ToString();
108 Assert.AreEqual(a, d);
109 }
110
111 [TestCase("red")]
112 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
113 [TestCase("George Washington")]
114 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
115 public void FixedString32BytesToFixedString512Works(String a)
116 {
117 var b = new FixedString32Bytes(a);
118 var c = new FixedString512Bytes(b);
119 String d = c.ToString();
120 Assert.AreEqual(a, d);
121 }
122
123 [TestCase("red")]
124 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
125 [TestCase("George Washington")]
126 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
127 public void FixedString32BytesToFixedString4096Works(String a)
128 {
129 var b = new FixedString32Bytes(a);
130 var c = new FixedString4096Bytes(b);
131 String d = c.ToString();
132 Assert.AreEqual(a, d);
133 }
134
135 class ScriptableObjectFixedString64Bytes : UnityEngine.ScriptableObject
136 {
137 public FixedString64Bytes String;
138 }
139
140 [Test]
141 public void FixedString64BytesSerializes()
142 {
143 var a = UnityEngine.ScriptableObject.CreateInstance<ScriptableObjectFixedString64Bytes>();
144 a.String = "Hello World";
145 var b = UnityEngine.Object.Instantiate(a);
146 Assert.AreEqual(a.String, b.String);
147 }
148
149 [TestCase("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", FormatError.None, TestName="FixedString64AtMaximumSizeWorks_Almost")]
150 [TestCase("oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", FormatError.Overflow, TestName="FixedString64AtMaximumSizeWorks_Over")]
151 public void FixedString64BytesAtMaximumSizeWorks(String a, FormatError expectedError)
152 {
153 FixedString64Bytes aa = default;
154 aa.Junk();
155 var error = aa.Append(a);
156 Assert.AreEqual(expectedError, error);
157 if (expectedError == FormatError.None)
158 aa.AssertNullTerminated();
159 else
160 Assert.AreEqual(0, aa.Length);
161 }
162
163 [Test]
164 public unsafe void FixedString64BytesToFixedList()
165 {
166 FixedString64Bytes a = default;
167 a.Junk();
168 a.Append("0123");
169 ref var aList = ref a.AsFixedList();
170 Assert.IsFalse(aList.IsEmpty);
171 Assert.AreEqual(4, aList.Length);
172 Assert.AreEqual(a.Capacity + 1, aList.Capacity);
173 Assert.AreEqual('0', aList[0]);
174 Assert.AreEqual('1', aList[1]);
175 Assert.AreEqual('2', aList[2]);
176 Assert.AreEqual('3', aList[3]);
177 aList.Add((byte)'4');
178 Assert.AreEqual("01234", a);
179 // because we modified it as a FixedList, it will not be null terminated!
180 Assert.AreNotEqual(0, a.GetUnsafePtr()[a.Length]);
181 }
182
183 [TestCase("red")]
184 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
185 [TestCase("George Washington")]
186 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
187 public unsafe void FixedString64BytesEqualsStringNoGC(string a)
188 {
189 FixedString64Bytes b = a;
190 GCAllocRecorder.ValidateNoGCAllocs(() =>
191 {
192 b.Equals(a);
193 });
194 }
195
196
197 [TestCase("red")]
198 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
199 [TestCase("George Washington")]
200 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
201 public void FixedString64BytesToFixedString32Works(String a)
202 {
203 var b = new FixedString64Bytes(a);
204 var c = new FixedString32Bytes(b);
205 String d = c.ToString();
206 Assert.AreEqual(a, d);
207 }
208
209 [TestCase("red")]
210 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
211 [TestCase("George Washington")]
212 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
213 public void FixedString64BytesToFixedString128Works(String a)
214 {
215 var b = new FixedString64Bytes(a);
216 var c = new FixedString128Bytes(b);
217 String d = c.ToString();
218 Assert.AreEqual(a, d);
219 }
220
221 [TestCase("red")]
222 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
223 [TestCase("George Washington")]
224 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
225 public void FixedString64BytesToFixedString512Works(String a)
226 {
227 var b = new FixedString64Bytes(a);
228 var c = new FixedString512Bytes(b);
229 String d = c.ToString();
230 Assert.AreEqual(a, d);
231 }
232
233 [TestCase("red")]
234 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
235 [TestCase("George Washington")]
236 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
237 public void FixedString64BytesToFixedString4096Works(String a)
238 {
239 var b = new FixedString64Bytes(a);
240 var c = new FixedString4096Bytes(b);
241 String d = c.ToString();
242 Assert.AreEqual(a, d);
243 }
244
245 class ScriptableObjectFixedString128Bytes : UnityEngine.ScriptableObject
246 {
247 public FixedString128Bytes String;
248 }
249
250 [Test]
251 public void FixedString128BytesSerializes()
252 {
253 var a = UnityEngine.ScriptableObject.CreateInstance<ScriptableObjectFixedString128Bytes>();
254 a.String = "Hello World";
255 var b = UnityEngine.Object.Instantiate(a);
256 Assert.AreEqual(a.String, b.String);
257 }
258
259 [TestCase("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", FormatError.None, TestName="FixedString128AtMaximumSizeWorks_Almost")]
260 [TestCase("oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", FormatError.Overflow, TestName="FixedString128AtMaximumSizeWorks_Over")]
261 public void FixedString128BytesAtMaximumSizeWorks(String a, FormatError expectedError)
262 {
263 FixedString128Bytes aa = default;
264 aa.Junk();
265 var error = aa.Append(a);
266 Assert.AreEqual(expectedError, error);
267 if (expectedError == FormatError.None)
268 aa.AssertNullTerminated();
269 else
270 Assert.AreEqual(0, aa.Length);
271 }
272
273 [Test]
274 public unsafe void FixedString128BytesToFixedList()
275 {
276 FixedString128Bytes a = default;
277 a.Junk();
278 a.Append("0123");
279 ref var aList = ref a.AsFixedList();
280 Assert.IsFalse(aList.IsEmpty);
281 Assert.AreEqual(4, aList.Length);
282 Assert.AreEqual(a.Capacity + 1, aList.Capacity);
283 Assert.AreEqual('0', aList[0]);
284 Assert.AreEqual('1', aList[1]);
285 Assert.AreEqual('2', aList[2]);
286 Assert.AreEqual('3', aList[3]);
287 aList.Add((byte)'4');
288 Assert.AreEqual("01234", a);
289 // because we modified it as a FixedList, it will not be null terminated!
290 Assert.AreNotEqual(0, a.GetUnsafePtr()[a.Length]);
291 }
292
293 [TestCase("red")]
294 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
295 [TestCase("George Washington")]
296 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
297 public unsafe void FixedString128BytesEqualsStringNoGC(string a)
298 {
299 FixedString128Bytes b = a;
300 GCAllocRecorder.ValidateNoGCAllocs(() =>
301 {
302 b.Equals(a);
303 });
304 }
305
306
307 [TestCase("red")]
308 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
309 [TestCase("George Washington")]
310 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
311 public void FixedString128BytesToFixedString32Works(String a)
312 {
313 var b = new FixedString128Bytes(a);
314 var c = new FixedString32Bytes(b);
315 String d = c.ToString();
316 Assert.AreEqual(a, d);
317 }
318
319 [TestCase("red")]
320 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
321 [TestCase("George Washington")]
322 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
323 public void FixedString128BytesToFixedString64Works(String a)
324 {
325 var b = new FixedString128Bytes(a);
326 var c = new FixedString64Bytes(b);
327 String d = c.ToString();
328 Assert.AreEqual(a, d);
329 }
330
331 [TestCase("red")]
332 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
333 [TestCase("George Washington")]
334 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
335 public void FixedString128BytesToFixedString512Works(String a)
336 {
337 var b = new FixedString128Bytes(a);
338 var c = new FixedString512Bytes(b);
339 String d = c.ToString();
340 Assert.AreEqual(a, d);
341 }
342
343 [TestCase("red")]
344 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
345 [TestCase("George Washington")]
346 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
347 public void FixedString128BytesToFixedString4096Works(String a)
348 {
349 var b = new FixedString128Bytes(a);
350 var c = new FixedString4096Bytes(b);
351 String d = c.ToString();
352 Assert.AreEqual(a, d);
353 }
354
355 class ScriptableObjectFixedString512Bytes : UnityEngine.ScriptableObject
356 {
357 public FixedString512Bytes String;
358 }
359
360 [Test]
361 public void FixedString512BytesSerializes()
362 {
363 var a = UnityEngine.ScriptableObject.CreateInstance<ScriptableObjectFixedString512Bytes>();
364 a.String = "Hello World";
365 var b = UnityEngine.Object.Instantiate(a);
366 Assert.AreEqual(a.String, b.String);
367 }
368
369 [TestCase("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", FormatError.None, TestName="FixedString512AtMaximumSizeWorks_Almost")]
370 [TestCase("oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", FormatError.Overflow, TestName="FixedString512AtMaximumSizeWorks_Over")]
371 public void FixedString512BytesAtMaximumSizeWorks(String a, FormatError expectedError)
372 {
373 FixedString512Bytes aa = default;
374 aa.Junk();
375 var error = aa.Append(a);
376 Assert.AreEqual(expectedError, error);
377 if (expectedError == FormatError.None)
378 aa.AssertNullTerminated();
379 else
380 Assert.AreEqual(0, aa.Length);
381 }
382
383 [Test]
384 public unsafe void FixedString512BytesToFixedList()
385 {
386 FixedString512Bytes a = default;
387 a.Junk();
388 a.Append("0123");
389 ref var aList = ref a.AsFixedList();
390 Assert.IsFalse(aList.IsEmpty);
391 Assert.AreEqual(4, aList.Length);
392 Assert.AreEqual(a.Capacity + 1, aList.Capacity);
393 Assert.AreEqual('0', aList[0]);
394 Assert.AreEqual('1', aList[1]);
395 Assert.AreEqual('2', aList[2]);
396 Assert.AreEqual('3', aList[3]);
397 aList.Add((byte)'4');
398 Assert.AreEqual("01234", a);
399 // because we modified it as a FixedList, it will not be null terminated!
400 Assert.AreNotEqual(0, a.GetUnsafePtr()[a.Length]);
401 }
402
403 [TestCase("red")]
404 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
405 [TestCase("George Washington")]
406 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
407 public unsafe void FixedString512BytesEqualsStringNoGC(string a)
408 {
409 FixedString512Bytes b = a;
410 GCAllocRecorder.ValidateNoGCAllocs(() =>
411 {
412 b.Equals(a);
413 });
414 }
415
416
417 [TestCase("red")]
418 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
419 [TestCase("George Washington")]
420 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
421 public void FixedString512BytesToFixedString32Works(String a)
422 {
423 var b = new FixedString512Bytes(a);
424 var c = new FixedString32Bytes(b);
425 String d = c.ToString();
426 Assert.AreEqual(a, d);
427 }
428
429 [TestCase("red")]
430 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
431 [TestCase("George Washington")]
432 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
433 public void FixedString512BytesToFixedString64Works(String a)
434 {
435 var b = new FixedString512Bytes(a);
436 var c = new FixedString64Bytes(b);
437 String d = c.ToString();
438 Assert.AreEqual(a, d);
439 }
440
441 [TestCase("red")]
442 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
443 [TestCase("George Washington")]
444 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
445 public void FixedString512BytesToFixedString128Works(String a)
446 {
447 var b = new FixedString512Bytes(a);
448 var c = new FixedString128Bytes(b);
449 String d = c.ToString();
450 Assert.AreEqual(a, d);
451 }
452
453 [TestCase("red")]
454 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
455 [TestCase("George Washington")]
456 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
457 public void FixedString512BytesToFixedString4096Works(String a)
458 {
459 var b = new FixedString512Bytes(a);
460 var c = new FixedString4096Bytes(b);
461 String d = c.ToString();
462 Assert.AreEqual(a, d);
463 }
464
465 class ScriptableObjectFixedString4096Bytes : UnityEngine.ScriptableObject
466 {
467 public FixedString4096Bytes String;
468 }
469
470 [Test]
471 public void FixedString4096BytesSerializes()
472 {
473 var a = UnityEngine.ScriptableObject.CreateInstance<ScriptableObjectFixedString4096Bytes>();
474 a.String = "Hello World";
475 var b = UnityEngine.Object.Instantiate(a);
476 Assert.AreEqual(a.String, b.String);
477 }
478
479 [TestCase("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", FormatError.None, TestName="FixedString4096AtMaximumSizeWorks_Almost")]
480 [TestCase("oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", FormatError.Overflow, TestName="FixedString4096AtMaximumSizeWorks_Over")]
481 public void FixedString4096BytesAtMaximumSizeWorks(String a, FormatError expectedError)
482 {
483 FixedString4096Bytes aa = default;
484 aa.Junk();
485 var error = aa.Append(a);
486 Assert.AreEqual(expectedError, error);
487 if (expectedError == FormatError.None)
488 aa.AssertNullTerminated();
489 else
490 Assert.AreEqual(0, aa.Length);
491 }
492
493 [Test]
494 public unsafe void FixedString4096BytesToFixedList()
495 {
496 FixedString4096Bytes a = default;
497 a.Junk();
498 a.Append("0123");
499 ref var aList = ref a.AsFixedList();
500 Assert.IsFalse(aList.IsEmpty);
501 Assert.AreEqual(4, aList.Length);
502 Assert.AreEqual(a.Capacity + 1, aList.Capacity);
503 Assert.AreEqual('0', aList[0]);
504 Assert.AreEqual('1', aList[1]);
505 Assert.AreEqual('2', aList[2]);
506 Assert.AreEqual('3', aList[3]);
507 aList.Add((byte)'4');
508 Assert.AreEqual("01234", a);
509 // because we modified it as a FixedList, it will not be null terminated!
510 Assert.AreNotEqual(0, a.GetUnsafePtr()[a.Length]);
511 }
512
513 [TestCase("red")]
514 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
515 [TestCase("George Washington")]
516 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
517 public unsafe void FixedString4096BytesEqualsStringNoGC(string a)
518 {
519 FixedString4096Bytes b = a;
520 GCAllocRecorder.ValidateNoGCAllocs(() =>
521 {
522 b.Equals(a);
523 });
524 }
525
526
527 [TestCase("red")]
528 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
529 [TestCase("George Washington")]
530 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
531 public void FixedString4096BytesToFixedString32Works(String a)
532 {
533 var b = new FixedString4096Bytes(a);
534 var c = new FixedString32Bytes(b);
535 String d = c.ToString();
536 Assert.AreEqual(a, d);
537 }
538
539 [TestCase("red")]
540 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
541 [TestCase("George Washington")]
542 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
543 public void FixedString4096BytesToFixedString64Works(String a)
544 {
545 var b = new FixedString4096Bytes(a);
546 var c = new FixedString64Bytes(b);
547 String d = c.ToString();
548 Assert.AreEqual(a, d);
549 }
550
551 [TestCase("red")]
552 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
553 [TestCase("George Washington")]
554 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
555 public void FixedString4096BytesToFixedString128Works(String a)
556 {
557 var b = new FixedString4096Bytes(a);
558 var c = new FixedString128Bytes(b);
559 String d = c.ToString();
560 Assert.AreEqual(a, d);
561 }
562
563 [TestCase("red")]
564 [TestCase("紅色", TestName="{m}(Chinese-Red)")]
565 [TestCase("George Washington")]
566 [TestCase("村上春樹", TestName="{m}(HarukiMurakami)")]
567 public void FixedString4096BytesToFixedString512Works(String a)
568 {
569 var b = new FixedString4096Bytes(a);
570 var c = new FixedString512Bytes(b);
571 String d = c.ToString();
572 Assert.AreEqual(a, d);
573 }
574
575}
576
577}