@@ -339,24 +339,41 @@ public void EqualityOperators()
339
339
}}
340
340
341
341
[Fact]
342
- public void EqualsIsImplemented ()
342
+ public void Equals_SameType_IsImplemented ()
343
343
{{
344
344
var a = { _quantity . Name } .From{ _baseUnit . PluralName } (1);
345
345
var b = { _quantity . Name } .From{ _baseUnit . PluralName } (2);
346
346
347
347
Assert.True(a.Equals(a));
348
348
Assert.False(a.Equals(b));
349
- Assert.False(a.Equals(null));
350
349
}}
351
350
352
351
[Fact]
353
- public void EqualsRelativeToleranceIsImplemented()
352
+ public void Equals_QuantityAsObject_IsImplemented()
353
+ {{
354
+ object a = { _quantity . Name } .From{ _baseUnit . PluralName } (1);
355
+ object b = { _quantity . Name } .From{ _baseUnit . PluralName } (2);
356
+
357
+ Assert.True(a.Equals(a));
358
+ Assert.False(a.Equals(b));
359
+ Assert.False(a.Equals((object)null));
360
+ }}
361
+
362
+ [Fact]
363
+ public void Equals_RelativeTolerance_IsImplemented()
354
364
{{
355
365
var v = { _quantity . Name } .From{ _baseUnit . PluralName } (1);
356
366
Assert.True(v.Equals({ _quantity . Name } .From{ _baseUnit . PluralName } (1), { _baseUnit . PluralName } Tolerance, ComparisonType.Relative));
357
367
Assert.False(v.Equals({ _quantity . Name } .Zero, { _baseUnit . PluralName } Tolerance, ComparisonType.Relative));
358
368
}}
359
369
370
+ [Fact]
371
+ public void Equals_NegativeRelativeTolerance_ThrowsArgumentOutOfRangeException()
372
+ {{
373
+ var v = { _quantity . Name } .From{ _baseUnit . PluralName } (1);
374
+ Assert.Throws<ArgumentOutOfRangeException>(() => v.Equals({ _quantity . Name } .From{ _baseUnit . PluralName } (1), -1, ComparisonType.Relative));
375
+ }}
376
+
360
377
[Fact]
361
378
public void EqualsReturnsFalseOnTypeMismatch()
362
379
{{
@@ -514,113 +531,137 @@ public void Convert_ToDateTime_ThrowsInvalidCastException()
514
531
public void Convert_ToDecimal_EqualsValueAsSameType()
515
532
{{
516
533
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
517
- Assert.Equal((decimal)quantity.Value, Convert.ToDecimal(quantity));
534
+ Assert.Equal((decimal)quantity.Value, Convert.ToDecimal(quantity));
518
535
}}
519
536
520
537
[Fact]
521
538
public void Convert_ToDouble_EqualsValueAsSameType()
522
539
{{
523
540
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
524
- Assert.Equal((double)quantity.Value, Convert.ToDouble(quantity));
541
+ Assert.Equal((double)quantity.Value, Convert.ToDouble(quantity));
525
542
}}
526
543
527
544
[Fact]
528
545
public void Convert_ToInt16_EqualsValueAsSameType()
529
546
{{
530
547
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
531
- Assert.Equal((short)quantity.Value, Convert.ToInt16(quantity));
548
+ Assert.Equal((short)quantity.Value, Convert.ToInt16(quantity));
532
549
}}
533
550
534
551
[Fact]
535
552
public void Convert_ToInt32_EqualsValueAsSameType()
536
553
{{
537
554
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
538
- Assert.Equal((int)quantity.Value, Convert.ToInt32(quantity));
555
+ Assert.Equal((int)quantity.Value, Convert.ToInt32(quantity));
539
556
}}
540
557
541
558
[Fact]
542
559
public void Convert_ToInt64_EqualsValueAsSameType()
543
560
{{
544
561
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
545
- Assert.Equal((long)quantity.Value, Convert.ToInt64(quantity));
562
+ Assert.Equal((long)quantity.Value, Convert.ToInt64(quantity));
546
563
}}
547
564
548
565
[Fact]
549
566
public void Convert_ToSByte_EqualsValueAsSameType()
550
567
{{
551
568
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
552
- Assert.Equal((sbyte)quantity.Value, Convert.ToSByte(quantity));
569
+ Assert.Equal((sbyte)quantity.Value, Convert.ToSByte(quantity));
553
570
}}
554
571
555
572
[Fact]
556
573
public void Convert_ToSingle_EqualsValueAsSameType()
557
574
{{
558
575
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
559
- Assert.Equal((float)quantity.Value, Convert.ToSingle(quantity));
576
+ Assert.Equal((float)quantity.Value, Convert.ToSingle(quantity));
560
577
}}
561
578
562
579
[Fact]
563
580
public void Convert_ToString_EqualsToString()
564
581
{{
565
582
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
566
- Assert.Equal(quantity.ToString(), Convert.ToString(quantity));
583
+ Assert.Equal(quantity.ToString(), Convert.ToString(quantity));
567
584
}}
568
585
569
586
[Fact]
570
587
public void Convert_ToUInt16_EqualsValueAsSameType()
571
588
{{
572
589
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
573
- Assert.Equal((ushort)quantity.Value, Convert.ToUInt16(quantity));
590
+ Assert.Equal((ushort)quantity.Value, Convert.ToUInt16(quantity));
574
591
}}
575
592
576
593
[Fact]
577
594
public void Convert_ToUInt32_EqualsValueAsSameType()
578
595
{{
579
596
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
580
- Assert.Equal((uint)quantity.Value, Convert.ToUInt32(quantity));
597
+ Assert.Equal((uint)quantity.Value, Convert.ToUInt32(quantity));
581
598
}}
582
599
583
600
[Fact]
584
601
public void Convert_ToUInt64_EqualsValueAsSameType()
585
602
{{
586
603
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
587
- Assert.Equal((ulong)quantity.Value, Convert.ToUInt64(quantity));
604
+ Assert.Equal((ulong)quantity.Value, Convert.ToUInt64(quantity));
588
605
}}
589
606
590
607
[Fact]
591
608
public void Convert_ChangeType_SelfType_EqualsSelf()
592
609
{{
593
610
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
594
- Assert.Equal(quantity, Convert.ChangeType(quantity, typeof({ _quantity . Name } )));
611
+ Assert.Equal(quantity, Convert.ChangeType(quantity, typeof({ _quantity . Name } )));
595
612
}}
596
613
597
614
[Fact]
598
615
public void Convert_ChangeType_UnitType_EqualsUnit()
599
616
{{
600
617
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
601
- Assert.Equal(quantity.Unit, Convert.ChangeType(quantity, typeof({ _unitEnumName } )));
618
+ Assert.Equal(quantity.Unit, Convert.ChangeType(quantity, typeof({ _unitEnumName } )));
602
619
}}
603
620
604
621
[Fact]
605
622
public void Convert_ChangeType_QuantityType_EqualsQuantityType()
606
623
{{
607
624
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
608
- Assert.Equal(QuantityType.{ _quantity . Name } , Convert.ChangeType(quantity, typeof(QuantityType)));
625
+ Assert.Equal(QuantityType.{ _quantity . Name } , Convert.ChangeType(quantity, typeof(QuantityType)));
609
626
}}
610
627
611
628
[Fact]
612
629
public void Convert_ChangeType_BaseDimensions_EqualsBaseDimensions()
613
630
{{
614
631
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
615
- Assert.Equal({ _quantity . Name } .BaseDimensions, Convert.ChangeType(quantity, typeof(BaseDimensions)));
632
+ Assert.Equal({ _quantity . Name } .BaseDimensions, Convert.ChangeType(quantity, typeof(BaseDimensions)));
616
633
}}
617
634
618
635
[Fact]
619
636
public void Convert_ChangeType_InvalidType_ThrowsInvalidCastException()
620
637
{{
621
638
var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
622
- Assert.Throws<InvalidCastException>(() => Convert.ChangeType(quantity, typeof(QuantityFormatter)));
639
+ Assert.Throws<InvalidCastException>(() => Convert.ChangeType(quantity, typeof(QuantityFormatter)));
623
640
}}
641
+
642
+ [Fact]
643
+ public void GetHashCode_Equals()
644
+ {{
645
+ var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (1.0);
646
+ Assert.Equal(new {{{_quantity.Name}.QuantityType, quantity.Value, quantity.Unit}}.GetHashCode(), quantity.GetHashCode());
647
+ }}
648
+ " ) ;
649
+
650
+ if ( _quantity . GenerateArithmetic )
651
+ {
652
+ Writer . WL ( $@ "
653
+ [Theory]
654
+ [InlineData(1.0)]
655
+ [InlineData(-1.0)]
656
+ public void NegationOperator_ReturnsQuantity_WithNegatedValue(double value)
657
+ {{
658
+ var quantity = { _quantity . Name } .From{ _baseUnit . PluralName } (value);
659
+ Assert.Equal({ _quantity . Name } .From{ _baseUnit . PluralName } (-value), -quantity);
660
+ }}
661
+ " ) ;
662
+ }
663
+
664
+ Writer . WL ( $@ "
624
665
}}
625
666
}}" ) ;
626
667
return Writer . ToString ( ) ;
0 commit comments