1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.forces.maneuvers.triggers;
18
19
20 import java.util.List;
21
22 import org.hipparchus.CalculusFieldElement;
23 import org.hipparchus.Field;
24 import org.hipparchus.util.Decimal64Field;
25 import org.junit.Assert;
26 import org.junit.Test;
27 import org.orekit.forces.maneuvers.trigger.IntervalEventTrigger;
28 import org.orekit.propagation.events.DateDetector;
29 import org.orekit.propagation.events.FieldAbstractDetector;
30 import org.orekit.propagation.events.FieldDateDetector;
31 import org.orekit.propagation.events.FieldEventDetector;
32 import org.orekit.propagation.events.handlers.StopOnEvent;
33 import org.orekit.time.AbsoluteDate;
34 import org.orekit.time.FieldAbsoluteDate;
35 import org.orekit.time.TimeStamped;
36
37 public class IntervalEventTriggerTest extends AbstractManeuverTriggersTest<IntervalEventTrigger<DateDetector>> {
38
39 public static class IntervalDates extends IntervalEventTrigger<DateDetector> {
40
41 public IntervalDates(final AbsoluteDate start, final AbsoluteDate stop) {
42 super(new DateDetector(0.5 * stop.durationFrom(start), 1.0e-10, start, stop).
43 withHandler(new StopOnEvent<DateDetector>()));
44 }
45
46 @Override
47 protected <D extends FieldEventDetector<S>, S extends CalculusFieldElement<S>>
48 FieldAbstractDetector<D, S> convertIntervalDetector(Field<S> field, DateDetector detector) {
49 final S maxCheck = field.getZero().newInstance(detector.getMaxCheckInterval());
50 final FieldAbsoluteDate<S> d0 = new FieldAbsoluteDate<>(field, detector.getDates().get(0).getDate());
51 final FieldAbsoluteDate<S> d1 = new FieldAbsoluteDate<>(field, detector.getDates().get(1).getDate());
52 @SuppressWarnings("unchecked")
53 final FieldAbstractDetector<D, S> converted = (FieldAbstractDetector<D, S>) new FieldDateDetector<>(maxCheck, null, d0, d1);
54 return converted;
55 }
56
57 }
58
59 protected IntervalDates createTrigger(final AbsoluteDate start, final AbsoluteDate stop) {
60 return new IntervalDates(start, stop);
61 }
62
63 @Test
64 public void testComponents() {
65 IntervalDates trigger = createTrigger(AbsoluteDate.J2000_EPOCH,
66 AbsoluteDate.J2000_EPOCH.shiftedBy(100.0));
67 final List<TimeStamped> dates = trigger.getFiringIntervalDetector().getDates();
68 Assert.assertEquals(1, trigger.getEventsDetectors().count());
69 Assert.assertEquals(1, trigger.getFieldEventsDetectors(Decimal64Field.getInstance()).count());
70 Assert.assertEquals(2, dates.size());
71 Assert.assertEquals( 0.0, dates.get(0).getDate().durationFrom(AbsoluteDate.J2000_EPOCH), 1.0e-10);
72 Assert.assertEquals(100.0, dates.get(1).getDate().durationFrom(AbsoluteDate.J2000_EPOCH), 1.0e-10);
73 }
74
75 }