forked from M-Labs/artiq
Robert Jordens
01416bb0be
These are contributions of >= 30% or >= 20 lines (half-automated). I hereby resubmit all my previous contributions to the ARTIQ project under the following terms: This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Closes #130 Signed-off-by: Robert Jordens <jordens@gmail.com>
127 lines
3.6 KiB
Python
127 lines
3.6 KiB
Python
# Copyright (C) 2014, 2015 Robert Jordens <jordens@gmail.com>
|
|
|
|
import unittest
|
|
|
|
from artiq.wavesynth import compute_samples
|
|
|
|
|
|
class TestSynthesizer(unittest.TestCase):
|
|
program = [
|
|
[
|
|
# frame 0
|
|
{
|
|
# frame 0, segment 0, line 0
|
|
"dac_divider": 1,
|
|
"duration": 100,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [0.0, 0.0, 0.01],
|
|
"phase": [0.0, 0.0, 0.0005],
|
|
"clear": False}
|
|
}
|
|
],
|
|
"trigger": True
|
|
},
|
|
{
|
|
# frame 0, segment 0, line 1
|
|
"dac_divider": 1,
|
|
"duration": 100,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [49.5, 1.0, -0.01],
|
|
"phase": [0.0, 0.05, 0.0005],
|
|
"clear": False}
|
|
}
|
|
],
|
|
"trigger": False
|
|
},
|
|
],
|
|
[
|
|
# frame 1
|
|
{
|
|
# frame 1, segment 0, line 0
|
|
"dac_divider": 1,
|
|
"duration": 100,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [100.0, 0.0, -0.01],
|
|
"phase": [0.0, 0.1, -0.0005],
|
|
"clear": False}
|
|
}
|
|
],
|
|
"trigger": True
|
|
},
|
|
{
|
|
# frame 1, segment 0, line 1
|
|
"dac_divider": 1,
|
|
"duration": 100,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [50.5, -1.0, 0.01],
|
|
"phase": [0.0, 0.05, -0.0005],
|
|
"clear": False}
|
|
}
|
|
],
|
|
"trigger": False
|
|
}
|
|
],
|
|
[
|
|
# frame 2
|
|
{
|
|
# frame 2, segment 0, line 0
|
|
"dac_divider": 1,
|
|
"duration": 84,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [100.0],
|
|
"phase": [0.0, 0.05],
|
|
"clear": False}
|
|
}
|
|
],
|
|
"trigger": True
|
|
},
|
|
{
|
|
# frame 2, segment 1, line 0
|
|
"dac_divider": 1,
|
|
"duration": 116,
|
|
"channel_data": [
|
|
{
|
|
# channel 0
|
|
"dds": {"amplitude": [100.0],
|
|
"phase": [0.0, 0.05],
|
|
"clear": True}
|
|
}
|
|
],
|
|
"trigger": True
|
|
}
|
|
]
|
|
]
|
|
|
|
def setUp(self):
|
|
self.dev = compute_samples.Synthesizer(1, self.program)
|
|
self.t = list(range(600))
|
|
|
|
def drive(self):
|
|
s = self.dev
|
|
y = []
|
|
for f in 0, 2, None, 1:
|
|
if f is not None:
|
|
s.select(f)
|
|
y += s.trigger()[0]
|
|
x = list(range(600))
|
|
return x, y
|
|
|
|
def test_run(self):
|
|
x, y = self.drive()
|
|
|
|
@unittest.skip("manual/visual test")
|
|
def test_plot(self):
|
|
import cairoplot
|
|
x, y = self.drive()
|
|
cairoplot.scatter_plot("plot.png", [x, y])
|