Skip to content

Commit 7154693

Browse files
Add tests
1 parent 6c478d0 commit 7154693

2 files changed

Lines changed: 54 additions & 1 deletion

File tree

src/automate_elementaire_wasm.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ importer math
77

88
déf cellule_suivante(numero_regle, gauche, centre, droite):
99
soit indice = gauche * 4 + centre * 2 + droite
10-
retour (numero_regle // (2 ** indice)) % 2
10+
retour (numero_regle >> indice) & 1
1111

1212

1313
déf classe_wolfram(numero_regle):

tests/test_wasm_logic.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import unicodedata
2+
from pathlib import Path
3+
4+
5+
def _load_namespace():
6+
source = Path("src/automate_elementaire_wasm.ml").read_text(encoding="utf-8")
7+
source = unicodedata.normalize("NFC", source)
8+
translated = (
9+
source.replace("déf", "def")
10+
.replace("déf", "def")
11+
.replace("Vrai", "True")
12+
.replace("Faux", "False")
13+
.replace("sinonsi", "elif")
14+
.replace("sinon", "else")
15+
.replace("retour", "return")
16+
.replace("soit ", "")
17+
.replace("si ", "if ")
18+
.replace(" dans ", " in ")
19+
.replace("importer", "import")
20+
)
21+
namespace = {}
22+
exec(translated, namespace)
23+
return namespace
24+
25+
26+
def test_cellule_suivante_matches_ci_smoke_cases():
27+
ns = _load_namespace()
28+
cellule_suivante = ns["cellule_suivante"]
29+
30+
checks = [
31+
(90, 1, 0, 1, 0),
32+
(90, 1, 0, 0, 1),
33+
(30, 1, 1, 1, 0),
34+
(30, 0, 1, 0, 1),
35+
]
36+
37+
for rule, left, center, right, expected in checks:
38+
assert cellule_suivante(rule, left, center, right) == expected
39+
40+
41+
def test_classe_wolfram_matches_ci_smoke_cases():
42+
ns = _load_namespace()
43+
classe_wolfram = ns["classe_wolfram"]
44+
45+
checks = [
46+
(30, 3),
47+
(110, 4),
48+
(255, 1),
49+
(73, 2),
50+
]
51+
52+
for rule, expected in checks:
53+
assert classe_wolfram(rule) == expected

0 commit comments

Comments
 (0)