A game about forced loneliness, made by TACStudios
at master 577 lines 29 kB view raw
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}