示例#1
0
 def test_function(self):
     res = parse("SUM(10)")
     self.assertEqual([
         '_class', 'SUM', '_num', 10, '_arg', 1, '_func', 'SUM', '_arg', 1
     ], res)
     res = parse("NOW() * 20")
     self.assertEqual(
         ['_class', 'NOW', '_func', 'NOW', '_num', 20, 'ptgMul', '_arg', 1],
         res)
     res = parse("SUM(SUM(B4:G10),A3)+3")
     etalon = [
         "_class",
         "SUM",
         "_class",
         "SUM",
         "_range2d",
         "B4:G10",
         "_arg",
         1,
         "_func",
         "SUM",
         "_ref2d",
         "A3",
         "_arg",
         2,
         "_func",
         "SUM",
         "_num",
         3,
         "ptgAdd",
         "_arg",
         1,
     ]
     self.assertEqual(etalon, res)
示例#2
0
 def test_comma(self):
     res = parse("1+2,3+4")
     self.assertEqual([
         '_num', 1, '_num', 2, 'ptgAdd', '_num', 3, '_num', 4, 'ptgAdd',
         '_arg', 2
     ], res)
     res = parse("1*2,3*4")
     self.assertEqual([
         '_num', 1, '_num', 2, 'ptgMul', '_num', 3, '_num', 4, 'ptgMul',
         '_arg', 2
     ], res)
示例#3
0
 def test_simple(self):
     res = parse("3")
     self.assertEqual(['_num', 3, '_arg', 1], res)
     res = parse('"6" & "s"')
     self.assertEqual(['_str', '"6"', '_str', '"s"', 'ptgConcat', '_arg', 1], res)
     res = parse("-3+7")
     self.assertEqual(['_num', -3, '_num', 7, 'ptgAdd', '_arg', 1], res)
     res = parse("1*2+3")
     self.assertEqual(['_num', 1, '_num', 2, 'ptgMul', '_num', 3, 'ptgAdd', '_arg', 1], res)
     res = parse("1+2*3")
     self.assertEqual(['_num', 1, '_num', 2, '_num', 3, 'ptgMul', 'ptgAdd', '_arg', 1], res)
示例#4
0
 def test_function(self):
     res = parse("SUM(10)")
     self.assertEqual(['_class', 'SUM', '_num', 10, '_arg', 1, '_func', 'SUM', '_arg', 1], res)
     res = parse("NOW() * 20")
     self.assertEqual(['_class', 'NOW', '_func', 'NOW', '_num', 20, 'ptgMul', '_arg', 1], res)
     res = parse("SUM(SUM(B4:G10),A3)+3")
     etalon = [
         "_class", "SUM",
             "_class", "SUM", "_range2d", "B4:G10", "_arg", 1, "_func", "SUM",
             "_ref2d", "A3", "_arg", 2, "_func", "SUM",
         "_num", 3, "ptgAdd", "_arg", 1,]
     self.assertEqual(etalon, res)
示例#5
0
 def test_string_in_function(self):
     res = parse('IF(A5>3,"Yes", "No")')
     etalon = [
         '_class', 'IF', '_ref2d', 'A5', '_num', 3, 'ptgGT', '_str',
         '"Yes"', '_str', '"No"', '_arg', 3, '_func', 'IF', '_arg', 1
     ]
     self.assertEqual(etalon, res)
示例#6
0
 def test_simple(self):
     res = parse("3")
     self.assertEqual(['_num', 3, '_arg', 1], res)
     res = parse('"6" & "s"')
     self.assertEqual(
         ['_str', '"6"', '_str', '"s"', 'ptgConcat', '_arg', 1], res)
     res = parse("-3+7")
     self.assertEqual(['_num', -3, '_num', 7, 'ptgAdd', '_arg', 1], res)
     res = parse("1*2+3")
     self.assertEqual(
         ['_num', 1, '_num', 2, 'ptgMul', '_num', 3, 'ptgAdd', '_arg', 1],
         res)
     res = parse("1+2*3")
     self.assertEqual(
         ['_num', 1, '_num', 2, '_num', 3, 'ptgMul', 'ptgAdd', '_arg', 1],
         res)
示例#7
0
 def test_not_stripped_branches(self):
     res = parse("A1/(A2-A3)")
     self.assertEqual([
         "_ref2d", "A1", "_ref2d", "A2", "_ref2d", "A3", "ptgSub", "_arg",
         1, "ptgParen", "ptgDiv", "_arg", 1
     ], res)
示例#8
0
 def test_gele(self):
     res = parse("6>=6<7=8>=9")
     self.assertEqual([
         "_num", 6, "_num", 6, "ptgGE", "_num", 7, "ptgLT", "_num", 8,
         "ptgEQ", "_num", 9, "ptgGE", "_arg", 1
     ], res)
示例#9
0
 def test_ref_and_range(self):
     res = parse("A1")
     self.assertEqual(['_ref2d', 'A1', '_arg', 1], res)
示例#10
0
 def test_not_stripped_branches(self):
     res = parse("A1/(A2-A3)")
     self.assertEqual(["_ref2d", "A1", "_ref2d", "A2", "_ref2d", "A3", "ptgSub", "_arg", 1, "ptgParen", "ptgDiv", "_arg", 1], res)
示例#11
0
 def test_gele(self):
     res = parse("6>=6<7=8>=9")
     self.assertEqual(["_num", 6, "_num", 6, "ptgGE", "_num", 7, "ptgLT", "_num", 8, "ptgEQ", "_num", 9, "ptgGE", "_arg", 1], res)
示例#12
0
 def test_string_in_function(self):
     res = parse('IF(A5>3,"Yes", "No")')
     etalon = ['_class', 'IF', '_ref2d', 'A5', '_num', 3, 'ptgGT', '_str', '"Yes"', '_str', '"No"', '_arg', 3, '_func', 'IF', '_arg', 1]
     self.assertEqual(etalon, res)
示例#13
0
 def test_comma(self):
     res = parse("1+2,3+4")
     self.assertEqual(['_num', 1, '_num', 2, 'ptgAdd', '_num', 3, '_num', 4, 'ptgAdd', '_arg', 2], res)
     res = parse("1*2,3*4")
     self.assertEqual(['_num', 1, '_num', 2, 'ptgMul', '_num', 3, '_num', 4, 'ptgMul', '_arg', 2], res)
示例#14
0
 def test_ref_and_range(self):
     res = parse("A1")
     self.assertEqual(['_ref2d', 'A1', '_arg', 1], res)