コード例 #1
0
 def test_write_item_attr(self):
     # Given
     item = Attr.create_attr(Text.create_from('Cat'), Text.create_from('Meow'))
     writer = _ReconWriter()
     # When
     actual = writer._write_item(item)
     # Then
     self.assertIsInstance(actual, str)
     self.assertEqual('@Cat(Meow)', actual)
コード例 #2
0
 def test_block_writer_slot_single_not_first(self):
     # Given
     items = list()
     items.append(Slot.create_slot(Text.create_from('cat'), Text.create_from('meow')))
     writer = _ReconWriter()
     # When
     actual = _BlockWriter._write(items, writer=writer, first=False)
     # Then
     self.assertIsInstance(actual, _OutputMessage)
     self.assertEqual(',cat:meow', actual._message)
コード例 #3
0
 def test_block_writer_attr(self):
     # Given
     items = list()
     items.append(Attr.create_attr(Text.create_from('dog'), Text.create_from('bark')))
     writer = _ReconWriter()
     # When
     actual = _BlockWriter._write(items, writer=writer)
     # Then
     self.assertIsInstance(actual, _OutputMessage)
     self.assertEqual('@dog(bark)', actual._message)
コード例 #4
0
 def test_attr_writer_existing_key_and_value_text(self):
     # Given
     key = Text.create_from('bird')
     value = Text.create_from('chirp')
     writer = _ReconWriter()
     # When
     actual = _AttrWriter._write(key=key, writer=writer, value=value)
     # Then
     self.assertIsInstance(actual, _OutputMessage)
     self.assertEqual('@bird(chirp)', actual._message)
コード例 #5
0
 def test_slot_writer_existing_key_and_value(self):
     # Given
     key = Text.create_from('animal')
     value = Text.create_from('dog')
     writer = _ReconWriter()
     # When
     actual = _SlotWriter._write(key=key, writer=writer, value=value)
     # Then
     self.assertIsInstance(actual, _OutputMessage)
     self.assertEqual('animal:dog', actual._value)
コード例 #6
0
 def test_link_form_cast(self):
     # Given
     form = _LinkRequestForm()
     items = RecordMap.create()
     items.add(
         Slot.create_slot(Text.create_from('node'),
                          Text.create_from('link_node')))
     items.add(
         Slot.create_slot(Text.create_from('lane'),
                          Text.create_from('link_lane')))
     items.add(
         Slot.create_slot(Text.create_from('prio'), Num.create_from(1)))
     items.add(
         Slot.create_slot(Text.create_from('rate'), Num.create_from(3)))
     body = Attr.create_attr(Text.create_from('body'),
                             Text.create_from('link_body'))
     record_map = RecordMap.create()
     record_map.add(Attr.create_attr(Text.create_from('link'), items))
     record_map.add(body)
     # When
     actual = form._cast(record_map)
     # Then
     self.assertIsInstance(actual, _LinkRequest)
     self.assertEqual('link_node', actual._node_uri)
     self.assertEqual('link_lane', actual._lane_uri)
     self.assertEqual(1, actual._prio)
     self.assertEqual(3, actual._rate)
     self.assertEqual(body, actual._body.get_item(0))
コード例 #7
0
    def test_block_writer_multiple_attributes(self):
        # Given
        items = list()

        record_map = _Record.create()

        dog_map = _Record.create()
        dog_map.add(Slot.create_slot(Text.create_from('dog'), Text.create_from('bark')))
        record_map.add(Attr.create_attr(Text.create_from('Animal'), dog_map))

        cat_map = _Record.create()
        cat_map.add(Slot.create_slot(Text.create_from('cat'), Text.create_from('meow')))
        record_map.add(Attr.create_attr(Text.create_from('Animal'), cat_map))

        bird_map = _Record.create()
        bird_map.add(Slot.create_slot(Text.create_from('bird'), Text.create_from('chirp')))
        record_map.add(Attr.create_attr(Text.create_from('Animal'), bird_map))

        items.append(record_map)
        writer = _ReconWriter()
        # When
        actual = _BlockWriter._write(items, writer=writer, first=True)
        # Then
        self.assertIsInstance(actual, _OutputMessage)
        self.assertEqual('@Animal(dog:bark)@Animal(cat:meow)@Animal(bird:chirp)', actual._message)
コード例 #8
0
 def test_unlinked_form_cast(self):
     # Given
     form = _UnlinkedResponseForm()
     items = RecordMap.create()
     items.add(
         Slot.create_slot(Text.create_from('node'),
                          Text.create_from('unlinked_node')))
     items.add(
         Slot.create_slot(Text.create_from('lane'),
                          Text.create_from('unlinked_lane')))
     items.add(
         Slot.create_slot(Text.create_from('prio'), Num.create_from(20)))
     items.add(
         Slot.create_slot(Text.create_from('rate'), Num.create_from(25)))
     body = Attr.create_attr(Text.create_from('body'),
                             Text.create_from('unlinked_body'))
     record_map = RecordMap.create()
     record_map.add(Attr.create_attr(Text.create_from('unlinked'), items))
     record_map.add(body)
     # When
     actual = form._cast(record_map)
     # Then
     self.assertIsInstance(actual, _UnlinkedResponse)
     self.assertEqual('unlinked_node', actual._node_uri)
     self.assertEqual('unlinked_lane', actual._lane_uri)
     self.assertEqual(20, actual._prio)
     self.assertEqual(25, actual._rate)
     self.assertEqual(body, actual._body.get_item(0))
コード例 #9
0
 def test_block_writer_slot_multiple(self):
     # Given
     items = list()
     items.append(Slot.create_slot(Text.create_from('dog'), Text.create_from('bark')))
     items.append(Slot.create_slot(Text.create_from('cat'), Text.create_from('meow')))
     writer = _ReconWriter()
     # When
     actual = _BlockWriter._write(items, writer=writer, first=True)
     # Then
     self.assertIsInstance(actual, _OutputMessage)
     self.assertEqual('dog:bark,cat:meow', actual._message)
コード例 #10
0
 def test_block_writer_text_multiple(self):
     # Given
     items = list()
     items.append(Text.create_from('foo_'))
     items.append(Text.create_from('bar'))
     writer = _ReconWriter()
     # When
     actual = _BlockWriter._write(items, writer=writer)
     # Then
     self.assertIsInstance(actual, _OutputMessage)
     self.assertEqual('foo_bar', actual._message)
コード例 #11
0
 def test_attr_writer_existing_key_and_value_slot(self):
     # Given
     key = Text.create_from('animal')
     value = _Record.create()
     value.add(Slot.create_slot(Text.create_from('dog'), Text.create_from('bark')))
     writer = _ReconWriter()
     # When
     actual = _AttrWriter._write(key=key, writer=writer, value=value)
     # Then
     self.assertIsInstance(actual, _OutputMessage)
     self.assertEqual('@animal(dog:bark)', actual._message)
コード例 #12
0
 def test_lane_addressed_form_cast_missing_lane(self):
     # Given
     form = SyncedResponseForm()
     items = RecordMap.create()
     items.add(Attr.create_attr(Text.create_from('node'), Text.create_from('foo_node')))
     record_map = RecordMap.create()
     record_map.add(Attr.create_attr(Text.create_from('synced'), items))
     # When
     actual = form.cast(record_map)
     # Then
     self.assertEqual(None, actual)
コード例 #13
0
 def test_write_value_record(self):
     # Given
     record = _Record.create()
     record.add(Slot.create_slot(Text.create_from('Cow'), Text.create_from('Moo')))
     writer = _ReconWriter()
     # When
     actual = writer._write_value(record)
     # Then
     self.assertIsInstance(actual, _OutputMessage)
     self.assertEqual(7, actual._size)
     self.assertEqual('Cow:Moo', actual._value)
     self.assertEqual('o', actual._last_char)
コード例 #14
0
 def test_write_attr(self):
     # Given
     key = Text.create_from('Hello')
     value = Text.create_from('Friend')
     writer = _ReconWriter()
     # When
     actual = writer._write_attr(key, value)
     # Then
     self.assertIsInstance(actual, _OutputMessage)
     self.assertEqual(14, actual._size)
     self.assertEqual('@Hello(Friend)', actual._value)
     self.assertEqual(')', actual._last_char)
コード例 #15
0
 def test_block_writer_slot_in_attr(self):
     # Given
     items = list()
     record_map = _Record.create()
     record_map.add(Slot.create_slot(Text.create_from('cat'), Text.create_from('meow')))
     items.append(Attr.create_attr(Text.create_from('animal'), record_map))
     writer = _ReconWriter()
     # When
     actual = _BlockWriter._write(items, writer=writer, first=True)
     # Then
     self.assertIsInstance(actual, _OutputMessage)
     self.assertEqual('@animal(cat:meow)', actual._message)
コード例 #16
0
 def test_to_string(self):
     # Given
     value = RecordMap.create()
     value.add(
         Attr.create_attr(
             Text.create_from('remove'),
             RecordMap.create_record_map(
                 Slot.create_slot(Text.create_from('key'),
                                  Text.create_from('foo')))))
     # When
     actual = Recon.to_string(value)
     # Then
     self.assertEqual('@remove(key:foo)', actual)
コード例 #17
0
 async def test_record_parser_parse_existing_builder_empty(self):
     # Given
     message = await InputMessage.create('')
     parser = ReconParser()
     builder = await parser.create_record_builder()
     builder.add(await parser.create_slot(Text.create_from('cow'), Text.create_from('moo')))
     # When
     actual = await parser.parse_record(message, builder=builder)
     # Then
     self.assertIsInstance(actual, RecordMap)
     self.assertEqual(1, actual.size)
     self.assertEqual('cow', actual.get_item(0).key.value)
     self.assertEqual('moo', actual.get_item(0).value.value)
コード例 #18
0
 def test_link_addressed_form_cast_missing_node(self):
     # Given
     form = _SyncRequestForm()
     items = RecordMap.create()
     items.add(
         Attr.create_attr(Text.create_from('lane'),
                          Text.create_from('sync_foo_lane')))
     record_map = RecordMap.create()
     record_map.add(Attr.create_attr(Text.create_from('sync'), items))
     # When
     actual = form._cast(record_map)
     # Then
     self.assertEqual(None, actual)
コード例 #19
0
 def test_write_record_multiple(self):
     # Given
     record = _Record.create()
     record.add(Text.create_from('Dog'))
     record.add(Text.create_from('Cat'))
     writer = _ReconWriter()
     # When
     actual = writer._write_record(record)
     # Then
     self.assertIsInstance(actual, _OutputMessage)
     self.assertEqual(6, actual._size)
     self.assertEqual('DogCat', actual._value)
     self.assertEqual('t', actual._last_char)
コード例 #20
0
 def test_parse_attr_existing_key_and_value(self):
     # Given
     message = _InputMessage._create('')
     parser = _ReconParser()
     key_output = Text.create_from('Baz')
     value_output = Text.create_from('Qux')
     # When
     actual = parser._parse_attr(message, key_output, value_output)
     # Then
     self.assertIsInstance(actual, Attr)
     self.assertIsInstance(actual.key, Text)
     self.assertIsInstance(actual.value, Text)
     self.assertEqual('Baz', actual.key.value)
     self.assertEqual('Qux', actual.value.value)
コード例 #21
0
 async def test_attr_expression_parser_parse_literal_existing_value(self):
     # Given
     message = await InputMessage.create('literal')
     parser = ReconParser()
     builder = RecordMap.create()
     builder.add(Text.create_from('Moo'))
     value = Text.create_from('Dog')
     # When
     actual = await parser.parse_attr_expression(message, builder=builder, value_output=value)
     # Then
     self.assertIsInstance(actual, RecordMap)
     self.assertEqual(3, actual.size)
     self.assertEqual('Moo', actual.get_item(0).value)
     self.assertEqual('Dog', actual.get_item(1).value)
     self.assertEqual('literal', actual.get_item(2).value)
コード例 #22
0
 async def test_attr_expression_parser_parse_attribute_existing_field(self):
     # Given
     message = await InputMessage.create('@test')
     parser = ReconParser()
     builder = RecordMap.create()
     builder.add(Text.create_from('Moo'))
     field = Text.create_from('Boo')
     # When
     actual = await parser.parse_attr_expression(message, builder=builder, field_output=field)
     # Then
     self.assertIsInstance(actual, RecordMap)
     self.assertEqual(3, actual.size)
     self.assertEqual('Moo', actual.get_item(0).value)
     self.assertEqual('Boo', actual.get_item(1).value)
     self.assertEqual('test', actual.get_item(2).key.value)
コード例 #23
0
ファイル: _parsers.py プロジェクト: NeoTim/swim-system-python
    def _create_ident(value: str) -> 'Value':
        if value == 'true':
            return Bool.create_from(True)
        elif value == 'false':
            return Bool.create_from(False)

        return Text.create_from(value)
コード例 #24
0
ファイル: _parsers.py プロジェクト: NeoTim/swim-system-python
    def _parse(message: '_InputMessage' = None,
               parser: '_ReconParser' = None,
               output: '_OutputMessage' = None) -> 'Text':

        message._skip_spaces(message)

        char = message._head

        if char == '"':

            if output is None:
                output = _OutputMessage._create()

            char = message._step()

            while char != '"' and message._is_cont:
                output._append(char)
                char = message._step()

            message._step()

        if output is None:
            output = _OutputMessage()

        return Text.create_from(output._value)
コード例 #25
0
ファイル: parsers.py プロジェクト: jcbrtl/swim-system-python
    async def parse(message: 'InputMessage' = None,
                    parser: 'ReconParser' = None,
                    output: 'OutputMessage' = None) -> 'Text':

        await message.skip_spaces(message)

        char = message.head

        if char == '"':

            if output is None:
                output = await OutputMessage.create()

            char = message.step()

            while char != '"' and message.is_cont:
                await output.append(char)
                char = message.step()

            message.step()

        if output is None:
            output = OutputMessage()

        return Text.create_from(output.value)
コード例 #26
0
 def test_record_parser_parse_existing_builder_single(self):
     # Given
     message = _InputMessage._create(' cat: meow')
     parser = _ReconParser()
     builder = parser._create_record_builder()
     builder.add(
         parser._create_slot(Text.create_from('dog'),
                             Text.create_from('bark')))
     # When
     actual = parser._parse_record(message, builder=builder)
     # Then
     self.assertIsInstance(actual, RecordMap)
     self.assertEqual(2, actual.size)
     self.assertEqual('dog', actual.get_item(0).key.value)
     self.assertEqual('bark', actual.get_item(0).value.value)
     self.assertEqual('cat', actual.get_item(1).key.value)
     self.assertEqual('meow', actual.get_item(1).value.value)
コード例 #27
0
ファイル: _utils.py プロジェクト: NeoTim/swim-system-python
    def to_record(self) -> '_Record':
        key_slot = self.get_key_item()
        value_slot = self.get_value_item()

        update_record = RecordMap.create_record_map(
            Attr.create_attr(Text.create_from('update'), key_slot))
        update_record.add(value_slot)
        return update_record
コード例 #28
0
    def get_key_item(self) -> 'Record':
        key_slot = RecordMap.create()
        key_slot.add(
            Slot.create_slot(
                Text.create_from('key'),
                RecordConverter.get_converter().object_to_record(self.key)))

        return key_slot
コード例 #29
0
 def test_parse_literal_quote_existing_builder(self):
     # Given
     message = _InputMessage._create('"Hello_World"')
     builder = _ReconParser._create_value_builder()
     parser = _ReconParser()
     builder.add(Text.create_from('Hi'))
     builder.add(Text.create_from('Bye'))
     # When
     actual = parser._parse_literal(message, builder)
     # Then
     self.assertIsInstance(actual, RecordMap)
     self.assertEqual(3, actual.size)
     self.assertIsInstance(actual.get_item(0), Text)
     self.assertIsInstance(actual.get_item(1), Text)
     self.assertIsInstance(actual.get_item(2), Text)
     self.assertEqual('Hi', actual.get_item(0).value)
     self.assertEqual('Bye', actual.get_item(1).value)
     self.assertEqual('Hello_World', actual.get_item(2).value)
コード例 #30
0
 def test_parse_literal_minus_existing_builder(self):
     # Given
     message = _InputMessage._create('  37')
     parser = _ReconParser()
     builder = _ReconParser._create_value_builder()
     builder.add(Text.create_from('Hello'))
     builder.add(Text.create_from('Friend'))
     # When
     actual = parser._parse_literal(message, builder)
     # Then
     self.assertEqual(3, actual.size)
     self.assertIsInstance(actual, RecordMap)
     self.assertIsInstance(actual.get_item(0), Text)
     self.assertIsInstance(actual.get_item(1), Text)
     self.assertIsInstance(actual.get_item(2), Num)
     self.assertEqual('Hello', actual.get_item(0).value)
     self.assertEqual('Friend', actual.get_item(1).value)
     self.assertEqual(37, actual.get_item(2).value)