示例#1
0
def test_eclipses_since_finds_all_eclipses_in_a_few_orbits(
        sate_predictors, sate_dates_list):
    for sate_name, start, limit in sate_dates_list:
        predictor = sate_predictors[sate_name]
        eclipses = list(predictor.eclipses_since(start, limit))
        total_duration_m = int((limit - start).total_seconds() / 60)
        for mins in range(total_duration_m):
            current_time = start + dt.timedelta(minutes=mins)
            pos = predictor.get_only_position(current_time)
            if get_shadow(pos, current_time) != 2:
                assert any(ecl_start <= current_time <= ecl_end
                           for ecl_start, ecl_end in eclipses)
示例#2
0
def test_eclipses_since_is_consistent_with_get_shadow(sate_predictors,
                                                      sate_dates_list):
    for sate_name, start, limit in sate_dates_list:
        predictor = sate_predictors[sate_name]
        for ecl_start, ecl_end in predictor.eclipses_since(start, limit):
            one_second = dt.timedelta(seconds=1)

            pre_eclipse_start = ecl_start - one_second
            post_eclipse_start = ecl_start + one_second
            pre_eclipse_end = ecl_end - one_second
            post_eclipse_end = ecl_end + one_second

            for time_to_check, must_be_illuminated in [
                (pre_eclipse_start, True),
                (post_eclipse_start, False),
                (pre_eclipse_end, False),
                (post_eclipse_end, True),
            ]:
                pos = predictor.get_only_position(time_to_check)
                assert (get_shadow(pos,
                                   time_to_check) == 2) == must_be_illuminated
示例#3
0
def test_get_shadow_gives_penumbra(when_utc, r_ecef):
    shadow = get_shadow(r_ecef, when_utc)

    assert shadow == 1
示例#4
0
def test_get_shadow_matches_expected_result(when_utc, r_ecef, expected_shadow):
    shadow = get_shadow(r_ecef, when_utc)

    assert shadow == expected_shadow
示例#5
0
def test_satellite_minus_penumbra_consistent_with_discrete_witness_cases(
        when_utc, r_ecef):
    if get_shadow(r_ecef, when_utc) == 2:
        assert get_satellite_minus_penumbra_verticals(r_ecef, when_utc) > 0
    else:
        assert get_satellite_minus_penumbra_verticals(r_ecef, when_utc) < 0
示例#6
0
    def get_shadow(self, when_utc=None):
        """Gives illumination at given time (2 for illuminated, 1 for penumbra, 0 for umbra)."""
        if when_utc is None:
            when_utc = dt.datetime.utcnow()

        return get_shadow(self.get_position(when_utc).position_ecef, when_utc)