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.StartStopEventsTrigger;
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 StartStopEventTriggerTest extends AbstractManeuverTriggersTest<StartStopEventsTrigger<DateDetector, DateDetector>> {
38
39 public static class StartStopDates extends StartStopEventsTrigger<DateDetector, DateDetector> {
40
41 public StartStopDates(final AbsoluteDate start, final AbsoluteDate stop) {
42 super(new DateDetector(5.0, 1.0e-10, start, stop.shiftedBy(10.0)).
43 withHandler(new StopOnEvent<>()),
44 new DateDetector(5.0, 1.0e-10, stop, stop.shiftedBy(20.0)).
45 withHandler(new StopOnEvent<>()));
46 }
47
48 @Override
49 protected <D extends FieldEventDetector<S>, S extends CalculusFieldElement<S>>
50 FieldAbstractDetector<D, S> convertStartDetector(Field<S> field, DateDetector detector) {
51 final FieldAbsoluteDate<S> target = new FieldAbsoluteDate<>(field, detector.getDates().get(0).getDate());
52 @SuppressWarnings("unchecked")
53 final FieldAbstractDetector<D, S> converted = (FieldAbstractDetector<D, S>) new FieldDateDetector<>(target);
54 return converted;
55 }
56
57 @Override
58 protected <D extends FieldEventDetector<S>, S extends CalculusFieldElement<S>>
59 FieldAbstractDetector<D, S> convertStopDetector(Field<S> field, DateDetector detector) {
60 final FieldAbsoluteDate<S> target = new FieldAbsoluteDate<>(field, detector.getDates().get(0).getDate());
61 @SuppressWarnings("unchecked")
62 final FieldAbstractDetector<D, S> converted = (FieldAbstractDetector<D, S>) new FieldDateDetector<>(target);
63 return converted;
64 }
65
66 }
67
68 protected StartStopEventsTrigger<DateDetector, DateDetector> createTrigger(final AbsoluteDate start, final AbsoluteDate stop) {
69 return new StartStopDates(start, stop);
70 }
71
72 @Test
73 public void testComponents() {
74 StartStopEventsTrigger<DateDetector, DateDetector> trigger = createTrigger(AbsoluteDate.J2000_EPOCH,
75 AbsoluteDate.J2000_EPOCH.shiftedBy(100.0));
76 final List<TimeStamped> startDates = trigger.getStartDetector().getDates();
77 final List<TimeStamped> stopDates = trigger.getStopDetector().getDates();
78 Assert.assertEquals(2, trigger.getEventsDetectors().count());
79 Assert.assertEquals(2, trigger.getFieldEventsDetectors(Decimal64Field.getInstance()).count());
80 Assert.assertEquals(2, startDates.size());
81 Assert.assertEquals( 0.0, startDates.get(0).getDate().durationFrom(AbsoluteDate.J2000_EPOCH), 1.0e-10);
82 Assert.assertEquals(110.0, startDates.get(1).getDate().durationFrom(AbsoluteDate.J2000_EPOCH), 1.0e-10);
83 Assert.assertEquals(2, stopDates.size());
84 Assert.assertEquals(100.0, stopDates.get(0).getDate().durationFrom(AbsoluteDate.J2000_EPOCH), 1.0e-10);
85 Assert.assertEquals(120.0, stopDates.get(1).getDate().durationFrom(AbsoluteDate.J2000_EPOCH), 1.0e-10);
86 }
87
88 }