def test_auto(self): binary_data = 'テスト'.encode('cp932') schema = GenericSchema({}, GenericSchema.AUTO) d = schema.transform({ 'k1': '123', 'k2': 456, 'k3': '789'.encode(), 'k4': 'xxx'.encode(), 'k5': binary_data, 'k6': True, 'k7': False, }) self.assertEqual({ 'k1': '123', 'k6': '1', 'k7': '0' }, dict(d.string_values)) self.assertEqual({'k2': 456}, dict(d.num_values)) self.assertEqual( { 'k3': '789'.encode(), 'k4': 'xxx'.encode(), 'k5': binary_data }, dict(d.binary_values))
def test_alias(self): schema = GenericSchema({ 'k1': GenericSchema.NUMBER, 'k2': (GenericSchema.NUMBER, 'alias_name'), }) d = schema.transform({ 'k1': '123', 'k2': 456, }) self.assertEqual({'k1': 123, 'alias_name': 456}, dict(d.num_values))
def test_fallback(self): schema = GenericSchema({ 'k1': GenericSchema.STRING, }, GenericSchema.NUMBER) d = schema.transform({ 'k1': '123', 'k2': 456, 'k3': 789, }) self.assertEqual({'k1': '123'}, dict(d.string_values)) self.assertEqual({'k2': 456, 'k3': 789}, dict(d.num_values))
def test_ignore(self): schema = GenericSchema({ 'k1': GenericSchema.NUMBER, }, GenericSchema.IGNORE) d = schema.transform({ 'k1': '123', 'k2': 456, }) self.assertEqual({}, dict(d.string_values)) self.assertEqual({'k1': 123}, dict(d.num_values)) self.assertEqual({}, dict(d.binary_values))
def test_null(self): schema = GenericSchema({ 'k1': GenericSchema.STRING, 'k2': GenericSchema.NUMBER, }) d = schema.transform({ 'k1': None, 'k2': None, }) self.assertEqual({}, dict(d.string_values)) self.assertEqual({}, dict(d.num_values))
def test_numpy(self): schema = GenericSchema({ 'k1': GenericSchema.STRING, 'k2': GenericSchema.NUMBER, }) d = schema.transform({ 'k1': np.float64(1.0), 'k2': np.float64(1.0), }) self.assertEqual({'k1': '1.0'}, dict(d.string_values)) self.assertEqual({'k2': 1.0}, dict(d.num_values))
def test_empty(self): schema = GenericSchema({ 'k1': GenericSchema.STRING, 'k2': GenericSchema.NUMBER, 'k3': GenericSchema.NUMBER, }) d = schema.transform({ 'k1': '', 'k2': '', 'k3': b'', }) self.assertEqual({'k1': ''}, dict(d.string_values)) self.assertEqual({}, dict(d.num_values))
def test_simple(self): schema = GenericSchema({ 'k1': GenericSchema.STRING, 'k2': GenericSchema.NUMBER, 'k3': GenericSchema.BINARY, }) d = schema.transform({ 'k1': '123', 'k2': 456, 'k3': 'xxx'.encode(), }) self.assertEqual({'k1': '123'}, dict(d.string_values)) self.assertEqual({'k2': 456}, dict(d.num_values)) self.assertEqual({'k3': 'xxx'.encode()}, dict(d.binary_values))
def test_infer(self): binary_data = 'テスト'.encode('cp932') schema = GenericSchema({}, GenericSchema.INFER) d = schema.transform({ 'k1': '123', 'k2': 456, 'k3': '789'.encode(), 'k4': 'xxx'.encode(), 'k5': binary_data, 'k6': True, 'k7': False, }) self.assertEqual({'k4': 'xxx', 'k6': '1', 'k7': '0'}, dict(d.string_values)) self.assertEqual({'k1': 123, 'k2': 456, 'k3': 789}, dict(d.num_values)) self.assertEqual({'k5': binary_data}, dict(d.binary_values))
def test_number(self): schema = GenericSchema({}, GenericSchema.NUMBER) d = schema.transform({ 'k1': '123'.encode(), # bytes 'k2': '456', # unicode 'k3': 789, # int 'k4': 789.0, # float 'k5': True, # bool 'k6': False, # bool }) self.assertEqual({ 'k1': 123.0, 'k2': 456.0, 'k3': 789.0, 'k4': 789.0, 'k5': 1.0, 'k6': 0.0, }, dict(d.num_values)) self.assertEqual({}, dict(d.string_values)) self.assertEqual({}, dict(d.binary_values))
def test_string(self): schema = GenericSchema({}, GenericSchema.STRING) d = schema.transform({ 'k1': '123'.encode(), # bytes 'k2': '456', # unicode 'k3': 789, # int 'k4': 789.0, # float 'k5': True, # bool 'k6': False, # bool }) self.assertEqual({ 'k1': '123', 'k2': '456', 'k3': '789', 'k4': '789.0', 'k5': '1', 'k6': '0', }, dict(d.string_values)) self.assertEqual({}, dict(d.num_values)) self.assertEqual({}, dict(d.binary_values))
def test_auto(self): binary_data = 'テスト'.encode('cp932') schema = GenericSchema({ 'k1': GenericSchema.AUTO, 'k2': GenericSchema.AUTO, 'k3': GenericSchema.AUTO, 'k4': GenericSchema.AUTO, 'k5': GenericSchema.AUTO, }) d = schema.transform({ 'k1': '123', 'k2': 456, 'k3': '789'.encode(), 'k4': 'xxx'.encode(), 'k5': binary_data, }) self.assertEqual({'k1': '123'}, dict(d.string_values)) self.assertEqual({'k2': 456}, dict(d.num_values)) self.assertEqual({'k3': '789'.encode(), 'k4': 'xxx'.encode(), 'k5': binary_data}, dict(d.binary_values))
def test_string(self): schema = GenericSchema({}, GenericSchema.STRING) d = schema.transform({ 'k1': '123'.encode(), # bytes 'k2': '456', # unicode 'k3': 789, # int 'k4': 789.0, # float 'k5': True, # bool 'k6': False, # bool }) self.assertEqual( { 'k1': '123', 'k2': '456', 'k3': '789', 'k4': '789.0', 'k5': '1', 'k6': '0', }, dict(d.string_values)) self.assertEqual({}, dict(d.num_values)) self.assertEqual({}, dict(d.binary_values))
def test_number(self): schema = GenericSchema({}, GenericSchema.NUMBER) d = schema.transform({ 'k1': '123'.encode(), # bytes 'k2': '456', # unicode 'k3': 789, # int 'k4': 789.0, # float 'k5': True, # bool 'k6': False, # bool }) self.assertEqual( { 'k1': 123.0, 'k2': 456.0, 'k3': 789.0, 'k4': 789.0, 'k5': 1.0, 'k6': 0.0, }, dict(d.num_values)) self.assertEqual({}, dict(d.string_values)) self.assertEqual({}, dict(d.binary_values))
def test_infer(self): binary_data = 'テスト'.encode('cp932') schema = GenericSchema({ 'k1': GenericSchema.INFER, 'k2': GenericSchema.INFER, 'k3': GenericSchema.INFER, 'k4': GenericSchema.INFER, 'k5': GenericSchema.INFER, }) d = schema.transform({ 'k1': '123', 'k2': 456, 'k3': '789'.encode(), 'k4': 'xxx'.encode(), 'k5': binary_data, }) self.assertEqual({'k4': 'xxx'}, dict(d.string_values)) self.assertEqual({'k1': 123, 'k2': 456, 'k3': 789}, dict(d.num_values)) self.assertEqual({'k5': binary_data}, dict(d.binary_values))