packages feed

haskell-google-genai-client-0.1.0: tests/Test.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PartialTypeSignatures #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}

module Main where

import Data.Typeable (Proxy (..))
import Test.Hspec hiding (Example) -- TODO: 'hiding' should be automatically added when generating the test suite
import Test.Hspec.QuickCheck

import Instances ()
import PropMime

import GenAI.Client.MimeTypes
import GenAI.Client.Model

main :: IO ()
main =
  hspec $ modifyMaxSize (const 10) $ do
    describe "JSON instances" $ do
      pure ()
      propMimeEq MimeJSON (Proxy :: Proxy AttributionSourceId)
      propMimeEq MimeJSON (Proxy :: Proxy BaseOperation)
      propMimeEq MimeJSON (Proxy :: Proxy BatchCreateChunksRequest)
      propMimeEq MimeJSON (Proxy :: Proxy BatchCreateChunksResponse)
      propMimeEq MimeJSON (Proxy :: Proxy BatchDeleteChunksRequest)
      propMimeEq MimeJSON (Proxy :: Proxy BatchEmbedContentsRequest)
      propMimeEq MimeJSON (Proxy :: Proxy BatchEmbedContentsResponse)
      propMimeEq MimeJSON (Proxy :: Proxy BatchEmbedTextRequest)
      propMimeEq MimeJSON (Proxy :: Proxy BatchEmbedTextResponse)
      propMimeEq MimeJSON (Proxy :: Proxy BatchUpdateChunksRequest)
      propMimeEq MimeJSON (Proxy :: Proxy BatchUpdateChunksResponse)
      propMimeEq MimeJSON (Proxy :: Proxy Blob)
      propMimeEq MimeJSON (Proxy :: Proxy CachedContent)
      propMimeEq MimeJSON (Proxy :: Proxy CachedContentUsageMetadata)
      propMimeEq MimeJSON (Proxy :: Proxy Candidate)
      propMimeEq MimeJSON (Proxy :: Proxy Chunk)
      propMimeEq MimeJSON (Proxy :: Proxy ChunkData)
      propMimeEq MimeJSON (Proxy :: Proxy CitationMetadata)
      propMimeEq MimeJSON (Proxy :: Proxy CitationSource)
      propMimeEq MimeJSON (Proxy :: Proxy CodeExecutionResult)
      propMimeEq MimeJSON (Proxy :: Proxy Condition)
      propMimeEq MimeJSON (Proxy :: Proxy Content)
      propMimeEq MimeJSON (Proxy :: Proxy ContentEmbedding)
      propMimeEq MimeJSON (Proxy :: Proxy ContentFilter)
      propMimeEq MimeJSON (Proxy :: Proxy Corpus)
      propMimeEq MimeJSON (Proxy :: Proxy CountMessageTokensRequest)
      propMimeEq MimeJSON (Proxy :: Proxy CountMessageTokensResponse)
      propMimeEq MimeJSON (Proxy :: Proxy CountTextTokensRequest)
      propMimeEq MimeJSON (Proxy :: Proxy CountTextTokensResponse)
      propMimeEq MimeJSON (Proxy :: Proxy CountTokensRequest)
      propMimeEq MimeJSON (Proxy :: Proxy CountTokensResponse)
      propMimeEq MimeJSON (Proxy :: Proxy CreateChunkRequest)
      propMimeEq MimeJSON (Proxy :: Proxy CreateFileRequest)
      propMimeEq MimeJSON (Proxy :: Proxy CreateFileResponse)
      propMimeEq MimeJSON (Proxy :: Proxy CreateTunedModelMetadata)
      propMimeEq MimeJSON (Proxy :: Proxy CreateTunedModelOperation)
      propMimeEq MimeJSON (Proxy :: Proxy CustomMetadata)
      propMimeEq MimeJSON (Proxy :: Proxy Dataset)
      propMimeEq MimeJSON (Proxy :: Proxy DeleteChunkRequest)
      propMimeEq MimeJSON (Proxy :: Proxy Document)
      propMimeEq MimeJSON (Proxy :: Proxy DynamicRetrievalConfig)
      propMimeEq MimeJSON (Proxy :: Proxy EmbedContentRequest)
      propMimeEq MimeJSON (Proxy :: Proxy EmbedContentResponse)
      propMimeEq MimeJSON (Proxy :: Proxy EmbedTextRequest)
      propMimeEq MimeJSON (Proxy :: Proxy EmbedTextResponse)
      propMimeEq MimeJSON (Proxy :: Proxy Embedding)
      propMimeEq MimeJSON (Proxy :: Proxy Example)
      propMimeEq MimeJSON (Proxy :: Proxy ExecutableCode)
      propMimeEq MimeJSON (Proxy :: Proxy File)
      propMimeEq MimeJSON (Proxy :: Proxy FileData)
      propMimeEq MimeJSON (Proxy :: Proxy FunctionCall)
      propMimeEq MimeJSON (Proxy :: Proxy FunctionCallingConfig)
      propMimeEq MimeJSON (Proxy :: Proxy FunctionDeclaration)
      propMimeEq MimeJSON (Proxy :: Proxy FunctionResponse)
      propMimeEq MimeJSON (Proxy :: Proxy GenerateAnswerRequest)
      propMimeEq MimeJSON (Proxy :: Proxy GenerateAnswerResponse)
      propMimeEq MimeJSON (Proxy :: Proxy GenerateContentRequest)
      propMimeEq MimeJSON (Proxy :: Proxy GenerateContentResponse)
      propMimeEq MimeJSON (Proxy :: Proxy GenerateMessageRequest)
      propMimeEq MimeJSON (Proxy :: Proxy GenerateMessageResponse)
      propMimeEq MimeJSON (Proxy :: Proxy GenerateTextRequest)
      propMimeEq MimeJSON (Proxy :: Proxy GenerateTextResponse)
      propMimeEq MimeJSON (Proxy :: Proxy GenerateVideoResponse)
      propMimeEq MimeJSON (Proxy :: Proxy GeneratedFile)
      propMimeEq MimeJSON (Proxy :: Proxy GenerationConfig)
      propMimeEq MimeJSON (Proxy :: Proxy GoogleSearch)
      propMimeEq MimeJSON (Proxy :: Proxy GoogleSearchRetrieval)
      propMimeEq MimeJSON (Proxy :: Proxy GroundingAttribution)
      propMimeEq MimeJSON (Proxy :: Proxy GroundingChunk)
      propMimeEq MimeJSON (Proxy :: Proxy GroundingMetadata)
      propMimeEq MimeJSON (Proxy :: Proxy GroundingPassage)
      propMimeEq MimeJSON (Proxy :: Proxy GroundingPassageId)
      propMimeEq MimeJSON (Proxy :: Proxy GroundingPassages)
      propMimeEq MimeJSON (Proxy :: Proxy GroundingSupport)
      propMimeEq MimeJSON (Proxy :: Proxy HarmCategory)
      propMimeEq MimeJSON (Proxy :: Proxy Hyperparameters)
      propMimeEq MimeJSON (Proxy :: Proxy InputFeedback)
      propMimeEq MimeJSON (Proxy :: Proxy Interval)
      propMimeEq MimeJSON (Proxy :: Proxy ListCachedContentsResponse)
      propMimeEq MimeJSON (Proxy :: Proxy ListChunksResponse)
      propMimeEq MimeJSON (Proxy :: Proxy ListCorporaResponse)
      propMimeEq MimeJSON (Proxy :: Proxy ListDocumentsResponse)
      propMimeEq MimeJSON (Proxy :: Proxy ListFilesResponse)
      propMimeEq MimeJSON (Proxy :: Proxy ListGeneratedFilesResponse)
      propMimeEq MimeJSON (Proxy :: Proxy ListModelsResponse)
      propMimeEq MimeJSON (Proxy :: Proxy ListOperationsResponse)
      propMimeEq MimeJSON (Proxy :: Proxy ListPermissionsResponse)
      propMimeEq MimeJSON (Proxy :: Proxy ListTunedModelsResponse)
      propMimeEq MimeJSON (Proxy :: Proxy LogprobsResult)
      propMimeEq MimeJSON (Proxy :: Proxy LogprobsResultCandidate)
      propMimeEq MimeJSON (Proxy :: Proxy Media)
      propMimeEq MimeJSON (Proxy :: Proxy Message)
      propMimeEq MimeJSON (Proxy :: Proxy MessagePrompt)
      propMimeEq MimeJSON (Proxy :: Proxy MetadataFilter)
      propMimeEq MimeJSON (Proxy :: Proxy Modality)
      propMimeEq MimeJSON (Proxy :: Proxy ModalityTokenCount)
      propMimeEq MimeJSON (Proxy :: Proxy Model)
      propMimeEq MimeJSON (Proxy :: Proxy ModelType)
      propMimeEq MimeJSON (Proxy :: Proxy MultiSpeakerVoiceConfig)
      propMimeEq MimeJSON (Proxy :: Proxy Operation)
      propMimeEq MimeJSON (Proxy :: Proxy Part)
      propMimeEq MimeJSON (Proxy :: Proxy Permission)
      propMimeEq MimeJSON (Proxy :: Proxy PrebuiltVoiceConfig)
      propMimeEq MimeJSON (Proxy :: Proxy PredictLongRunningOperation)
      propMimeEq MimeJSON (Proxy :: Proxy PredictLongRunningRequest)
      propMimeEq MimeJSON (Proxy :: Proxy PredictLongRunningResponse)
      propMimeEq MimeJSON (Proxy :: Proxy PredictRequest)
      propMimeEq MimeJSON (Proxy :: Proxy PredictResponse)
      propMimeEq MimeJSON (Proxy :: Proxy PromptFeedback)
      propMimeEq MimeJSON (Proxy :: Proxy QueryCorpusRequest)
      propMimeEq MimeJSON (Proxy :: Proxy QueryCorpusResponse)
      propMimeEq MimeJSON (Proxy :: Proxy QueryDocumentRequest)
      propMimeEq MimeJSON (Proxy :: Proxy QueryDocumentResponse)
      propMimeEq MimeJSON (Proxy :: Proxy RelevantChunk)
      propMimeEq MimeJSON (Proxy :: Proxy RetrievalMetadata)
      propMimeEq MimeJSON (Proxy :: Proxy SafetyFeedback)
      propMimeEq MimeJSON (Proxy :: Proxy SafetyRating)
      propMimeEq MimeJSON (Proxy :: Proxy SafetySetting)
      propMimeEq MimeJSON (Proxy :: Proxy Schema)
      propMimeEq MimeJSON (Proxy :: Proxy SearchEntryPoint)
      propMimeEq MimeJSON (Proxy :: Proxy Segment)
      propMimeEq MimeJSON (Proxy :: Proxy SemanticRetrieverChunk)
      propMimeEq MimeJSON (Proxy :: Proxy SemanticRetrieverConfig)
      propMimeEq MimeJSON (Proxy :: Proxy SpeakerVoiceConfig)
      propMimeEq MimeJSON (Proxy :: Proxy SpeechConfig)
      propMimeEq MimeJSON (Proxy :: Proxy Status)
      propMimeEq MimeJSON (Proxy :: Proxy StringList)
      propMimeEq MimeJSON (Proxy :: Proxy TaskType)
      propMimeEq MimeJSON (Proxy :: Proxy TextCompletion)
      propMimeEq MimeJSON (Proxy :: Proxy TextPrompt)
      propMimeEq MimeJSON (Proxy :: Proxy ThinkingConfig)
      propMimeEq MimeJSON (Proxy :: Proxy Tool)
      propMimeEq MimeJSON (Proxy :: Proxy ToolConfig)
      propMimeEq MimeJSON (Proxy :: Proxy TopCandidates)
      propMimeEq MimeJSON (Proxy :: Proxy TransferOwnershipRequest)
      propMimeEq MimeJSON (Proxy :: Proxy TunedModel)
      propMimeEq MimeJSON (Proxy :: Proxy TunedModelSource)
      propMimeEq MimeJSON (Proxy :: Proxy TuningExample)
      propMimeEq MimeJSON (Proxy :: Proxy TuningExamples)
      propMimeEq MimeJSON (Proxy :: Proxy TuningSnapshot)
      propMimeEq MimeJSON (Proxy :: Proxy TuningTask)
      propMimeEq MimeJSON (Proxy :: Proxy UpdateChunkRequest)
      propMimeEq MimeJSON (Proxy :: Proxy UrlContextMetadata)
      propMimeEq MimeJSON (Proxy :: Proxy UrlMetadata)
      propMimeEq MimeJSON (Proxy :: Proxy UsageMetadata)
      propMimeEq MimeJSON (Proxy :: Proxy Video)
      propMimeEq MimeJSON (Proxy :: Proxy VideoFileMetadata)
      propMimeEq MimeJSON (Proxy :: Proxy VideoMetadata)
      propMimeEq MimeJSON (Proxy :: Proxy VoiceConfig)
      propMimeEq MimeJSON (Proxy :: Proxy Web)