def test_encdec_big(self): d = LinearDiscretizer(3, 0.0, 100.0) self.assertEqual(d.num_bytes, 3) self.assertEqual(d.num_buckets, 16777216) self.assertEqual(d.max_bucket, 16777215) # encoder, valid cases self.assertEqual(d.encode( -1.0), bytearray([ 0, 0, 0])) self.assertEqual(d.encode( 0.0), bytearray([ 0, 0, 0])) self.assertEqual(d.encode( 25.0), bytearray([ 64, 0, 0])) self.assertEqual(d.encode( 50.0), bytearray([128, 0, 0])) self.assertEqual(d.encode( 75.0), bytearray([191, 255, 255])) self.assertEqual(d.encode(100.0), bytearray([255, 255, 255])) self.assertEqual(d.encode(101.0), bytearray([255, 255, 255])) # encoder, byte transitions self.assertEqual(d.encode(0.00152), bytearray([ 0, 0, 255])) self.assertEqual(d.encode(0.39062), bytearray([ 0, 255, 255])) # decoder, valid cases self.assertAlmostEqual(d.decode(bytearray([ 0, 0, 0])), 0.00000, 5) self.assertAlmostEqual(d.decode(bytearray([ 0, 0, 255])), 0.00152, 5) self.assertAlmostEqual(d.decode(bytearray([ 0, 255, 255])), 0.39062, 5) self.assertAlmostEqual(d.decode(bytearray([ 64, 0, 0])), 25.00000, 5) self.assertAlmostEqual(d.decode(bytearray([128, 0, 0])), 50.00000, 5) self.assertAlmostEqual(d.decode(bytearray([191, 255, 255])), 75.00000, 5) self.assertAlmostEqual(d.decode(bytearray([255, 255, 255])), 100.00000, 5)
def test_encdec_small(self): d = LinearDiscretizer(1, -10.0, 20.0) # encoder, valid cases self.assertEqual(d.encode(-11.0), bytearray([ 0])) self.assertEqual(d.encode(-10.0), bytearray([ 0])) self.assertEqual(d.encode( -2.5), bytearray([ 64])) self.assertEqual(d.encode( 4.9), bytearray([127])) self.assertEqual(d.encode( 5.0), bytearray([128])) self.assertEqual(d.encode( 12.5), bytearray([191])) self.assertEqual(d.encode( 20.0), bytearray([255])) self.assertEqual(d.encode( 21.0), bytearray([255])) # encoder, invalid cases self.assertRaises(DiscretizerException, d.encode, '') self.assertRaises(DiscretizerException, d.encode, 1) # decoder, valid cases self.assertAlmostEqual(d.decode(bytearray([ 0])), -10.0000, 4) self.assertAlmostEqual(d.decode(bytearray([ 64])), -2.4706, 4) self.assertAlmostEqual(d.decode(bytearray([127])), 4.9412, 4) self.assertAlmostEqual(d.decode(bytearray([128])), 5.0588, 4) self.assertAlmostEqual(d.decode(bytearray([191])), 12.4706, 4) self.assertAlmostEqual(d.decode(bytearray([255])), 20.0000, 4) # decoder, invalid cases self.assertRaises(DiscretizerException, d.decode, '') self.assertRaises(DiscretizerException, d.decode, 1.1) self.assertRaises(DiscretizerException, d.decode, bytearray()) self.assertRaises(DiscretizerException, d.decode, bytearray([0, 0]))