FreeCAD

Форк
0
/
test_importXLSX.py 
98 строк · 3.3 Кб
1
import unittest
2
from unittest.mock import patch, MagicMock
3

4
from importXLSX import FormulaTranslator, getText, handleStrings, open
5

6

7
class TestFormulaTranslator(unittest.TestCase):
8
    def test_translate_expressions(self):
9
        # With
10
        formulas_and_expressions = [
11
            ("1=2", "1==2"),
12
            ("a<b", "a<b"),
13
            ("a>b", "a>b"),
14
            ("1<>2", "1!=2"),
15
            ("a>=b", "a>=b"),
16
            ("a<=b", "a<=b"),
17
            ("a!b", "a.b"),
18
            ("a+b", "a+b"),
19
            ("a-b", "a-b"),
20
            ("a*b", "a*b"),
21
            ("a/b", "a/b"),
22
            ("a^b", "a^b"),
23
            ("c*(a+b)", "c*(a+b)"),
24
            ("IF(a=b, c, d)", "(a==b? c: d)"),
25
            ("ABS(a)", "abs(a)"),
26
            ("ACOS(a)", "pi/180deg*acos(a)"),
27
            ("ASIN(a)", "pi/180deg*asin(a)"),
28
            ("ATAN(a)", "pi/180deg*atan(a)"),
29
            ("ATAN2(a)", "pi/180deg*atan2(a)"),
30
            ("COS(a)", "cos(1rad*(a))"),
31
            ("COSH(a)", "cosh(1rad*(a))"),
32
            ("EXP(a)", "exp(a)"),
33
            ("LOG(n)", "log(n)"),
34
            ("LOG10(n)", "log10(n)"),
35
            ("MOD(n,d)", "mod(n,d)"),
36
            ("POWER(n,p)", "pow(n,p)"),
37
            ("SIN(a)", "sin(1rad*(a))"),
38
            ("SINH(a)", "sinh(1rad*(a))"),
39
            ("SQRT(a)", "sqrt(a)"),
40
            ("TAN(a)", "tan(1rad*(a))"),
41
            ("TANH(a)", "tanh(1rad*(a))"),
42
            ("AVERAGE(a,b,c)", "average(a,b,c)"),
43
            ("COUNT(a,b,c)", "count(a,b,c)"),
44
            ("MAX(a,b,c)", "max(a,b,c)"),
45
            ("MIN(a,b,c)", "min(a,b,c)"),
46
            ("STDEVA(a,b,c)", "stddev(a,b,c)"),
47
            ("SUM(a,b,c)", "sum(a,b,c)"),
48
            ("PI", "pi"),
49
            ("_xlfn.CEILING.MATH(a)", "ceil(a)"),
50
            ("_xlfn.FLOOR.MATH(a)", "floor(a)"),
51
        ]
52

53
        # When
54
        result = []
55
        for formula, _ in formulas_and_expressions:
56
            translator = FormulaTranslator()
57
            result.append(translator.translateForm(formula))
58

59
        # Then
60
        expected = [f"={expression}" for _, expression in formulas_and_expressions]
61
        self.assertListEqual(expected, result)
62

63
    def test_translate_multi_character_branching_operators(self):
64
        # With
65
        formulas_and_expressions = [
66
            ("1<>2", "1!=2"),
67
            ("a>=b", "a>=b"),
68
            ("a<=b", "a<=b"),
69
        ]
70

71
        # When
72
        result = []
73
        for formula, _ in formulas_and_expressions:
74
            translator = FormulaTranslator()
75
            result.append(translator.translateForm(formula))
76

77
        # Then
78
        expected = [f"={expression}" for _, expression in formulas_and_expressions]
79
        self.assertListEqual(expected, result)
80

81
    def test_translate_nested_expression(self):
82
        # With
83
        formulas_and_expressions = [
84
            (
85
                "IF(a<b+c,0.1+SIN(0.5),0.3+MAX(COS(0.2),SIN(0.1)))",
86
                "(a<b+c?0.1+sin(1rad*(0.5)):0.3+max(cos(1rad*(0.2)),sin(1rad*(0.1))))",
87
            ),
88
        ]
89

90
        # When
91
        result = []
92
        for formula, _ in formulas_and_expressions:
93
            translator = FormulaTranslator()
94
            result.append(translator.translateForm(formula))
95

96
        # Then
97
        expected = [f"={expression}" for _, expression in formulas_and_expressions]
98
        self.assertListEqual(expected, result)
99

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.