def test_ordered_results_has_results_post_reset(self): """ Test that an empty list is returned after a reset where there was a cached value before the reset. """ iqrs = IqrSession() # Mocking results map existing for return. d0 = DescriptorMemoryElement('', 0).set_vector([0]) d1 = DescriptorMemoryElement('', 1).set_vector([1]) d2 = DescriptorMemoryElement('', 2).set_vector([2]) d3 = DescriptorMemoryElement('', 3).set_vector([3]) iqrs.results = { d0: 0.0, d1: 0.8, d2: 0.2, d3: 0.4, } # Initial call to ``ordered_results`` should have a non-None return. assert iqrs.ordered_results() is not None iqrs.reset() # Post-reset, there should be no results nor cache. actual = iqrs.ordered_results() assert actual == []
def test_ordered_results_no_results_no_cache(self): """ Test that an empty list is returned when ``ordered_results`` is called before any refinement has occurred. """ iqrs = IqrSession() assert iqrs.ordered_results() == []
def test_ordered_results_has_results_no_cache(self): """ Test that an appropriate list is returned by ``ordered_results`` after a refinement has occurred. """ iqrs = IqrSession() # Mocking results map existing for return. d0 = DescriptorMemoryElement('', 0).set_vector([0]) d1 = DescriptorMemoryElement('', 1).set_vector([1]) d2 = DescriptorMemoryElement('', 2).set_vector([2]) d3 = DescriptorMemoryElement('', 3).set_vector([3]) iqrs.results = { d0: 0.0, d1: 0.8, d2: 0.2, d3: 0.4, } # Cache should be empty before call to ``ordered_results`` assert iqrs._ordered_results is None with mock.patch('smqtk.iqr.iqr_session.sorted', side_effect=sorted) as m_sorted: actual1 = iqrs.ordered_results() m_sorted.assert_called_once() expected = [(d1, 0.8), (d3, 0.4), (d2, 0.2), (d0, 0.0)] assert actual1 == expected # Calling the method a second time should not result in a ``sorted`` # operation due to caching. with mock.patch('smqtk.iqr.iqr_session.sorted') as m_sorted: actual2 = iqrs.ordered_results() m_sorted.assert_not_called() assert actual2 == expected # Both returns should be shallow copies, thus not the same list # instances. assert id(actual1) != id(actual2)