Example #1
0
    def test_determinism(self):
        deterministic = coders_registry.get_coder(typehints.Optional[int])
        deterministic.as_deterministic_coder('label')

        complex_deterministic = coders_registry.get_coder(
            typehints.Optional[DummyClass])
        complex_deterministic.as_deterministic_coder('label')

        nondeterministic = coders.NullableCoder(coders.Base64PickleCoder())
        with pytest.raises(ValueError):
            nondeterministic.as_deterministic_coder('label')
Example #2
0
  def test_str_utf8_coder(self):
    real_coder = coders_registry.get_coder(str)
    expected_coder = coders.BytesCoder()
    self.assertEqual(
        real_coder.encode('abc'), expected_coder.encode('abc'))
    self.assertEqual('abc', real_coder.decode(real_coder.encode('abc')))

    real_coder = coders_registry.get_coder(bytes)
    expected_coder = coders.BytesCoder()
    self.assertEqual(
        real_coder.encode('abc'), expected_coder.encode('abc'))
    self.assertEqual('abc', real_coder.decode(real_coder.encode('abc')))
Example #3
0
    def test_str_utf8_coder(self):
        real_coder = coders_registry.get_coder(str)
        expected_coder = coders.BytesCoder()
        self.assertEqual(real_coder.encode('abc'),
                         expected_coder.encode('abc'))
        self.assertEqual('abc', real_coder.decode(real_coder.encode('abc')))

        real_coder = coders_registry.get_coder(bytes)
        expected_coder = coders.BytesCoder()
        self.assertEqual(real_coder.encode('abc'),
                         expected_coder.encode('abc'))
        self.assertEqual('abc', real_coder.decode(real_coder.encode('abc')))
 def test_avro_record_coder(self):
     real_coder = coders_registry.get_coder(AvroTestRecord)
     expected_coder = AvroTestCoder()
     self.assertEqual(
         real_coder.encode(
             AvroTestRecord({
                 "name": "Daenerys targaryen",
                 "age": 23
             })),
         expected_coder.encode(
             AvroTestRecord({
                 "name": "Daenerys targaryen",
                 "age": 23
             })))
     self.assertEqual(
         AvroTestRecord({
             "name": "Jon Snow",
             "age": 23
         }),
         real_coder.decode(
             real_coder.encode(
                 AvroTestRecord({
                     "name": "Jon Snow",
                     "age": 23
                 }))))
Example #5
0
  def test_default_fallback_path(self):
    """Test fallback path picks a matching coder if no coder is registered."""

    coder = coders_registry.get_coder(DummyClass)
    # No matching coder, so picks the last fallback coder which is a
    # FastPrimitivesCoder.
    self.assertEqual(coder, coders.FastPrimitivesCoder())
    self.assertEqual(DummyClass(), coder.decode(coder.encode(DummyClass())))
Example #6
0
  def test_default_fallback_path(self):
    """Test fallback path picks a matching coder if no coder is registered."""

    coder = coders_registry.get_coder(DummyClass)
    # No matching coder, so picks the last fallback coder which is a
    # FastPrimitivesCoder.
    self.assertEqual(coder, coders.FastPrimitivesCoder())
    self.assertEqual(DummyClass(), coder.decode(coder.encode(DummyClass())))
Example #7
0
 def test_proto_coder(self):
   ma = test_message.MessageA()
   mb = ma.field2.add()
   mb.field1 = True
   ma.field1 = u'hello world'
   expected_coder = coders.ProtoCoder(ma.__class__)
   real_coder = coders_registry.get_coder(ma.__class__)
   self.assertEqual(expected_coder, real_coder)
   self.assertEqual(real_coder.encode(ma), expected_coder.encode(ma))
   self.assertEqual(ma, real_coder.decode(real_coder.encode(ma)))
Example #8
0
 def test_proto_coder(self):
     ma = test_message.MessageA()
     mb = ma.field2.add()
     mb.field1 = True
     ma.field1 = u'hello world'
     expected_coder = coders.ProtoCoder(ma.__class__)
     real_coder = coders_registry.get_coder(ma.__class__)
     self.assertEqual(expected_coder, real_coder)
     self.assertEqual(real_coder.encode(ma), expected_coder.encode(ma))
     self.assertEqual(ma, real_coder.decode(real_coder.encode(ma)))
Example #9
0
    def test_create_row_coder_from_named_tuple(self):
        expected_coder = RowCoder(typing_to_runner_api(Person).row_type.schema)
        real_coder = coders_registry.get_coder(Person)

        for test_case in self.PEOPLE:
            self.assertEqual(expected_coder.encode(test_case),
                             real_coder.encode(test_case))

            self.assertEqual(test_case,
                             real_coder.decode(real_coder.encode(test_case)))
Example #10
0
 def test_proto_plus_coder(self):
     ma = ProtoPlusMessageA()
     ma.field2 = [ProtoPlusMessageB(field1=True)]
     ma.field1 = u'hello world'
     expected_coder = coders.ProtoPlusCoder(ma.__class__)
     real_coder = coders_registry.get_coder(ma.__class__)
     self.assertTrue(issubclass(ma.__class__, proto.Message))
     self.assertEqual(expected_coder, real_coder)
     self.assertTrue(real_coder.is_deterministic())
     self.assertEqual(real_coder.encode(ma), expected_coder.encode(ma))
     self.assertEqual(ma, real_coder.decode(real_coder.encode(ma)))
 def test_deterministic_proto_coder(self):
     ma = test_message.MessageA()
     mb = ma.field2.add()
     mb.field1 = True
     ma.field1 = u'hello world'
     expected_coder = coders.DeterministicProtoCoder(ma.__class__)
     real_coder = (coders_registry.get_coder(
         ma.__class__).as_deterministic_coder(step_label='unused'))
     self.assertTrue(real_coder.is_deterministic())
     self.assertEqual(expected_coder, real_coder)
     self.assertEqual(real_coder.encode(ma), expected_coder.encode(ma))
     self.assertEqual(ma, real_coder.decode(real_coder.encode(ma)))
Example #12
0
    def test_row_coder_picklable(self):
        # occasionally coders can get pickled, RowCoder should be able to handle it
        coder = coders_registry.get_coder(Person)
        roundtripped = pickler.loads(pickler.dumps(coder))

        self.assertEqual(roundtripped, coder)