Exemple #1
0
 def test_concatenate(self):
     p = Parser(debug=True)
     ret = p.parse(
         'CONCAT("The"," ","sun"," ","will"," ","come"," ","up"," ","tomorrow.")'
     )
     self.assertEqual(ret['result'], 'The sun will come up tomorrow.')
     self.assertEqual(ret['error'], None)
Exemple #2
0
 def test_arrays(self):
     p = Parser(debug=True)
     ret = p.parse('2/{1;2;4}')
     self.assertEqual(ret['result'], [2, 1, 0.5])
     self.assertEqual(ret['error'], None)
     ret = p.parse('{1;2;4}/2')
     self.assertEqual(ret['result'], [0.5, 1, 2])
     self.assertEqual(ret['error'], None)
     ret = p.parse('{1;2;4}*2')
     self.assertEqual(ret['result'], [2, 4, 8])
     self.assertEqual(ret['error'], None)
     ret = p.parse('2*{1;2;4}')
     self.assertEqual(ret['result'], [2, 4, 8])
     self.assertEqual(ret['error'], None)
     ret = p.parse('2+{1;2;4}')
     self.assertEqual(ret['result'], [3, 4, 6])
     self.assertEqual(ret['error'], None)
     ret = p.parse('{1;2;4}+2')
     self.assertEqual(ret['result'], [3, 4, 6])
     self.assertEqual(ret['error'], None)
     ret = p.parse('2-{1;2;4}')
     self.assertEqual(ret['result'], [1, 0, -2])
     self.assertEqual(ret['error'], None)
     ret = p.parse('{1;2;4}-2')
     self.assertEqual(ret['result'], [-1, 0, 2])
     self.assertEqual(ret['error'], None)
 def test_averagif(self):
     p = Parser(debug=True)
     ret = p.parse('AVERAGEIF({1;2;3;4};">2")')
     self.assertEqual(ret['result'], 3.5)
     self.assertEqual(ret['error'], None)
     ret = p.parse('AVERAGEIF({1;2;3;4};">2";{4;3;2;1})')
     self.assertEqual(ret['result'], 1.5)
     self.assertEqual(ret['error'], None)
 def test_min(self):
     p = Parser(debug=True)
     ret = p.parse('MIN({1;3};0)')
     self.assertEqual(ret['result'], 0)
     self.assertEqual(ret['error'], None)
     ret = p.parse('MIN({1;2;3})')
     self.assertEqual(ret['result'], 1)
     self.assertEqual(ret['error'], None)
Exemple #5
0
 def test_iferror(self):
     p = Parser(debug=True)
     ret = p.parse('IFERROR(1/0,1)')
     self.assertEqual(ret['result'], 1)
     self.assertEqual(ret['error'], None)
     ret = p.parse('IFERROR("notme",1)')
     self.assertEqual(ret['result'], "notme")
     self.assertEqual(ret['error'], None)
Exemple #6
0
 def test_asinh(self):
     p = Parser(debug=True)
     ret = p.parse('ASINH(-2.5)')
     self.assertTrue(['result'], -1.647231146)
     self.assertEqual(ret['error'], None)
     ret = p.parse('ASINH(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #7
0
 def test_sinh(self):
     p = Parser(debug=True)
     ret = p.parse('2.868*SINH(0.0342*1.03)')
     self.assertTrue(['result'], 0.1010491)
     self.assertEqual(ret['error'], None)
     ret = p.parse('SINH(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #8
0
 def test_acoth(self):
     p = Parser(debug=True)
     ret = p.parse('ACOTH(6)')
     self.assertTrue(str(ret['result']).startswith('0.168'))
     self.assertEqual(ret['error'], None)
     ret = p.parse('ACOTH(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #9
0
 def test_atan(self):
     p = Parser(debug=True)
     ret = p.parse('ATAN(1)*180/PI()')
     self.assertTrue(['result'], 1)
     self.assertEqual(ret['error'], None)
     ret = p.parse('ATAN(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #10
0
 def test_tanh(self):
     p = Parser(debug=True)
     ret = p.parse('TANH(0.5)')
     self.assertTrue(['result'], 0.462117)
     self.assertEqual(ret['error'], None)
     ret = p.parse('TANH(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #11
0
 def test_cosh(self):
     p = Parser(debug=True)
     ret = p.parse('COSH(4)')
     self.assertTrue(['result'], 27.308233)
     self.assertEqual(ret['error'], None)
     ret = p.parse('COSH(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #12
0
 def test_date(self):
     p = Parser(debug=True)
     ret = p.parse('DATE(2020;10;12)')
     self.assertEqual(ret['result'], datetime.datetime(2020, 10, 12))
     self.assertEqual(ret['error'], None)
     ret = p.parse('DATE(95;10;12)')
     self.assertEqual(ret['result'], datetime.datetime(1995, 10, 12))
     self.assertEqual(ret['error'], None)
Exemple #13
0
 def test_second(self):
     p = Parser(debug=True)
     ret = p.parse('SECOND("10:04:11")')
     self.assertEqual(ret['result'], 11)
     self.assertEqual(ret['error'], None)
     ret = p.parse('SECOND(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #14
0
 def test_minute(self):
     p = Parser(debug=True)
     ret = p.parse('MINUTE("10:04:11")')
     self.assertEqual(ret['result'], 4)
     self.assertEqual(ret['error'], None)
     ret = p.parse('MINUTE(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #15
0
 def test_hour(self):
     p = Parser(debug=True)
     ret = p.parse('HOUR("10:04:11")')
     self.assertEqual(ret['result'], 10)
     self.assertEqual(ret['error'], None)
     ret = p.parse('HOUR(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #16
0
 def test_radians(self):
     p = Parser(debug=True)
     ret = p.parse('RADIANS(270)')
     self.assertTrue(str(ret['result']).startswith('4.7123'))
     self.assertEqual(ret['error'], None)
     ret = p.parse('RADIANS(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #17
0
 def test_degrees(self):
     p = Parser(debug=True)
     ret = p.parse('DEGREES(PI())')
     self.assertEqual(ret['result'], 180)
     self.assertEqual(ret['error'], None)
     ret = p.parse('DEGREES(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #18
0
 def test_atanh(self):
     p = Parser(debug=True)
     ret = p.parse('ATANH(0.76159416)')
     self.assertTrue(['result'], 1.00000001)
     self.assertEqual(ret['error'], None)
     ret = p.parse('ATANH(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #19
0
 def test_sin(self):
     p = Parser(debug=True)
     ret = p.parse('SIN(PI()/2)')
     self.assertTrue(['result'], 1)
     self.assertEqual(ret['error'], None)
     ret = p.parse('SIN(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #20
0
 def test_sqrt(self):
     p = Parser(debug=True)
     ret = p.parse('SQRT(16)')
     self.assertTrue(['result'], 4)
     self.assertEqual(ret['error'], None)
     ret = p.parse('SQRT(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #21
0
 def test_asin(self):
     p = Parser(debug=True)
     ret = p.parse('ASIN(-0.5)')
     self.assertTrue(['result'], -0.523598776)
     self.assertEqual(ret['error'], None)
     ret = p.parse('ASIN(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #22
0
 def test_round(self):
     p = Parser(debug=True)
     ret = p.parse('ROUND(23.7825, 2)')
     self.assertEqual(ret['result'], 23.78)
     self.assertEqual(ret['error'], None)
     ret = p.parse('ROUND(23.789, 2)')
     self.assertEqual(ret['result'], 23.79)
     self.assertEqual(ret['error'], None)
Exemple #23
0
 def test_cos(self):
     p = Parser(debug=True)
     ret = p.parse('COS(0)')
     self.assertTrue(['result'], 1)
     self.assertEqual(ret['error'], None)
     ret = p.parse('COS(1/0)')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['error'], '#DIV/0!')
Exemple #24
0
 def test_ln(self):
     p = Parser(debug=True)
     ret = p.parse('LN(EXP(1))')
     self.assertEqual(ret['result'], 1)
     self.assertEqual(ret['error'], None)
     ret = p.parse('LN(EXP(3))')
     self.assertEqual(ret['result'], 3)
     self.assertEqual(ret['error'], None)
Exemple #25
0
 def test_not(self):
     p = Parser(debug=True)
     ret = p.parse('NOT(TRUE())')
     self.assertEqual(ret['result'], False)
     self.assertEqual(ret['error'], None)
     ret = p.parse('NOT(FALSE())')
     self.assertEqual(ret['result'], True)
     self.assertEqual(ret['error'], None)
Exemple #26
0
 def test_log(self):
     p = Parser(debug=True)
     ret = p.parse('LOG(10)')
     self.assertEqual(ret['result'], 1)
     self.assertEqual(ret['error'], None)
     ret = p.parse('LOG(8, 2)')
     self.assertEqual(ret['result'], 3)
     self.assertEqual(ret['error'], None)
Exemple #27
0
 def test_averagea(self):
     p = Parser(debug=True)
     ret = p.parse('AVERAGEA(1;"2")')
     self.assertEqual(ret['result'], 1.5)
     self.assertEqual(ret['error'], None)
     ret = p.parse('AVERAGEA(1;"2";TRUE;TRUE)')
     self.assertEqual(ret['result'], 1.25)
     self.assertEqual(ret['error'], None)
Exemple #28
0
 def test_log10(self):
     p = Parser(debug=True)
     ret = p.parse('LOG10(10)')
     self.assertEqual(ret['result'], 1)
     self.assertEqual(ret['error'], None)
     ret = p.parse('LOG10(100000)')
     self.assertEqual(ret['result'], 5)
     self.assertEqual(ret['error'], None)
Exemple #29
0
 def test_max(self):
     p = Parser(debug=True)
     ret = p.parse('MAX({1;3};4)')
     self.assertEqual(ret['result'], 4)
     self.assertEqual(ret['error'], None)
     ret = p.parse('MAX({1;2;3})')
     self.assertEqual(ret['result'], 3)
     self.assertEqual(ret['error'], None)
Exemple #30
0
 def test_sumif(self):
     p = Parser(debug=True)
     ret = p.parse('SUMIF({1;4;5}, ">0")')
     self.assertEqual(ret['result'], 10)
     self.assertEqual(ret['error'], None)
     ret = p.parse('SUMIF({1;4;5}, ">1")')
     self.assertEqual(ret['result'], 9)
     self.assertEqual(ret['error'], None)