def test_read_bad_properties(self): # Unknown type... lines0 = ['ply', 'format ascii 2.0', 'element values 0', 'property elephants size', 'end_header', ''] # Incomplete string... lines1 = ['ply', 'format ascii 2.0', 'element values 0', 'property string size', 'end_header', ''] # Wrong string... lines2 = ['ply', 'format ascii 2.0', 'element values 0', 'property string:bytes size', 'end_header', ''] # Crazy string... lines3 = ['ply', 'format ascii 2.0', 'element values 0', 'property string:real32 size', 'end_header', ''] # Incomplete array spec... lines4 = ['ply', 'format ascii 2.0', 'element values 0', 'property array:2: size', 'end_header', ''] # Negative dimensionality array... lines5 = ['ply', 'format ascii 2.0', 'element values 0', 'property array:-2:nat32:real32 size', 'end_header', ''] # Silly shape measure... lines6 = ['ply', 'format ascii 2.0', 'element values 0', 'property array:1:real32:real32 size', 'end_header', ''] # Complex nesting... lines7 = ['ply', 'format ascii 2.0', 'element values 0', 'property array:1:real32:string:nat32 size', 'end_header', ''] # Do all of the above... for lines, error in [(lines0,IOError), (lines1,IndexError), (lines2,IOError), (lines3,IOError), (lines4,KeyError), (lines5,ValueError), (lines6,IOError), (lines7,KeyError)]: temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(error): ply2.read(temp) temp.close()
def test_read_small(self): lines = ['ply', 'format ascii 2.0', 'element values 2', 'property int32 size', 'end_header', '4', '5'] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) ply2.read(temp) temp.close()
def test_read_type(self): lines = ['ply', 'format ascii 2.0', 'type nothing', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) ply2.read(temp) temp.close()
def test_read_null_element(self): lines = ['ply', 'format ascii 2.0', 'element penguin 0', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) ply2.read(temp) temp.close()
def test_read_minimal(self): lines = ['ply', 'format ascii 2.0', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) ply2.read(temp) temp.close()
def test_read_incomplete(self): lines = ['ply', 'format ascii 2.0', 'element values 2', 'property int32 size', 'end_header', '4'] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(IOError): ply2.read(temp) temp.close()
def test_read_duplicate_property(self): lines = ['ply', 'format ascii 2.0', 'element penguin 0', 'property real32 nose_size', 'property real32 nose_size', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_antidata(self): lines = ['ply', 'format ascii 2.0', 'element penguin -4', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_unknown_compress(self): lines = ['ply', 'format ascii 2.0', 'compress elephant', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_multiple_compress(self): lines = ['ply', 'format ascii 2.0', 'compress gzip2', 'compress gzip2', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_no_magic(self): lines = ['format ascii 2.0', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_no_format(self): lines = ['ply', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_naked_property(self): lines = ['ply', 'format ascii 2.0', 'property real32 nose_size', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_no_format(self): lines = ['ply', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_line_endings_dos(self): lines = ['ply', 'format ascii 2.0', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n\r'.join(lines)) temp.seek(0) with self.assertRaises(EOFError): ply2.read(temp) temp.close()
def test_read_no_end(self): lines = ['ply', 'format ascii 2.0'] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(EOFError): ply2.read(temp) temp.close()
def test_read_multiple_type(self): lines = ['ply', 'format ascii 2.0', 'type nothing', 'type nothingness', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_line_endings_mac(self): lines = ['ply', 'format ascii 2.0', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\r\n'.join(lines)) temp.seek(0) with self.assertRaises(EOFError): ply2.read(temp) temp.close()
def test_read_past_limit(self): lines = ['ply', 'format ascii 2.0'] + ['comment I am a fish'] * 16384 + ['end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(BufferError): ply2.read(temp) temp.close()
def test_read_no_end(self): lines = ['ply', 'format ascii 2.0'] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(EOFError): ply2.read(temp) temp.close()
def test_read_past_limit(self): lines = ['ply', 'format ascii 2.0' ] + ['comment I am a fish'] * 16384 + ['end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(BufferError): ply2.read(temp) temp.close()
def test_read_unknown_compress(self): lines = [ 'ply', 'format ascii 2.0', 'compress elephant', 'end_header', '' ] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_antidata(self): lines = [ 'ply', 'format ascii 2.0', 'element penguin -4', 'end_header', '' ] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_small(self): lines = [ 'ply', 'format ascii 2.0', 'element values 2', 'property int32 size', 'end_header', '4', '5' ] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) ply2.read(temp) temp.close()
def test_read_incomplete(self): lines = [ 'ply', 'format ascii 2.0', 'element values 2', 'property int32 size', 'end_header', '4' ] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(IOError): ply2.read(temp) temp.close()
def test_read_multiple_type(self): lines = [ 'ply', 'format ascii 2.0', 'type nothing', 'type nothingness', 'end_header', '' ] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_naked_property(self): lines = [ 'ply', 'format ascii 2.0', 'property real32 nose_size', 'end_header', '' ] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close()
def test_read_bad_length(self): lines = ['ply', 'format ascii 2.0', 'length 5 blue wahles', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close() lines = ['ply', 'format ascii 2.0', 'length nine', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(ValueError): ply2.read(temp) temp.close()
def test_write_read_graph(self): before = self.ds_graph() temp = tempfile.TemporaryFile('w+b') ply2.write(temp, before) temp.seek(0) after = ply2.read(temp) temp.close() self.equal(before, after)
def test_read_bad_length(self): lines = [ 'ply', 'format ascii 2.0', 'length 5 blue wahles', 'end_header', '' ] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(AssertionError): ply2.read(temp) temp.close() lines = ['ply', 'format ascii 2.0', 'length nine', 'end_header', ''] temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(ValueError): ply2.read(temp) temp.close()
def test_read_bad_meta(self): # Missing... lines0 = ['ply', 'format ascii 2.0', 'meta real32', 'end_header', ''] # Not a float... lines1 = ['ply', 'format ascii 2.0', 'meta real32 author bunny', 'end_header', ''] # Not an int... lines2 = ['ply', 'format ascii 2.0', 'meta int32 time 3.5', 'end_header', ''] # Excess... lines3 = ['ply', 'format ascii 2.0', 'meta real32 time 3.5 seconds', 'end_header', ''] # Bad string length type... lines4 = ['ply', 'format ascii 2.0', 'meta string:rodent owner 4 Rupert', 'end_header', ''] # Bad string length... lines5 = ['ply', 'format ascii 2.0', 'meta string:nat32 owner rat Rupert', 'end_header', ''] # Wrong string length... lines6 = ['ply', 'format ascii 2.0', 'meta string:nat32 owner 8 Rupert', 'end_header', ''] # No string length... lines7 = ['ply', 'format ascii 2.0', 'meta string:nat32 owner Rupert', 'end_header', ''] # Unknown type... lines8 = ['ply', 'format ascii 2.0', 'meta quaternion angle 3.2 1.2 4.5 -0.3', 'end_header', ''] # Do all of the above... for lines, error in [(lines0,KeyError), (lines1,ValueError), (lines2,ValueError), (lines3,ValueError), (lines4,IOError), (lines5,ValueError), (lines6,IOError), (lines7,ValueError), (lines8,IOError)]: temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines).encode('utf8')) temp.seek(0) with self.assertRaises(error): ply2.read(temp) temp.close()
def test_adv_write_read_graph(self): for compress in ['', 'gzip', 'bzip2']: for format in ['ascii', 'binary_little_endian', 'binary_big_endian']: before = self.ds_graph() before['compress'] = compress before['format'] = format temp = tempfile.TemporaryFile('w+b') ply2.write(temp, before) temp.seek(0) after = ply2.read(temp) temp.close() self.equal(before, after)
def test_adv_write_read_graph(self): for compress in ['', 'gzip', 'bzip2']: for format in [ 'ascii', 'binary_little_endian', 'binary_big_endian' ]: before = self.ds_graph() before['compress'] = compress before['format'] = format temp = tempfile.TemporaryFile('w+b') ply2.write(temp, before) temp.seek(0) after = ply2.read(temp) temp.close() self.equal(before, after)
def test_read_bad_properties(self): # Unknown type... lines0 = [ 'ply', 'format ascii 2.0', 'element values 0', 'property elephants size', 'end_header', '' ] # Incomplete string... lines1 = [ 'ply', 'format ascii 2.0', 'element values 0', 'property string size', 'end_header', '' ] # Wrong string... lines2 = [ 'ply', 'format ascii 2.0', 'element values 0', 'property string:bytes size', 'end_header', '' ] # Crazy string... lines3 = [ 'ply', 'format ascii 2.0', 'element values 0', 'property string:real32 size', 'end_header', '' ] # Incomplete array spec... lines4 = [ 'ply', 'format ascii 2.0', 'element values 0', 'property array:2: size', 'end_header', '' ] # Negative dimensionality array... lines5 = [ 'ply', 'format ascii 2.0', 'element values 0', 'property array:-2:nat32:real32 size', 'end_header', '' ] # Silly shape measure... lines6 = [ 'ply', 'format ascii 2.0', 'element values 0', 'property array:1:real32:real32 size', 'end_header', '' ] # Complex nesting... lines7 = [ 'ply', 'format ascii 2.0', 'element values 0', 'property array:1:real32:string:nat32 size', 'end_header', '' ] # Do all of the above... for lines, error in [(lines0, IOError), (lines1, IndexError), (lines2, IOError), (lines3, IOError), (lines4, KeyError), (lines5, ValueError), (lines6, IOError), (lines7, KeyError)]: temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(error): ply2.read(temp) temp.close()
def test_read_bad_meta(self): # Missing... lines0 = ['ply', 'format ascii 2.0', 'meta real32', 'end_header', ''] # Not a float... lines1 = [ 'ply', 'format ascii 2.0', 'meta real32 author bunny', 'end_header', '' ] # Not an int... lines2 = [ 'ply', 'format ascii 2.0', 'meta int32 time 3.5', 'end_header', '' ] # Excess... lines3 = [ 'ply', 'format ascii 2.0', 'meta real32 time 3.5 seconds', 'end_header', '' ] # Bad string length type... lines4 = [ 'ply', 'format ascii 2.0', 'meta string:rodent owner 4 Rupert', 'end_header', '' ] # Bad string length... lines5 = [ 'ply', 'format ascii 2.0', 'meta string:nat32 owner rat Rupert', 'end_header', '' ] # Wrong string length... lines6 = [ 'ply', 'format ascii 2.0', 'meta string:nat32 owner 8 Rupert', 'end_header', '' ] # No string length... lines7 = [ 'ply', 'format ascii 2.0', 'meta string:nat32 owner Rupert', 'end_header', '' ] # Unknown type... lines8 = [ 'ply', 'format ascii 2.0', 'meta quaternion angle 3.2 1.2 4.5 -0.3', 'end_header', '' ] # Do all of the above... for lines, error in [(lines0, KeyError), (lines1, ValueError), (lines2, ValueError), (lines3, ValueError), (lines4, IOError), (lines5, ValueError), (lines6, IOError), (lines7, ValueError), (lines8, IOError)]: temp = tempfile.TemporaryFile('w+b') temp.write('\n'.join(lines)) temp.seek(0) with self.assertRaises(error): ply2.read(temp) temp.close()