Skip to content

Commit cdccf5a

Browse files
committed
1 parent ed91ba6 commit cdccf5a

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

tests/test_examples.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# noqa: D100
2+
from solara.testing import test_app
23
from mesa.examples import (
34
BoidFlockers,
45
BoltzmannWealth,
@@ -11,15 +12,24 @@
1112
VirusOnNetwork,
1213
WolfSheep,
1314
)
15+
from mesa.experimental.devs import ABMSimulator
1416

1517

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+
1626
def test_boltzmann_model(): # noqa: D103
1727
from mesa.examples.basic.boltzmann_wealth_model import app
1828

1929
app.page # noqa: B018
2030

2131
model = BoltzmannWealth(seed=42)
22-
32+
run_viz_test(model, app.page)
2333
for _i in range(10):
2434
model.step()
2535

@@ -30,6 +40,7 @@ def test_conways_game_model(): # noqa: D103
3040
app.page # noqa: B018
3141

3242
model = ConwaysGameOfLife(seed=42)
43+
run_viz_test(model, app.page)
3344
for _i in range(10):
3445
model.step()
3546

@@ -40,6 +51,7 @@ def test_schelling_model(): # noqa: D103
4051
app.page # noqa: B018
4152

4253
model = Schelling(seed=42)
54+
run_viz_test(model, app.page)
4355
for _i in range(10):
4456
model.step()
4557

@@ -50,6 +62,7 @@ def test_virus_on_network(): # noqa: D103
5062
app.page # noqa: B018
5163

5264
model = VirusOnNetwork(seed=42)
65+
run_viz_test(model, app.page)
5366
for _i in range(10):
5467
model.step()
5568

@@ -60,7 +73,7 @@ def test_boid_flockers(): # noqa: D103
6073
app.page # noqa: B018
6174

6275
model = BoidFlockers(seed=42)
63-
76+
run_viz_test(model, app.page)
6477
for _i in range(10):
6578
model.step()
6679

@@ -71,7 +84,7 @@ def test_epstein(): # noqa: D103
7184
app.page # noqa: B018
7285

7386
model = EpsteinCivilViolence(seed=42)
74-
87+
run_viz_test(model, app.page)
7588
for _i in range(10):
7689
model.step()
7790

@@ -82,7 +95,7 @@ def test_pd_grid(): # noqa: D103
8295
app.page # noqa: B018
8396

8497
model = PdGrid(seed=42)
85-
98+
run_viz_test(model, app.page)
8699
for _i in range(10):
87100
model.step()
88101

@@ -93,7 +106,7 @@ def test_sugarscape_g1mt(): # noqa: D103
93106
app.page # noqa: B018
94107

95108
model = SugarscapeG1mt(seed=42)
96-
109+
run_viz_test(model, app.page)
97110
for _i in range(10):
98111
model.step()
99112

@@ -107,6 +120,8 @@ def test_wolf_sheep(): # noqa: D103
107120
simulator = ABMSimulator()
108121
WolfSheep(seed=42, simulator=simulator)
109122
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"
110125

111126

112127
def test_alliance_formation_model(): # noqa: D103
@@ -120,3 +135,6 @@ def test_alliance_formation_model(): # noqa: D103
120135
model.step()
121136

122137
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

Comments
 (0)