Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
giswqs
GitHub Repository: giswqs/geemap
Path: blob/master/tests/test_chart.py
2313 views
1
"""Tests for `chart` module."""
2
3
import unittest
4
5
import pandas as pd
6
from geemap import chart
7
8
9
class ChartTest(unittest.TestCase):
10
"""Tests for `chart` module."""
11
12
def test_data_table_dict(self):
13
"""Test DataTable with a dictionary."""
14
data = {"col1": [1, 2], "col2": [3, 4], "date": ["2022-01-01", "2022-01-02"]}
15
dt = chart.DataTable(data, date_column="date")
16
self.assertIsInstance(dt, chart.DataTable)
17
self.assertEqual(dt.shape, (2, 3))
18
self.assertTrue(pd.api.types.is_datetime64_any_dtype(dt["date"]))
19
20
def test_data_table_df(self):
21
"""Test DataTable with a pandas DataFrame."""
22
data = {"col1": [1, 2], "col2": [3, 4], "date": ["2022-01-01", "2022-01-02"]}
23
df = pd.DataFrame(data)
24
dt = chart.DataTable(df, date_column="date")
25
self.assertIsInstance(dt, chart.DataTable)
26
self.assertEqual(dt.shape, (2, 3))
27
self.assertTrue(pd.api.types.is_datetime64_any_dtype(dt["date"]))
28
29
def test_transpose_df(self):
30
"""Test transpose_df function."""
31
data = {"label": ["A", "B"], "val1": [1, 2], "val2": [3, 4]}
32
df = pd.DataFrame(data)
33
34
# Test basic transpose.
35
transposed = chart.transpose_df(df, "label")
36
self.assertEqual(transposed.shape, (2, 2))
37
self.assertEqual(list(transposed.columns), ["A", "B"])
38
self.assertEqual(list(transposed.index), ["val1", "val2"])
39
self.assertEqual(transposed["A"]["val1"], 1)
40
41
# Test with index_name.
42
transposed_with_index_name = chart.transpose_df(
43
df, "label", index_name="Metrics"
44
)
45
self.assertEqual(transposed_with_index_name.columns.name, "Metrics")
46
47
# Test with custom indexes.
48
transposed_with_indexes = chart.transpose_df(
49
df, "label", indexes=["Value 1", "Value 2"]
50
)
51
self.assertEqual(list(transposed_with_indexes.index), ["Value 1", "Value 2"])
52
53
# Test invalid label_col.
54
with self.assertRaises(ValueError):
55
chart.transpose_df(df, "invalid_col")
56
57
# Test invalid indexes length.
58
with self.assertRaises(ValueError):
59
chart.transpose_df(df, "label", indexes=["Only one"])
60
61
def test_pivot_df(self):
62
"""Test pivot_df function."""
63
data = {
64
"date": ["2022-01-01", "2022-01-01", "2022-01-02", "2022-01-02"],
65
"variable": ["temp", "prec", "temp", "prec"],
66
"value": [25, 5, 26, 3],
67
}
68
df = pd.DataFrame(data)
69
70
pivoted = chart.pivot_df(df, index="date", columns="variable", values="value")
71
72
self.assertEqual(pivoted.shape, (2, 3))
73
self.assertEqual(list(pivoted.columns), ["date", "prec", "temp"])
74
self.assertEqual(pivoted["temp"][0], 25)
75
self.assertEqual(pivoted["prec"][1], 3)
76
77
def test_array_to_df(self):
78
"""Test array_to_df function."""
79
y_values = [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]
80
df = chart.array_to_df(y_values)
81
self.assertEqual(df.shape, (3, 3))
82
self.assertEqual(list(df.columns), ["x", "y1", "y2"])
83
self.assertEqual(list(df["x"]), [1, 2, 3])
84
self.assertEqual(list(df["y1"]), [1.0, 2.0, 3.0])
85
self.assertEqual(list(df["y2"]), [4.0, 5.0, 6.0])
86
87
x_values = [10, 20, 30]
88
y_labels = ["a", "b"]
89
df = chart.array_to_df(
90
y_values, x_values=x_values, y_labels=y_labels, x_label="time"
91
)
92
self.assertEqual(df.shape, (3, 3))
93
self.assertEqual(list(df.columns), ["time", "a", "b"])
94
self.assertEqual(list(df["time"]), [10, 20, 30])
95
self.assertEqual(list(df["a"]), [1.0, 2.0, 3.0])
96
self.assertEqual(list(df["b"]), [4.0, 5.0, 6.0])
97
98
99
if __name__ == "__main__":
100
unittest.main()
101
102