""" Author: Philipp Jungkamp SPDX-FileCopyrightText: 2023 OPAL-RT Germany GmbH SPDX-License-Identifier: Apache-2.0 """ # noqa: E501 from cmath import sqrt from villas.node.digest import Digest, Frame from villas.node.sample import Sample, Timestamp def test_frame_repr(): smp1 = Sample( ts_origin=Timestamp(123456780), ts_received=Timestamp(123456781), sequence=4, new_frame=True, data=[1.0, 2.0, 3.0, True, 42, sqrt(complex(-1))], ) smp2 = Sample( ts_origin=Timestamp(123456789), ts_received=Timestamp(123456790), sequence=5, new_frame=False, data=[1.0, 2.0, 3.0, True, 42, sqrt(complex(-1))], ) frame = Frame([smp1, smp2]) assert frame == eval(repr(frame)) def test_frame_group(): smp1 = Sample( ts_origin=Timestamp(123456780), ts_received=Timestamp(123456781), sequence=4, new_frame=True, data=[1.0, 2.0, 3.0, True, 42, sqrt(complex(-1))], ) smp2 = Sample( ts_origin=Timestamp(123456789), ts_received=Timestamp(123456790), sequence=5, new_frame=False, data=[1.0, 2.0, 3.0, True, 42, sqrt(complex(-1))], ) smp3 = Sample( ts_origin=Timestamp(123456791), ts_received=Timestamp(123456793), sequence=6, new_frame=True, data=[1.0, 2.0, 3.0, True, 42, sqrt(complex(-1))], ) frames = list(Frame.group([smp1, smp2, smp3])) assert len(frames) == 2 assert list(map(len, frames)) == [2, 1] assert frames == [[smp1, smp2], [smp3]] def test_digest_fromframe(): smp1 = Sample( ts_origin=Timestamp(123456780), ts_received=Timestamp(123456781), sequence=4, new_frame=True, data=[1.0, 2.0, 3.0, True, 42, sqrt(complex(-1))], ) smp2 = Sample( ts_origin=Timestamp(123456789), ts_received=Timestamp(123456790), sequence=5, new_frame=False, data=[1.0, 2.0, 3.0, True, 42, sqrt(complex(-1))], ) algorithm = "sha256" digest_hex = ( "a573e3b0953a1e4f69addf631d6229bb714d263b4f362f0847e96c3838c83217" # noqa: E501 ) digest = Digest( first=(Timestamp(123456780), 4), last=(Timestamp(123456789), 5), algorithm=algorithm, bytes=bytes.fromhex(digest_hex), ) assert Frame([smp1, smp2]).digest(algorithm) == digest def test_digest(): digest_str = "1695904705.856457323-0 1695904709.956060462-41 sha256 8E49482DDDAFF6E3B7411D7D20CA338002126FE109EC1BA5932C02FC5E7EFD23" # noqa: E501 digest = Digest( first=(Timestamp(1695904705, 856457323), 0), last=(Timestamp(1695904709, 956060462), 41), algorithm="sha256", bytes=bytes.fromhex( "8E49482DDDAFF6E3B7411D7D20CA338002126FE109EC1BA5932C02FC5E7EFD23" ), # noqa: E501 ) assert Digest.parse(digest_str) == digest assert digest_str == digest.dump()