forked from M-Labs/artiq
78 lines
1.7 KiB
Python
78 lines
1.7 KiB
Python
from artiq.experiment import *
|
|
from artiq.test.hardware_testbench import ExperimentCase
|
|
|
|
|
|
class _Roundtrip(EnvExperiment):
|
|
def build(self):
|
|
self.setattr_device("core")
|
|
|
|
@kernel
|
|
def roundtrip(self, obj, fn):
|
|
fn(obj)
|
|
|
|
class RoundtripTest(ExperimentCase):
|
|
def assertRoundtrip(self, obj):
|
|
exp = self.create(_Roundtrip)
|
|
def callback(objcopy):
|
|
self.assertEqual(obj, objcopy)
|
|
exp.roundtrip(obj, callback)
|
|
|
|
def test_None(self):
|
|
self.assertRoundtrip(None)
|
|
|
|
def test_bool(self):
|
|
self.assertRoundtrip(True)
|
|
self.assertRoundtrip(False)
|
|
|
|
def test_int(self):
|
|
self.assertRoundtrip(42)
|
|
self.assertRoundtrip(int(42, width=64))
|
|
|
|
def test_float(self):
|
|
self.assertRoundtrip(42.0)
|
|
|
|
def test_str(self):
|
|
self.assertRoundtrip("foo")
|
|
|
|
def test_list(self):
|
|
self.assertRoundtrip([10])
|
|
|
|
def test_object(self):
|
|
obj = object()
|
|
self.assertRoundtrip(obj)
|
|
|
|
|
|
class _DefaultArg(EnvExperiment):
|
|
def build(self):
|
|
self.setattr_device("core")
|
|
|
|
def test(self, foo=42) -> TInt32:
|
|
return foo
|
|
|
|
@kernel
|
|
def run(self):
|
|
return self.test()
|
|
|
|
class DefaultArgTest(ExperimentCase):
|
|
def test_default_arg(self):
|
|
exp = self.create(_DefaultArg)
|
|
self.assertEqual(exp.run(), 42)
|
|
|
|
|
|
class _Payload1MB(EnvExperiment):
|
|
def build(self):
|
|
self.setattr_device("core")
|
|
|
|
def devnull(self, d):
|
|
pass
|
|
|
|
@kernel
|
|
def run(self):
|
|
data = [0 for _ in range(1000000//4)]
|
|
self.devnull(data)
|
|
|
|
class LargePayloadTest(ExperimentCase):
|
|
def test_1MB(self):
|
|
exp = self.create(_Payload1MB)
|
|
exp.run()
|