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)
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)
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)
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)
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)
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)
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)
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)
def test_ref_and_range(self): res = parse("A1") self.assertEqual(['_ref2d', 'A1', '_arg', 1], res)
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)
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)
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)
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)