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)