def test_numeric_arrays(self): # creation:, from array, from string a = gfapy.NumericArray([1,2,3,4,5]) # nothing raised b = gfapy.NumericArray([1,2,3,4,5]) # nothing raised self.assertEqual(a, b) c = gfapy.NumericArray.from_string("i,1,2,3,4,5") # nothing raised self.assertEqual(gfapy.NumericArray([1, 2, 3, 4, 5]), c) # validation a.validate() # nothing raised gfapy.NumericArray([1,2,3,4,356]).validate() # nothing raised self.assertRaises(gfapy.ValueError, gfapy.NumericArray([1,2.0,3,4,356]).validate) self.assertRaises(gfapy.ValueError, gfapy.NumericArray([1.0,2.0,3,4,356]).validate) self.assertRaises(gfapy.ValueError, gfapy.NumericArray([1,"x",3,4,356]).validate) with self.assertRaises(gfapy.ValueError): a = gfapy.NumericArray.from_string("i,1,X,2") with self.assertRaises(gfapy.FormatError): a = gfapy.NumericArray.from_string("") with self.assertRaises(gfapy.FormatError): a = gfapy.NumericArray.from_string("i,1,2,") with self.assertRaises(gfapy.TypeError): a = gfapy.NumericArray.from_string("x,1,2") # to string a = gfapy.NumericArray([18, 72, 244, 70, 96, 38, 31]) self.assertEqual("C", a.compute_subtype()) self.assertEqual("C,18,72,244,70,96,38,31", str(a)) a[2] = -2 self.assertEqual("c", a.compute_subtype()) self.assertEqual("c,18,72,-2,70,96,38,31", str(a)) a[2] = 280 self.assertEqual("S", a.compute_subtype()) self.assertEqual("S,18,72,280,70,96,38,31", str(a)) a[2] = -280 self.assertEqual("s", a.compute_subtype()) self.assertEqual("s,18,72,-280,70,96,38,31", str(a)) a[2] = 280000 self.assertEqual("I", a.compute_subtype()) self.assertEqual("I,18,72,280000,70,96,38,31", str(a)) a[2] = -280000 self.assertEqual("i", a.compute_subtype()) self.assertEqual("i,18,72,-280000,70,96,38,31", str(a)) a = gfapy.NumericArray([float(x) for x in a]) self.assertEqual("f", a.compute_subtype()) self.assertEqual("f,18.0,72.0,-280000.0,70.0,96.0,38.0,31.0", str(a))
def unsafe_encode(obj): if isinstance(obj, gfapy.NumericArray): return str(obj) elif isinstance(obj, list): return str(gfapy.NumericArray(obj)) elif isinstance(obj, str): return obj else: raise gfapy.TypeError( "the class {} is incompatible with the datatype\n".format( obj.__class__.__name__) + "(accepted classes: str, line, gfapy.NumericArray)")
def test_datatype_value_independent(self): self.assertEqual("Z", gfapy.Field._get_default_gfa_tag_datatype("string")) self.assertEqual("i", gfapy.Field._get_default_gfa_tag_datatype(1)) self.assertEqual("f", gfapy.Field._get_default_gfa_tag_datatype(1.0)) self.assertEqual( "H", gfapy.Field._get_default_gfa_tag_datatype(gfapy.ByteArray([]))) self.assertEqual( "B", gfapy.Field._get_default_gfa_tag_datatype(gfapy.NumericArray([]))) self.assertEqual("J", gfapy.Field._get_default_gfa_tag_datatype({}))
def test_numeric_arrays(self): # creation: new, from array, from string a = gfapy.NumericArray([1, 2, 3, 4, 5]) b = gfapy.NumericArray.from_string("i,1,2,3,4,5") self.assertEqual(a, b) # validation a.validate gfapy.NumericArray([1, 2, 3, 4, 356]).validate self.assertRaises(gfapy.ValueError, gfapy.NumericArray([1, 2.0, 3, 4, 356]).validate) self.assertRaises( gfapy.ValueError, gfapy.NumericArray([1.0, 2.0, 3.0, 4.0, 356]).validate) self.assertRaises(gfapy.ValueError, gfapy.NumericArray([1, "x", 3, 4, 356]).validate) self.assertRaises(gfapy.ValueError, gfapy.NumericArray.from_string, "i,1,X,2") self.assertRaises(gfapy.FormatError, gfapy.NumericArray.from_string, "") self.assertRaises(gfapy.FormatError, gfapy.NumericArray.from_string, "i,1,2,") self.assertRaises(gfapy.TypeError, gfapy.NumericArray.from_string, "x,1,2") # to string a = gfapy.NumericArray([18, 72, 244, 70, 96, 38, 31]) self.assertEqual("C", a.compute_subtype()) self.assertEqual("C,18,72,244,70,96,38,31", str(a)) a[2] = -2 self.assertEqual("c", a.compute_subtype()) self.assertEqual("c,18,72,-2,70,96,38,31", str(a)) a[2] = 280 self.assertEqual("S", a.compute_subtype()) self.assertEqual("S,18,72,280,70,96,38,31", str(a)) a[2] = -280 self.assertEqual("s", a.compute_subtype()) self.assertEqual("s,18,72,-280,70,96,38,31", str(a)) a[2] = 280000 self.assertEqual("I", a.compute_subtype()) self.assertEqual("I,18,72,280000,70,96,38,31", str(a)) a[2] = -280000 self.assertEqual("i", a.compute_subtype()) self.assertEqual("i,18,72,-280000,70,96,38,31", str(a)) a = gfapy.NumericArray([18.0, 72.0, -280000.0, 70.0, 96.0, 38.0, 31.0]) self.assertEqual("f", a.compute_subtype()) self.assertEqual("f,18.0,72.0,-280000.0,70.0,96.0,38.0,31.0", str(a))