{-# LANGUAGE OverloadedStrings #-} module TestBinary where import Arbitrary () import qualified Data.ByteString as BS import Data.ByteString.Builder import qualified Data.ByteString.Lazy as LBS import LogEventSerializer import OpenTelemetry.EventlogStreaming_Internal import OpenTelemetry.Eventlog_Internal import Test.Tasty.QuickCheck newtype MsgTypeAr = MsgTypeAr MsgType deriving (Show) instance Arbitrary MsgTypeAr where arbitrary = elements $ map (MsgTypeAr . MsgType) [1 .. 100] prop_header_layout_prefix_ot3 :: MsgTypeAr -> Property prop_header_layout_prefix_ot3 (MsgTypeAr msgType) = LBS.take 3 (toLazyByteString (header msgType)) === "OT\x03" prop_header_layout_suffix_msg :: MsgTypeAr -> Property prop_header_layout_suffix_msg (MsgTypeAr msgType@(MsgType msgTypeId)) = LBS.last (toLazyByteString (header msgType)) === msgTypeId parseRight :: BS.ByteString -> OpenTelemetryEventlogEvent parseRight bs = case parseByteString bs of Nothing -> error "No event" Just ev -> ev prop_binary_roundtrip :: OpenTelemetryEventlogEvent -> Property prop_binary_roundtrip a = a === parseRight (logEventToBs a)