< Summary

Information
Class: /home/runner/work/SharpMathLib/SharpMathLib/SharpFractions/Operators.cs
Assembly: Default
File(s): /home/runner/work/SharpMathLib/SharpMathLib/SharpFractions/Operators.cs
Line coverage
100%
Covered lines: 25
Uncovered lines: 0
Coverable lines: 25
Total lines: 48
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

File(s)

/home/runner/work/SharpMathLib/SharpMathLib/SharpFractions/Operators.cs

#LineLine coverage
 1namespace SharpFractions;
 2
 3public readonly partial struct Fraction : IComparable<Fraction>, IEquatable<Fraction>
 4{
 5    public static Fraction operator +(Fraction frac)
 16    {
 17        return new(frac.Numerator, frac.Denominator);
 18    }
 9
 10    public static Fraction operator +(Fraction left, Fraction right)
 111    {
 112        (left, right) = PutOnCommonDenominator(left, right);
 13
 114        return new(left.Numerator + right.Numerator, left.Denominator);
 115    }
 16
 17    public static Fraction operator -(Fraction frac)
 118    {
 119        return new(-frac.Numerator, frac.Denominator);
 120    }
 21
 22    public static Fraction operator -(Fraction left, Fraction right)
 323    {
 324        (left, right) = PutOnCommonDenominator(left, right);
 25
 326        return new(left.Numerator - right.Numerator, left.Denominator);
 327    }
 28
 29    public static Fraction operator *(Fraction left, Fraction right)
 130    {
 131        return new(left.Numerator * right.Numerator, left.Denominator * right.Denominator);
 132    }
 33
 34    public static Fraction operator /(Fraction left, Fraction right)
 235    {
 336        if (right.Numerator == 0) throw new DivideByZeroException();
 37
 138        return new(left.Numerator * right.Denominator, left.Denominator * right.Numerator);
 139    }
 40
 41
 42    // For interaction with integer types:
 43
 344    public static implicit operator Fraction(BigInteger bigInteger) => new(bigInteger);
 145    public static implicit operator Fraction(long longInteger)      => new(longInteger);
 146    public static implicit operator Fraction(int integer)           => new(integer);
 147    public static implicit operator Fraction(short shortInteger)    => new(shortInteger);
 48}