def test_binary_comprehension(self): """Test binary number comprehension.""" self.assertEqual(ucal.evaluate('0B0'), '0') self.assertEqual(ucal.evaluate('0b0'), '0') self.assertEqual(ucal.evaluate('0b11'), '3') self.assertEqual(ucal.evaluate('0b1111'), '15') self.assertRaises(ucal.ParserError, ucal.evaluate, '0b')
def test_factorial(self): """Test the factorial postfix operator.""" self.assertEqual(ucal.evaluate('0!'), '1') self.assertEqual(ucal.evaluate('1!'), '1') self.assertEqual(ucal.evaluate('2!'), '2') self.assertEqual(ucal.evaluate('5!'), '120') self.assertEqual(ucal.evaluate('18!'), '6402373705728000')
def test_output_number_formatting(self): """Test for desired output format for numbers.""" self.assertEqual(ucal.evaluate('0.1234567890'), '0.123456789') self.assertEqual(ucal.evaluate('1e9'), '1000000000') self.assertEqual(ucal.evaluate('+1e+9'), '1000000000') self.assertEqual(ucal.evaluate('-1e-3'), '-0.001') self.assertEqual(ucal.evaluate('1E6'), '1000000')
def test_arithmetic(self): """Test basic arithmetic operations.""" self.assertEqual(ucal.evaluate('1+2'), '3') self.assertEqual(ucal.evaluate('1-2'), '-1') self.assertEqual(ucal.evaluate('3*4'), '12') self.assertEqual(ucal.evaluate('8/2'), '4') self.assertEqual(ucal.evaluate('--1'), '1')
def test_hexadecimal_comprehension(self): """Test hexadecimal number comprehension.""" self.assertEqual(ucal.evaluate('0x0'), '0') self.assertEqual(ucal.evaluate('0X0'), '0') self.assertEqual(ucal.evaluate('0x123'), '291') self.assertEqual(ucal.evaluate('0xAbCdEf'), '11259375') self.assertRaises(ucal.ParserError, ucal.evaluate, '0x') self.assertRaises(ucal.ParserError, ucal.evaluate, '0xAG')
def test_basic_value_comprehension(self): """Test for valid value definitions.""" self.assertEqual(ucal.evaluate('1'), '1') self.assertEqual(ucal.evaluate('123457890'), '123457890') self.assertEqual(ucal.evaluate('001'), '1') self.assertEqual(ucal.evaluate('.1'), '0.1') self.assertEqual(ucal.evaluate('+1'), '1') self.assertEqual(ucal.evaluate('-1'), '-1') self.assertEqual(ucal.evaluate('1e3'), '1000')
def test_function_log10(self): """Test log10 function.""" self.assertEqual(ucal.evaluate('log10(1)'), '0') self.assertEqual(ucal.evaluate('log10(10)'), '1') self.assertEqual(ucal.evaluate('log10(100)'), '2') self.assertRaises(ucal.QuantityError, ucal.evaluate, 'log10(1m)')
def test_function_ln(self): """Test ln function.""" self.assertEqual(ucal.evaluate('ln(exp(1))'), '1') self.assertEqual(ucal.evaluate('ln(1)'), '0') self.assertRaises(ucal.QuantityError, ucal.evaluate, 'ln(1m)')
def test_function_abs(self): """Test abs function.""" self.assertEqual(ucal.evaluate('abs(1)'), '1') self.assertEqual(ucal.evaluate('abs(-1)'), '1') self.assertEqual(ucal.evaluate('abs(0)'), '0') self.assertEqual(ucal.evaluate('abs(1 m)'), '1 m')
def test_evaluate_to_units(self): """Test ucal.get_measure.""" self.assertEqual(ucal.evaluate('1ft', units='ft'), ('1', 'ft')) self.assertRaises(ucal.ParserError, ucal.evaluate, '1ft', units='s')
def test_implicit_multiplication(self): """Test for valid implicit multiplication.""" self.assertEqual(ucal.evaluate('1 m'), '1 m') self.assertEqual(ucal.evaluate('m m'), '1 m^2') self.assertEqual(ucal.evaluate('(1) m'), '1 m') self.assertEqual(ucal.evaluate('(1)(1)'), '1')
def test_balanced_parentheses(self): """Test for balanced parentheses.""" self.assertEqual(ucal.evaluate('(1)'), '1') self.assertEqual(ucal.evaluate('((1))'), '1') self.assertEqual(ucal.evaluate('(((((1)))))'), '1')
def test_percent(self): """Test percentage evaluation.""" self.assertEqual(ucal.evaluate('100%'), '1') self.assertEqual(ucal.evaluate('50%'), '0.5') self.assertEqual(ucal.evaluate('25%'), '0.25')
def test_output_units(self): """Test automatic output conversions.""" self.assertEqual(ucal.evaluate('1A*Ohm'), '1 V') self.assertEqual(ucal.evaluate('1/s'), '1 Hz')
def test_mod(self): """Test __mod__ function.""" self.assertEqual(ucal.evaluate('1 % 7'), '1') self.assertEqual(ucal.evaluate('7 % 1'), '0') self.assertEqual(ucal.evaluate('4 % 2.5'), '1.5') self.assertRaises(ucal.QuantityError, ucal.evaluate, '(1m) % 2')
def test_pow(self): """Test __pow__ function.""" self.assertEqual(ucal.evaluate('1 ^ 7'), '1') self.assertEqual(ucal.evaluate('2 ^ 5'), '32') self.assertRaises(ucal.QuantityError, ucal.evaluate, '1 ^ (1m)')
def test_power_evaluation_order(self): """Test order of power evaluation.""" self.assertEqual(ucal.evaluate('3^3^3'), '7625597484987')
def test_string_conversion(self): """Test errors when converting to a string.""" self.assertEqual(str(ucal.evaluate('1/m')), '1 m^-1') self.assertEqual(str(ucal.evaluate('m^2')), '1 m^2') self.assertEqual(str(ucal.evaluate('m^1.5')), '1 m^1.5')
def test_evaluation_order_2(self): """Test order of power/factorial evaluations.""" self.assertEqual(ucal.evaluate('3^2!'), '9')
def test_nested_prefix_comprehension(self): """Test for valid value definitions.""" self.assertEqual(ucal.evaluate('1+-2'), '-1')
def test_function_sqrt(self): """Test sqrt function.""" self.assertEqual(ucal.evaluate('sqrt(4)'), '2')
def test_function_exp(self): """Test exp function.""" self.assertEqual(ucal.evaluate('exp(0)'), '1') self.assertRaises(ucal.QuantityError, ucal.evaluate, 'exp(1m)')
def test_decimal_comprehension(self): """Test decimal number comprehension.""" self.assertEqual(ucal.evaluate('0'), '0') self.assertEqual(ucal.evaluate('0123'), '123') self.assertEqual(ucal.evaluate('+1e555'), '1e555') self.assertEqual(ucal.evaluate('1e-67'), '1e-67')