|
8 | 8 | using Datamodel; |
9 | 9 | using System.Numerics; |
10 | 10 | using DM = Datamodel.Datamodel; |
| 11 | +using System.Text; |
11 | 12 |
|
12 | 13 | namespace Datamodel_Tests |
13 | 14 | { |
@@ -326,86 +327,130 @@ public void Nested_CanImportToRoot() |
326 | 327 | Assert.That(elem2.Owner, Is.EqualTo(dm)); |
327 | 328 | } |
328 | 329 |
|
| 330 | + [Test] |
| 331 | + public void ElementArrayInitializes() |
| 332 | + { |
| 333 | + var elem = new ElementArray(); |
| 334 | + |
| 335 | + Assert.That(elem.Owner, Is.Null); |
| 336 | + Assert.That(elem.Count, Is.Zero); |
| 337 | + } |
| 338 | + } |
| 339 | + |
| 340 | + public class ElementSubclassing |
| 341 | + { |
329 | 342 | class CustomElement : Element |
330 | 343 | { |
331 | 344 | public int MyProperty { get; set; } = 1337; |
332 | 345 | } |
333 | 346 |
|
334 | | - public class ElementSubclassTests |
| 347 | + [Test] |
| 348 | + public void ElementSubclassInitializes() |
335 | 349 | { |
336 | | - [Test] |
337 | | - public void ElementSubclassInitializes() |
338 | | - { |
339 | | - var elem = new CustomElement(); |
| 350 | + var elem = new CustomElement(); |
340 | 351 |
|
341 | | - Assert.That(elem.Owner, Is.Null); |
342 | | - Assert.That(elem.Count, Is.Zero); |
343 | | - Assert.That(elem.MyProperty, Is.EqualTo(1337)); |
344 | | - } |
345 | | - |
346 | | - [Test] |
347 | | - public void PropertyAccessByKey() |
348 | | - { |
349 | | - var elem = new CustomElement(); |
350 | | - var myprop = elem["MyProperty"]; |
| 352 | + Assert.That(elem.Owner, Is.Null); |
| 353 | + Assert.That(elem.Count, Is.Zero); |
| 354 | + Assert.That(elem.MyProperty, Is.EqualTo(1337)); |
| 355 | + } |
351 | 356 |
|
352 | | - Assert.That(myprop, Is.EqualTo(1337)); |
353 | | - } |
| 357 | + [Test] |
| 358 | + public void PropertyAccessByKey() |
| 359 | + { |
| 360 | + var elem = new CustomElement(); |
| 361 | + var myprop = elem["MyProperty"]; |
354 | 362 |
|
355 | | - [Test] |
356 | | - public void PropertySetByKey_Throws() |
357 | | - { |
358 | | - var elem = new CustomElement(); |
| 363 | + Assert.That(myprop, Is.EqualTo(1337)); |
| 364 | + } |
359 | 365 |
|
360 | | - var ex = Assert.Throws(typeof(InvalidOperationException), () => elem["MyProperty"] = 5); |
| 366 | + [Test] |
| 367 | + public void PropertySetByKey_Throws() |
| 368 | + { |
| 369 | + var elem = new CustomElement(); |
361 | 370 |
|
362 | | - Assert.That(ex.Message, Does.Contain("Cannot set the value of a property-derived attribute by key")); |
363 | | - } |
| 371 | + var ex = Assert.Throws(typeof(InvalidOperationException), () => elem["MyProperty"] = 5); |
364 | 372 |
|
365 | | - [Test] |
366 | | - public void CanBeAssignedToDatamodelRoot() |
367 | | - { |
368 | | - var elem = new CustomElement(); |
| 373 | + Assert.That(ex.Message, Does.Contain("Cannot set the value of a property-derived attribute by key")); |
| 374 | + } |
369 | 375 |
|
370 | | - var dm = new DM("test", 1); |
371 | | - dm.Root = elem; |
| 376 | + [Test] |
| 377 | + public void CanBeAssignedToDatamodelRoot() |
| 378 | + { |
| 379 | + var elem = new CustomElement(); |
372 | 380 |
|
373 | | - Assert.That(elem.Owner, Is.EqualTo(dm)); |
374 | | - } |
| 381 | + var dm = new DM("test", 1); |
| 382 | + dm.Root = elem; |
375 | 383 |
|
376 | | - [Test] |
377 | | - public void Nested_CanBeAssignedToDatamodelRoot() |
378 | | - { |
379 | | - var elem = new CustomElement(); |
380 | | - var elem2 = new CustomElement(); |
381 | | - elem["elem2"] = elem2; |
382 | | - elem2["woah"] = 5; |
383 | | - |
384 | | - Assert.That(elem.Owner, Is.Null); |
385 | | - Assert.That(elem.Count, Is.EqualTo(1)); |
386 | | - Assert.That(elem2.Owner, Is.Null); |
387 | | - Assert.That(elem2.Count, Is.EqualTo(1)); |
388 | | - |
389 | | - Assert.That(elem.First().Key, Is.EqualTo("elem2")); |
390 | | - Assert.That(elem.First().Value, Is.EqualTo(elem2)); |
391 | | - Assert.That(elem2.First().Key, Is.EqualTo("woah")); |
392 | | - Assert.That(elem2.First().Value, Is.EqualTo(5)); |
393 | | - |
394 | | - var dm = new DM("test", 1); |
395 | | - dm.Root = elem; |
396 | | - |
397 | | - Assert.That(elem.Owner, Is.EqualTo(dm)); |
398 | | - Assert.That(elem2.Owner, Is.EqualTo(dm)); |
399 | | - } |
| 384 | + Assert.That(elem.Owner, Is.EqualTo(dm)); |
400 | 385 | } |
401 | 386 |
|
402 | 387 | [Test] |
403 | | - public void ElementArrayInitializes() |
| 388 | + public void Nested_CanBeAssignedToDatamodelRoot() |
404 | 389 | { |
405 | | - var elem = new ElementArray(); |
| 390 | + var elem = new CustomElement(); |
| 391 | + var elem2 = new CustomElement(); |
| 392 | + elem["elem2"] = elem2; |
| 393 | + elem2["woah"] = 5; |
406 | 394 |
|
407 | 395 | Assert.That(elem.Owner, Is.Null); |
408 | | - Assert.That(elem.Count, Is.Zero); |
| 396 | + Assert.That(elem.Count, Is.EqualTo(1)); |
| 397 | + Assert.That(elem2.Owner, Is.Null); |
| 398 | + Assert.That(elem2.Count, Is.EqualTo(1)); |
| 399 | + |
| 400 | + Assert.That(elem.First().Key, Is.EqualTo("elem2")); |
| 401 | + Assert.That(elem.First().Value, Is.EqualTo(elem2)); |
| 402 | + Assert.That(elem2.First().Key, Is.EqualTo("woah")); |
| 403 | + Assert.That(elem2.First().Value, Is.EqualTo(5)); |
| 404 | + |
| 405 | + var dm = new DM("test", 1); |
| 406 | + dm.Root = elem; |
| 407 | + |
| 408 | + Assert.That(elem.Owner, Is.EqualTo(dm)); |
| 409 | + Assert.That(elem2.Owner, Is.EqualTo(dm)); |
| 410 | + } |
| 411 | + |
| 412 | + [Test] |
| 413 | + public void SerializesText() |
| 414 | + { |
| 415 | + var elem = new CustomElement(); |
| 416 | + using var dm = new DM("vmap", 29); |
| 417 | + dm.Root = elem; |
| 418 | + |
| 419 | + elem["as_child"] = new CustomElement() { MyProperty = 5 }; |
| 420 | + |
| 421 | + using var stream = new MemoryStream(); |
| 422 | + dm.Save(stream, "keyvalues2", 4); |
| 423 | + |
| 424 | + stream.Position = 0; |
| 425 | + using (var reader = new StreamReader(stream)) |
| 426 | + { |
| 427 | + var text = reader.ReadToEnd(); |
| 428 | + |
| 429 | + Assert.Multiple(() => |
| 430 | + { |
| 431 | + Assert.That(text, Does.Contain("CustomElement")); |
| 432 | + Assert.That(text, Does.Contain("MyProperty")); |
| 433 | + Assert.That(text, Does.Contain("1337")); |
| 434 | + Assert.That(text, Does.Contain("\"as_child\" \"CustomElement\"")); |
| 435 | + }); |
| 436 | + } |
| 437 | + |
| 438 | + SaveAndConvert(dm, "keyvalues2", 4); |
| 439 | + |
| 440 | + // binary |
| 441 | + using var stream2 = new MemoryStream(); |
| 442 | + dm.Save(stream2, "binary", 9); |
| 443 | + |
| 444 | + stream2.Position = 0; |
| 445 | + using var reader2 = new BinaryReader(stream2); |
| 446 | + var bytes = reader2.ReadBytes((int)stream2.Length); |
| 447 | + |
| 448 | + // idk |
| 449 | + //Assert.That(bytes, Does.Contain( |
| 450 | + // [.. Encoding.ASCII.GetBytes("CustomElement")] |
| 451 | + //)); |
| 452 | + |
| 453 | + SaveAndConvert(dm, "binary", 9); |
409 | 454 | } |
410 | 455 | } |
411 | 456 |
|
|
0 commit comments