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