コード例 #1
0
 def test_string_sensor(self):
     """Test string sensor."""
     s = Sensor.string("a.string", "A string sensor.", "filename", None)
     self.assertEqual(s.stype, 'string')
     s.set(timestamp=12345, status=katcp.Sensor.NOMINAL, value="zwoop")
     self.assertEqual(s.read_formatted(), ("12345.000000", "nominal", "zwoop"))
     self.assertEquals(s.parse_value("bar foo"), "bar foo")
     s = Sensor.string(
         "a.string", "A string sensor.", "filename", default='baz')
     self.assertEqual(s._value, 'baz')
コード例 #2
0
ファイル: test_core.py プロジェクト: mmphego/katcp-python
 def test_string_sensor(self):
     """Test string sensor."""
     s = Sensor.string("a.string", "A string sensor.", "filename", None)
     self.assertEqual(s.stype, "string")
     s.set(timestamp=12345, status=katcp.Sensor.NOMINAL, value="zwoop")
     # test both read_formatted and format_reading
     self.assertEqual(s.format_reading(s.read()), ("12345.000000", "nominal", "zwoop"))
     self.assertEqual(s.read_formatted(), ("12345.000000", "nominal", "zwoop"))
     self.assertEquals(s.parse_value("bar foo"), "bar foo")
     s = Sensor.string("a.string", "A string sensor.", "filename", default="baz")
     self.assertEqual(s._value, "baz")
     s = Sensor.string("a.string", "A string sensor.", "filename", initial_status=Sensor.WARN)
     self.assertEquals(s.status(), Sensor.WARN)
コード例 #3
0
ファイル: test_core.py プロジェクト: cnb0/katcp-python
    def test_string_sensor(self):
        """Test string sensor."""
        s = Sensor.string("a.string", "A string sensor.", "filename", None)
        self.assertEqual(s.stype, 'string')
        s.set(timestamp=12345, status=Sensor.NOMINAL, value="zwoop")
        self.assertEqual(s._value, "zwoop")
        # test both read_formatted and format_reading
        self.assertEqual(s.format_reading(s.read()),
                         (b"12345.000000", b"nominal", b"zwoop"))
        self.assertEqual(s.read_formatted(),
                         (b"12345.000000", b"nominal", b"zwoop"))
        # test parsing byte string returns native string
        self.assertEqual(s.parse_value(b"bar foo"), "bar foo")
        # test default value
        s = Sensor.string("a.string",
                          "A string sensor.",
                          "filename",
                          default='baz')
        self.assertEqual(s._value, 'baz')
        # test initial status
        s = Sensor.string("a.string",
                          "A string sensor.",
                          "filename",
                          initial_status=Sensor.WARN)
        self.assertEqual(s.status(), Sensor.WARN)

        # Test using non-string types from set_value are "stringified"
        s = Sensor.string("a.string", "Value from list.")
        s.set_value([1, 2, 3])
        self.assertEqual(s.value(), [1, 2, 3])
        _, _, formatted_value = s.read_formatted()
        self.assertEqual(formatted_value, b'[1, 2, 3]')
        # But this is "one-way", if set from formatted byte string, the
        # "original" type is not inferred
        s.set_formatted(b'1.23', b'nominal', b'[4, 5, 6]')
        self.assertEqual(s.value(), '[4, 5, 6]')

        # Test Python version-specific limitations
        if future.utils.PY2:
            test_cases = [
                # name,       input,       raw,           from raw
                ('non-ascii', b"\x00\xff", b"\x00\xff", b"\x00\xff"),
                ('utf-8', u"räm", b"r\xc3\xa4m", b"r\xc3\xa4m"),
            ]
        else:
            test_cases = [
                # name,       input,       raw,                from raw
                ('non-ascii', b"\x00\xff", b"\x00\xff", UnicodeDecodeError),
                ('utf-8', u"räm", b"r\xc3\xa4m", u"räm"),
                ('invalid', u"\ud83d", UnicodeEncodeError, None),
            ]
        for name, input_, raw, from_raw in test_cases:
            # set from input, then try to read back raw
            s.set_value(input_)
            if type(raw) is type and issubclass(raw, Exception):
                with self.assertRaises(raw):
                    s.read_formatted()
                continue  # cannot test setting from raw, so move on
            else:
                _, _, formatted_value = s.read_formatted()
                self.assertEqual(raw, formatted_value)

            # set raw, and try to read back value
            s.set_value(None)
            if type(from_raw) is type and issubclass(from_raw, Exception):
                with self.assertRaises(from_raw):
                    s.set_formatted(b'1.23', b'nominal', raw)
            else:
                s.set_formatted(b'1.23', b'nominal', raw)
                self.assertEqual(s.value(), from_raw)