Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
giswqs
GitHub Repository: giswqs/geemap
Path: blob/master/tests/test_conversion.py
2313 views
1
"""Tests for conversion module."""
2
3
import textwrap
4
import unittest
5
6
from geemap import conversion
7
8
9
class TestConversion(unittest.TestCase):
10
"""Tests for conversion."""
11
12
def test_find_matching_bracket_single_line(self):
13
lines = ['{ "key": "value" }']
14
line_index, char_index = conversion.find_matching_bracket(lines, 0, 0)
15
self.assertEqual(line_index, 0)
16
self.assertEqual(char_index, 17)
17
18
def test_find_matching_bracket_multi_line(self):
19
lines = ["{", ' "key": "value"', "}"]
20
line_index, char_index = conversion.find_matching_bracket(lines, 0, 0)
21
self.assertEqual(line_index, 2)
22
self.assertEqual(char_index, 0)
23
24
def test_find_matching_bracket_nested(self):
25
lines = ["{", ' "key": { "nested_key": "nested_value" }', "}"]
26
line_index, char_index = conversion.find_matching_bracket(lines, 0, 0)
27
self.assertEqual(line_index, 2)
28
self.assertEqual(char_index, 0)
29
30
def test_find_matching_bracket_parentheses(self):
31
lines = ["(", ' "key": "value"', ")"]
32
line_index, char_index = conversion.find_matching_bracket(
33
lines, 0, 0, matching_char="("
34
)
35
self.assertEqual(line_index, 2)
36
self.assertEqual(char_index, 0)
37
38
def test_find_matching_bracket_square_brackets(self):
39
lines = ["[", ' "item1",', ' "item2"', "]"]
40
line_index, char_index = conversion.find_matching_bracket(
41
lines, 0, 0, matching_char="["
42
)
43
self.assertEqual(line_index, 3)
44
self.assertEqual(char_index, 0)
45
46
def test_find_matching_bracket_no_match(self):
47
lines = ["{", ' "key": "value"']
48
line_index, char_index = conversion.find_matching_bracket(lines, 0, 0)
49
self.assertEqual(line_index, -1)
50
self.assertEqual(char_index, -1)
51
52
def test_find_matching_bracket_not_at_start(self):
53
source = textwrap.dedent("""\
54
[
55
{
56
}
57
]
58
""").splitlines()
59
line_index, char_index = conversion.find_matching_bracket(source, 1, 2)
60
self.assertEqual(line_index, 2)
61
self.assertEqual(char_index, 4)
62
63
def test_format_params_simple(self):
64
line = "min: 0"
65
self.assertEqual(conversion.format_params(line), "'min': 0")
66
67
def test_format_params_multiple(self):
68
line = "min: 0, max: 10"
69
self.assertEqual(conversion.format_params(line), "'min': 0, 'max': 10")
70
71
def test_format_params_braces(self):
72
line = "{min: 0, max: 10}"
73
self.assertEqual(conversion.format_params(line), "{'min': 0, 'max': 10}")
74
75
def test_format_params_quoted(self):
76
line = "{'min': 0, max: 10}"
77
self.assertEqual(conversion.format_params(line), "{'min': 0, 'max': 10}")
78
79
def test_format_params_palette(self):
80
line = "palette: ['#440154', '#404387', '#29788E']"
81
self.assertEqual(
82
conversion.format_params(line),
83
"'palette': ['#440154', '#404387', '#29788E']",
84
)
85
86
def test_format_params_string_value(self):
87
line = "description: 'hello'"
88
self.assertEqual(conversion.format_params(line), "'description': 'hello'")
89
90
def test_use_math_true(self):
91
lines = ["var pi = Math.PI;", "print(pi);"]
92
self.assertTrue(conversion.use_math(lines))
93
94
def test_use_math_false(self):
95
lines = ["var pi = 3.14;", "print(pi);"]
96
self.assertFalse(conversion.use_math(lines))
97
98
def test_convert_for_loop_i_plus_plus(self):
99
line = "for (var i = 0; i < 10; i++) {"
100
self.assertEqual(
101
conversion.convert_for_loop(line), "for i in range(0, 10, 1): {"
102
)
103
104
def test_convert_for_loop_i_minus_minus(self):
105
line = "for (var i = 10; i > 0; i--) {"
106
self.assertEqual(
107
conversion.convert_for_loop(line), "for i in range(10, 0, -1): {"
108
)
109
110
def test_convert_for_loop_in(self):
111
line = "for (var i in myList) {"
112
self.assertEqual(conversion.convert_for_loop(line), "for i in myList: {")
113
114
def test_convert_for_loop_no_var(self):
115
line = "for (i = 0; i < 10; i++) {"
116
self.assertEqual(
117
conversion.convert_for_loop(line), "for i in range(0, 10, 1): {"
118
)
119
120
def test_remove_all_indentation(self):
121
lines = [" line1", "\tline2", "line3", "", " \t line4"]
122
expected = ["line1", "line2", "line3", "", "line4"]
123
self.assertEqual(conversion.remove_all_indentation(lines), expected)
124
125
126
if __name__ == "__main__":
127
unittest.main()
128
129