#!/usr/bin/env bash
#
# Integration test for frame hook.
#
# Author: Philipp Jungkamp <Philipp.Jungkamp@opal-rt.com>
# SPDX-FileCopyrightText: 2023 OPAL-RT Germany GmbH
# SPDX-License-Identifier: Apache-2.0

set -e

DIR=$(mktemp -d)
pushd ${DIR}

function finish {
    popd
    rm -rf ${DIR}
}
trap finish EXIT

cat > input.dat <<EOF
# seconds.nanoseconds(sequence)	random	sine	square	triangle	ramp
1561591854.277376100(0)	0.022245	-0.136359	1.000000	-0.912920	0.104354
1561591854.377354600(1)	0.015339	0.135690	-1.000000	0.913350	0.204333
1561591854.475834300(2)	0.027500	-0.088233	1.000000	-0.943756	0.302812
1561591854.575995900(3)	0.040320	0.093289	-1.000000	0.940524	0.402974
1561591854.675955300(4)	0.026079	-0.092019	1.000000	-0.941336	0.502933
1561591854.776188900(5)	0.049262	0.099324	-1.000000	0.936664	0.603167
1561591854.875119100(6)	0.014883	-0.065832	1.000000	-0.958060	0.702097
1561591854.974264200(7)	0.023232	0.039012	-1.000000	0.975158	0.801242
1561591855.077804200(8)	0.015231	-0.149670	1.000000	-0.904358	0.904782
1561591855.174828300(9)	0.060849	0.056713	-1.000000	0.963876	1.001806
EOF

cat > expect.dat <<EOF
# seconds.nanoseconds+offset(sequence)  signal0 signal1 signal2 signal3 signal4 signal5 signal6 signal7 signal8 signal9 signal10        signal11        signal12        signal13     signal14        signal15        signal16        signal17        signal18        signal19        signal20        signal21        signal22        signal23        signal24     signal25        signal26        signal27        signal28        signal29        signal30        signal31        signal32        signal33        signal34        signal35     signal36        signal37        signal38        signal39        signal40        signal41        signal42        signal43        signal44        signal45        signal46     signal47        signal48        signal49        signal50        signal51        signal52        signal53        signal54        signal55        signal56        signal57     signal58        signal59        signal60        signal61        signal62        signal63
1561591854.277376100+1.330281e+08(0)F   0.02224500000000000     -0.13635900000000001    1.00000000000000000     -0.91291999999999995    0.10435400000000000
1561591854.377354600+1.330281e+08(1)    0.01533900000000000     0.13569000000000001     -1.00000000000000000    0.91335000000000000     0.20433299999999999
1561591854.475834300+1.330281e+08(2)F   0.02750000000000000     -0.08823300000000001    1.00000000000000000     -0.94375600000000004    0.30281200000000003
1561591854.575995900+1.330281e+08(3)    0.04032000000000000     0.09328900000000000     -1.00000000000000000    0.94052400000000003     0.40297400000000000
1561591854.675955300+1.330281e+08(4)F   0.02607900000000000     -0.09201900000000000    1.00000000000000000     -0.94133599999999995    0.50293299999999996
1561591854.776188900+1.330281e+08(5)    0.04926200000000000     0.09932400000000000     -1.00000000000000000    0.93666400000000005     0.60316700000000001
1561591854.875119100+1.330281e+08(6)F   0.01488300000000000     -0.06583200000000000    1.00000000000000000     -0.95806000000000002    0.70209699999999997
1561591854.974264200+1.330281e+08(7)    0.02323200000000000     0.03901200000000000     -1.00000000000000000    0.97515799999999997     0.80124200000000001
1561591855.077804200+1.330281e+08(8)F   0.01523100000000000     -0.14967000000000000    1.00000000000000000     -0.90435800000000000    0.90478199999999998
1561591855.174828300+1.330281e+08(9)    0.06084900000000000     0.05671300000000000     -1.00000000000000000    0.96387599999999996     1.00180599999999997
EOF

villas hook frame -o interval=2 < input.dat > output.dat

villas compare output.dat expect.dat