// 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;
package hrv.lib.hrv.calc.continous;



class HRVContinuousPulseTest {

	@Test
	void testPulse() {
		RRData data = RRData.createFromRRInterval(new double[] { 1.0, 1.0, 1.0, 1.0 }, TimeUnit.SECOND);

		HRVContinuousHeartRate pulseCalc = new HRVContinuousHeartRate(4);
		assertEquals(60.0, pulseCalc.process(data).getValue(), 0.00001);

// 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;

package hrv.lib.hrv.calc.continous;



class HRVContinuousPulseTest {

	@Test
	void testPulse() {
		RRData data = RRData.createFromRRInterval(new double[] { 1.0, 1.0, 1.0, 1.0 }, TimeUnit.SECOND);

		HRVContinuousHeartRate pulseCalc = new HRVContinuousHeartRate(4);
		assertEquals(60.0, pulseCalc.process(data).getValue(), 0.00001);

		RRData data2 = RRData.createFromRRInterval(new double[] { 2.0, 2.0, 2.0, 2.0, 2.0, 2.0 }, TimeUnit.SECOND);