def state_def(self): for d in super(PSK31Demodulator, self).state_def(): yield d # TODO make this possible to be decorator style yield 'text', StringQueueCell( queue=self.__char_queue, encoding='us-ascii')
def test_value_patch(self): queue = gr.msg_queue() queue.insert_tail(make_bytes_msg(b'ab')) cell = StringQueueCell(queue=queue, encoding='us-ascii') self.setUpForObject(Cells({'s': cell})) self.st.advance() self.assertEqual( self.getUpdates(), transform_for_json([ ['register_block', 1, 'urlroot', []], ['register_cell', 2, 'urlroot/s', cell.description(), ''], # TODO should have initial value ['value', 1, { 's': 2 }], ['value', 0, 1], ['value_append', 2, 'ab'], ])) queue.insert_tail(make_bytes_msg(b'cd')) self.st.advance() self.assertEqual(self.getUpdates(), transform_for_json([ ['value_append', 2, 'cd'], ]))
def setUpForBulkData(self): self.cell = ElementQueueCell( queue=self.queue, info_getter=self.info_getter, type=BulkDataT(array_format='f', info_format='d'), interest_tracker=LoopbackInterestTracker())
def setUpForUnicodeString(self): self.cell = StringQueueCell(queue=self.queue, encoding='utf-8', interest_tracker=LoopbackInterestTracker())
class TestGRMsgQueueCell(unittest.TestCase): cell = None # for lint def setUp(self): self.info_value = 1000 def info_getter(): self.info_value += 1 return (self.info_value, ) self.info_getter = info_getter self.queue = gr.msg_queue() def setUpForBulkData(self): self.cell = ElementQueueCell( queue=self.queue, info_getter=self.info_getter, type=BulkDataT(array_format='f', info_format='d'), interest_tracker=LoopbackInterestTracker()) def setUpForUnicodeString(self): self.cell = StringQueueCell(queue=self.queue, encoding='utf-8', interest_tracker=LoopbackInterestTracker()) def test_element_get_before_and_after_poll(self): self.setUpForBulkData() self.queue.insert_tail(make_bytes_msg(b'ab')) gotten = self.cell.get() self.assertEqual(gotten, []) st = CellSubscriptionTester(self.cell, delta=True) st.advance() self.assertEqual(self.cell.get(), [ BulkDataElement(data=b'a', info=(1001, )), BulkDataElement(data=b'b', info=(1001, )) ]) self.assertEqual(gotten, []) # not mutating list def test_element_delta_subscriber(self): self.setUpForBulkData() st = CellSubscriptionTester(self.cell, delta=True) self.queue.insert_tail(make_bytes_msg(b'ab')) st.expect_now([ BulkDataElement(data=b'a', info=(1001, )), BulkDataElement(data=b'b', info=(1001, )) ], kind='append') st.unsubscribe() self.queue.insert_tail(make_bytes_msg(b'ignored')) st.advance() def test_element_plain_subscriber(self): self.setUpForBulkData() st = CellSubscriptionTester(self.cell, delta=False) self.queue.insert_tail(make_bytes_msg(b'ab')) st.expect_now([ BulkDataElement(data=b'a', info=(1001, )), BulkDataElement(data=b'b', info=(1001, )) ], kind='value') st.unsubscribe() self.queue.insert_tail(make_bytes_msg(b'ignored')) st.advance() def test_string_get(self): self.setUpForUnicodeString() self.queue.insert_tail(make_bytes_msg('abç'.encode('utf-8'))) gotten = self.cell.get() self.assertTrue(isinstance(gotten, unicode)) self.assertEqual(gotten, u'') st = CellSubscriptionTester(self.cell, delta=True) st.advance() gotten = self.cell.get() self.assertTrue(isinstance(gotten, unicode)) self.assertEqual(gotten, 'abç') # now append some more to test the buffer self.queue.insert_tail(make_bytes_msg('deƒ'.encode('utf-8'))) st.advance() self.assertEqual(self.cell.get(), 'abçdeƒ') def test_string_coding_error(self): self.setUpForUnicodeString() self.queue.insert_tail(make_bytes_msg(b'ab\xFF')) st = CellSubscriptionTester(self.cell, delta=True) st.expect_now('ab\uFFFD', kind='append') def test_string_delta_subscriber(self): self.setUpForUnicodeString() st = CellSubscriptionTester(self.cell, delta=True) self.queue.insert_tail(make_bytes_msg('abç'.encode('utf-8'))) st.expect_now('abç', kind='append') st.unsubscribe() self.queue.insert_tail(make_bytes_msg(b'ignored')) st.advance() def test_string_plain_subscriber(self): self.setUpForUnicodeString() st = CellSubscriptionTester(self.cell, delta=False) self.queue.insert_tail(make_bytes_msg('abç'.encode('utf-8'))) st.expect_now('abç') self.queue.insert_tail(make_bytes_msg('deƒ'.encode('utf-8'))) # TODO: This is not the correct result; it should match get(). # Poller currently does not deal with attaching simple subscribers correctly st.expect_now('deƒ')