Skip to content

Instantly share code, notes, and snippets.

@IvanIsCoding
Created May 11, 2025 18:10
Show Gist options
  • Save IvanIsCoding/0c268e46978a44aaf95b7d51e8f70a03 to your computer and use it in GitHub Desktop.
Save IvanIsCoding/0c268e46978a44aaf95b7d51e8f70a03 to your computer and use it in GitHub Desktop.
More Robust Rustworkx WASM test
<!doctype html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/pyodide/v0.27.5/full/pyodide.js"></script>
</head>
<body>
Pyodide test page <br>
Open your browser console to see Pyodide output
<script type="text/javascript">
async function main() {
let pyodide = await loadPyodide();
await pyodide.loadPackage(
"http://localhost:8000/rustworkx-0.17.0a3-cp39-abi3-pyodide_2025_0_wasm32.whl",
);
const output = document.getElementById("output");
const result = await pyodide.runPythonAsync(`
def test_rayon_works(selenium):
# This essentially tests that multi-threading is set to one core and does not panic
import rustworkx
graph = rustworkx.generators.cycle_graph(10)
path_lenghts_floyd = rustworkx.floyd_warshall(graph)
path_lenghts_no_self = rustworkx.all_pairs_dijkstra_path_lengths(graph, lambda _: 1.0)
path_lenghts_dijkstra = {k: {**v, k: 0.0} for k, v in path_lenghts_no_self.items()}
assert path_lenghts_floyd == path_lenghts_dijkstra
def test_isomorphism(selenium):
# Adapted from tests/graph/test_isomorphic.py to work with pytest
import rustworkx
n = 15
upper_bound_k = (n - 1) // 2
for k in range(1, upper_bound_k + 1):
for t in range(k, upper_bound_k + 1):
result = rustworkx.is_isomorphic(
rustworkx.generators.generalized_petersen_graph(n, k),
rustworkx.generators.generalized_petersen_graph(n, t),
)
expected = (k == t) or (k == n - t) or (k * t % n == 1) or (k * t % n == n - 1)
assert result == expected
test_isomorphism(None);test_rayon_works(None); print("Both tests passed");
`);
}
main();
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment