packages feed

arxiv-client-0.1.0.0: test/Main.hs

{-# LANGUAGE OverloadedStrings #-}
module Main (main) where

import qualified Data.Text as T
import Arxiv.Query
import Arxiv.Client

failWith :: String -> IO a
failWith msg = ioError (userError msg)

assert :: Bool -> String -> IO ()
assert True _  = pure ()
assert False m = failWith m

main :: IO ()
main = do
  putStrLn "[test] renderSearchQuery builds fielded terms"
  let q = emptyQuery & inCategory "math.NT" & anyWords ["Chabauty","Coleman"]
  let rq = renderSearchQuery q
  putStrLn (" search_query = " <> T.unpack rq)
  assert ("cat:math.NT" `T.isInfixOf` rq) "missing cat:math.NT"
  assert ("all:" `T.isInfixOf` rq)        "missing 'all:' prefix"

  putStrLn "[test] simple network call returns some entries"
  es <- queryArxivIO (emptyQuery & anyWords ["electron"] & setPaging 0 5)
  assert (not (null es)) "expected non-empty result for 'electron'"

  putStrLn "[test] OK"