// Path: lib/src/main/java/hrv/lib/hrv/RRData.java
// public class RRData {
// 
// 	private final TimeUnit rrValueAxisUnit;
// 	private final /*@ spec_public */ TimeUnit rrTimeAxisUnit;
// 
// 	private final double[] rrValuesAxis;
// 	private final double[] rrTimeAxis;
// 
// 	public RRData(double[] timeAxis, TimeUnit timeAxisUnit, double[] valueAxis, TimeUnit valueAxisUnit) {
// 		this.rrValuesAxis = valueAxis;
// 		this.rrValueAxisUnit = valueAxisUnit;
// 
// 		this.rrTimeAxis = timeAxis;
// 		this.rrTimeAxisUnit = timeAxisUnit;
// 	}
// 
// 	/**
// 	 * Creates a new RRData object from an RR-Interval
// 	 * 
// 	 * @param rrInterval
// 	 *            RR-Interval
// 	 * @param unit
// 	 *            of the given RR-Data.
// 	 * @return new RRData object with given RR-Interval data.
// 	 */
// 	public static RRData createFromRRInterval(double[] rrInterval, TimeUnit unit) {
// 		var rrTimeAxis = new double[rrInterval.length];
// 		for (var i = 1; i < rrInterval.length; i++) {
// 			rrTimeAxis[i] = rrTimeAxis[i - 1] + rrInterval[i - 1];
// 		}
// 
// 		return new RRData(rrTimeAxis, unit, rrInterval, unit);
// 	}
// 
// 	public double[] getValueAxis() {
// 		return rrValuesAxis;
// 	}
// 
// 	public double[] getTimeAxis() {
// 		return rrTimeAxis;
// 	}
// 	
// 	public TimeUnit getValueAxisUnit() {
// 		return rrValueAxisUnit;
// 	}
// 
// 	public TimeUnit getTimeAxisUnit() {
// 		return rrTimeAxisUnit;
// 	}
// }
// 
// Path: lib/src/main/java/hrv/lib/hrv/calc/parameter/HRVParameter.java
// public class HRVParameter {
// 
// 	private HRVParameterEnum type;
// 	private String unit;
// 	private double value;
// 	
// 	/**
// 	 * Creates a new HRV-Parameter
// 	 */
// 	public HRVParameter() { 
// 		// Just empty constructor
// 	}
// 
// 	/**
// 	 * Creates a new HRV-Parameter
// 	 * @param value Value of the parameter
// 	 * @param unit Unit of the parameter
// 	 */
// 	public HRVParameter(HRVParameterEnum type, double value, String unit) {
// 		this.type = type;
// 		this.value = value;
// 		this.setUnit(unit);
// 	}
// 	
// 	public String getName() {
// 		return type.toString();
// 	}
// 	
// 	public HRVParameterEnum getType() {
// 		return type;
// 	}
// 
// 	public double getValue() {
// 		return value;
// 	}
// 
// 	public void setValue(double value) {
// 		this.value = value;
// 	}
// 
// 	public String getUnit() {
// 		return unit;
// 	}
// 
// 	public void setUnit(String unit) {
// 		this.unit = unit;
// 	}
// 
// 	/**
// 	 * Returns a string with the following format:
// 	 * <Name>: <Value> <Unit>
// 	 */
// 	@Override
// 	public String toString() {
// 		return type.toString() + ": " + value + " " + unit;
// 	}
// }
// 
// Path: lib/src/main/java/hrv/lib/units/TimeUnit.java
// public enum TimeUnit {
// 	DAY("d"),
// 	HOUR("h"),
// 	MINUTE("m"),
// 	SECOND("s"),
// 	MILLISECOND("ms");
// 	
// 	private final String asText;
// 	
// 	TimeUnit(String asText) {
// 		this.asText = asText;
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return asText;
// 	}
// }


import hrv.lib.hrv.RRData;
import hrv.lib.hrv.calc.parameter.HRVParameter;
import hrv.lib.units.TimeUnit;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

		HRVContinuousHeartRate pulseCalc2 = new HRVContinuousHeartRate(6);
		assertEquals(30.0, pulseCalc2.process(data2).getValue(), 0.00001);
	}

	@Test
	void testContinuity() {
		HRVContinuousHeartRate pulseCalc = new HRVContinuousHeartRate(10);

		HRVParameterChangedMockListener listener = new HRVParameterChangedMockListener();
		pulseCalc.addHRVParameterChangedListener(listener);

		HRVRRIntervalEvent event1 = new HRVRRIntervalEvent();
		event1.setRr(1.0);
		HRVRRIntervalEvent event2 = new HRVRRIntervalEvent();
		event2.setRr(1.0);
		HRVRRIntervalEvent event3 = new HRVRRIntervalEvent();
		event3.setRr(1.0);
		HRVRRIntervalEvent event4 = new HRVRRIntervalEvent();
		event4.setRr(1.0);

		pulseCalc.newRRInterval(event1);
		pulseCalc.newRRInterval(event2);
		pulseCalc.newRRInterval(event3);
		pulseCalc.newRRInterval(event4);
	}

	static class HRVParameterChangedMockListener implements HRVParameterChangedListener {

		@Override
// Path: lib/src/main/java/hrv/lib/hrv/RRData.java
// public class RRData {
// 
// 	private final TimeUnit rrValueAxisUnit;
// 	private final /*@ spec_public */ TimeUnit rrTimeAxisUnit;
// 
// 	private final double[] rrValuesAxis;
// 	private final double[] rrTimeAxis;
// 
// 	public RRData(double[] timeAxis, TimeUnit timeAxisUnit, double[] valueAxis, TimeUnit valueAxisUnit) {
// 		this.rrValuesAxis = valueAxis;
// 		this.rrValueAxisUnit = valueAxisUnit;
// 
// 		this.rrTimeAxis = timeAxis;
// 		this.rrTimeAxisUnit = timeAxisUnit;
// 	}
// 
// 	/**
// 	 * Creates a new RRData object from an RR-Interval
// 	 * 
// 	 * @param rrInterval
// 	 *            RR-Interval
// 	 * @param unit
// 	 *            of the given RR-Data.
// 	 * @return new RRData object with given RR-Interval data.
// 	 */
// 	public static RRData createFromRRInterval(double[] rrInterval, TimeUnit unit) {
// 		var rrTimeAxis = new double[rrInterval.length];
// 		for (var i = 1; i < rrInterval.length; i++) {
// 			rrTimeAxis[i] = rrTimeAxis[i - 1] + rrInterval[i - 1];
// 		}
// 
// 		return new RRData(rrTimeAxis, unit, rrInterval, unit);
// 	}
// 
// 	public double[] getValueAxis() {
// 		return rrValuesAxis;
// 	}
// 
// 	public double[] getTimeAxis() {
// 		return rrTimeAxis;
// 	}
// 	
// 	public TimeUnit getValueAxisUnit() {
// 		return rrValueAxisUnit;
// 	}
// 
// 	public TimeUnit getTimeAxisUnit() {
// 		return rrTimeAxisUnit;
// 	}
// }
// 
// Path: lib/src/main/java/hrv/lib/hrv/calc/parameter/HRVParameter.java
// public class HRVParameter {
// 
// 	private HRVParameterEnum type;
// 	private String unit;
// 	private double value;
// 	
// 	/**
// 	 * Creates a new HRV-Parameter
// 	 */
// 	public HRVParameter() { 
// 		// Just empty constructor
// 	}
// 
// 	/**
// 	 * Creates a new HRV-Parameter
// 	 * @param value Value of the parameter
// 	 * @param unit Unit of the parameter
// 	 */
// 	public HRVParameter(HRVParameterEnum type, double value, String unit) {
// 		this.type = type;
// 		this.value = value;
// 		this.setUnit(unit);
// 	}
// 	
// 	public String getName() {
// 		return type.toString();
// 	}
// 	
// 	public HRVParameterEnum getType() {
// 		return type;
// 	}
// 
// 	public double getValue() {
// 		return value;
// 	}
// 
// 	public void setValue(double value) {
// 		this.value = value;
// 	}
// 
// 	public String getUnit() {
// 		return unit;
// 	}
// 
// 	public void setUnit(String unit) {
// 		this.unit = unit;
// 	}
// 
// 	/**
// 	 * Returns a string with the following format:
// 	 * <Name>: <Value> <Unit>
// 	 */
// 	@Override
// 	public String toString() {
// 		return type.toString() + ": " + value + " " + unit;
// 	}
// }
// 
// Path: lib/src/main/java/hrv/lib/units/TimeUnit.java
// public enum TimeUnit {
// 	DAY("d"),
// 	HOUR("h"),
// 	MINUTE("m"),
// 	SECOND("s"),
// 	MILLISECOND("ms");
// 	
// 	private final String asText;
// 	
// 	TimeUnit(String asText) {
// 		this.asText = asText;
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return asText;
// 	}
// }


// Path: lib/src/test/java/hrv/lib/hrv/calc/continous/HRVContinuousPulseTest.java
import hrv.lib.hrv.RRData;
import hrv.lib.hrv.calc.parameter.HRVParameter;
import hrv.lib.units.TimeUnit;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;


		HRVContinuousHeartRate pulseCalc2 = new HRVContinuousHeartRate(6);
		assertEquals(30.0, pulseCalc2.process(data2).getValue(), 0.00001);
	}

	@Test
	void testContinuity() {
		HRVContinuousHeartRate pulseCalc = new HRVContinuousHeartRate(10);

		HRVParameterChangedMockListener listener = new HRVParameterChangedMockListener();
		pulseCalc.addHRVParameterChangedListener(listener);

		HRVRRIntervalEvent event1 = new HRVRRIntervalEvent();
		event1.setRr(1.0);
		HRVRRIntervalEvent event2 = new HRVRRIntervalEvent();
		event2.setRr(1.0);
		HRVRRIntervalEvent event3 = new HRVRRIntervalEvent();
		event3.setRr(1.0);
		HRVRRIntervalEvent event4 = new HRVRRIntervalEvent();
		event4.setRr(1.0);

		pulseCalc.newRRInterval(event1);
		pulseCalc.newRRInterval(event2);
		pulseCalc.newRRInterval(event3);
		pulseCalc.newRRInterval(event4);
	}

	static class HRVParameterChangedMockListener implements HRVParameterChangedListener {

		@Override
		public void parameterChanged(HRVParameter param) {