Synaptopus/tests/testsupport.py

40 lines
933 B
Python

from __future__ import annotations
from dataclasses import dataclass
from synaptopus.architectures import PolicyDecision
@dataclass(frozen=True)
class CounterState:
value: int = 0
class IncrementingGenerator:
def generate(self, state: CounterState) -> int:
return state.value + 1
class EvenCritic:
def critique(self, state: CounterState, candidate: int) -> bool:
return candidate % 2 == 0
class ThresholdCategorizer:
def categorize(self, state: CounterState, candidate: int) -> str:
return "high" if candidate >= 2 else "low"
class AcceptEvenHighPolicy:
def decide(
self,
state: CounterState,
candidate: int,
critique: bool,
category: str,
) -> PolicyDecision:
return PolicyDecision(
accepted=critique and category == "high",
label="accept" if critique and category == "high" else "reject",
)