From 5d5d4efcf33d2651a3dcc1fbc3b019cd5f1d25a4 Mon Sep 17 00:00:00 2001 From: rear1019 <rear1019@posteo.de> Date: Fri, 3 Jan 2020 13:16:56 +0100 Subject: additive_scrambler: Add proper test for count based reset Do not chain two additive scramblers to check whether the reset is performed correctly: A flaw in the reset logic can not be detected this way as the same logic is used both in the scrambler and the descrambler. Instead, check whether the first N elements generated by the scrambler are repeated in the output (where N is the reset count). This test does fail as of this commit; see [1]. [1] https://github.com/gnuradio/gnuradio/issues/2926 --- gr-digital/python/digital/qa_scrambler.py | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'gr-digital/python/digital') diff --git a/gr-digital/python/digital/qa_scrambler.py b/gr-digital/python/digital/qa_scrambler.py index 2a2affdb1c..79912cb66c 100644 --- a/gr-digital/python/digital/qa_scrambler.py +++ b/gr-digital/python/digital/qa_scrambler.py @@ -64,28 +64,24 @@ class test_scrambler(gr_unittest.TestCase): self.assertEqual(src_data, dst.data()) def test_additive_scrambler_reset(self): - src_data = (1,)*1000 + src_data = (1,)*200 src = blocks.vector_source_b(src_data, False) - scrambler = digital.additive_scrambler_bb(0x8a, 0x7f, 7, 100) - descrambler = digital.additive_scrambler_bb(0x8a, 0x7f, 7, 100) + scrambler = digital.additive_scrambler_bb(0x8a, 0x7f, 7, 50) dst = blocks.vector_sink_b() - self.tb.connect(src, scrambler, descrambler, dst) + self.tb.connect(src, scrambler, dst) self.tb.run() - self.assertEqual(src_data, dst.data()) + output = dst.data() + self.assertEqual(output[:50] * 4, output) def test_additive_scrambler_reset_3bpb(self): - src_data = (5,)*2000 + src_data = (5,)*200 src = blocks.vector_source_b(src_data, False) - scrambler = digital.additive_scrambler_bb(0x8a, 0x7f, 7, 100, 3) - descrambler = digital.additive_scrambler_bb(0x8a, 0x7f, 7, 100, 3) + scrambler = digital.additive_scrambler_bb(0x8a, 0x7f, 7, 50, 3) dst = blocks.vector_sink_b() - dst2 = blocks.vector_sink_b() - self.tb.connect(src, scrambler, descrambler, dst) - self.tb.connect(scrambler, dst2) + self.tb.connect(src, scrambler, dst) self.tb.run() - if not (src_data == dst.data()): - self.fail('Not equal.') - self.assertEqual(src_data, src_data) + output = dst.data() + self.assertEqual(output[:50] * 4, output) def test_additive_scrambler_tags(self): src_data = (1,)*1000 -- cgit v1.2.3