def test_deprecated_io(self): fh = StringIO() npt.assert_warns(DeprecationWarning, self.ordination_results.to_file, fh) fh.seek(0) deserialized = npt.assert_warns(DeprecationWarning, OrdinationResults.from_file, fh) assert_ordination_results_equal(deserialized, self.ordination_results) self.assertTrue(type(deserialized) == OrdinationResults)
def test_deprecated_io(self): fh = StringIO() npt.assert_warns(UserWarning, self.ordination_results.to_file, fh) fh.seek(0) deserialized = npt.assert_warns(UserWarning, OrdinationResults.from_file, fh) assert_ordination_results_equal(deserialized, self.ordination_results) self.assertTrue(type(deserialized) == OrdinationResults)
def test_io(self): # Very basic check that read/write public API is present and appears to # be functioning. Roundtrip from memory -> disk -> memory and ensure # results match. fh = StringIO() self.ordination_results.write(fh) fh.seek(0) deserialized = OrdinationResults.read(fh) assert_ordination_results_equal(deserialized, self.ordination_results) self.assertTrue(type(deserialized) == OrdinationResults)
def test_roundtrip_read_write(self): for fp in self.valid_fps: # Read. obj1 = _ordres_to_ordination_results(fp) # Write. fh = StringIO() _ordination_results_to_ordres(obj1, fh) fh.seek(0) # Read. obj2 = _ordres_to_ordination_results(fh) fh.close() assert_ordination_results_equal(obj1, obj2)
def test_read_valid_files(self): for fp, obj in zip(self.valid_fps, self.ordination_results_objs): obs = _ordres_to_ordination_results(fp) assert_ordination_results_equal(obs, obj)
def test_assert_ordination_results_equal(self): minimal1 = OrdinationResults([1, 2]) # a minimal set of results should be equal to itself assert_ordination_results_equal(minimal1, minimal1) # type mismatch with npt.assert_raises(AssertionError): assert_ordination_results_equal(minimal1, 'foo') # numeric values should be checked that they're almost equal almost_minimal1 = OrdinationResults([1.0000001, 1.9999999]) assert_ordination_results_equal(minimal1, almost_minimal1) # species_ids missing in one, present in the other almost_minimal1.species_ids = ['abc', 'def'] with npt.assert_raises(AssertionError): assert_ordination_results_equal(minimal1, almost_minimal1) almost_minimal1.species_ids = None # site_ids missing in one, present in the other almost_minimal1.site_ids = ['abc', 'def'] with npt.assert_raises(AssertionError): assert_ordination_results_equal(minimal1, almost_minimal1) almost_minimal1.site_ids = None # test each of the optional numeric attributes for attr in ('species', 'site', 'biplot', 'site_constraints', 'proportion_explained'): # missing optional numeric attribute in one, present in the other setattr(almost_minimal1, attr, [[1, 2], [3, 4]]) with npt.assert_raises(AssertionError): assert_ordination_results_equal(minimal1, almost_minimal1) setattr(almost_minimal1, attr, None) # optional numeric attributes present in both, but not almost equal setattr(minimal1, attr, [[1, 2], [3, 4]]) setattr(almost_minimal1, attr, [[1, 2], [3.00002, 4]]) with npt.assert_raises(AssertionError): assert_ordination_results_equal(minimal1, almost_minimal1) setattr(minimal1, attr, None) setattr(almost_minimal1, attr, None) # optional numeric attributes present in both, and almost equal setattr(minimal1, attr, [[1, 2], [3, 4]]) setattr(almost_minimal1, attr, [[1, 2], [3.00000002, 4]]) assert_ordination_results_equal(minimal1, almost_minimal1) setattr(minimal1, attr, None) setattr(almost_minimal1, attr, None)