packages feed

baikai-0.3.0.0: test/SurfaceSpec.hs

module SurfaceSpec (tests) where

import Baikai
import Baikai.Embedding qualified as Embedding
import Baikai.Prelude
import Data.Aeson qualified as Aeson
import Data.Map.Strict qualified as Map
import Data.Vector qualified as V
import Test.Tasty (TestTree, testGroup)
import Test.Tasty.HUnit (testCase, (@?=))

tests :: TestTree
tests =
  testGroup
    "surface"
    [ testCase "abstract records build from public bases and selectors" $ do
        let opts =
              emptyOptions
                & #maxTokens
                .~ Just 32
                & #topP
                .~ Just 0.9
            ctx =
              emptyContext
                & #systemPrompt
                .~ Just "Be brief."
                & #messages
                .~ V.singleton (user "hello")
            model =
              mkModel OpenAIChatCompletions "gpt-test" "https://api.example.test"
                & #headers
                .~ Map.singleton "x-test" "1"
            response =
              emptyResponse
                & #model
                .~ model
                & #message
                . #content
                .~ V.singleton (AssistantText emptyTextContent {text = "ok"})
            req = interactiveLaunchRequest "inspect" & #modelId .~ Just "gpt-test"
        opts ^. #maxTokens @?= Just 32
        ctx ^. #systemPrompt @?= Just "Be brief."
        (response ^. #model) ^. #modelId @?= "gpt-test"
        req ^. #modelId @?= Just "gpt-test",
      testCase "zero and empty bases cover the public rename map" $ do
        zeroUsage ^. #totalTokens @?= 0
        zeroCost ^. #usd @?= 0
        zeroCostBreakdown ^. #inputUsd @?= 0
        zeroModelCost ^. #inputCost @?= 0
        emptyTool ^. #parameters @?= Aeson.Null
        emptyToolCall ^. #arguments @?= Aeson.Null
        Embedding.modelId Embedding.emptyEmbeddingModel @?= ""
    ]