예제 #1
0
 def test_windowed_value_coder(self):
     coder = coders.WindowedValueCoder(coders.VarIntCoder(),
                                       coders.GlobalWindowCoder())
     # Verify cloud object representation
     self.assertEqual(
         {
             '@type':
             'kind:windowed_value',
             'is_wrapper':
             True,
             'component_encodings': [
                 coders.VarIntCoder().as_cloud_object(),
                 coders.GlobalWindowCoder().as_cloud_object(),
             ],
         }, coder.as_cloud_object())
     # Test binary representation
     self.assertEqual(
         '\x01\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01',
         coder.encode(window.GlobalWindows.windowed_value(1)))
     # Test unnested
     self.check_coder(coders.WindowedValueCoder(coders.VarIntCoder()),
                      windowed_value.WindowedValue(3, -100, ()),
                      windowed_value.WindowedValue(-1, 100, (1, 2, 3)))
     # Test nested
     self.check_coder(
         coders.TupleCoder(
             (coders.WindowedValueCoder(coders.FloatCoder()),
              coders.WindowedValueCoder(coders.StrUtf8Coder()))),
         (windowed_value.WindowedValue(1.5, 0, ()),
          windowed_value.WindowedValue("abc", 10, ('window', ))))
예제 #2
0
 def test_global_window_coder(self):
     coder = coders.GlobalWindowCoder()
     value = window.GlobalWindow()
     # Verify cloud object representation
     self.assertEqual({'@type': 'kind:global_window'},
                      coder.as_cloud_object())
     # Test binary representation
     self.assertEqual('', coder.encode(value))
     self.assertEqual(value, coder.decode(''))
     # Test unnested
     self.check_coder(coder, value)
     # Test nested
     self.check_coder(coders.TupleCoder((coder, coder)), (value, value))