示例#1
0
 def test_int64_numeric_array(self):
     # NumericArray from ConstantArray[2^40, {2, 1}]
     wxf = b"8:\xc2\x03\x02\x02\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00"
     a = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 1)
     self.assertEqual(a, [[2 ** 40], [2 ** 40]])
示例#2
0
 def test_float_numeric_array(self):
     # NumericArray["Real32", ConstantArray[1., {2, 1}]]
     wxf = b'8:\xc2"\x02\x02\x01\x00\x00\x80?\x00\x00\x80?'
     a = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 1)
     self.assertEqual(a, [[1.0], [1.0]])
示例#3
0
 def test_uint64_numeric_array(self):
     # NumericArray from ConstantArray[2^64-1, {2, 1}]
     wxf = b"8:\xc2\x13\x02\x02\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
     a = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 1)
     self.assertEqual(a, [[-1 + 2 ** 64], [-1 + 2 ** 64]])
示例#4
0
 def test_uint16_numeric_array(self):
     # NumericArray from ConstantArray[2^16 - 1, {2, 2}]
     wxf = b"8:\xc2\x11\x02\x02\x02\xff\xff\xff\xff\xff\xff\xff\xff"
     a = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 2)
     self.assertEqual(a, [[-1 + 2 ** 16, -1 + 2 ** 16], [-1 + 2 ** 16, -1 + 2 ** 16]])
示例#5
0
 def test_double_numeric_array(self):
     # NumericArray["Real64", ConstantArray[1., {2, 1}]]
     wxf = b"8:\xc2#\x02\x02\x01\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?"
     a = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 1)
     self.assertEqual(a, [[1.0], [1.0]])
示例#6
0
 def test_int16_array(self):
     # ConstantArray[2^15 - 1, {2, 2}]
     wxf = wxf = b"8:\xc2\x01\x02\x02\x02\xff\x7f\xff\x7f\xff\x7f\xff\x7f"
     a = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 2)
     self.assertEqual(a, [[-1 + 2 ** 15, -1 + 2 ** 15], [-1 + 2 ** 15, -1 + 2 ** 15]])
示例#7
0
 def test_uint8_numeric_array(self):
     # NumericArray from ConstantArray[255, {2, 2}]
     wxf = b"8:\xc2\x10\x02\x02\x02\xff\xff\xff\xff"
     a = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 2)
     self.assertEqual(a, [[255, 255], [255, 255]])
示例#8
0
 def test_int32_numeric_array(self):
     # NumericArray from ConstantArray[2^16, {2, 2}]
     wxf = b"8:\xc2\x02\x02\x02\x02\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00"
     a = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 2)
     self.assertEqual(a, [[2 ** 16, 2 ** 16], [2 ** 16, 2 ** 16]])
示例#9
0
 def test_int8_array(self):
     # ConstantArray[1, {2, 2}]
     wxf = b"8:\xc1\x00\x02\x02\x02\x01\x01\x01\x01"
     a = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 2)
     self.assertEqual(a, [[1, 1], [1, 1]])
示例#10
0
 def test_bigreal_precision_negexponent(self):
     wxf = b"8:RC4.590261537982443550699999999999999999999281`19.66183743091127*^-16"
     res = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(
         res,
         decimal.Decimal(
             "4.590261537982443550699999999999999999999281E-16"))
 async def test_eval_wxf(self):
     tasks = [
         asyncio.create_task(
             self.pool.evaluate_wxf(wlexpr("FromLetterNumber[%i]" % i)))
         for i in range(1, 11)
     ]
     res = await asyncio.gather(*tasks)
     res = {binary_deserialize(wxf, consumer=WXFConsumer()) for wxf in res}
     self.assertEqual(res,
                      {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"})
示例#12
0
 def test_packedarray_ndim_complex(self):
     # ConstantArray[I + 1., {2, 3, 1}]
     wxf = b"8:\xc14\x03\x02\x03\x01\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?"
     a = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 3)
     self.assertEqual(len(a[0][0]), 1)
     for e1 in a:
         for e2 in e1:
             for e3 in e2:
                 self.assertAlmostEqual(e3, complex(1.0, 1.0))
示例#13
0
 def test_packedarray_ndim_int8(self):
     # ConstantArray[1, {2, 3, 1}]
     wxf = b"8:\xc1\x00\x03\x02\x03\x01\x01\x01\x01\x01\x01\x01"
     a = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(a, [[[1], [1], [1]], [[1], [1], [1]]])
 def test_err_evaluate_wxf(self):
     wxf = self.kernel_session.evaluate_wxf("Range[3")
     result = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(result, WLSymbol("$Failed"))
示例#15
0
 def test_bad_header_separator(self):
     wxf = b"8C/"
     with self.assertRaises(WolframParserException):
         binary_deserialize(wxf, consumer=WXFConsumer())
示例#16
0
 def test_bad_header_compress(self):
     wxf = b"8x:"
     with self.assertRaises(WolframParserException):
         binary_deserialize(wxf, consumer=WXFConsumer())
示例#17
0
 def test_rules(self):
     # BinarySerialize[<|"1" -> 1, "2" -> {0}, "3" -> <||>|>]
     wxf = b"8:A\x03-S\x011C\x01-S\x012f\x01s\x04ListC\x00-S\x013A\x00"
     res = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(res, {"1": 1, "2": (0,), "3": {}})
示例#18
0
 def test_bigreal_precision_exponent(self):
     wxf = b"8:R>9.999999999999996843873323328588479844`15.352529778863042*^999"
     res = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(res, decimal.Decimal("9.999999999999996843873323328588479844E+999"))
示例#19
0
 def test_bigreal_precision(self):
     wxf = b"8:R\x0710.`10."
     res = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(res, decimal.Decimal(10))
 def test_valid_evaluate_wxf_async(self):
     future = self.kernel_session.evaluate_wxf_future("Range[3]")
     wxf = future.result(timeout=2)
     result = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(result, [1, 2, 3])
示例#21
0
 def test_bad_bignum(self):
     # replace last digit by 'A'
     wxf = b"8:I\x171234567890123456789012A"
     with self.assertRaises(WolframParserException):
         binary_deserialize(wxf, consumer=WXFConsumer())
 def test_valid_evaluate_wxf(self):
     wxf = self.kernel_session.evaluate_wxf("Range[3]")
     result = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(result, [1, 2, 3])
示例#23
0
 def test_compressed_input(self):
     expr = (1, 2, 3)
     wxf = export(expr, target_format="wxf", compress=True)
     res = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(expr, res)
示例#24
0
 def test_bad_wxf_buffer(self):
     wxf = 1
     with self.assertRaises(TypeError):
         binary_deserialize(wxf, consumer=WXFConsumer())
示例#25
0
 def wxf_assert_roundtrip(self, value):
     wxf = export(value, target_format="wxf")
     o = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(value, o)
示例#26
0
 def test_nested_associations(self):
     expr = immutabledict((("a", 2), ("a", 3)))
     expr = immutabledict(((expr, expr), (2, 3)))
     wxf = export(expr, target_format="wxf", compress=True)
     res = binary_deserialize(wxf, consumer=WXFConsumer())
     self.assertEqual(expr, res)