public void InBetweenScalingIsMultiplicative() { var leftOperand = new Kilo(); var rightOperand = new Hecto(); var multiplication = leftOperand.Exponent + rightOperand.Exponent; var operation = Normalisers.Get(multiplication); IsMultiply(operation); }
public void InBetweenScalingIsBasedOnLargerOfBothOperands() { var largerOperand = new Mega(); var inBetweenPrefix = new Hecto(); var expectedPrefix = new Mega(); var multiplication = largerOperand.Exponent + inBetweenPrefix.Exponent; var operation = Normalisers.Get(multiplication); Assert.Equal(expectedPrefix.Exponent, operation.Exponent); }
public void VeryLargeResultantExponentsAreSupported() { var leftOperand = new Exa(); var rightOperand = new Tera(); Int32 multiplication = leftOperand.Exponent + rightOperand.Exponent; var expectedScaleFactor = Math.Pow(10, multiplication - Normalisers.Largest.Exponent); var resultantOperator = Normalisers.Get(multiplication); Assert.Equal(Normalisers.Largest.Exponent, resultantOperator.Exponent); }
public void VerySmallResultantExponentsAreSupported() { // ToDo! var nominator = new Femto(); var denominator = new Peta(); var division = nominator.Exponent - denominator.Exponent; var expectedScaleFactor = Math.Pow(10, division - Normalisers.Smallest.Exponent); var resultantOperator = Normalisers.Get(division); Assert.Equal(Normalisers.Smallest.Exponent, resultantOperator.Exponent); }
public void AllPrefixExponentsHaveNoOpOperators() { var nonNoOps = new Dictionary <Prefix, Normaliser>(); foreach (var prefix in Prefixes.Prefixes.All) { var operation = Normalisers.Get(prefix.Exponent); if (IsNoOp(operation)) { continue; } nonNoOps.Add(prefix, operation); } Assert.Equal(Array.Empty <Prefix>(), nonNoOps.Keys); }
public void VerySmallResultantExponentsDivide() { var operation = Normalisers.Get(Normalisers.Smallest.Exponent - 3); IsDivide(operation); }
public void VeryLargeResultantExponentsMultiply() { var operation = Normalisers.Get(Normalisers.Largest.Exponent + 3); IsMultiply(operation); }