def test_sort_by_distance(self): bodies = [[2.0, 20], [1.0, 10], [4.0, 30], [3.0, 40]] mirrors = [[1.0, 10], [0.0, 0.0], [3.0, 30], [100.0, 5.0]] expected = OrbitalSupplements( [[1., 10.], [2., 20.], [4., 30.], [3., 40.]], [[0., 0.], [1., 10.], [3., 30.], [100., 5.]]) supplements = OrbitalSupplements(bodies, mirrors) obtained = supplements.sort(by="distance") self.assertTrue(obtained == expected)
def test_append(): ad = ([0.0, 0.0], [5.0, 50.0]) bodies = [[1.0, 10], [2.0, 20], [3.0, 30]] mirrors = [[1.0, 10], [np.nan, np.nan], [3.0, 30]] supplements = OrbitalSupplements(bodies, mirrors) supplements.append(*ad) bodies.append(ad[0]) mirrors.append(ad[1]) assert_array_equal(bodies, supplements.body) assert_array_equal(mirrors, supplements.mirror)
def test_find_apsidally_corresponding_positions_total_mixed(self): arr1 = np.array([[1, 10], [2, 20]]) arr2 = np.array([[3, 30], [4, 40]]) nan = [np.nan, np.nan] expected = OrbitalSupplements([[3, 30], [4, 40], [1, 10], [2, 20]], [nan, nan, nan, nan]) self._test_find_apsidally_corresponding_positions(arr1, arr2, expected)
def test_find_apsidally_corresponding_positions_mixed_second_longer(self): arr1 = np.array([[1, 10], [2, 20], [5.5, 50.50], [7, 70]]) arr2 = np.array([[1, 10], [2, 20], [5, 50], [6, 60], [7, 70]]) nan = [np.nan, np.nan] expected = OrbitalSupplements( [[1., 10.], [2., 20.], [5., 50.], [6., 60.], [7., 70.], [5.5, 50.5]], [[1., 10.], [2., 20.], nan, nan, [7., 70.], nan]) self._test_find_apsidally_corresponding_positions(arr1, arr2, expected)
def test_find_apsidally_corresponding_positions_full_match(self): arr1 = np.array([[1, 10], [2, 20], [3, 30], [4, 40], [5.0, 50]]) arr2 = np.array([[1, 10], [3, 30], [2, 20], [4, 40], [5.0, 50]]) expected = OrbitalSupplements( [[1, 10], [3, 30], [2, 20], [4, 40], [5.0, 50]], [[1, 10], [3, 30], [2, 20], [4, 40], [5.0, 50]]) self._test_find_apsidally_corresponding_positions(arr1, arr2, expected)
def test_init(): bodies = [[1.0, 10], [2.0, 20], [3.0, 30]] mirrors = [[1.0, 10], [np.nan, np.nan], [3.0, 30]] supplements = OrbitalSupplements(bodies, mirrors) assert_array_equal(bodies, supplements.body) assert_array_equal(mirrors, supplements.mirror)
def test_defined_only(self): arr = np.array([[10, 10], [np.nan, np.nan], [20, 12], [np.nan, np.nan]]) supplements = OrbitalSupplements(arr, arr) not_empty = supplements.body_defined self.assertTrue(np.all(np.array([[10, 10], [20, 12]]) == not_empty)) not_empty = supplements.mirror_defined self.assertTrue(np.all(np.array([[10, 10], [20, 12]]) == not_empty))
def test__compute_rel_d_radii(self): mock_supplements = OrbitalSupplements([[1., 10.]], [[1., 10.]]) corrected_potentials = {'primary': [], 'secondary': []} expected = np.array([[0.1101, 0.0661, 0.3084, 0.5727], [0.0746, 0.1119, 0.7836, 0.2612]]) with mock.patch('elisa.binary_system.radius.calculate_forward_radii', MockSelf.calculate_forward_radii): obtained = \ np.round(crv_utils.compute_rel_d_radii(MockSelf, mock_supplements.body[:, 1], corrected_potentials), 4) self.assertTrue(np.all(expected == obtained))
def test_find_apsidally_corresponding_positions_mixed_under_tolerance( self): arr1 = np.array([[1, 10], [2, 20], [3, 30], [4, 40]]) arr2 = np.array([[1, 10], [1.01, 10.10], [2, 20], [2.02, 20.02], [4, 40]]) expected = OrbitalSupplements( [[1, 10], [1, 10], [2, 20], [2, 20], [4, 40], [3, 30]], [[1, 10], [1.01, 10.1], [2, 20], [2.02, 20.02], [4, 40], [np.nan, np.nan]]) self._test_find_apsidally_corresponding_positions(arr1, arr2, expected, tol=0.1)
def test_not_empty(self): arr = np.array([[10, 10], [np.nan, np.nan], [20, 12], [np.nan, np.nan]]) not_empty = OrbitalSupplements.not_empty(arr) self.assertTrue(np.all(np.array([[10, 10], [20, 12]]) == not_empty))
def test_is_empty(self): arr = [[np.nan, np.nan], [np.nan, np.nan]] self.assertTrue(OrbitalSupplements.is_empty(arr)) arr = [[6, 10], [np.nan, np.nan]] self.assertFalse(OrbitalSupplements.is_empty(arr))
def test_append_of_zero_value(self): supplements = OrbitalSupplements() supplements.append([1, 1], np.array([10, 10])) self.assertTrue(len(supplements.body.shape) == 2)