Example #1
0
 def test_float_upper(self):
     block = {
         "key": "float upper",
         "type": "float",
         "bits": 5,
         "upper": 31,
     }
     t = 13
     a = "0b01101"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertClose(spos.decode_block(a, block), t)
Example #2
0
 def test_integer_offset(self):
     block = {
         "key": "integer offset",
         "type": "integer",
         "bits": 6,
         "offset": 100,
     }
     t = 120
     a = "0b010100"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t)
Example #3
0
 def test_float_lower(self):
     block = {
         "key": "float lower",
         "type": "float",
         "bits": 3,
         "lower": -6,
     }
     t = -1
     a = "0b101"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertClose(spos.decode_block(a, block), t)
Example #4
0
 def test_steps_lower_boundary(self):
     block = {
         "key": "steps",
         "type": "steps",
         "steps": [0, 5, 10],
         "steps_names": ["critical", "low", "charged", "full"],
     }
     t = 5
     a = "0b10"
     t_dec = "charged"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t_dec)
Example #5
0
 def test_steps_last_index(self):
     block = {
         "key": "steps",
         "type": "steps",
         "steps": [0, 5, 10],
         "steps_names": ["critical", "low", "charged", "full"],
     }
     t = 11
     a = "0b11"
     t_dec = "full"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t_dec)
Example #6
0
 def test_categories_key_error_existent(self):
     block = {
         "key": "categories",
         "type": "categories",
         "categories": ["critical", "low", "charged", "full"],
         "error": "critical",
     }
     t = "invalid"
     a = "0b00"
     t_dec = "critical"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t_dec)
Example #7
0
 def test_float_approximation_floor(self):
     block = {
         "key": "float approximation floor",
         "type": "float",
         "bits": 2,
         "approximation": "floor",
     }
     t = 0.66
     a = "0b01"
     t_dec = 0.33
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertClose(spos.decode_block(a, block), t_dec)
Example #8
0
 def test_float_approximation_ceil(self):
     block = {
         "key": "float approximation ceil",
         "type": "float",
         "bits": 2,
         "approximation": "ceil",
     }
     t = 0.34
     a = "0b10"
     t_dec = 0.66
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertClose(spos.decode_block(a, block), t_dec)
Example #9
0
 def test_categories_error_new(self):
     block = {
         "key": "categories",
         "type": "categories",
         "categories": ["critical", "low", "charged", "full"],
         "error": "invalid_category",
     }
     t = "invalid_value"
     a = "0b100"
     t_dec = "invalid_category"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t_dec)
Example #10
0
 def test_integer_remainder(self):
     block = {
         "key": "integer remainder",
         "type": "integer",
         "mode": "remainder",
         "bits": 6,
     }
     t = 72
     a = "0b001000"
     t_dec = 8
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t_dec)
Example #11
0
 def test_integer_offset_remainder(self):
     block = {
         "key": "integer remainder offset",
         "type": "integer",
         "offset": 3,
         "mode": "remainder",
         "bits": 3,
     }
     t = 22
     a = "0b011"
     t_dec = 6
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t_dec)
Example #12
0
 def test_static_value_mismatch_warning(self):
     static_value = "0b10101"
     block = {
         "key": "binary bin",
         "type": "binary",
         "value": static_value,
         "bits": 5,
     }
     with warnings.catch_warnings(record=True) as w:
         self.assertEqual(spos.decode_block("0b11111", block), static_value)
         self.assertEqual(len(w), 1)
         self.assertTrue(
             issubclass(w[-1].category, spos.StaticValueMismatchWarning))
Example #13
0
 def test_string_custom_alphabeth(self):
     block = {
         "key": "string",
         "type": "string",
         "length": 6,
         "custom_alphabeth": {
             62: " "
         },
     }
     t = "test"
     a = "0b111110111110101101011110101100101101"
     t_dec = "  test"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t_dec)
Example #14
0
 def test_array_block(self):
     block = {
         "key": "integer array",
         "type": "array",
         "length": 7,
         "blocks": {
             "key": "array val",
             "type": "integer",
             "bits": 3
         },
     }
     t = [1, 2, 3, 4]
     a = "0b100001010011100"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t)
Example #15
0
 def test_array_empty(self):
     block = {
         "key": "empty array",
         "type": "array",
         "length": 127,
         "blocks": {
             "key": "array val",
             "type": "integer",
             "bits": 3
         },
     }
     t = []
     a = "0b0000000"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), [])
Example #16
0
 def test_array_truncate(self):
     block = {
         "key": "truncate array",
         "type": "array",
         "length": 3,
         "blocks": {
             "key": "array val",
             "type": "integer",
             "bits": 3
         },
     }
     t = [1, 2, 3, 4, 5]
     a = "0b11001010011"
     t_dec = [1, 2, 3]
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t_dec)
Example #17
0
 def test_array_fixed(self):
     block = {
         "key": "fixed array",
         "type": "array",
         "length": 3,
         "fixed": True,
         "blocks": {
             "key": "array val",
             "type": "integer",
             "bits": 3
         },
     }
     t = [0, 1, 2]
     a = "0b000001010"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t)
Example #18
0
 def test_array_nested(self):
     block = {
         "key": "nested array",
         "type": "array",
         "length": 3,
         "blocks": {
             "key": "array val 1",
             "type": "array",
             "length": 7,
             "blocks": {
                 "key": "array val 2",
                 "type": "integer",
                 "bits": 3
             },
         },
     }
     t = [[1, 2], [3, 4, 5]]
     a = "0b10010001010011011100101"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t)
Example #19
0
 def test_object_nested(self):
     block = {
         "key":
         "object",
         "type":
         "object",
         "blocklist": [
             {
                 "key": "key1",
                 "type": "integer",
                 "bits": 3
             },
             {
                 "key":
                 "key2",
                 "type":
                 "object",
                 "blocklist": [
                     {
                         "key": "nKey",
                         "type": "boolean"
                     },
                     {
                         "key":
                         "nKey2",
                         "type":
                         "object",
                         "blocklist": [{
                             "key": "nKey3",
                             "type": "float",
                             "bits": 8
                         }],
                     },
                 ],
             },
         ],
     }
     t = {"key1": 6, "key2": {"nKey": False, "nKey2": {"nKey3": 0.8}}}
     a = "0b110011001100"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertDict(spos.decode_block(a, block), t)
Example #20
0
 def test_object_block(self):
     block = {
         "key":
         "object",
         "type":
         "object",
         "blocklist": [
             {
                 "key": "key1",
                 "type": "integer",
                 "bits": 3
             },
             {
                 "key": "key2",
                 "type": "float",
                 "bits": 5
             },
         ],
     }
     t = {"key1": 6, "key2": 0.9}
     a = "0b11011100"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertDict(spos.decode_block(a, block), t)
Example #21
0
 def test_boolean_false(self):
     block = {"key": "boolean false", "type": "boolean"}
     t = False
     a = "0b0"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t)
Example #22
0
 def test_boolean_true(self):
     block = {"key": "boolean encode true", "type": "boolean"}
     t = True
     a = "0b1"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t)
Example #23
0
 def test_float_block(self):
     block = {"key": "float test", "type": "float", "bits": 2}
     t = 0.66
     a = "0b10"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertClose(spos.decode_block(a, block), t)
Example #24
0
 def test_pad_block_6(self):
     block = {"key": "pad test", "type": "pad", "bits": 6}
     t = None
     a = "0b111111"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertEqual(spos.decode_block(a, block), t)
Example #25
0
 def test_object_dot_notation_1(self):
     block = {
         "key":
         "object",
         "type":
         "object",
         "blocklist": [
             {
                 "key": "key1.nest1.a",
                 "type": "integer",
                 "bits": 3
             },
             {
                 "key": "key1.nest1.b",
                 "type": "string",
                 "length": 5
             },
             {
                 "key": "key1.nest1.c",
                 "type": "integer",
                 "bits": 3
             },
             {
                 "key":
                 "key1",
                 "type":
                 "object",
                 "blocklist": [
                     {
                         "key": "nest1.d",
                         "type": "integer",
                         "bits": 3
                     },
                     {
                         "key":
                         "nest1",
                         "type":
                         "object",
                         "blocklist": [
                             {
                                 "key": "e",
                                 "type": "integer",
                                 "bits": 3
                             },
                             {
                                 "key": "f",
                                 "type": "integer",
                                 "bits": 3
                             },
                         ],
                     },
                 ],
             },
         ],
     }
     t = {
         "key1": {
             "nest1": {
                 "a": 1,
                 "b": "hello",
                 "c": 2,
                 "d": 3,
                 "e": 4,
                 "f": 5
             }
         },
     }
     a = "0b001100001011110100101100101101000010011100101"
     self.assertEqual(spos.encode_block(t, block), a)
     self.assertDict(spos.decode_block(a, block), t)