mirror of
https://github.com/saymrwulf/QuantumLearning.git
synced 2026-05-14 20:58:00 +00:00
108 lines
3.5 KiB
Python
108 lines
3.5 KiB
Python
from quantum_learning.curriculum import load_curriculum
|
|
|
|
|
|
def _modules_for_band(curriculum, band_id: str):
|
|
for band in curriculum.bands:
|
|
if band.identifier == band_id:
|
|
return band.modules
|
|
raise AssertionError(f"Band {band_id} not found")
|
|
|
|
|
|
def test_load_curriculum_exposes_bands_and_bundle_modules():
|
|
curriculum = load_curriculum()
|
|
|
|
assert curriculum.title == "QuantumLearning"
|
|
assert len(curriculum.bands) >= 5
|
|
assert len(curriculum) >= 14
|
|
|
|
assert [band.identifier for band in curriculum.bands[:3]] == [
|
|
"00-orientation",
|
|
"01-foundations",
|
|
"02-qiskit-engineering",
|
|
]
|
|
|
|
assert curriculum[0].identifier == "00-course-blueprint"
|
|
assert curriculum[-1].identifier == "15-capstone-circuit-design-review"
|
|
assert curriculum[-1].mastery_gate
|
|
|
|
|
|
def test_foundations_modules_have_full_ready_bundles():
|
|
curriculum = load_curriculum()
|
|
modules = _modules_for_band(curriculum, "01-foundations")
|
|
|
|
assert [module.identifier for module in modules] == [
|
|
"02-principles-and-circuit-literacy",
|
|
"03-qubit-and-statevector-intuition",
|
|
"04-gates-and-measurement",
|
|
]
|
|
for module in modules:
|
|
assert module.status == "ready"
|
|
assert [notebook.kind for notebook in module.bundle] == [
|
|
"lecture",
|
|
"lab",
|
|
"problems",
|
|
"studio",
|
|
]
|
|
assert all(notebook.status == "ready" for notebook in module.bundle)
|
|
|
|
|
|
def test_qiskit_engineering_modules_have_full_ready_bundles():
|
|
curriculum = load_curriculum()
|
|
modules = _modules_for_band(curriculum, "02-qiskit-engineering")
|
|
|
|
assert [module.identifier for module in modules] == [
|
|
"05-circuit-construction-and-analysis",
|
|
"06-transpilation-and-visualization",
|
|
"07-simulation-and-noise-models",
|
|
]
|
|
for module in modules:
|
|
assert module.status == "ready"
|
|
assert [notebook.kind for notebook in module.bundle] == [
|
|
"lecture",
|
|
"lab",
|
|
"problems",
|
|
"studio",
|
|
]
|
|
assert all(notebook.status == "ready" for notebook in module.bundle)
|
|
|
|
|
|
def test_algorithmic_design_modules_have_full_ready_bundles():
|
|
curriculum = load_curriculum()
|
|
modules = _modules_for_band(curriculum, "03-algorithmic-design")
|
|
|
|
assert [module.identifier for module in modules] == [
|
|
"08-deutsch-family-and-oracle-thinking",
|
|
"09-bernstein-vazirani-and-structured-oracles",
|
|
"10-qft-and-periodic-structure",
|
|
"11-grover-and-amplitude-amplification",
|
|
]
|
|
for module in modules:
|
|
assert module.status == "ready"
|
|
assert [notebook.kind for notebook in module.bundle] == [
|
|
"lecture",
|
|
"lab",
|
|
"problems",
|
|
"studio",
|
|
]
|
|
assert all(notebook.status == "ready" for notebook in module.bundle)
|
|
|
|
|
|
def test_professional_design_modules_have_full_ready_bundles():
|
|
curriculum = load_curriculum()
|
|
modules = _modules_for_band(curriculum, "04-professional-design")
|
|
|
|
assert [module.identifier for module in modules] == [
|
|
"12-qiskit-patterns-and-workflow-design",
|
|
"13-hardware-aware-redesign-studio",
|
|
"14-noise-aware-verification-and-mitigation",
|
|
"15-capstone-circuit-design-review",
|
|
]
|
|
for module in modules:
|
|
assert module.status == "ready"
|
|
assert [notebook.kind for notebook in module.bundle] == [
|
|
"lecture",
|
|
"lab",
|
|
"problems",
|
|
"studio",
|
|
]
|
|
assert all(notebook.status == "ready" for notebook in module.bundle)
|