1
1
# noqa: D100
2
+ from solara .testing import test_app
2
3
from mesa .examples import (
3
4
BoidFlockers ,
4
5
BoltzmannWealth ,
11
12
VirusOnNetwork ,
12
13
WolfSheep ,
13
14
)
15
+ from mesa .experimental .devs import ABMSimulator
14
16
15
17
18
+ def run_viz_test (model_instance , app_page , dom_selector = "canvas" ):
19
+ """Run model steps and test if the Solara visualization renders."""
20
+ for _ in range (10 ):
21
+ model_instance .step ()
22
+
23
+ with test_app (app_page ) as app_test :
24
+ assert app_test .find (dom_selector ), f"{ dom_selector } should render for { model_instance .__class__ .__name__ } "
25
+
16
26
def test_boltzmann_model (): # noqa: D103
17
27
from mesa .examples .basic .boltzmann_wealth_model import app
18
28
19
29
app .page # noqa: B018
20
30
21
31
model = BoltzmannWealth (seed = 42 )
22
-
32
+ run_viz_test ( model , app . page )
23
33
for _i in range (10 ):
24
34
model .step ()
25
35
@@ -30,6 +40,7 @@ def test_conways_game_model(): # noqa: D103
30
40
app .page # noqa: B018
31
41
32
42
model = ConwaysGameOfLife (seed = 42 )
43
+ run_viz_test (model , app .page )
33
44
for _i in range (10 ):
34
45
model .step ()
35
46
@@ -40,6 +51,7 @@ def test_schelling_model(): # noqa: D103
40
51
app .page # noqa: B018
41
52
42
53
model = Schelling (seed = 42 )
54
+ run_viz_test (model , app .page )
43
55
for _i in range (10 ):
44
56
model .step ()
45
57
@@ -50,6 +62,7 @@ def test_virus_on_network(): # noqa: D103
50
62
app .page # noqa: B018
51
63
52
64
model = VirusOnNetwork (seed = 42 )
65
+ run_viz_test (model , app .page )
53
66
for _i in range (10 ):
54
67
model .step ()
55
68
@@ -60,7 +73,7 @@ def test_boid_flockers(): # noqa: D103
60
73
app .page # noqa: B018
61
74
62
75
model = BoidFlockers (seed = 42 )
63
-
76
+ run_viz_test ( model , app . page )
64
77
for _i in range (10 ):
65
78
model .step ()
66
79
@@ -71,7 +84,7 @@ def test_epstein(): # noqa: D103
71
84
app .page # noqa: B018
72
85
73
86
model = EpsteinCivilViolence (seed = 42 )
74
-
87
+ run_viz_test ( model , app . page )
75
88
for _i in range (10 ):
76
89
model .step ()
77
90
@@ -82,7 +95,7 @@ def test_pd_grid(): # noqa: D103
82
95
app .page # noqa: B018
83
96
84
97
model = PdGrid (seed = 42 )
85
-
98
+ run_viz_test ( model , app . page )
86
99
for _i in range (10 ):
87
100
model .step ()
88
101
@@ -93,7 +106,7 @@ def test_sugarscape_g1mt(): # noqa: D103
93
106
app .page # noqa: B018
94
107
95
108
model = SugarscapeG1mt (seed = 42 )
96
-
109
+ run_viz_test ( model , app . page )
97
110
for _i in range (10 ):
98
111
model .step ()
99
112
@@ -107,6 +120,8 @@ def test_wolf_sheep(): # noqa: D103
107
120
simulator = ABMSimulator ()
108
121
WolfSheep (seed = 42 , simulator = simulator )
109
122
simulator .run_for (10 )
123
+ with test_app (app .page ) as app_test :
124
+ assert app_test .find ("canvas" ), "Canvas should render for WolfSheep model"
110
125
111
126
112
127
def test_alliance_formation_model (): # noqa: D103
@@ -120,3 +135,6 @@ def test_alliance_formation_model(): # noqa: D103
120
135
model .step ()
121
136
122
137
assert len (model .agents ) == len (model .network .nodes )
138
+ with test_app (app .page ) as app_test :
139
+ assert app_test .find ("canvas" ), "Canvas should render for MultiLevelAllianceModel"
140
+
0 commit comments