Skip to content

Commit d3d4d11

Browse files
authored
Cover TreatAsLittleEndian and TreatAsBigEndian in unit tests and apply changes to the rest to respect endiannes of primitive conversion
Signed-off-by: Xen <lordofxen@deskasoft.com>
1 parent e396b3a commit d3d4d11

File tree

1 file changed

+56
-44
lines changed

1 file changed

+56
-44
lines changed

HashifyNet.UnitTests/Utilities/HashValue_Tests.cs

Lines changed: 56 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -361,17 +361,29 @@ public void HashValue_Endianness_Works()
361361
Assert.Equal(hv1.AsLittleEndian(), hv1);
362362
Assert.Equal(hv2.AsLittleEndian(), hv2.Reverse());
363363
Assert.Equal(hv3.AsLittleEndian(), hv3);
364+
365+
// TreatAsLittleEndian must return the same array but convert BigEndian and NotApplicable to LittleEndian.
366+
Assert.Equal(hv1.TreatAsLittleEndian(), hv1);
367+
Assert.Equal(ValueEndianness.LittleEndian, hv1.TreatAsLittleEndian().Endianness);
368+
Assert.Equal(hv2.TreatAsLittleEndian(), hv2);
369+
Assert.Equal(ValueEndianness.LittleEndian, hv2.TreatAsLittleEndian().Endianness);
370+
371+
// TreatAsBigEndian must return the same array but convert LittleEndian and NotApplicable to BigEndian.
372+
Assert.Equal(hv1.TreatAsBigEndian(), hv1);
373+
Assert.Equal(ValueEndianness.BigEndian, hv1.TreatAsBigEndian().Endianness);
374+
Assert.Equal(hv3.TreatAsBigEndian(), hv3);
375+
Assert.Equal(ValueEndianness.BigEndian, hv3.TreatAsBigEndian().Endianness);
364376
}
365377
#endregion
366378

367379
#region Integrals
368380
[Fact]
369381
public void HashValue_AsDecimal_Works()
370382
{
371-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[4], 32);
372-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[8], 64);
373-
var hv3 = new HashValue(ValueEndianness.NotApplicable, new byte[12], 96);
374-
var hv_invalid = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
383+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[4], 32);
384+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[8], 64);
385+
var hv3 = new HashValue(ValueEndianness.LittleEndian, new byte[12], 96);
386+
var hv_invalid = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
375387

376388
Assert.Equal(0, hv1.AsDecimal());
377389
Assert.Equal(0, hv2.AsDecimal());
@@ -383,9 +395,9 @@ public void HashValue_AsDecimal_Works()
383395
[Fact]
384396
public void HashValue_AsDouble_Works()
385397
{
386-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[4], 32);
387-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[8], 64);
388-
var hv_invalid = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
398+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[4], 32);
399+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[8], 64);
400+
var hv_invalid = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
389401

390402
Assert.Equal(0, hv1.AsDouble());
391403
Assert.Equal(0, hv2.AsDouble());
@@ -396,9 +408,9 @@ public void HashValue_AsDouble_Works()
396408
[Fact]
397409
public void HashValue_AsSingle_Works()
398410
{
399-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[2], 16);
400-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[4], 32);
401-
var hv_invalid = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
411+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[2], 16);
412+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[4], 32);
413+
var hv_invalid = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
402414

403415
Assert.Equal(0, hv1.AsSingle());
404416
Assert.Equal(0, hv2.AsSingle());
@@ -409,9 +421,9 @@ public void HashValue_AsSingle_Works()
409421
[Fact]
410422
public void HashValue_AsInt64_Works()
411423
{
412-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[4], 32);
413-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[8], 64);
414-
var hv_invalid = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
424+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[4], 32);
425+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[8], 64);
426+
var hv_invalid = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
415427

416428
Assert.Equal(0, hv1.AsInt64());
417429
Assert.Equal(0, hv2.AsInt64());
@@ -422,9 +434,9 @@ public void HashValue_AsInt64_Works()
422434
[Fact]
423435
public void HashValue_AsInt32_Works()
424436
{
425-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[2], 16);
426-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[4], 32);
427-
var hv_invalid = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
437+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[2], 16);
438+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[4], 32);
439+
var hv_invalid = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
428440

429441
Assert.Equal(0, hv1.AsInt32());
430442
Assert.Equal(0, hv2.AsInt32());
@@ -435,9 +447,9 @@ public void HashValue_AsInt32_Works()
435447
[Fact]
436448
public void HashValue_AsInt16_Works()
437449
{
438-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[1], 8);
439-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[2], 16);
440-
var hv_invalid = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
450+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[1], 8);
451+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[2], 16);
452+
var hv_invalid = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
441453

442454
Assert.Equal(0, hv1.AsInt16());
443455
Assert.Equal(0, hv2.AsInt16());
@@ -448,14 +460,14 @@ public void HashValue_AsInt16_Works()
448460
[Fact]
449461
public void HashValue_AsBigInteger_Works()
450462
{
451-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[1], 8);
452-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[2], 16);
453-
var hv3 = new HashValue(ValueEndianness.NotApplicable, new byte[4], 32);
454-
var hv4 = new HashValue(ValueEndianness.NotApplicable, new byte[8], 64);
455-
var hv5 = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
456-
var hv6 = new HashValue(ValueEndianness.NotApplicable, new byte[32], 256);
457-
var hv7 = new HashValue(ValueEndianness.NotApplicable, new byte[64], 512);
458-
var hv8 = new HashValue(ValueEndianness.NotApplicable, new byte[128], 1024);
463+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[1], 8);
464+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[2], 16);
465+
var hv3 = new HashValue(ValueEndianness.LittleEndian, new byte[4], 32);
466+
var hv4 = new HashValue(ValueEndianness.LittleEndian, new byte[8], 64);
467+
var hv5 = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
468+
var hv6 = new HashValue(ValueEndianness.LittleEndian, new byte[32], 256);
469+
var hv7 = new HashValue(ValueEndianness.LittleEndian, new byte[64], 512);
470+
var hv8 = new HashValue(ValueEndianness.LittleEndian, new byte[128], 1024);
459471

460472
Assert.Equal(0, hv1.AsBigInteger());
461473
Assert.Equal(0, hv2.AsBigInteger());
@@ -473,9 +485,9 @@ public void HashValue_AsBigInteger_Works()
473485
[Fact]
474486
public void HashValue_AsChar_Works()
475487
{
476-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[2], 16);
477-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[1], 8);
478-
var hv_invalid = new HashValue(ValueEndianness.NotApplicable, new byte[4], 32);
488+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[2], 16);
489+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[1], 8);
490+
var hv_invalid = new HashValue(ValueEndianness.LittleEndian, new byte[4], 32);
479491

480492
Assert.Equal('\0', hv1.AsChar());
481493
Assert.Equal('\0', hv2.AsChar());
@@ -488,9 +500,9 @@ public void HashValue_AsChar_Works()
488500
[Fact]
489501
public void HashValue_AsDateTime_Works()
490502
{
491-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[4], 32);
492-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[8], 64);
493-
var hv_invalid = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
503+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[4], 32);
504+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[8], 64);
505+
var hv_invalid = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
494506

495507
Assert.Equal(new DateTime(0), hv1.AsDateTime());
496508
Assert.Equal(new DateTime(0), hv2.AsDateTime());
@@ -501,9 +513,9 @@ public void HashValue_AsDateTime_Works()
501513
[Fact]
502514
public void HashValue_AsDateTimeOffset_Works()
503515
{
504-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[4], 32);
505-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[8], 64);
506-
var hv_invalid = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
516+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[4], 32);
517+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[8], 64);
518+
var hv_invalid = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
507519

508520
Assert.Equal(new DateTimeOffset(0, TimeSpan.Zero), hv1.AsDateTimeOffset());
509521
Assert.Equal(new DateTimeOffset(0, TimeSpan.Zero), hv2.AsDateTimeOffset());
@@ -514,9 +526,9 @@ public void HashValue_AsDateTimeOffset_Works()
514526
[Fact]
515527
public void HashValue_AsTimeSpan_Works()
516528
{
517-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[4], 32);
518-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[8], 64);
519-
var hv_invalid = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
529+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[4], 32);
530+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[8], 64);
531+
var hv_invalid = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
520532

521533
Assert.Equal(new TimeSpan(0), hv1.AsTimeSpan());
522534
Assert.Equal(new TimeSpan(0), hv2.AsTimeSpan());
@@ -529,8 +541,8 @@ public void HashValue_AsTimeSpan_Works()
529541
[Fact]
530542
public void HashValue_AsBinaryString_Works()
531543
{
532-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[8], 64);
533-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
544+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[8], 64);
545+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
534546

535547
Assert.Equal("0000000000000000000000000000000000000000000000000000000000000000", hv1.AsBinaryString());
536548
Assert.Equal("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", hv2.AsBinaryString());
@@ -541,9 +553,9 @@ public void HashValue_AsBinaryString_Works()
541553
[Fact]
542554
public void HashValue_AsGuid_Works()
543555
{
544-
var hv1 = new HashValue(ValueEndianness.NotApplicable, new byte[8], 64);
545-
var hv2 = new HashValue(ValueEndianness.NotApplicable, new byte[16], 128);
546-
var hv_invalid = new HashValue(ValueEndianness.NotApplicable, new byte[32], 256);
556+
var hv1 = new HashValue(ValueEndianness.LittleEndian, new byte[8], 64);
557+
var hv2 = new HashValue(ValueEndianness.LittleEndian, new byte[16], 128);
558+
var hv_invalid = new HashValue(ValueEndianness.LittleEndian, new byte[32], 256);
547559

548560
Assert.Equal(new Guid(new byte[16]), hv1.AsGuid());
549561
Assert.Equal(new Guid(new byte[16]), hv2.AsGuid());

0 commit comments

Comments
 (0)